输入/输出系统
I/O系统的功能,模型与接口
I/O系统的基本功能
I/O系统的模型
I/O设备和设备控制器
I/O设备
设备的类型
- 按使用特征分类:(1)存储设备;(2)I/O设备。
- 按传输速率分类:(1)低速设备;(2)中速设备;(3)高速设备。
设备与设备之间的接口
设备控制器
基本功能
- 接受和识别命令
- 数据交换
- 标志和报告设备的状态
- 地址识别:设备控制器是一个可编址的设备
- 数据缓冲区
- 差错控制
设备控制器的组成
内存映像I/O
内存和外设是否是统一编址。
采用特定的I/O指令形式
每个控制器分配给一个I/O端口,端口号是一个8位或16位的整数。即独立编址
采用内存映像I/O形式
即统一编制。
I/O通道
中/大型计算机才配备。I/O通道只有I/O功能。其目的是使得一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的IO任务中解脱出来。在设置了通道之后,CPU只需要向通道之中发送一条I/O指令。通道接收到指令之后,从内存中取出本次需要执行的通道程序,然后执行这一个程序。仅当通道完成了规定的IO任务后,才向CPU发送中断信号。
IO通道是一种特殊的处理机,有独立处理的能力。但是其没有自己的内存,所执行的程序是统一编址的。
通道的类型
1、字节多路通道
不适用于连接高速设备
2、数组选择通道
3、数组多路选择通道
瓶颈问题
I/O设备的控制方式
- 使用轮询的可编程I/O方式(基本不用)
- 使用中断的可编程I/O方式(广泛采用)
- 直接存储器DMA方式
- I/O通道方式(一次传输一个数据块)
与设备无关的I/O软件
为了增加设备的独立性
基本概念
通过物理设备名来使用设备
引入逻辑设备名
逻辑设备名是抽象的设备名,比如dev/printer。与设备无关的I/O软件还可以实现I/O重定向,即用于I/O操作的设备可以更换而不必改变应用程序。
实现从逻辑设备名到物理设备名的转换
与设备无关软件的共有操作
- 提供设备驱动程序的统一接口
- 缓冲管理
- 差错控制
- 独占设备的分配和回收
- 提供独立于设备的逻辑数据块
设备的分配与回收
设备分配中的数据结构
1、设备控制表(DCT)
用于记录设备的情况
2、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)
设备分配时应该考虑的因素
- 设备的固有属性:独占、共享或虚拟设备
- 设备分配算法:FCFS、最高优先级有限算法:优先级高的设备排在队列的前面,优先级相同的按照FCFS排队
- 设备分配中的安全性:(1)安全分配方式:破坏请求和保持防止死锁;(2)不安全分配方式:银行家算法。
独占设备的分配程序
基本的分配程序
- 分配设备
- 分配控制器
- 分配通道
改进
使用逻辑设备表LUT
用户层I/O软件
系统调用和库函数
系统调用
操作系统和应用程序的接口。捕捉到系统调用后,会从用户态变为内核态,执行完毕之后再变成用户态。
库函数
只针对C语言和UNIX系统
缓冲区管理
缓冲区的引入
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少CPU中断的频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题:数据单元大小不匹配的问题。
- 提高CPU和I/O设备之间的并行性
单缓冲区和双缓冲区
单缓冲区
双缓冲区
环形缓冲区
生产者消费者问题使用的就是环形缓冲区
磁盘性能概述和磁盘调度
传统的调度算法
FCFS调度算法
谁先来就调度谁
SSTF调度算法
要求访问的磁道与当前磁道之间的距离最短
基于扫描的磁盘调度算法
SCAN调度算法(电梯调度算法)
上下循环扫描
CSAN调度算法
只进行单向扫描,一个方向从起点到终点后,立刻把磁头返回到起点。