操作系统考研复试复习-5
第五部分:IO管理
OS对外设的管理,提高外设的利用率,对外设合理分配,使应用软件能够方便的使用外设资源。
1,对IO的控制方式
1,程序查询
描述:CPU启动外设之后就一直循环查询IO接口看是否有数据产生,此时,CPU和外设只能够串行工作。一次传输一个字节的数据
2,中断驱动
为了提高CPU的利用率
描述:IO设备主动提出请求打断CPU的运行,CPU和IO设备能够并行工作,一次传输一个字节的数据。
3,DMA方式(需要DMA接口)
为了减少CPU的干预,使数据不需要经过CPU就能够进行传输,需要硬件:DMA接口(Direct Memerry Access),在内存和DMA接口之间建立一条数据交换通路,数据直接通过DMA接口到达内存。
DMA方式传送一次可以传送一块或几块连续的数据,在每次数据传送直接由CPU为DAM控制器设置参数,包括(要存入或取出的)数据在内存中的起始地址和一次的传送字节数。
在一批数据传送完毕之后,DMA控制器向CPU发出DMA中断请求。
DMA控制器在传送时仍然以一个字节为单位,当外设准备好一个字节的内容的时候发出DAM请求,而且对块的读写需要连续。
DMA控制器对总线的控制权大于CPU,且DMA传动需要窃取CPU的存取周期。
4,通道控制方式(需要通道支持)
为了进一步减少CPU的参与,需要硬件:通道的参与,通道也是一种小型的处理机,能够处理简单的存取事务
通道具体是如何工作的?
与CPU一样,通道执行任务需要通道指令,通道指令存放在内存中,每次需要通道执行任务时,CPU发出IO指令,告知通道,指令的存放起始地址,以及需要操作的设备。之后通道指令会逐条取指执行。通道可以对一组数据进行读写操作,完成后发出中断。
一个通道可以控制多个IO控制器,一个IO控制器可以控制多个设备。
2,IO软件层次结构
为什么要分层次?方便管理和设计,越靠近上层越接近用户和应用程序,越靠近下层越接近硬件IO,下层对本层的实现的功能封装起来,可以只对上层提供一个标准接口,上层只需要调用这个接口即可使用下层提供的服务。此时,下层可以方便的对功能的具体实现进行修改,不会影响上层的使用。
分为哪几层?(从上至下)
(1)用户IO软件:
实现与用户的接口,向上提供库函数
(2)设备独立性软件:
为用户IO软件提供标准的系统调用接口
建立逻辑设备名到物理设备名的映射(是通过LUT表逻辑设备表实现的)
设备的分配与回收,设备保护?,差错处理,IO调度
(3)设备驱动程序
将上层给出的抽象的IO要求转化为具体的IO要求
设置设备的寄存器,检查设备的状态(直接和IO控制器打交道)
(4)中断处理程序
进行中断处理
(5)IO控制器和设备
包括电子部件(IO控制器)和机械部件(外设)
设备独立性软件的功能具体是如何实现的?
(1)IO调度:
是指确定IO响应顺序的算法例如FCFS,SJF等
(2)设备保护:
是指不该用外设的用户不允许用外设,如何实现?
在UNIX系统中外设被看作一种特殊的文件,可以通过文件保护实现设备保护,如:口令,加密,设置访问控制权限
(3)设备的分配与回收
如何分配?分配方式?
1,分配方式:
(1)静态分配:一次性分配所有进程要求的设备
(2)动态分配:在运行过程中做出调整。
2,分配时需要的数据结构进行记录和实现设备独立性
(1)设备控制表
(2)控制器控制表
(3)通道控制表
(4)LUT:逻辑设备表:建立起物理名与逻辑名的映射
设备独立性是指:用户用于编程使用的设备名与物理设备名无关,而且如果更换物理设备,只需要修稿逻辑设备表LUT即可,用户不用更改其逻辑设备名。
用户程序中只需要指明IO使用的设备类型即可。
3,SPOOLing技术?
SPOOLing技术(假脱机技术)实际上是对外设的虚拟化,通过把互斥访问的外设虚拟化为逻辑上多个进程可以同时访问的共享外设。
如何实现?
模拟早期利用外围机进行脱机输入输出的计算机
输入井,输出井(磁盘):模拟脱机输入时的磁盘
是在磁盘内开辟的专用区域,用来存储用户发送来还没来得及处理的数据
输入与输出进程:模拟外围机传送带
将数据从IO设备(输入机)经过缓冲区送到输入井
将数据从输出井进过缓冲区送到外围机
输入缓冲区和输出缓冲区(内存):
暂存输入设备送来的数据,送至输入井
缓解IO设备与计算机的速度矛盾
SPOOLing:接收设备的进程的请求,将数据暂时放入磁盘中,并加入请求队列,时进程不必阻塞等待。OS对外设的管理,提高外设的利用率,对外设合理分配,使应用软件能够方便的使用外设资源。