当前位置: 首页 > news >正文

嵌入式操作系统_4.任务管理

1.任务的概念 

        任务管理是嵌入式操作系统最基本功能之一,这里的任务(task)是指嵌入式操作系统调度的最小单位,类似于一般操作系统进程或线程的概念。任务是运行中的一个程序,一个程序加载到内存后就变成任务:

        任务=程序+执行

2.任务的三种状态

        任务一旦被加载到计算机内存后,通常会处于不同的工作状态,这种状态可随着计算机运行而转变。在嵌入式操作系统中,任务的工作状态最简单的课分为三种:执行态、就绪态和阻塞态,其转换关系见图1。

        执行态:当任务已获得处理机,其程序正在处理机上执行,此时的任务状态称为执行状态。

        就绪状态:当任务已分配到除CPU以外的所有必要的资源,只要获得处理机变可立即执行,这时的任务状态称为就绪状态。

        阻塞状态:正在执行的任务,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

3.三种基本状态转换

        三种基本状态转换

        就绪 →执行:处于就绪状态的任务,当任务调度程序为之分配了处理机制后该任务便由就绪状态转变成执行状态。

        执行 →就绪 :处于执行状态的任务在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是任务从执行状态转变成就绪状态。

        执行→阻塞:正在执行的任务因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

        阻塞→就绪:处于阻塞状态的任务,若其等待的事件已经发生,于是任务由阻塞状态转变为就绪状态。

        由于嵌入式系统中大部分应用领域是实时系统,因此,嵌入式操作系统的任务实时调度问题是操作系统任务管理的核心技术。许多嵌入式操作系统都支持优先级抢占调度算法和时间片轮转调度算法。

相关文章:

  • 【成品设计】基于STM32的单相瞬时值反馈逆变器
  • R语言 | 使用最简单方法添加显著性ggpubr包
  • 栈(Stack)汇总
  • MyBatis 延迟加载,一级缓存,二级缓存设置
  • Linux C语言:指针和指针变量
  • 用Python向Word文档添加页眉和页脚
  • Node.js 和 Vue 的区别的基本知识科普
  • 排名前五的 Android 数据恢复软件
  • 第一百零九节 Java面向对象设计 - Java抽象类和方法
  • 动手学深度学习33 单机多卡并行
  • 【 EI会议 | 西南大学主办 | 往届均已实现检索】第三届神经形态计算国际会议(ICNC 2024)
  • hana 中的缓存视图功能,类似ORACLE 中的 物化视图功能
  • Tinymce富文本编辑器在el-dialog中遮挡的问题
  • Jenkins 内置变量 和变量作用域
  • 【成品设计】基于物联网的停车管理系统设计与实现
  • AngularJS指令开发(1)——参数详解
  • canvas 五子棋游戏
  • const let
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React+TypeScript入门
  • SQLServer之索引简介
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • yii2权限控制rbac之rule详细讲解
  • 微信开放平台全网发布【失败】的几点排查方法
  • 线上 python http server profile 实践
  • 详解移动APP与web APP的区别
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​一些不规范的GTID使用场景
  • (31)对象的克隆
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (poj1.3.2)1791(构造法模拟)
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)求1到1亿间的质数或素数
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 8.0 中有哪些新的变化?
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net和jar包windows服务部署
  • .net实现客户区延伸至至非客户区
  • .Net语言中的StringBuilder:入门到精通
  • @Data注解的作用
  • @javax.ws.rs Webservice注解
  • @TableId注解详细介绍 mybaits 实体类主键注解