SPOOLing(Simultaneous Peripheral Operations On Line)的直译意思是“联机情况下同时进行的外围设备操作”,通常称其为“假脱机操作”。SPOOLing系统是虚拟设备最典型的代表,包括假脱机输入系统和假脱机输出系统两个部分,是对脱机输入/输出技术的改进。
脱机操作需要卫星以及操作员的来回走动并装卸磁带,假脱机操作则不需要卫星机以及操作员工作。假脱机操作时在中断系统和I/O通道的支持下,利用多道程序技术,完成了脱机操作的功能,故称作假脱机操作。它的基本工作原理是,使用一道程序管理通道,完成从低速的
I/O设备输入数据到高速的磁盘上;使用另一道程序管理通道,完成将数据从高速的磁盘输出到低速的I/O设备上;同时,其他进程可进行数据处理。
输入设备是数据的真正来源,输出设备是数据的最终到达地点,负责实现将其他形式(例如卡片上的孔)的数据到内存数据的转换以及从内存数据到其他形式(例如纸张上的彩色图像)数据的转换,显然是必不可少的。通道是执行通道程序,完成数据在设备与内存空间交换的硬件,是假脱机系统的基本支持硬件。
输入井和输出井由磁盘或
磁鼓上的一个区域构成,是假脱机系统中的虚拟设备的承载实体,完成输入数据和输出数据的暂存。输入井和输出井可以以磁盘上的块为单位组成,此时需要对这些块的使用进行管理,一个虚拟设备对应若干个磁盘块,也可以利用文件系统来实现,此时的一个虚拟设备则对应一个或多个文件。
由于输入井和输出井负责实现多个虚拟设备,一个虚拟设备对应一个或多个磁盘块(或文件),而且虚拟设备是动态产生和消失,每次大小均不一样,与输入/输出的数据多少有关,因而输入井和输出井需要相应的程序来进行空间管理。
假脱机输入程序是操作系统的一部分,位于系统高层,通常以进程模式运行,属于
系统进程。必须指出,假脱机输入程序是整个系统只有一个,但运行该程序的进程却可能有多个。事实上,对应每一台输入机都有一个假脱机输入进程,负责对应输入机的输入操作,将作业数据由设备传送到输入井中。当输入机上无作业数据等待输入时,相应的假脱机输入进程等待;当操作员将待输入的作业数据放到输入机上并启动设备时,产生一个中断信号,使得对应的假脱机输入进程被唤醒。
假脱机输出程序是操作系统的一部分,位于系统高层,通常以进程模式运行,属于系统进程。与假脱机输入程序相似,假脱机输出程序整个系统也只有一个,但运行该程序的进程可能有多个。实际上,对应每一台输出机都有一个假脱机输出进程,负责对应输出机的输出操作,将结果由输出井传到输出机上。