谁能告诉我linux内核中schedule()函数的用法

时间:2011-05-17 04:44:30

标签: linux-kernel

任何人都可以让我知道linux内核中schedule()函数的用法。

谁将安排此调度程序线程。?

提前致谢

2 个答案:

答案 0 :(得分:0)

有两种机制可供选择:自愿或基于硬件。

http://lwn.net/Articles/95334/

根据最近的一个补丁,自愿抢占被引入内核:

http://kerneltrap.org/node/3440

这意味着CPU将显式放弃当前作业,让调度程序接管选择活动任务列表中的下一个任务。已经发现这种自愿抢占方式提高了非自愿抢占的性能(基于计时器时钟)

更多信息:

http://wiki.osdev.org/Context_Switching(软件与硬件上下文切换 - 类似于我们在这里所说的)

http://wiki.osdev.org/Scheduling_Algorithms

答案 1 :(得分:0)

Linux内核中没有调度程序线程。在某些特定情况下调用schedule()函数。例如:

1)当进程或内核线程在内核模式下显式调用它时。如果需要等待某个事件发生,进程通常会调用schedule()函数;比如输入输出设备的数据可用性。

2)当优先级高于当前进程的进程正在等待某个事件并且事件发生时。

3)当分配给当前进程的时间片到期时。