第五章 设备管理 用户层IO软件 缓冲 磁盘

用户层的I/O软件
小部分I/O系统软件放在了用户应用层上。
库函数(与应用程序链接)
假脱机技术(虚拟设备)

1)系统调用与库函数
不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。
应用进程在运行时,又必须取得OS所提供的服务。
于是:
OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
待第9章讨论

2)设备分配中的虚拟技术 —— SPOOLing技术

虚拟性是OS的四大特征之一。
多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机;
如何将一台物理I/O设备虚拟为多台逻辑I/O设备,允许多个用户共享“同时使用” ?

假脱机技术
多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。
称这种联机情况下实现的同时外围操作为SPOOLing 技术(Simultaneaus Periphernal Operating On—Line,或称为假脱机操作)
一般进程对独占设备的需求被假脱机模拟到磁盘上。所以实现设备虚拟,多道是前提,还需高速、大容量、可随机存取的外存支持。

SPOOLing系统的组成
主要有三大部分(如下页图)
输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备。
输入进程和输出进程。
用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;
用另一进程模拟脱机输出时外围设备控制器的功能,把数据从磁盘上传送到低速输出设备上。

第五章 设备管理 用户层IO软件 缓冲 磁盘_第1张图片
SPOOLing技术的使用:
当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,而只为它做两件事:
①由输出进程在输出井中为之请求一个空闲磁盘块区,并将要打印的数据送入其中.
②输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂在请求打印队列上.

打印输出过程:
如果打印机空闲,输出进程将从请求打印队列的队首取出一张请求打印表,根据表中的要求将要打印的数据,从输出井传送到输出缓冲区,再由打印机进行打印.
打印完毕后,输出进程再查看请求打印队列中是否还有等待打印的请求表,如此下去,直至请求打印队列为空,输出进程才将自己阻塞起来.
仅当下次再由打印请求时,输出进程才被唤醒.

守护进程
守护进程(Daemon)是运行在后台 的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。
Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。

利用守护进程实现打印机
①为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程功能的功能。
②由请求进程生成一份要求打印的文件,并将用户请求打印文件放入假脱机文件队列(目录)中。

打印机属于独占设备,利用SPOOLing技术可将其改造为一台可供多个用户共享的设备。
见课本说明:
核心就是不能交叉打印的数据,虚拟的打印在磁盘的输出井上(而磁盘的非独占性解决了打印机不能方便共享的问题)。
有打印输出请求的进程申请“请求打印表”。
数据虚拟打印到“输出井”
Spooling程序再按“请求表队列”分配真正的打印机打印数据。

SPOOLing系统的特点
提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。

缓冲区管理

有”控制器”或”通道”的帮助后CPU可解放去做其他事物,提高了利用率。
但分析单个程序内的执行
CPU计算工作需等待后续数据输入才可继续
CPU计

你可能感兴趣的:(计算机操作系统)