操作系统中的 CPU 调度

2025年4月8日 | 阅读 2 分钟

在单道程序系统中,例如 MS DOS,当一个进程等待任何 I/O 操作完成时,CPU 会保持空闲。这是一种开销,因为它浪费了时间并导致了饥饿问题。然而,在多道程序系统中,CPU 在进程等待期间不会保持空闲,而是会开始执行其他进程。操作系统必须定义哪个进程将获得 CPU。

在多道程序系统中,操作系统通过调度 CPU 上的进程来最大限度地利用 CPU,这个过程称为CPU 调度。操作系统使用各种调度算法来调度进程。

这是短程调度程序的一项任务,负责调度作业池中存在的进程。每当运行中的进程请求某些 I/O 操作时,短程调度程序会保存进程的当前上下文(也称为 PCB),并将其状态从“运行”更改为“等待”。在进程处于等待状态期间,短程调度程序会从就绪队列中选择另一个进程,并将 CPU 分配给该进程。这个过程称为上下文切换

进程控制块中保存了什么?

操作系统在进程的整个生命周期中维护一个进程控制块。进程控制块在进程终止或被杀死时被删除。进程控制块中保存着以下信息,这些信息会随着进程的状态而改变。


os CPU Scheduling Process Control Block

为什么我们需要调度?

在多道程序中,如果长程调度程序选择了过多的 I/O 密集型进程,那么 CPU 大部分时间都会处于空闲状态。操作系统的任务是优化资源利用率。

如果大多数正在运行的进程将其状态从“运行”更改为“等待”,那么系统中可能始终存在死锁的可能性。因此,为了减少这种开销,操作系统需要调度作业以获得最佳的 CPU 利用率并避免死锁的可能性。