I/O系统管理的主要对象
I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是,完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。
I/O设备类型
- 按传输速率分类:低速设备(键盘、鼠标)、中速设备(打印机)、高速设备(磁盘机)
- 按信息的交换的单位分类:块设备(磁盘)、字符显示设备(终端机、打印机)
- 按设备共享属性分类:独占设备(打印机)、共享设备(磁盘)、虚拟设备
I/O接口(设备控制器)的组成
- 设备控制器与CPU的接口
- 设备控制器与设备的接口
- I/O逻辑
I/O控制方式
-
程序直接控制方式(CPU主动询问,CPU利用率低)
早期的计算机系统无中断机构,CPU采用这种方式控制I/O操作,该方式又叫忙等待方式。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性, 致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中, 造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构, 使I/O设备无法向CPU报告它已完成了一个字符的输入操作。
-
中断驱动方式(CPU被动通知,CPU利用率稍微提高)
允许I/O设备主动打断CPU工作,并请求服务
-
广泛使用,适合低速设备(键盘、鼠标)
-
中断驱动方式下的CPU以字(节)为单位对I/O进行干预
-
-
DMA(直接存储性存取)方式(CPU被动通知,CPU利用率进一步提高)
在I/O设备和内存之间开辟直接的数据交换通路
- 数据传输的基本单位是数据块
- 数据在设备与内存之间直接传递(不需经过CPU)
- 仅在传送一个或多个数据块的开始和结束时才需CPU干预,其余均在控制器的控制下完成
- DMA控制器的组成:(1)命令/状态寄存器CR (2)内存地址寄存器MAR (3)数据寄存器DR (4) 数据计数器DC
-
通道控制方式(CPU被动通知,CPU利用率更进一步提高)
在DMA方式下,CPU每发出一条I/O指令只能去读(写)一个连续的数据块,当一次需要去读多个离散的数据块并分别送入不同的内存区域时,则需进行多次中断处理。I/O通道方式把CPU的干预由一个数据块减少为一组数据块,并可以实现CPU、通道、I/O设备三者的并行工作,更有效地提高了系统的资源利用率。
I/O方式 | 控制部件 | I/O数据传输 | CPU对I/O干预的数据单位 |
---|---|---|---|
轮询程序I/O方式 | CPU | 内存←→CPU←→设备*/设备控制器 | 全程干预 |
中断驱动I/O方式 | CPU中断控制器 | 内存←→CPU←→设备/设备控制器 | 字(节) |
直接存储器访问方式(DMA) | DMA控制器 | 内存←→设备/设备控制器 | 数据块 |
I/O通道方式 | I/O通道 | 内存←→设备/设备控制器 | 一组数据块 |
设备驱动程序
将接收到的抽象要求转换为具体要求。
检查I/O请求的合法性,了解I/O设备的状态传递参数,
设置设备的工作方式。
发出I/O命令,启动I/O设备,完成I/O操作。
及时响应由控制器或通道发来的I/O请求并进行处理。
对设置有通道的系统,驱动程序根据用户的I/O请求可
自动构成通道程序
引入缓冲区的目的
-
缓和CPU与I/O设备间速度不匹配的矛盾
-
减少对CPU的中断频率, 放宽对CPU中断响应时间的限制
-
解决数据粒度不匹配的问题
-
提高CPU和I/O设备之间的并行性
SPOOLing系统
Spooling技术就是用于将一台独占设备改造成共享设备的一种技术
定义:在联机情况下实现的外围操作与CPU对数据的处理同时进行,称为假脱机操作,又叫Spooling。
SPOOLing系统组成:
- 输入井和输出井(模拟两块磁盘)
- 输入缓冲区和输出缓冲区(内存中开辟)
- 输入进程和输出进程(模拟外围机操作)
- 井管理进程(控制作业与磁盘井之间的信息交换)
SPOOLing系统特点:
- 提高了I/O的速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
设备的数据结构
- 系统设备表(SDT):整个系统一张
- 设备控制表(DCT):系统为每一个设备设置了一张用于记录设备状态的数据结构
- 控制器控制表(COCT)
逻辑设备名到物理设备名映射的实现
- 逻辑设备表(LUT):为了实现设备的独立性,用于将逻辑设备名映射成物理设备名
- LUT的设置方式: ① 整个系统设置一张LUT ② 每个用户设置一张LUT