一. 内容总览
I/O系统是OS的重要组成部分,用于管理诸如打印机、扫描仪等I/O设备,以及用于存储数据,如磁盘驱动器和磁带机等各种存储设备。
二. I/O系统
(1). I/O系统管理的主要对象
是I/O设备和相应的设备控制器
(2). I/O系统的主要任务
完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便的使用这些设备提供手段
(3). I/O系统的基本功能
三. I/O设备的基本概念和分类
(1). 什么是I/O设备
(2). I/O设备的分类
1. 按使用特性分类
2. 按传输速率进行分类
3. 按信息交换的单位进行分类
四. I/O控制器(设备控制器)
(1). I/O设备所包含的内容
1. 机械部件
I/O设备的机械部件主要用来执行具体的I/O操作。
2. 电子部件
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板,用来对I/O设备执行控制
(2). I/O设备与控制器之间的接口
通常,设备并不是直接与CPU进行通信,而是与设备控制器进行通信,因此,在I/O设备中应该包含与设备控制器之间的接口,在该接口中有三种类型信号,各对应一条信号线
1. 数据信号线
用于在设备与设备控制器之间传送数据信号
对输入设备而言,由外界输入的信号转换器转换后,所形成的数据通常先送人到缓冲器中,当数据量达到一定bit后,在从缓冲器通过一组数据信号线传送给设备控制器。
对输出设备而言,将从设备控制器经过数据信号线传送来的一批数据先暂存在缓冲器中,经转换器做适当的转换后,再逐个字符的输出
2. 控制信号线
作为由设备控制器向I/O设备发送控制信号时的通路
该信号规定了设备将要执行的操作
3. 状态信号线
用于传送指示设备当前状态的信号
(3). I/O设备的电子部件(I/O控制器)
1. I/O控制器的功能
主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换,接受CPU发来的命令,控制I/O设备工作
2. I/O控制器的组成
(1). 设备控制器与处理机的接口
(2). 设备控制器与设备的接口
(3). I/O逻辑
- 需要注意的小细节
- 内存映像I/O和寄存器独立编址的区别
五. I/O控制方式
(1). 程序直接控制方式
- 当I/O设备没有准备好,CPU一直进行轮询的检查控制器的状态
- 当I/O设备准备好了之后
- 程序控制方式流程图
(2). 中断驱动方式
(3). DMA方式
(4). 通道控制方式
1. I/O通道设备的引入
2. 通道类型
3. 通道的瓶颈
瓶颈的原因
通道价格昂贵,致使机器中所设置的通道数量势必较少,进而造成整个系统吞吐量的下降
解决瓶颈的办法
增加设备到主机间的通路而不增加通道
(5). 上述四种I/O控制方式的比较
六. I/O软件(I/O系统)的层次结构I/O软件涉及的面很宽,向下与硬件有密切关系,向上又与文件系统,虚拟存储器系统和用户直接交互,它们都需要I/O系统来实现I/O操作。
为了使十分复杂的I/O软件能具有清晰的结构、更好的可移植性和易适应性,目前已普遍采用层次式结构的I/O系统
1. I/O系统中各种模块之间的层次视图
(1). I/O接口
在I/O系统与高层之间的接口中,根据设备类型不同,有进一步分为若干个接口。
上图所示的接口:
块设备接口
流设备接口
网络接口
2. I/O系统的分层
(1). 用户层软件实现的功能
(2). 设备独立性软件实现的功能
1. 向上层提供统一的调用接口
2. 设备的保护
3. 差错处理
4. 设备的分配与回收
5. 数据缓冲区管理
6. 建立逻辑设备名到物理设备名的映射关系
- 为什么不同的设备需要不同的设备驱动程序?
- 举例:
- 总结:不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作
(3). 设备驱动程序实现的功能
(4). 中断处理程序实现的功能
1. 中断简介
2. 中断处理流程
(5). I/O核心子系统
1. 这些功能在哪些层次实现呢?
2. I/O调度
3. 设备保护
4. 假脱机技术(SPOOLing技术)
(1). 什么是脱机技术
(2). 假脱机技术(SPOOLing技术)
1. 输入井和输出井
2. 输入进程和输出进程
3. 输入缓冲区和输出缓冲区
(3). SPOOLing技术的应用
5. 设备的分配与回收
(1). 设备分配时应考虑的因素
1. 设备的固有属性
2. 设备的分配算法
3. 设备分配中的安全性
(2). 静态分配与动态分配
(3). 设备分配管理中的数据结构
(4). 设备分配的步骤
(5). 设备分配步骤的改进方法
6. 缓冲区管理
(1). 什么是缓存区?
(2). 缓冲区有什么作用?
(3). 单缓冲
- 计算每处理一块数据平均需要时间
情况一: - 情况二:
- 结论:
- 使用单缓冲区进行通信举例:
(4). 双缓冲
- 计算每处理一块数据平均需要时间
情况一: - 情况二:
- 结论:
- 使用双缓冲区进行通信举例:
(5). 循环缓冲区
(6). 缓冲池
- 输入进程请求输入数据
- 计算进程想要取得一块输入数据
- 计算进程想要将准备好额数据冲入缓冲区
- 输出进程请求输出数据