内核是非先发制人的.....怎么样?

时间:2011-03-07 10:06:19

标签: operating-system stack linux-kernel scheduling

无法抢占在内核模式下执行的进程。

怎么可能?

考虑一个进程在内核模式下执行并占用大量时间的情况。由于这个原因,剩下的进程将保持就绪状态。

例如,进程如何响应定时器中断(如果它在内核模式下执行)?或者它如何响应高温切断中断。

请有人清楚我的怀疑

2 个答案:

答案 0 :(得分:4)

首先,您的假设是不正确的:如果设置了配置选项CONFIG_PREEMPT_VOLUNTARYCONFIG_PREEMPT,Linux内核确实提供了有限的内核模式抢占。

启用抢占后,如果持有锁,任务将不会被抢占;内核开发人员非常关注进程持有锁的时间,并尝试减少锁持有的时间。 (部分是因为抢占,部分是因为持有的锁越长,系统可能的并发性就越小,如果多个处理器争用同一个锁。如果锁被保持很短的时间,则争用较少,吞吐量可能更高。)

此外,内核开发人员试图限制进程在内核模式下可能花费的时间长度。毕竟,在内核中花费的时间是不是在应用程序中花费的时间,无论应用程序做了什么。

如果标准Linux内核无法为您提供足够好的硬实时性能处理中断,您当然可以使用RTLinuxcommercial support可用的系统。

答案 1 :(得分:0)

通常,中断能够完成其名称所暗示的内容,中断当时正在运行的任何内容,无论是用户空间进程还是内核中运行的系统调用。