操作系统中的假脱机2025年4月13日 | 阅读 6 分钟 在操作系统中,我们需要向 CPU 提供输入,CPU 执行指令,最终给出输出。但这种方法存在一个问题。在正常情况下,我们需要处理许多进程,我们知道 I/O 操作所需的时间与 CPU 执行指令所需的时间相比非常长。因此,在旧的方法中,一个进程将通过输入设备提供输入,在此期间,CPU 处于空闲状态。 然后 CPU 执行指令,输出再次被发送到某个输出设备,此时 CPU 也处于空闲状态。显示输出后,下一个进程开始执行。因此,CPU 大部分时间都处于空闲状态,这是我们在操作系统中最糟糕的情况。这时,假脱机(Spooling)的概念就派上用场了。 什么是假脱机(Spooling)假脱机(Spooling)是一种将数据暂时存储起来,以供设备、程序或系统使用和执行的过程。数据被发送到内存或其他易失性存储器中,直到程序或计算机请求其执行。 SPOOL 是 **simultaneous peripheral operations online**(同时外围设备在线操作)的缩写。通常,假脱机(spool)维护在计算机的物理内存、缓冲区或特定于 I/O 设备的中断中。假脱机(spool)按升序处理,基于 FIFO(先进先出)算法工作。 假脱机(Spooling)是指将各种 I/O 作业的数据放入一个缓冲区。这个缓冲区是内存或硬盘上的一个特殊区域,I/O 设备可以访问该区域。操作系统在分布式环境中执行以下活动: - 处理 I/O 设备数据假脱机(spooling),因为设备的数据访问速率不同。
- 维护假脱机(spooling)缓冲区,该缓冲区提供了一个等待站,数据可以在其中停留,直到较慢的设备跟上。
- 由于假脱机(spooling)过程,可以并行计算,因为计算机可以按并行顺序执行 I/O。计算机可以在执行计算任务的同时,从磁带读取数据,将数据写入磁盘,并将数据写入磁带打印机。
操作系统中的假脱机(Spooling)是如何工作的在操作系统中,假脱机(spooling)按以下步骤工作: - 假脱机(Spooling)涉及创建一个名为 SPOOL 的缓冲区,该缓冲区用于暂存作业和数据,直到创建 SPOOL 的设备准备好使用和执行该作业或处理数据。
- 当一个较快的设备将数据发送到一个较慢的设备以执行某些操作时,它会使用任何附加的辅助存储器作为 SPOOL 缓冲区。这些数据保存在 SPOOL 中,直到较慢的设备准备好处理这些数据。当较慢的设备准备好时,SPOOL 中的数据将被加载到主内存中以进行所需的操作。
 - 假脱机(Spooling)将整个辅助存储器视为一个巨大的缓冲区,可以存储许多作业和用于许多操作的数据。假脱机(Spooling)的优点在于它可以创建作业队列,这些作业按 FIFO 顺序执行,逐个执行作业。
