抢占式和非抢占式内核


作为操作系统的基本构建块,内核控制着涉及 CPU、内存和输入/输出设备的操作。这些资源根据内核的调度机制分配给各种任务或进程。

内核是操作系统中最关键的组件,负责管理系统资源并向用户程序提供服务。操作系统设计人员必须做出的重要选择之一是使用抢占式内核还是非抢占式内核。

抢占式内核是指可以在正在运行的进程中间切换到另一个进程,而无需正在运行的进程的同意。因此,内核能够终止任何当前正在运行的进程,并将它的资源切换到正在等待执行的进程。抢占式内核中的调度程序负责选择哪个进程接下来获取 CPU。实时操作系统通常使用抢占式内核,在这些系统中,确保进程满足其截止日期至关重要。

抢占式和非抢占式内核的比较

内核使用两种不同的调度算法:抢占式和非抢占式。在抢占式内核中,操作系统可以暂停当前正在运行的进程,以便将 CPU 提供给优先级更高的任务。这种方法可以实现更好的响应能力和资源管理,但它也可能导致更高的开销,并可能导致系统整体性能下降。

  • 相反,非抢占式内核允许正在运行的作业保留 CPU,直到它主动释放处理器。这种方法可以减少开销并提高系统吞吐量,但它也可能导致响应速度缓慢,并可能导致低优先级进程被饿死。

  • 操作系统或内核的核心组件,控制系统资源并提供程序可以执行的平台。调度程序是内核的一部分,负责将 CPU 时间分配给进程。

  • 进程调度是抢占式和非抢占式内核之间的主要区别。

在抢占式内核中,调度程序可以停止正在运行的进程,以便为另一个进程腾出空间。因此,如果调度程序决定另一个进程具有更高的优先级,它可能会决定抢占当前进程。这可能是由定时器中断或更高优先级任务就绪引起的。相反,非抢占式内核不允许调度程序中断正在运行的进程。相反,另一个进程必须主动放弃对 CPU 的控制才能执行。

抢占式与非抢占式调度算法

抢占式和非抢占式内核都可以与各种调度算法一起使用。要使用的调度算法取决于系统的特定需求以及它预期处理的工作负载。下面列出了一些最常用的调度算法的特性:

先到先服务 (FCFS)

FCFS 是一种非抢占式调度机制,按照进程到达的顺序将 CPU 时间分配给进程。这意味着第一个到达的进程将首先获得 CPU 时间。FCFS 的主要优点是它简单易于实现。但是,如果第一个进程需要很长时间才能完成,它可能会导致后续进程的等待时间过长。

最短作业优先 (SJF)

FCFS 是一种非抢占式调度机制,按照进程到达的顺序将 CPU 时间分配给进程。这意味着第一个到达的进程将首先获得 CPU 时间。FCFS 的主要优点是它简单易于实现。但是,如果第一个进程需要很长时间才能完成,它可能会导致后续进程的等待时间过长。

轮循 (RR)

RR 是一种抢占式调度算法,它以固定的时间片将 CPU 时间分配给进程。调度程序为每个进程提供一定量的时间来完成其工作,然后继续执行队列中的下一个进程。RR 的主要优点是它确保所有进程公平地分配 CPU 时间,并且可以减少低优先级任务的等待时间。然而,频繁的上下文切换也可能导致过高的开销。

优先级调度

优先级调度是一种调度方法,根据进程的重要性或紧急程度为进程分配不同的优先级。对于实时应用程序或关键任务系统,高优先级进程在低优先级进程之前获得 CPU 时间。优先级调度可以使用抢占式或非抢占式内核来实现。

优点和缺点

与非抢占式内核相比,抢占式调度算法和内核具有一些优点。抢占式调度的主要优点是它可以确保高优先级进程在需要时获得 CPU 时间。这对于实时系统至关重要,因为处理延迟可能产生负面影响。此外,抢占式调度可以通过要求进程在预定的时间段后放弃对 CPU 的控制来帮助防止进程独占 CPU。这可以改善整体系统性能并减少由于资源耗尽导致崩溃的可能性。

但是,抢占式调度也可能存在一些明显的缺点。一个主要的缺点是它可能导致高开销,因为频繁的上下文切换。上下文切换是保存一个正在运行的进程的状态并在加载下一个进程的状态时执行的时间和资源密集型操作。如果系统包含许多频繁抢占的进程,这可能成为一个问题。

非抢占式内核和调度算法也各有优缺点。由于调度程序不需要暂停正在运行的进程,因此非抢占式调度可以减少上下文切换的开销。非抢占式调度也可能比抢占式调度更简单易于实现。

然而,非抢占式调度也可能导致低优先级进程的等待时间更长,这会对整个系统的性能产生负面影响。此外,它不能保证高优先级进程在需要时获得 CPU 时间。

现实世界中的例子

一些现实世界的操作系统根据其特定需求使用抢占式和非抢占式调度方法。例如,Windows 使用基于优先级的调度算法和抢占式内核来根据进程的重要性对进程进行优先级排序。此外,Linux 使用抢占式内核和多种调度算法,例如基于优先级的调度程序和轮循调度程序。

相反,早期的 macOS 版本使用协作式多任务处理和非抢占式内核,需要程序自愿放弃 CPU 控制。当前版本的 macOS 使用混合调度方法,结合了基于优先级和时间片切分的调度,使用抢占式内核。

结论

总之,是使用抢占式内核和调度算法还是非抢占式内核和调度算法取决于系统的特定需求以及它预期处理的工作负载。抢占式调度可以确保高优先级进程在需要时获得 CPU 时间,但可能会导致频繁的上下文切换导致高开销。非抢占式调度可以减少开销,但也会导致低优先级进程的等待时间更长。这两种类型的调度算法在现实世界的操作系统中都很常见,因此,在开发操作系统时,开发人员必须仔细权衡每种算法的优缺点。

更新时间: 2023-07-19

453 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.