高薪秘诀,跟着AliOS Things轻松入门操作系统:任务

1、任务状态及转换

AliOS Things是一款支持单处理器上运行多个任务的实时操作系统。对于多任务系统,在单个处理器上任意时刻只能有一个任务在运行,其他任务均处于非运行状态。所以这里可以简单的认为任务有两种状态:运行和非运行,如图1。

图1 任务状态和转换的顶层模型

 

当任务处于运行状态时,处理器被用来执行该任务的代码;当任务处于非运行状态时,其运行上下文被保存,并在下一次进入运行状态时被恢复执行。当任务恢复执行时,它会从上一次离开运行状态之前要执行的指令开始执行。那任务什么时候又是为什么发生非运行状态与运行状态之间的切换,主要依据系统的调度策略、可引起调度的系统事件以及特定的函数调用。

实时操作系统任务调度依赖于任务优先级,对于那些实时性要求比较高的任务被赋予高的优先级,一旦高优先级的任务准备就绪,系统就会将正在运行的低优先级任务换出,然后将处理器的执行权交给高优先级任务。而对于那些因为某种原因暂时不需要执行而处于非运行状态的任务,只有等到特定事件的发生才会被再次调度执行。所以可以将任务的非运行状态划分为两个子状态:就绪和挂起,如图2。

 

图2 任务状态和转换的基础模型

如图2所示,只有当任务处于就绪状态时,才能被系统调度进入运行状态;而处于运行状态的任务可以通过两种方式退出运行:挂起或被抢占。当任务执行完成或者因为某种原因不能继续运行(如等待一定时间段的延迟)则进入一种暂时停止运行的状态即挂起状态。当任务进入挂起状态,它释放处理器资源给其他任务。任务可以因为完成相应操作或自身程序产生信号来主动放弃处理器;任务也会因其他任务抢占、时间到期或系统事件被系统强制换出而被动的放弃处理器资源,任务放弃处理器资源的原因可以参见图3。

 

图3 任务挂起的原因

 

注意,对于工作还未完成被其他任务抢占被强行放弃处理器的任务,不会被挂起而是处于就绪状态,等待被系统再次调度。

结合上述任务挂起的原因分析可以得出任务状态的通用模型如图4所示,其中任务从挂起状态进入就绪状态的条件,包括事件、时间间隔到期、事件和时间间隔到期的组合。

 

图4 任务状态和转换的通用模型

 

2、实现

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值