操作系统-输入输出系统
输入输出系统
I/O系统层次结构
-
用户层软件
与用户交互的接口,用户可直接调用该层的库函数对设备进场操作
-
设备独立性软件
用于实现用户程序与设备驱动器的统一接口,设备命名,设备保护以及设备分配和释放
-
设备驱动程序
与硬件相关,用于具体实现系统对设备发出的操作指令。
-
中断处理程序
保存被中断进场的CPU环境,转入相应的中断处理程序进行处理,处理完恢复现场
模块之间的层次视图
-
I/O系统接口
它是I/O系统和上次系统之间的接口,向上层提供设备进行操作的抽象命令,根据设备类型不同,可分为:
-
块设备接口
块设备:指数据的存储和传输都是以数据块为单位的设备,常见的是磁盘。磁盘的地址需要用磁道号和扇区号表示,当上层发来读命令的时候,该接口会将抽象的命令转换为磁盘的盘面,磁道和扇区。
-
流设备接口
字符设备:数据的存储和传输都是以字节为单位的设备,常见的是键盘,打印机。字符设备通常设立一个字符缓冲区,I/O字符流顺序的进入字符缓冲区,顺序的送出
-
网络通信接口
-
-
软件/硬件(RW/HW)接口
软硬件接口,上面是中断处理程序和用于不同设备的设备驱动程序,下面是各种设备的控制器,这两个接口之间就I/O系统
-
I/O系统
-
中断处理程序
直接与硬件交换,当有中断信号来时,中断处理程序首先保存被中断进场的CPU环境,然后转入相应的设备中断程序处理,处理完后恢复现场。
-
设备驱动程序
驱动程序是进程和设备控制器直接的通信程序,将上层发来的抽象I/O请求转换为对I/O设备的具体命令和参数,并把它装入到设备控制器中的命令和参数寄存器。
-
设备独立性软件
实现与设备无关,I/O软件独立与具体使用的物理设备
-
I/O设备和设备控制器
设备控制器
组成:
-
设备控制器与处理机接口
实现CPU与设备控制器之间的通信
-
设备控制器与设备接口
在控制器上连接一个或者多个设备
-
I/O逻辑
对设备进行控制,当CPU需要操作一个设备的时候,由I/O逻辑对收到的地址译码,再根据译出的命令对所选的设备进行控制
基本功能:
- 接收和识别命令
- 数据交换
- 标识和报告设备状态
- 地址识别
- 数据缓冲区
- 差错控制
I/O通道
I/O通道是一种特殊的处理机,具有执行I/O命令的能力,并通过执行通道程序来控制I/O操作,指令单一,只能执行I/O操作有关的命令,且通道没有自己内存,与CPU共享内存,其目的是让CPU从繁杂的I/O任务中解脱
通道类型
- 字节多路通道
-
数组选择通道
-
数组多路通道
中断
中断是CPU对I/O设备发来的中断信号的一种响应
中断的处理方式
-
屏蔽中断
当处理机处理一个中断的时候,会屏蔽所有的中断,一直到该中断处理完才会处理新的中断
-
嵌套中断
CPU优先响应最高优先级的中断请求,所有高优先级的中断请求可以抢占低优先级的
中断的处理过程:
- 测定是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 转入相应的设备驱动程序
- 中断处理
- 恢复COU现场并退出中断
设备驱动程序
设备驱动程序的任务是接收上层软件发来的抽象命令,把它们转变为对应设备的具体参数和命令,发给设备控制器,启动设备执行
设备驱动器处理过程:
- 将抽象的命令转变为具体设备的命令
- 对服务请求进行检验
- 检查设备的状态
- 传送必要的参数
- 启动I/O设备
I/O设备的控制方式
-
使用轮询的可编程I/O方式
处理机发送出一条I/O指令之后,不断的询问是否I/O命令是否完成,这个方式极大的浪费了CPU的资源
-
使用中断的可编程I/O方式
CPU发出一条指令之后,继续执行它原来的任务,由控制器代替CPU指定IO设备,当CPU需要设备的数据时,控制器发出中断信号,告诉CPU数据已经准备好,可以来取。
-
直接存储器访问方式
中断I/O方式是一字节为单位进行I/O操作,每当完成一个字节的传输时,就需要中断,让CPU读取,这样产生了直接存储器访问方式,这种方式是以数据块为单位传输,直接送入内存中,只有在开始和结束的时候需要CPU干预,整块数据在控制器的控制下完成。
DMA控制器的组成:
- 主机与DMA控制器的接口
- DMA控制器与块设备的接口
- I/O控制逻辑
-
I/O通道控制方式
DMA控制方式虽然进一步减少了CPU对I/O设备的干预,从对字节干预减少到对数据块的干预,但CPU每次发出一条指令,只能读取或写一个连续的数据块,并不能同时对不同的内存区进行操作,所以出现了I/O通道方式,它是对一组数据块进行干预。
要完成对一组数据块操作,只需要想I/O通道发送一条I/O指令,以给出的所要执行的通道程序的首地址和要访问的I/O设备,通道接收到命令之后,通知执行通道程序完成I/O任务。
通道是通过执行通道程序并与设备控制器共同实现IO设备的控制。
通道程序:由一系列的通道指令构成
与设备无关的I/O软件
为了实现设备的无关性,系统采用了逻辑设备名,通过逻辑设备表LUT来实现逻辑设备名对物理设备名的映射
设备分配
系统的设备分为两种:共享设备和独立设备。独立设备由操作系统分配,为了实现对独立设备的分配,操作系统设置了一些数据结构用来记录对设备或控制器控制需要的信息。
- 设备控制表DCT
- 控制器控制表COCT
- 通道控制表CHCT
- 系统设备表SDT
分配过程
-
分配设备
根据I/O请求的物理设备名查找SDT,找出相对应的DCT,检查DCT中的设备状态字段,设备是否忙碌,如果不忙,检查安全性,分配设备
-
分配控制器
分配完设备后,到DCT找出该设备相连接的控制器COCT,从COCT的状态字段看控制器是否忙碌,不忙,分配控制器
-
分配通道
分配完控制器,在COCT中找到相连的CHCT,根据CHCT内的状态信息看通道是否忙碌,不忙分配通道