zoukankan      html  css  js  c++  java
  • 任务调度

    任务调度

    uC/OS-II 采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。
    uC/os-II的任务调度是完全基于任务优先级的抢占式调度,也就是最高优先级的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。为了简化系统设计,uC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标志了该任务本身。
    UCOS的任务调度在一下情况下发生:
    1) 高优先级的任务因为需要某种临界资源,主动请求挂起,让出处理器,此时将调度就绪状态的低优先级任务获得执行,这种调度也称为任务级的上下文切换。
    2) 高优先级的任务因为时钟节拍到来,在时钟中断的处理程序中,内核发现高优先级任务获得了执行条件(如休眠的时钟到时),则在中断态直接切换到高优先级任务执行。这种调度也称为中断级的上下文切换。
    这两种调度方式在uC/OS-II的执行过程中非常普遍,一般来说前者发生在系统服务中,后者发生在时钟中断的服务程序中。
    调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。其最高优先级任务的寻找是通过建立就绪任务表来实现的。u C / O S 中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。任务调度模块首先用变量OSTCBHighRdy 记录当前最高级就绪任务的TCB 地址,然后调用OS_TASK_SW()函数来进行任务切换。
  • 相关阅读:
    显示等待WebDriverWait+EC
    mac 上查看python3的各种安装路径
    layui弹窗全屏显示
    Mysql 一些细节方面解析(一)--MyISAM和InnoDB的主要区别和应用场景
    命令关闭tomcat
    xml 写sql语句文件头
    mysql update 修改多个字段and的语法问题
    zookeeper安装
    Java 基础--移位运算符
    SQL mybatis动态查询小结
  • 原文地址:https://www.cnblogs.com/songfeixiang/p/3733827.html
Copyright © 2011-2022 走看看