减小
增大
默认
护眼
夜间
默认
CPU调度是什么
《进程调度是什么》一节,我们从进程的角度给您介绍了“多任务操作系统是如何同时执行多个进程的”。本节我们将从 CPU 的角度继续带您了解:多任务操作系统中 CPU 调度的具体实现细节。
CPU 是最重要的计算机资源之一,CPU 调度指的是操作系统将 CPU 资源分配给不同进程的过程。CPU 调度的整个过程,由操作系统中的短期调度程序(一种进程调度程序)负责完成。每当 CPU 处于空闲状态时,短期调度程序就会从位于内存的就绪队列中挑选一个进程,交给 CPU 执行。
也就是说,在非抢占式调度的模式中,执行的进程可以一直占用 CPU 资源,直至其执行完毕或者切换到等待状态。
支持抢占式调度的操作系统,通常会为各个进程设置不同的优先级,优先级低的进程必须等待优先级高的进行执行完毕后才能继续执行。因此,如果有优先级更高的进程从等待状态切换到就绪状态,则当前执行的进程就会被强行中断,同时 CPU 资源会分配给优先级高的进程。
以我们最熟悉的 Windows 操作系统为例,最初的 Windows 系统(例如 Windows 3.x)采用非抢占式调度的方法,自 Windows 95 开始引入抢占式调度方法,并且之后所有的 Windows 系统都采用的是抢占式调度方法。
评价一个 CPU 调度算法的“好坏”,可以从多个方面进行考量,如表 1 所示。
根据表 1 中的衡量标准,CPU 利用率和吞吐量越大,其它衡量标准值越小,则 CPU 调度算法越好。
CPU 调度算法有很多,例如先来先服务调度算法、最短作业优先调度算法、优先级调度算法等,我们会在《进程调度算法》一节做详细讲解。
与进程调度不同,CPU 调度强调的是将 CPU 资源分配给不同进程的过程,整个调度过程由操作系统中的短期调度程序负责完成。
因此,进程调度描述的是操作系统中整个进程调度机制的工作过程,而 CPU 调度更侧重于描述短期调度程序的实现机制和运行过程。通常情况下,进程调度代指的仅是短期调度程序,因此它常常和 CPU 调度混用,这也是某些教程将它们合并在一起讲解的原因。
CPU 是最重要的计算机资源之一,CPU 调度指的是操作系统将 CPU 资源分配给不同进程的过程。CPU 调度的整个过程,由操作系统中的短期调度程序(一种进程调度程序)负责完成。每当 CPU 处于空闲状态时,短期调度程序就会从位于内存的就绪队列中挑选一个进程,交给 CPU 执行。
CPU调度方式
CPU 调度的方式有 2 种,分别称为非抢占式调度和抢占式调度。1) 非抢占式调度
为了充分利用 CPU 资源,当进程正常执行结束或者由运行状态切换至等待状态(例如执行 I/O 操作、等待子进程执行完毕)时,调度程序会从就绪队列中挑选出一个进程并交给 CPU 执行,这样的 CPU 调度称为非抢占式调度。也就是说,在非抢占式调度的模式中,执行的进程可以一直占用 CPU 资源,直至其执行完毕或者切换到等待状态。
2) 抢占式调度
所谓抢占式调度,是指进程在执行过程中被强制中止执行,同时调度程序将 CPU 资源分配给另一个进程的过程。支持抢占式调度的操作系统,通常会为各个进程设置不同的优先级,优先级低的进程必须等待优先级高的进行执行完毕后才能继续执行。因此,如果有优先级更高的进程从等待状态切换到就绪状态,则当前执行的进程就会被强行中断,同时 CPU 资源会分配给优先级高的进程。
以我们最熟悉的 Windows 操作系统为例,最初的 Windows 系统(例如 Windows 3.x)采用非抢占式调度的方法,自 Windows 95 开始引入抢占式调度方法,并且之后所有的 Windows 系统都采用的是抢占式调度方法。
CPU调度算法
基于不同的设计初衷,先后诞生了很多 CPU 调度算法。评价一个 CPU 调度算法的“好坏”,可以从多个方面进行考量,如表 1 所示。
衡量标准 | 描 述 |
---|---|
CPU 利用率 | 能够充分利用 CPU 资源,使 CPU 大部分时间都处于工作状态。 |
吞吐量 | 单位时间内执行完成的进程数量。 |
周转时间 | 完成同一个任务所要花费的总时间,即该任务从进入系统到执行完毕的时间。 |
等待时间 | 一个进程从就绪状态切换到运行状态所花费的时间。 |
平均负载 | 驻留在就绪队列中的进程的平均数量。 |
响应时间 | 从提交请求到系统生成第一个响应所花费的时间。 |
根据表 1 中的衡量标准,CPU 利用率和吞吐量越大,其它衡量标准值越小,则 CPU 调度算法越好。
CPU 调度算法有很多,例如先来先服务调度算法、最短作业优先调度算法、优先级调度算法等,我们会在《进程调度算法》一节做详细讲解。
CPU调度和进程调度
不同的操作系统中,可能同时包含 3 种进程调度程序,分别是长期调度程序、短期调度程序和中期调度程序,它们相互配合进而形成一个完整的进程调度机制。与进程调度不同,CPU 调度强调的是将 CPU 资源分配给不同进程的过程,整个调度过程由操作系统中的短期调度程序负责完成。
因此,进程调度描述的是操作系统中整个进程调度机制的工作过程,而 CPU 调度更侧重于描述短期调度程序的实现机制和运行过程。通常情况下,进程调度代指的仅是短期调度程序,因此它常常和 CPU 调度混用,这也是某些教程将它们合并在一起讲解的原因。