内核驱动之Linux进程调度

来源:互联网 发布:php自定义表单源码 编辑:程序博客网 时间:2024/05/22 12:39

1
学习调度需要掌握哪些知识点?
(1)调度策略
(2)调度时机
(3)调度步骤
2
调度的发生有两种方式:
(1)主动式
在内核直接调用schedule(),当进程需要等待资源等而暂停止运行时,会把状态置于挂起(睡眠),并主动请求调度
(2)
3调度时机
(1)current->state=TASK_INTERRUPTIBLE;
(2)schedule();

被动式(抢占)
4
《用户抢占》发生在:
从系统调用返回《用户空间》
从中断处理程序返回《用户空间》
内核即将返回用户空间的时候,如果need_resched标志被设置,会导致schedule()被调用,此时就会发生用户抢占
5
《内核抢占》
在不支持内核抢占的系统中,进程/线程一旦运行于内核空间,就可以一直执行,直到它主动放弃或时间片耗尽为止
在支持内核抢占的系统中,更高优先级的进程/线程可以抢占在内核空间运行的低优先级进程/线程


6
内核抢占,使用变量preempt_count,称为内核抢占计数。这一变量被设置在进程的thread_info结构中。

 

原创粉丝点击