假脱机服务(SPOOLing service)

1. 基本含义

SPOOLing 是 Simultaneous Peripheral(外设) Operation On-Line(联机) 的缩写,是关于慢速字符设备(慢速外设,比如打印机)如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。

举例来说,当一个大公司执行账单核对,计算的工作仅需数秒或几分钟,打印却需要数小时之久。此账单程序将无法执行其他的计算任务,直到所有的账单打印完毕。类似地,在 PC 操作系统未采用“假脱机技术”之前,当低速的打印程序未结束时,字处理程序不能做其他的任何任务,包括和用户的交互。

这里写图片描述

2. 组成

1.输入井和输出井:输入井和输出井的存储区域是在磁盘上开辟出来的。输入输出井中的数据一般以文件的形式组织管理,这些文件称之为井文件。一个文件仅存放某一个进程的输入或输出数据,所有进程的数据输入或输出文件链接成为一个输入输出队列。 
2.输入缓冲区和输出缓冲区:输入缓冲区和输出缓冲区的存储区域是在内存中开辟出来的。主要用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存有输入设备传送的数据,之后再传送到输入井;输出缓冲区 同理。 
3.输入进程和输出进程:输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。当CPU需要的时候,直接从输入井将数据读入内存。反之,输出的同理。 
4.井管理程序:用于控制作业与磁盘井之间信息的交换。

3. 特点

1.提高了I/O的速度:,对数据执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU和低速的I/Os设备之间速度的不匹配的矛盾。 
将独占设备改造成了共享设备:因为在假脱机打印机系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配了一个空闲盘块和建立了一张I/O请求表。 
实现了虚拟设备功能:宏观上,对于每一个进程而言,它们认为是自己独占了一个设备,即使实际上是多个进程在同时使用一台独占设备。也可以说,假脱机系统,实现了将独占设备变换为若干台对应的逻辑设备的功能。

4. 实例

将一台独享打印机改造为可供多个用户共享的打印机,是应用 SPOOLing技术的典型实例。

具体做法是:系统对于用户的打印输出,并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。

猜你喜欢

转载自blog.csdn.net/william_munch/article/details/82865073