ucos II 内核学习之一:任务状态及任务控制块
来源:互联网 发布:淘宝茶叶店铺推荐 编辑:程序博客网 时间:2024/05/23 20:51
ucos II 内核学习之一:任务状态及任务控制块
一个任务被创建之后,可以处于以下五种状态之一。
这五种状态分别是:
1. 睡眠状态
2. 就绪状态
3. 等待状态
4. 中断服务状态
5. 执行状态
下面简单介绍下各状态的含义及各状态切换的方法。
睡眠状态:睡眠态(DORMANT)指任务驻留在程序空间之中,还没有交给ucos II管理,把任务交给ucos II是通过调用下述两个函数之一:OSTaskCreate()或OSTaskCreateExt()。当任务一旦建立,这个任务就进入就绪态准备运行。任务的建立可以是在多任务运行开始之前,也可以是动态地被一个运行着的任务建立。如果一个任务是被另一个任务建立的,而这个任务的优先级高于建立它的那个任务,则这个刚刚建立的任务将立即得到CPU的控制权。一个任务可以通过调用OSTaskDel()返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态。
等待状态: 正在运行的任务可以通过调用两个函数之一将自身延迟一段时间,这两个函数是OSTimeDly()或OSTimeDlyHMSM()。这个任务于是进入等待状态,等待这段时间过去,下一个优先级最高的、并进入了就绪态的任务立刻被赋予了CPU的控制权。等待的时间过去以后,系统服务函数OSTimeTick()使延迟了的任务进入就绪态。正在运行的任务期待某一事件的发生时也要等待,手段是调用以下3个函数之一:OSSemPend(),OSMboxPend(),或OSQPend()。调用后任务进入了等待状态(WAITING)。当任务因等待事件被挂起(Pend),下一个优先级最高的任务立即得到了CPU的控制权。当事件发生了,被挂起的任务进入就绪态。事件发生的报告可能来自另一个任务,也可能来自中断服务子程序。
中断服务状态:正在运行的任务是可以被中断的,除非该任务将中断关了,或者ucos IIⅡ将中断关了。被中断了的任务就进入了中断服务态(ISR)。响应中断时,正在执行的任务被挂起,中断服务子程序控制了CPU的使用权。中断服务子程序可能会报告一个或多个事件的发生,而使一个或多个任务进入就绪态。在这种情况下,从中断服务子程序返回之前,ucos II要判定,被中断的任务是否还是就绪态任务中优先级最高的。如果中断服务子程序使一个优先级更高的任务进入了就绪态,则新进入就绪态的这个优先级更高的任务将得以运行,否则原来被中断了的任务才能继续运行。
- ucos II 内核学习之一:任务状态及任务控制块
- ucos II 内核学习之一:任务状态及任务控制块
- ucos任务状态及任务控制块
- uCOS-II内核之任务控制块
- ucos II 内核学习之二:任务控制块
- ucos II 内核学习之二:任务控制块
- uCOS-II内核之任务控制块 [转载]
- uCOS-II的任务控制块
- ucos-ii的任务控制块
- ucos-II学习之:数据结构(任务控制块/事件控制块/内存控制块总结一)
- ucos-ii内核学习2--任务管理
- uCOS-II内核学习之任务调度
- ucos 任务控制块及任务链表
- uCOS-ii中的任务之一
- ucos II 任务间 通信之二:事件控制块
- uCOS-II任务间通信之事件控制块 [转载]
- uCOS-II任务间通信之事件控制块
- ucos-ii任务状态介绍
- 字符串的相似度
- 测试驱动开发TDD(六)Start Google Test in Windows
- Ext的combobox的fieldlabel不显示
- MD5加密
- Map of Public Vulnerability to Advisory/Alert
- ucos II 内核学习之一:任务状态及任务控制块
- Android SDK Android NDK Android Studio 官方下载地址
- Internet
- oracle 创建表空间和用户
- 工业水处理工程:威立雅工业污水处理工艺基本要求
- 数据结构第四章 字符串和多维数据 知识导图
- How to add a new key from kernel level to java level
- 温度控制的PID算法的C语言程序
- 抓图