- 一个设备可以连接到许多输入设备,这些设备可能需要对其数据执行某些操作。因此,所有这些输入设备都可以将它们的数据放入辅助存储器(SPOOL)中,然后设备可以逐个执行。这将确保 CPU 在任何时候都不会空闲。因此,我们可以说假脱机(Spooling)是缓冲(buffering)和排队(queuing)的结合。
- CPU 生成一些输出后,该输出首先保存在主内存中。然后,该输出从主内存传输到辅助存储器,然后从辅助存储器发送到相应的输出设备。
假脱机(Spooling)的示例假脱机(Spooling)最常见的例子是**打印**。要打印的文档存储在 SPOOL 中,然后添加到打印队列中。在此期间,许多进程可以执行它们的操作并使用 CPU,而无需等待打印机逐个执行文档的打印过程。  假脱机(Spooling)打印过程还可以添加许多功能,例如设置优先级、在打印过程完成时发送通知,或根据用户的选择选择不同类型的打印纸张。 假脱机(Spooling)的优点以下是操作系统中假脱机(spooling)的优点: - I/O 设备或操作的数量并不重要。许多 I/O 设备可以同时协同工作,而不会相互干扰或中断。
- 在假脱机(spooling)中,I/O 设备和 CPU 之间没有交互。这意味着 CPU 不需要等待 I/O 操作的发生。这些操作需要很长时间才能执行完毕,因此 CPU 不会等待它们完成。
- CPU 处于空闲状态被认为效率不高。大多数协议旨在在最短的时间内高效地利用 CPU。在假脱机(spooling)中,CPU 大部分时间都在忙碌,只有当队列耗尽时才会进入空闲状态。因此,所有任务都添加到队列中,CPU 会完成所有这些任务,然后进入空闲状态。
- 它允许应用程序以 CPU 的速度运行,同时以各自的全部速度操作 I/O 设备。
假脱机(Spooling)的缺点在操作系统中,假脱机(spooling)具有以下缺点: - 假脱机(Spooling)需要大量的存储空间,具体取决于输入请求的数量和连接的输入设备数量。
- 由于 SPOOL 是在辅助存储器中创建的,同时运行的许多输入设备可能会占用辅助存储器上的大量空间,从而增加磁盘流量。随着流量的不断增加,这会导致磁盘速度越来越慢。
- 假脱机(Spooling)用于将数据从慢速设备复制并执行到快速设备。慢速设备创建一个 SPOOL 来存储要处理的数据,然后 CPU 对其进行处理。这个过程本身使得假脱机(Spooling)在需要 CPU 实时结果的实时环境中不实用。这是因为输入设备较慢,因此以较慢的速度生成数据,而 CPU 可以更快地处理,因此它会继续处理队列中的下一个进程。这就是为什么最终结果或输出会稍后而不是实时生成的原因。
假脱机(Spooling)和缓冲(Buffering)的区别假脱机(Spooling)和缓冲(Buffering)是 I/O 子系统通过使用主内存或磁盘中的存储空间来提高计算机性能和效率的两种方式。  假脱机(Spooling)和缓冲(Buffering)之间的基本区别在于,假脱机(Spooling)将一个作业的 I/O 操作与另一个作业的执行操作重叠。相比之下,缓冲(buffering)将一个作业的 I/O 操作与同一作业的执行操作重叠。以下是假脱机(Spooling)和缓冲(Buffering)之间的一些更多区别: 条款 | Spooling | 缓冲 |
---|
定义 | 假脱机(Spooling),是 Simultaneous Peripheral Operation Online(SPOOL)的缩写,将数据放入临时工作区域,以便由另一个程序或资源访问和处理。 | 缓冲(Buffering)是将数据临时存储在缓冲区中的行为。它有助于匹配发送方和接收方之间数据流的速度。 | 资源需求 | 假脱机(Spooling)需要较少的资源管理,因为不同的资源为特定作业管理进程。 | 缓冲(Buffering)需要更多的资源管理,因为同一资源管理同一细分作业的进程。 | 内部实现 | 假脱机(Spooling)将一个作业的输入和输出与另一个作业的计算操作重叠。 | 缓冲(Buffering)将一个作业的输入和输出与同一作业的计算操作重叠。 | 高效 | 假脱机(Spooling)比缓冲(Buffering)更有效。 | 缓冲(Buffering)的效率低于假脱机(Spooling)。 | 处理器 | 假脱机(Spooling)还可以处理远程站的数据。假脱机程序(spooler)只需在远程站点的一个进程完成时发出通知,以便将下一个进程假脱机(spool)到远程侧设备。 | 缓冲(Buffering)不支持远程处理。 | 内存占用 | 它将磁盘视为一个巨大的假脱机(spool)或缓冲区。 | 缓冲区是主内存中的一个有限区域。 |
|