任何人都可以让我知道linux内核中schedule()函数的用法。
谁将安排此调度程序线程。?
提前致谢
答案 0 :(得分:0)
有两种机制可供选择:自愿或基于硬件。
http://lwn.net/Articles/95334/
根据最近的一个补丁,自愿抢占被引入内核:
http://kerneltrap.org/node/3440
这意味着CPU将显式放弃当前作业,让调度程序接管选择活动任务列表中的下一个任务。已经发现这种自愿抢占方式提高了非自愿抢占的性能(基于计时器时钟)
更多信息:
http://wiki.osdev.org/Context_Switching(软件与硬件上下文切换 - 类似于我们在这里所说的)
答案 1 :(得分:0)
Linux内核中没有调度程序线程。在某些特定情况下调用schedule()函数。例如:
1)当进程或内核线程在内核模式下显式调用它时。如果需要等待某个事件发生,进程通常会调用schedule()函数;比如输入输出设备的数据可用性。
2)当优先级高于当前进程的进程正在等待某个事件并且事件发生时。
3)当分配给当前进程的时间片到期时。