介绍
通过多道程序技术可将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机。那么,假脱机技术,则可将一台物理I/O设备虚拟为多台逻辑I/O设备,这样也就允许多个用户共享一台物理I/O设备。
1. 假脱机技术
早期,为了缓和CPU的高速性与I/O设备低速性之间的矛盾,引入了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反。
这样,处理机需要输入数据时,便可直接从磁盘中读取数据。反之,处理机输出数据时,也可很快将数据先输出到磁盘上,处理机便可去做自己的事情。
事实上,系统引入多道程序技术之后,我们可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把低速I/O;设备上的数据传送到高速磁盘上。再利用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。
这样,便可在主机的直接控制下,实现以前的脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行,将这种在联机情况下实现的同时外围操作的技术称为Spooling(Simultaneous Peripheral Operation On-Line)技术,或称为假脱机技术。
2. Spooling的组成
Spooling技术是对脱机输入/输出系统的模拟,其系统建立在通道技术和多道程序技术的基础上,以高速随机外存(通常为磁盘)为后援存储器。
Spooling系统构成:
-
输入井和输出井:
在磁盘上开辟出来的两个存储区域。
输入井模拟脱机输入时的磁盘,收容I/O设备输入的数据;
输出井模拟脱机输出时的磁盘,收容用户程序的输出数据。
-
输入缓冲区和输出缓冲区:
内存中开辟的两个缓冲区,缓和CPU和磁盘之间速度不匹配的矛盾。
输入缓冲区暂存输入设备传送的数据;
输出缓冲区暂存从输出井传送的数据。
-
输入进程或输出进程:
输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。当CPU需要输入设备时,直接从输入井读入内存;
输出进程模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井,待输出设备空闲时,再将输出井中的数据经输出缓冲区输出至输出设备上。
-
井管理程序:
控制作业与磁盘井之间信息的交换。
工作原理:
3. 特点:
- 提高了I/O的速度,这里,对数据所执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样。
- 将独占设备改造为共享设备,在假脱机打印系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配一个空闲盘块和建立一张I/O请求表,这样,便把独占设备改造为共享设备。
- 实现了虚拟设备功能,宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,它们都会认为自己是独占了一个设备。
4. 假脱机打印机系统:
组成:
-
磁盘缓冲区:
磁盘上开辟的一个存储空间,暂存用户程序的输出数据
-
打印缓冲区:
缓和CPU和磁盘之间速度不匹配的矛盾,设置在内存中,暂存磁盘缓冲区送来的数据,传送给打印设备打印
-
假脱机管理进程和假脱机打印进程:
管理进程为每个要求打印的用户数据建立一个假脱机文件,并放入到假脱机文件队列中,由打印进程依次对队列中的文件进行打印。
原理:
对每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统已为他打印;
真正的打印操作,是在打印机空闲且打印任务在等待队列中已排到队首时进行的;而且,打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机。
以上过程是对用户屏蔽的,用户是不可见的。
守护进程(daemon):
前面是利用假脱机系统来实现打印机共享的一种方案,人们对该方案进行了某些修改,如取消该方案中的假脱机管理进程,为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程实现的功能。
除了打印机守护进程之外,还可能有许多其它的守护进程,如服务器守护进程和网络守护进程等。事实上,凡是需要将独占设备改造为可供多个进程共享的设备时,都要为该设备配置一个守护进程和一个假脱机文件队列(目录)。
参考:《计算机操作系统》(第四版,汤小凤)
看教材枯燥,码字记录提神,根据计算机操作系统(第四版,汤小凤)个人整理,仅作学习记录 :)