美文网首页
线程管理调度

线程管理调度

作者: HAPPYers | 来源:发表于2019-12-12 10:45 被阅读0次
    image.png

    任务调度器和任务切换

    调度器schedule并不仅仅由时钟中断函数来处理,他还有被其他函数调用的情况例如thread_block。
    在schedule中要判断当前线程是出于什么原因才被换下处理器的。其实就是查看线程的状态,如果线程的状态为TASK_RUNNING,这说明时间片到期了,将其ticks重新赋值为他的优先级PRIORITY,将其状态由TASK_RUNNING。并将其加入到就绪队列的末端。如果状态为其他,就不需要其他的操作了。

    调度器按照队列先进先出的顺序,把就绪队列中的第一个节点作为下一个要运行的新线程。将该线程的状态置为TASK_RUNNING,之后通过函数switch_to将新线程的寄存器环境恢复,这样新线程便开始执行。

    因此,完整的线程调度需要三步的过程:

    • 时钟中断处理函数
    • 调度器schedule
    • 任务切换函数 switch_to

    相关文章

      网友评论

          本文标题:线程管理调度

          本文链接:https://www.haomeiwen.com/subject/yzacbqtx.html