2011-05-17 61 views

回答

0

两种机制可用:自愿或基于硬件。

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

从最近的补丁所产生的自愿抢占已被引入到内核:

http://kerneltrap.org/node/3440

这意味着CPU将明确放弃目前的工作,让调度接手选择活动任务列表中的下一个任务。已发现,在非自愿抢占自愿抢占性能改进这种方式(这是定时器时钟为主)

更多信息:

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

http://wiki.osdev.org/Scheduling_Algorithms

0

有在Linux内核中没有调度线程。调用schedule()函数的具体情况。例如:

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

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

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

相关问题