操作系统 Spooling排队打印

操作系统 Spooling排队打印

在操作系统中,我们需要将输入交给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按照以下步骤工作:

  1. Spooling涉及创建一个名为SPOOL的缓冲区,用于保存作业和数据,直到创建SPOOL的设备准备就绪并执行该作业或对数据进行操作。
  2. 当一个更快的设备将数据发送到一个较慢的设备以执行某些操作时,它使用附加的任何二级存储器作为SPOOL缓冲区。该数据在SPOOL中保留,直到较慢的设备准备好操作这些数据。当较慢的设备准备好时,SPOOL中的数据被加载到主存储器中进行所需的操作。
    操作系统 Spooling排队打印

  3. Spooling将整个二级存储器视为一个可以存储多个作业和数据用于多个操作的巨大缓冲区。Spooling的优点在于它可以创建一个按照FIFO顺序执行作业的作业队列,逐个执行作业。

  4. 一个设备可以连接到许多输入设备,这些设备可能需要对其数据进行一些操作。因此,所有这些输入设备可以将其数据放入二级存储器(SPOOL),然后由设备逐个执行。这将确保CPU在任何时间都不空闲。因此,我们可以说Spooling是缓冲和排队的组合。
  5. 在CPU生成某些输出后,此输出首先保存在主存储器中。然后,将该输出从主存储器传输到二级存储器,再从二级存储器将输出发送到相应的输出设备。

Spooling的示例

Spooling的最大示例是 打印 。要打印的文档存储在SPOOL中,然后添加到打印队列中。在此期间,许多进程可以执行其操作,使用CPU而无需等待,而打印机逐个对文档执行打印过程。

操作系统 Spooling排队打印

还可以添加许多功能到排队打印过程中,比如设置优先级或在打印过程完成时通知,或者根据用户选择选择不同类型的纸张打印。

排队打印的优点

排队打印在操作系统中具有以下优点:

  • 不论I/O设备或操作的数量多少,多个I/O设备可以同时工作而不会相互干扰或中断。
  • 在排队打印中,I/O设备和CPU之间没有交互。这意味着CPU无需等待I/O操作的完成。这些操作需要较长的时间才能完成执行,因此CPU不会等待它们完成。
  • CPU处于空闲状态下被认为是低效的。大多数协议都被创建为在最短的时间内高效利用CPU。在排队打印中,CPU大部分时间都在忙碌,只有在队列耗尽时才进入空闲状态。因此,所有任务都添加到队列中,CPU将完成所有这些任务,然后进入空闲状态。
  • 它允许应用程序以CPU速度运行,同时以各自的最高速度操作I/O设备。

排队打印的缺点

在操作系统中,排队打印具有以下缺点:

  • 排队打印需要大量的存储空间,取决于输入请求的数量和连接的输入设备数量。
  • 因为SPOOL被创建在辅助存储器中,同时有多个输入设备工作可能会占用辅助存储器的大量空间,从而增加磁盘流量。这导致磁盘随着流量的增加变得越来越慢。
  • 排队打印用于将数据从较慢的设备复制和执行到较快的设备。较慢的设备创建一个SPOOL来存储要在队列中操作的数据,然后CPU对其进行处理。这个过程本身使得在需要从CPU获取实时结果的实时环境中使用排队打印变得毫无意义。这是因为输入设备较慢,因此以较慢的速度产生其数据,而CPU可以操作得更快,因此它转向队列中的下一个进程。这就是为什么最终结果或输出在较晚的时间产生而不是实时产生。

排队打印和缓冲的区别

排队打印和缓冲是I/O子系统提高计算机性能和效率的两种方式,它们利用主存储器或磁盘上的存储空间。

操作系统 Spooling排队打印

Spooling (Simultaneous Peripheral Operations Online)和Buffering的基本区别在于Spooling将一个作业的I/O与另一个作业的执行重叠,而Buffering将一个作业的I/O与相同作业的执行重叠。以下是Spooling和Buffering的一些更多区别,例如:

术语 Spooling Buffering
定义 Spooling,即Simultaneous Peripheral Operation Online(SPOOL)的缩写,将数据存放在临时工作区,由另一个程序或资源进行访问和处理。 缓冲是将数据临时存储在缓冲区中的操作。它有助于匹配发送方和接收方之间的数据流速度。
资源需求 Spooling需要较少的资源管理,因为不同的资源管理特定作业的过程。 缓冲需要较多的资源管理,因为同一资源管理同一分成的作业的过程。
内部实现 Spooling重叠一个作业的输入和输出与另一个作业的计算。 缓冲重叠一个作业的输入和输出与同一作业的计算。
效率 Spooling比缓冲更高效。 缓冲比Spooling更低效。
处理器 Spooling也可以在远程站点处理数据。只需通知汇集器在远程站点完成一个进程时,将下一个进程传送到远程设备。 缓冲不支持远程处理。
内存占用 它将磁盘视为一个巨大的汇集器或缓冲区。 缓冲区是主存储器中的有限区域。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程