zoukankan      html  css  js  c++  java
  • 任务就绪问题

     所谓就绪状态是指任务准备运行,但CPU没空,任务等待运行的状态。
       任务就绪算法涉及:

    1)任务就绪表OSRdyTbl

    2)映射表OSMapTbl

    3)优先级判定表OSUnMapTbl

    4)变量OSRdyGrp

    5)相关的任务优先级prio

    其中映射表OSMapTbl优先级判定表OSUnMapTbl是2个常数表,用于查表算法。

    一、将优先级为19的任务放入就绪表中

    1):初始化
    任务就绪算法

    2)优先级的3-5位,即010,查映射表,找到对应的值,赋给字节变量OSRdyGrp,这就确定了就绪表中的某一行。
    任务就绪算法

    3)优先级的0-2位,即011,查映射表,将值赋给前面找到的那一行就绪表值任务就绪算法

    4)找到对应的bit,填充为1

    任务就绪算法

       总结:由优先级的3-5位查映射表,找到的行对应着变量OSRdyGrp,这个变量中为1的位就是我们要找的就绪表中的行号,即确定了Y轴点位置;由优先级的0-2位查映射表,找到一组值,该值中为1的Bit的序列就是我们要找的X轴点位置,有了X、Y的值,就能唯一的确定一个点。


    二、脱离就绪列表

    和前面的动作相反,将映射表中的相应行取反后,与就绪表中的相应行相与。

    三、优先级判定表

    1)

    任务就绪算法

    2)
    任务就绪算法


    四、查找就绪表中最高优先级的任务

    1)由OSRdyGrp变量中的值69H,在映射表中找到Y轴,即就绪表中的某一行

    任务就绪算法

    2)根据就绪表中的这一行值,在映射表中找到X轴

    任务就绪算法

    3)然后Y左移3位加上X就是当前最高优先级的就绪任务

    任务就绪算法

  • 相关阅读:
    修改mysql密码的四种方法
    phpcms模板生成原理
    如何给虚拟主机安装phpMyAdmin
    如何修改数据库密码
    web 服务器、PHP、数据库、浏览器是如何实现动态网站的
    编写shell时,提示let/typeset:not found
    Linux下采用VI编辑器删除复制或移动多行文本内容
    BASH 学习笔记小结
    list容器的C++代码实现
    Groovy入门教程
  • 原文地址:https://www.cnblogs.com/wgang171412/p/5098295.html
Copyright © 2011-2022 走看看