什么是虚拟设备?请说明SPOOLing系统是如何实现虚拟设备的。
答:虚拟设备是指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户进程同时使用,通常把这种经过虚拟技术处理后的设备称为虚拟设备。SPOOLing系统主要由输入井和输出井(磁盘上)、输入缓冲区和输出缓冲区(内存中)、输入进程和输出进程三部分组成。当要运行用户程序时,由输入进程将用户要求的程序和数据预先从输入设备经由输入缓冲区送到输入井,当程序运行需要输入数据时,直接从输入井将数据读入内存。当用户程序要求输出数据时,由输出进程先将数据从内存送到输出井,待输出设备空闲时,再将输出井中的数据经由输出缓冲区送到输出设备上。由于磁盘是共享设备,输入井及输出井是磁盘上的2个存储区域,因此多个用户进程可以共享使用输入井及输出井,这样,就将独占型设备改造成了可共享使用的虚拟设备。下面以打印机为例进行说明,当用户进程请求打印输出时,操作系统同意为进程打印,但并不真正把打印机分配给该用户进程,而是为进程在磁盘上的输出井中分配一个空闲区域,并将要打印的数据送入其中,同时还为用户进程申请一张用户请求打印表,将用户的打印要求填入其中,再将该请求打印表挂在请求打印队列上。如果还有进程要求打印输出,系统仍可以接受该请求,也为进程完成上述操作。如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据从输出井传送到内存的输出缓冲区,再由打印机进行打印。打印完成后,输出进程再查看请求打印队列中是否还有请求打印表,若有,则再取出第一张请求打印表,并根据其中的打印要求进行打印,如此重复,直至请求打印队列空为止,输出进程才将自己阻塞起来,直到下次再有打印请求时才被唤醒。【解析】第六章 难易度:中
继续答题:下一题