操作系统中抢占式和非抢占式内核的区别

1. 抢占式内核

顾名思义,抢占式内核是一种始终执行准备运行的最高优先级任务的内核。它不能使用非重入函数,除非并且直到函数是互斥的。

示例:Linux 2-6

2. 非抢占式内核

顾名思义,非抢占式内核是一种在内核数据结构上没有竞争条件的内核,因为一次只有一个进程在内核中处于活动状态。它被认为是实时应用程序的一个严重缺点,因为它不允许抢占在内核模式下运行的进程。

示例 : Linux 2.4

操作系统中抢占式和非抢占式内核的区别

抢占式内核 非抢占式内核
这是一个可以立即替换的过程。 这是一个继续运行的进程,直到它完成处理执行处理程序或自愿放弃 CPU。
与非抢占式内核相比,它更适合实时编程。 与抢占式内核相比,它不太适合实时编程。
在这种情况下,准备运行的更高优先级的任务被赋予 CPU 控制权。 在这种情况下,每个任务都被明确放弃了 CPU 控制。
即使在内核模式下,它通常也允许抢占。 它通常不允许抢占在内核模式下运行的进程。
响应时间是确定性的,与非抢占式内核相比,响应时间响应更快。 响应时间是不确定的,与抢占式内核相比,响应时间的响应速度较慢。
优先级较高的任务准备就绪,当前正在运行的任务将挂起并移动到就绪队列。 优先级较高的任务可能需要等待很长时间。
它不需要信号量。 共享数据通常需要信号量。
它不能使用非重入代码。 它可以使用非重入代码。
与非抢占式内核相比,设计抢占式内核更加困难。 与抢占式内核相比,设计非抢占式内核的难度较小。
它们在实际方案中更安全、更有用。 它们在实际场景中不太安全且用处不大。