7.2.8 虚拟设备
现代操作系统大多实现了虚拟设备技术。利用共享设备来实现的数量较多、速度较快的独占型设备称为虚拟设备,或者说利用高速共享设备将低速独占设备模拟为高速共享设备。因为共享设备存储容量较大,只需要很少的一部分存储空间就可以构造出很多虚拟设备。另外,共享设备速度很快,并且共享设备与独占设备之间信息是连续传输的,这样在独占设备与内存进程之间加入一个共享设备作为过渡,不仅可以缩短进程I/O传输等待时间,提高了进程推进速度,而且提高了设备的利用率。
1.实现虚拟设备的目的
在一种物理设备上模拟另一类物理设备,使各作业或进程在执行期间只使用虚拟设备而不直接使用物理的独占设备,提高设备的利用率,尤其是慢速独占设备的利用率,以及系统吞吐量。
2.实现虚拟设备的条件
1)硬件条件:大容量磁盘;中断装置和通道;中央处理器与通道并行工作的能力。
2)软件条件:要求操作系统采用多道程序设计技术。
3.SPOOLing系统
SPOOLing(Simultaneous Peripheral Operations On-Line)是一种典型的虚拟设备技术,又称为假脱机技术。其核心思想是在一台共享设备(通常是高速、大容量的磁盘)上模拟独占设备的操作,把一台低速的独占设备改造成为若干台可并行操作的虚拟设备,即把独占设备变成逻辑上的共享设备。它是为解决独占设备数量少、速度慢、不能满足众多进程的要求,而且在进程独占设备期间设备利用率又比较低的情况而提出的一种设备管理技术。
SPOOLing既是在多任务系统中处理慢速独占设备的一种共享技术,也是为了缓解CPU与慢速I/O设备之间的速差而引入的脱机输入、脱机输出技术,操作系统将一批作业从输入设备预先输入到磁盘的输入缓冲区中暂存,当作业被调度执行需要使用数据时,直接从输入缓冲区中读入。同样,将作业的输出数据暂存在磁盘的输出缓冲区中,当作业执行完毕后,在慢速独占设备空闲时,再由操作系统将数据成批从外存输出到慢速独占设备中。
(1)SPOOLing系统的组成
SPOOLing系统由3部分程序组成:预输入程序、井管理程序和缓输出程序。具体地说,输入井、输出井、输入缓冲区、输出缓冲区、输入进程、输出进程构成了SPOOLing系统。
1)预输入程序。将用户程序的数据从输入设备送到输入井保存起来,并填写预输入表格,以备作业执行时使用。
2)井管理程序:用于控制作业和磁盘缓冲区之间交换信息的程序。通过该程序来保证作业正确、及时地从相应的输入井中读取信息,或者将信息送至输出井,使用户感觉在使用独立的I/O设备。井管理程序包括井管理读程序和井管理写程序两个功能,前者负责从输入井中读取信息供用户使用,后者负责将作业执行结果保存到输出井中。
3)缓输出程序。当处理器空闲时,操作系统调用该程序执行缓输出。缓输出程序负责查看缓输出表,是否在输出井中有待输出的信息,若有,则将信息从输出井输出至输出设备。
(2)SPOOLing系统的基本原理
如图7-1所示,SPOOLing系统将一个作业从进入系统至完成后撤离系统的全过程划分成输入、处理和输出3个并发进行的过程。当用户作业要进入系统时,由SPOOLing系统的预输入程序将作业信息从物理输入设备上送到磁盘上指定区域(称为输入井);当用户进程运行时需要使用输入数据时,可以直接从输入井读入数据;当用户进程需要输出数据时,可以先将输出数据送往磁盘上另一指定区域(称为输出井);最后,当作业完成后,由缓输出程序依次将输出井上的数据送到物理输出设备上。
图 7-1 SPOOLing系统
(3)共享打印机
以打印机为例进一步说明SPOOLing的工作原理。当用户进程请求打印输出时,操作系统并不真正立即将打印机分配给该用户进程,而是在输出井中为其分配一块区域,并将要打印的数据送入其中。输出井上的区域相当于一台虚拟的打印机,各进程的打印输出数据都暂时存放在输出井中,形成一个输出队列。最后,由SPOOLing的缓输出依次将输出队列中的数据实际地打印输出。
从用户的角度来看,似乎独占一台打印机,可以随时根据运行情况输出各种结果。但从系统角度看,同一台打印机又可以分时地为每一个用户服务。实际上,用户进程获得的是虚拟设备。
(4)SPOOLing系统的特点
1)提高了系统I/O速度。对低速I/O设备进行的I/O操作,演变为对高速的输入井或输出井中数据的存取操作。
2)将设备分配与设备的使用分离。独占设备并未实际分配给申请者,而是分配了一个存储区。
3)实现了虚拟设备功能。