操作系统中的多道程序设计
多道程序设计操作系统于20世纪60年代初引入,以克服批处理操作系统的局限性。批处理系统的主要缺点是作业的 I/O 操作期间CPU 处于空闲状态。但通过多道程序设计,当一个作业等待 I/O 操作完成时,CPU 可以执行另一个作业。
阅读本章以了解更多关于多道程序设计操作系统的工作原理、优点、缺点和示例。
- 什么是多道程序设计?
- 多道程序设计操作系统的工作原理
- 多道程序设计操作系统的优点
- 多道程序设计操作系统的缺点
- 多道程序设计与多任务操作系统
什么是多道程序设计?
多道程序设计是一种在单个处理器上运行多个程序的方法,使 CPU 始终处于忙碌状态。这意味着多个作业保存在主内存中,CPU 依次分配给它们。当一个作业暂时挂起或等待 I/O 操作时,CPU 将分配给另一个作业。这样,CPU 始终有作业可执行。
采用多道程序设计方法的操作系统称为多道程序设计操作系统。大多数现代操作系统如 Windows、Linux 和 macOS 都支持多道程序设计。
多道程序设计操作系统的工作原理
下面的动画展示了多道程序设计操作系统的工作过程 −
在上面的动画中,
步骤 1 − 作业被加载到主内存中。
步骤 2 − 操作系统从内存中选择作业 A 并将其分配给 CPU。
步骤 3 − 作业 A 需要执行 I/O 操作,因此它被移到辅助存储,CPU 被分配给作业 B。
步骤 4 − 作业 B 完成执行并从 CPU 中移除。现在,作业 A 从辅助存储返回到主内存,CPU 被分配给它。
步骤 5 − 此过程持续进行,直到所有作业执行完毕。
多道程序设计操作系统的优点
多道程序设计操作系统的一些优点包括 −
- 提高 CPU 使用率 − 多道程序设计通过在作业等待 I/O 操作时将其分配给另一个作业,确保 CPU 始终忙碌。
- 提高系统吞吐量 − 吞吐量指在给定时间段内完成作业的数量。多道程序设计通过并发执行多个作业来提高系统吞吐量。
- 减少等待时间 − 在多道程序设计操作系统中,作业无需长时间等待即可执行。由于多个作业保存在内存中,操作系统可以在作业准备好执行时快速将其分配给 CPU。
多道程序设计操作系统的缺点
多道程序设计操作系统的一些缺点包括 −
- 复杂性 与批处理操作系统相比,多道程序设计操作系统在设计和实现上更加复杂。需要高级数据结构和算法来管理内存中的多个作业。
- 内存管理 多道程序设计需要良好的内存管理技术来为多个作业分配和释放内存。
- 开销 操作系统需要执行额外的任务,如作业调度、内存管理和上下文切换。这种开销可能会降低整体系统性能。
多道程序 vs 多任务操作系统
多任务操作系统是多道程序操作系统的现代和高级版本。它通过在多个任务或进程之间快速切换来支持同时执行多个任务或进程。以下是多道程序和多任务操作系统的一些关键区别 −
| 方面 | 多道程序 OS | 多任务 OS |
|---|---|---|
| 定义 | 在多道程序中,多个程序保存在内存中,CPU 一次分配给一个程序。 | 在多任务中,通过在多个任务或进程之间快速切换来同时执行它们。 |
| 重点 | 多道程序的重点是通过多个作业保持 CPU 繁忙来最大化 CPU 利用率。 | 多任务的重点是在多个任务之间共享 CPU 时间,以提供同时执行的错觉。 |
| 上下文切换 | 上下文切换较少发生,仅在 I/O 操作或作业完成时发生。 | 多任务中的上下文切换更频繁 |
| 核心/CPU 数量 | 适用于单核或单 CPU 系统。但也可以在多核系统上实现。 | 专为多核或多 CPU 系统设计。 |
| 使用场景 | 多道程序主要用于批处理系统。 | 多任务常见于现代操作系统,如 Windows、Linux 和 macOS。 |
结论
多道程序操作系统被引入以提高批处理系统中 CPU 利用率的效率。它允许将多个作业保存在内存中,CPU 一次分配给它们一个作业。在一个作业的 I/O 操作期间,CPU 分配给另一个作业,这样 CPU 始终处于繁忙状态。多道程序的主要优势是最大化 CPU 利用率,并提高系统吞吐量。然而,它也带来了诸如复杂性、内存管理和开销等挑战。今天的大多数现代操作系统都支持多道程序和多任务。