无法抢占在内核模式下执行的进程。
怎么可能?
考虑一个进程在内核模式下执行并占用大量时间的情况。由于这个原因,剩下的进程将保持就绪状态。
例如,进程如何响应定时器中断(如果它在内核模式下执行)?或者它如何响应高温切断中断。
请有人清楚我的怀疑
答案 0 :(得分:4)
首先,您的假设是不正确的:如果设置了配置选项CONFIG_PREEMPT_VOLUNTARY
或CONFIG_PREEMPT
,Linux内核确实提供了有限的内核模式抢占。
启用抢占后,如果持有锁,任务将不会被抢占;内核开发人员非常关注进程持有锁的时间,并尝试减少锁持有的时间。 (部分是因为抢占,部分是因为持有的锁越长,系统可能的并发性就越小,如果多个处理器争用同一个锁。如果锁被保持很短的时间,则争用较少,吞吐量可能更高。)
此外,内核开发人员试图限制进程在内核模式下可能花费的时间长度。毕竟,在内核中花费的时间是不是在应用程序中花费的时间,无论应用程序做了什么。
如果标准Linux内核无法为您提供足够好的硬实时性能处理中断,您当然可以使用RTLinux等commercial support可用的系统。
答案 1 :(得分:0)
通常,中断能够完成其名称所暗示的内容,中断当时正在运行的任何内容,无论是用户空间进程还是内核中运行的系统调用。