操作系统——第六章笔记(三)

5.与设备无关的I/O软件
5.1设备独立性的基本含义:
1)指应用程序中所使用的设备,不局限于使用某个具体的物理设备,也称为设备无关性。
2)为了实现设备独立性,在设备驱动程序之上设置一层软件,称为与设备无关的I/O软件,或设备独立性软件。
3)设备无关的软件是I/O系统最高层软件,但它和其下的设备驱动程序之间的界限,将随操作系统和设备的不同而有所差异。
5.2设备独立性(无关性)
用户编程时所用的设备名(逻辑上的)与实际物理设备无关;
1)好处:
 设备分配时的灵活性
3个物理设备(如打印机),程序中申请一台打印机,执行时不拘泥必须是某台(如第2个)打印机
 易于实现I/O重定向
指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。 程序调试、运行中的“打印”,可通过修改逻辑设备表的显示终端,实现不同时候的不同的设备使用。
5.3逻辑设备名到物理设备名的映射
1)逻辑设备表LUT(Logical Unit Table)
2)LUT的设置问题
 整个系统设置一张LUT(设备重名问题)
 为每个用户设置一张LUT,记入各自PCB。
5.4设备分配
5.4.1多道环境下,系统中设备是所有进程共享的。要防止无序竞争,提高外设资源的利用率。需由OS进行统一、合理的设备分配。所需数据结构:
1)数据结构
 设备控制表(DCT)
a)系统为每一设备都配置一张
b)记录本设备的情况。
 控制器控制表(COCT)
a)系统为每一控制器都配置一张
b)记录本控制器的情况。
 通道控制表CHCT
 系统设备表(SDT)
系统根据进程对设备的请求进行设备分配的过程:
IO请求中的设备名 àSDTàDCTàCOCTàCHCT
2)设备分配需考虑的因素
 设备固有属性:独占、共享、独占但可虚拟。根据属性采取互斥、次序调度、虚拟等不同分配策略。
 设备分配算法(对不同进程的设备请求序列,如何进行选择),常采用两种:
a)FCFS
b)优先级高者优先
c)设备分配的安全性:进程开始I/O后就阻塞直到I/O完成。不“请求和保持”(安全的);允许连续I/O请求,是不安全的,此类分配方式需进行安全性检查。
 设备独立性
用户IO请求中使用逻辑名申请某类设备,实际物理名称是系统根据设备类型分析分配后才确定的。
3)独占设备的分配过程
5.4.2基本分配步骤(一个有通道的例子):
 分配设备:
a)根据请求设备名,查找SDT,找到DCT;
b)状态、安全性等因素都可能导致本申请进程阻塞,挂入DCT等待队列中。
 分配控制器
a)通过1步分配设备后,从DCT找到COCT;
b)检查COCT状态字,若忙碌,进程PCB挂到其等待队列
 分配通道
a)COCT找到CHCT
b)判断状态,…
当上述三步都通过后,才可启动设备进行数据传输
5.4.3设备分配程序的改进细节
 增加设备的独立性
a)进程使用逻辑设备名提出I/O请求。
b)系统从SDT中依次找下去,直到找到一个该类设备中空闲可用的进行分配。
 考虑多通路情况
控制器、通道也是反复查找,直到找到一条通路。
5.4.4
 分配设备:
在这里插入图片描述
 分配控制器
在这里插入图片描述
6.用户层的I/O软件
6.1小部分I/O系统软件放在了用户应用层上。
 库函数(与应用程序链接)
 假脱机技术(虚拟设备)
6.2系统调用与库函数
 不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。
 应用进程在运行时,又必须取得OS所提供的服务。
 OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作。
6.3设备分配中的虚拟技术—— SPOOLing技术
 虚拟性是OS的四大特征之一。
 多道程序技术将一台物理CPU虚拟为多台逻辑CPU,实现多个用户共享一台主机;
6.4假脱机技术
 多道程序技术,专门利用程序模拟脱机I/O的外围机,完成设备I/O操作。
6.5 SPOOLing
6.5.1 SPOOLing系统的组成
 输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
 输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备。
 输入进程和输出进程:用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;用另一进程模拟脱机输出时外围设备控制器的功能,把数据从磁盘上传送到低速输出设备上。
6.5.2 SPOOLing技术的使用:
当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给用户进程,而只为它做两件事:
 由输出进程在输出井中为之请求一个空闲磁盘块区,并将要打印的数据送入其中.
 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂在请求打印队列上。
6.5.3守护进程
 守护进程(Daemon)是运行在后台 的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。
 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。
6.6共享打印机
 打印机属于独占设备,利用SPOOLing技术可将其改造为一台可供多个用户共享的设备。
6.7 SPOOLing系统的特点
 提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
 将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
 最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。

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

猜你喜欢

转载自blog.csdn.net/weixin_43271377/article/details/84494885