假脱机技术
本文内容
1 脱机技术
在没有出现操作系统前,即手工操作阶段,主机直接从I/O设备获得数据,由于设备的速度超级慢,主机的速度很快。人机矛盾明显,主机浪费很多时间来等待设备完成输入和输出,资源利用率很低。
后来,在批处理阶段引入了 脱机技术(用磁带完成):
在脱机技术中,在外围控制机的控制下,慢速的输入设备先将数据输入到更快速的磁带上,之后主机就可以快速的从磁带上读入数据,从而缓解了速度矛盾。同理,输出时,可以先将数据输出到快速的磁带上,之后通过外围控制机控制磁带将数据依次的输出到慢速的设备上。脱机技术——脱离主机的控制进行输入/输出操作。
脱机技术缓解了I/O设备和CPU速度的矛盾,提升了CPU的利用率,同时及时CPU在忙碌,也可以提前将数据输入到磁带,及时慢速的输出设备在忙碌,也可以提前将数据输出到磁带。
2 假脱机技术
假脱机技术又称SPOOLing技术,是用软件的方式模拟脱机技术。
假脱机技术由输入井和输出井、输入进程和输出进程以及输入缓冲区和输出缓冲区组成。
其中输入井和输出井是用于模拟脱机技术中的磁带;输入进程和输出进程用于模拟脱机技术中的外围控制机;输入缓冲区用于暂存从输入设备输入的数据,之后再转存到输入井中,而输出缓冲区用于暂存从输出井传送的数据,之后再传送到输出设备上。
输入进程和输出进程需要和用户进程并发执行才可以模拟脱机技术,所以要实现SPOOLing技术需要多道程序技术的支持。
3 共享打印机的实现
打印机是独占设备,只允许各个进程串行使用设备,一段时间内只能满足一个进程的请求。
当多个用户提出输出打印的请求时,系统会答应它们的请求,但是并不会真正把打印机分配给它们,而是有假脱机管理进程为每个进程做两件事:
(1) 在磁盘输出井中为进程申请一个空闲磁盘块,之后假脱机管理进程会将进程要打印的数据送入刚申请的空闲磁盘块中。
(2) 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息),再将该表挂到假脱机文件队列上。
当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印数据从输出井传送到输出缓冲区,再输出到打印机打印。用这种方式可依次处理完全部地打印任务。
虽然系统中只有一台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享。
SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占是设备改造成共享设备。