操作系统中的多处理器调度2025年7月18日 | 阅读时长11分钟 多处理器调度或多核调度侧重于设计包含多个处理器的系统的调度功能。在多处理器调度中,多个CPU分担负载(负载分担),以便同时运行各种进程。通常,多处理器调度比单处理器调度复杂。在多处理器调度中,有许多处理器,它们是相同的,我们可以在任何时候运行任何进程。 系统中的多个CPU之间紧密通信,共享一个公共总线、内存和其他外围设备。因此,我们可以说该系统是紧耦合的。这些系统用于处理大量数据,主要用于卫星、天气预报等领域。 在多处理器调度中,处理器在功能上是相同的,即同质的。我们可以使用任何可用的处理器来运行队列中的任何进程。 多处理器系统可以是异构的(不同类型的CPU)或同构的(相同的CPU)。可能会有特殊的调度约束,例如通过专用总线仅连接到单个CPU的设备。 没有哪项策略或规则可以被宣布为单处理器系统的最佳调度解决方案。同样,也没有多处理器系统的最佳调度解决方案。 多处理器调度的方法操作系统中有两种多处理器调度方法:对称多处理和非对称多处理。 ![]()
处理器亲和性处理器亲和性意味着一个进程对其当前正在运行的处理器具有亲和性。当一个进程在特定处理器上运行时,会对缓存内存产生一定影响。进程最近访问的数据会填充该处理器的缓存。因此,进程后续的内存访问通常在缓存内存中得到满足。 现在,假设进程迁移到另一个处理器。在这种情况下,第一个处理器的缓存内存内容必须失效,并且第二个处理器的缓存必须重新填充。由于失效和重新填充缓存的成本很高,大多数SMP(对称多处理)系统试图避免进程从一个处理器迁移到另一个处理器,并使进程在同一处理器上运行。这就是处理器亲和性。处理器亲和性有两种类型,例如: ![]()
负载均衡负载均衡是使SMP系统中所有处理器上的工作负载均匀分布的现象。负载均衡仅在每个处理器都有自己的私有可执行进程队列的系统上才需要。 负载均衡是不必要的,因为它一旦处理器空闲,就会立即从公共运行队列中提取一个可运行的进程。在SMP(对称多处理)上,保持所有处理器之间的工作负载平衡很重要,以充分利用拥有多个处理器的优势。一个或多个处理器将处于空闲状态,而其他处理器工作负载很高,同时还有等待CPU的处理器列表。负载均衡有两种通用方法: ![]()
多核处理器在多核处理器中,多个处理器核心放置在同一个物理芯片上。每个核心都有一个寄存器集来维护其架构状态,因此对操作系统来说它是一个独立的物理处理器。使用多核处理器的SMP系统比每个处理器都有自己物理芯片的系统更快,功耗更低。 然而,多核处理器可能会使调度问题复杂化。当处理器访问内存时,它会花费大量时间等待数据可用。这种情况称为内存停顿。它由于各种原因发生,例如缓存未命中,即访问不在缓存内存中的数据。 在这种情况下,处理器可能会花费多达50%的时间等待数据从内存中可用。为了解决这个问题,最近的硬件设计实现了多线程处理器核心,其中每个核心分配两个或更多硬件线程。因此,如果一个线程在等待内存时停顿,核心可以切换到另一个线程。有两种方法可以使处理器多线程化: ![]()
对称多处理器对称多处理器 (SMP) 是第三种模型。在此模型中,内存中只有一个操作系统的副本,但任何中央处理单元都可以运行它。现在,当进行系统调用时,进行系统调用的中央处理单元会陷入内核并处理该系统调用。该模型动态平衡进程和内存。这种方法使用对称多处理,其中每个处理器都是自调度的。 调度通过每个处理器的调度器检查就绪队列并选择一个进程来执行而继续进行。在这个系统中,所有进程都可能在一个公共就绪队列中,或者每个处理器都可能有自己的私有就绪进程队列。多处理器操作系统中主要存在三个争用源:
主从多处理器在此多处理器模型中,有一个单一数据结构用于跟踪就绪进程。在此模型中,一个中央处理单元充当主处理器,另一个充当从处理器。所有处理器都由一个称为主服务器的单一处理器处理。 ![]() 主服务器运行操作系统进程,从服务器运行用户进程。内存和输入输出设备在所有处理器之间共享,所有处理器都连接到一条公共总线。该系统简单且减少了数据共享,因此该系统称为非对称多处理。 虚拟化与线程在这种类型的多处理器调度中,即使是单个CPU系统也充当多处理器系统。在采用虚拟化的系统中,虚拟化会为系统上运行的每个虚拟机提供一个或多个虚拟CPU。然后,它在虚拟机之间调度物理CPU的使用。
多处理器调度的算法类型操作系统使用各种多处理器调度算法。一些最常见的类型是:
调度多个处理器的优点
多处理器调度的缺点
常见问题什么是多处理器调度? 多处理器调度是操作系统用于在两个或多个CPU之间分配和管理任务的一种技术。同时管理多个进程的目标是平衡负载、最大化CPU利用率并提高系统性能。 对称多处理与非对称多处理有何不同? 对称多处理(SMP)将工作负载平均分配给所有处理器,这是它与非对称多处理的区别。在非对称多处理(AMP)中,单个处理器(通常称为主处理器)控制系统并将任务分配给从处理器,然后从处理器完成任务。 为什么负载均衡在多处理器系统中很重要? 在多处理器系统中,负载均衡是必要的,以确保每个处理器都被平等使用。没有它,一些CPU将空闲和过载,这可能对性能产生不利影响。有效分配负载可以提高生产力并减少瓶颈。 什么是处理器亲和性,为什么要使用它? 将特定CPU分配给进程的过程称为处理器亲和性。将进程保持在同一处理器上可以提高缓存性能,因为它每次运行时需要加载到缓存内存中的数据更少。 所有操作系统都能调度和管理多个处理器吗? 不是。只有具有多处理器意识的操作系统,例如最新版本的Windows、Linux和macOS,才能有效处理多个处理器。过旧或简单的操作系统可能只支持单处理器环境。 下一个主题Proton操作系统 |
我们请求您订阅我们的新闻通讯以获取最新更新。