1.什么是SPOOLing 脱机输入、脱机输出技术。
该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上,或者相反。
引入了多道程序技术后,可以利用进程来模拟脱机输入时的外围控制机功能。这样,外围操作与CPU对数据的处理同时进行,我们把这种在联 机情况下实现的同时外围操作称SPOOLing,或称为假脱机操作。
2.SPOOLing系统的组成
由上所述得知,SPOOLing技术是对脱机输入、输出系统的模拟。 相应地,SPOOLing系统必须建立在具有多道程序功能的操作系统上, 而且还应有高速随机外存的支持,这通常是采用磁盘存储技术。
SPOOLing系统主要有以下三部分:
(1) 输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据。
(2) 输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
(3) 输入进程SPi和输出进程SPo。这里利用两个进程来模拟脱机I/O时的外围控制机。其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时, 直接从输入井读入内存;进程SPo模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
3.共享打印机
打印机是经常要用到的输出设备,属于独占设备。利用SPOOLing技 术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用 率,也方便了用户。共享打印机技术已被广泛地用于多用户系统和局域 网络中。当用户进程请求打印输出时,SPOOLing系统同意为它打印输出, 但并不真正立即把打印机分配给该用户进程,而只为它做两件事:① 由 输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送 入其中;② 输出进程再为用户进程申请一张空白的用户请求打印表,并 将用户的打印要求填入其中,再将该表挂到请求打印队列上。如果还有 进程要求打印输出,系统仍可接受该请求,也同样为该进程做上述两件事。
如果打印机空闲,输出进程将从请求打印队列的队首取出一张请 求打印表,根据表中的要求将要打印的数据,从输出井传送到内存缓 冲区,再由打印机进行打印。打印完后,输出进程再查看请求打印队 列中是否还有等待打印的请求表。若有,又取出队列中的第一张表, 并根据其中的要求进行打印,如此下去,直至请求打印队列为空,输 出进程才将自己阻塞起来。仅当下次再有打印请求时,输出进程才被唤醒。
4.SPOOLing系统的特点
(1) 提高了I/O的速度。这里,对数据所进行的I/O操作,已从对低 速I/O设备进行的I/O操作,演变为对输入井或输出井中数据的存取, 如同脱机输入输出一样,提高了I/O速度,缓和了CPU与低速I/O设备 之间速度不匹配的矛盾。
(2) 将独占设备改造为共享设备。因为在SPOOLing系统中,实际上 并没为任何进程分配设备,而只是在输入井或输出井中为进程分配一 个存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。
(3) 实现了虚拟设备功能。宏观上,虽然是多个进程在同时使用一 台独占设备,而对于每一个进程而言,他们都会认为自己是独占了一 个设备。当然,该设备只是逻辑上的设备。SPOOLing系统实现了将独 占设备变换为若干台对应的逻辑设备的功能。