当前位置: 技术问答>linux和unix
调度程序是怎么被调度执行进程切换的
来源: 互联网 发布时间:2016-08-19
本文导语: 最近我看linux内核设计与实现,看到进程调度看不大明白,向大家请教下。 在单CPU多任务系统中,多个进程切换分时间片在CPU里运行,切换工作是由调度程序进行的。调度程序选择另一个进程运行,那么调度程序是怎么被调...
最近我看linux内核设计与实现,看到进程调度看不大明白,向大家请教下。
在单CPU多任务系统中,多个进程切换分时间片在CPU里运行,切换工作是由调度程序进行的。调度程序选择另一个进程运行,那么调度程序是怎么被调度执行的呢?CPU以前是在执行一个进程啊,调度程序代码怎么运行起来的?它是自动过一段时间运行的还是怎么的?
|
首先,自愿的调度(主动调度)随时都可以进行:在内核里面,一个进程可以通过schedule()启动一次调度。也就是由当前进程自愿调用schedule()暂时放弃运行的情景。
除此之外,调度还可以非自愿的,即强制地发生在每次从系统调用返回的前夕,以及每次从中断或者异常处理返回到用户空间的前夕。
除此之外,调度还可以非自愿的,即强制地发生在每次从系统调用返回的前夕,以及每次从中断或者异常处理返回到用户空间的前夕。
|
总会有中断的。
即便所有的硬件都不产生中断,时钟中断是无法避免的。
|
出现系统调用,或者发生中断的时候,就会进入内核。
比如发生了中断,按你的说法就是pc程序计数器里的地址变成了中断处理程序的地址。当中断处理结束马上要返回到用户空间之前,内核就会调用调度程序。
|
当中断处理结束马上要返回到用户空间之前,内核就会调用调度程序。 这是不是说中断处理程序结束处必会调用shedule()呢?还有你在这说的那个内核是不是指中断处理程序啊?是不是中断处理程序就会调度处理程序?
--------------------中断返回处调用(所以禁止中断等同于禁止调度),看代码会相当的清楚。
|
跟
优先级
时间片
调试算法
有关 时间片到由调度算法选择适合的进程运行
优先级
时间片
调试算法
有关 时间片到由调度算法选择适合的进程运行
|
说的不错,顶了,嘿嘿!!!!