一、I/O管理概述
1. I/O设备
(1)设备分类
分类依据 | 设备类型 | 描述 | 示例 |
---|
按信息交换单位 | 块设备 | 数据交换以块为单位,传输速率高,可寻址,采用DMA方式 | 磁盘 |
| 字符设备 | 数据交换以字符为单位,传输速率低,不可寻址,采用中断I/O方式 | 交互式终端机、打印机 |
按传输速率 | 低速设备 | 传输速率低,通常用于输入和输出 | 键盘、鼠标 |
| 中速设备 | 传输速率中等,常用于网络和存储设备 | 网卡、USB存储设备 |
| 高速设备 | 传输速率高,常用于高速存储和网络设备 | SSD、千兆以太网卡 |
(2)I/O接口
(组成:设备控制器与CPU的接口+设备控制器与设备的接口+I/O逻辑)

(3)I/O端口
- 概念:是指设备控制器中可被CPU直接访问的寄存器(数据、状态、控制寄存器)
- 编址方式:独立编制、统一编址
2. I/O控制方式
(1)程序直接控制方式、中断驱动方式、DMA方式(计组详细介绍)
(2)通道控制方式
- 通道:I/O通道是专门负责输入/输出的处理机,是DMA方式的发展
- 执行过程:CPU发送通道程序首地址和I/O设备–>通道执行通道指令–>传输结束向CPU发送中断请求
- 通道指令类型单一,通道程序存放在主机的内存中(通道与CPU共享内存)
- 通道与DMA
- 一个DMA控制一台设备与内存的数据交换;一个通道可以控制多台设备与内存的数据交换
- DMA方式需要CPU控制传输的数据块大小、 传输的内存位置; 通道方式中这些信息都是由通道控制
- DMA(直接内存访问):
- DMA允许外部设备(如磁盘控制器、网卡等)在不经过CPU干预的情况下直接读写内存。当CPU启动一个DMA传输后,DMA控制器接管数据传输过程,根据预设的地址、传输方向和字节数进行数据交换。
- 在DMA方式下,虽然CPU不必参与每个数据字节的传输,但仍需要初始化DMA传输参数,如设置源地址、目的地址及传输长度等,并在传输完成后接收到中断通知。
- 每个设备通常需要自己的DMA控制器来管理其与内存之间的数据传输。
- 通道(Channels):
- 通道是比DMA更高级别的I/O技术,常见于大型计算机系统中,它实际上是一个能够执行有限指令集的微型处理器,专门负责输入输出操作。
- 通道可以独立于CPU运行简单的程序(称为通道程序),这些程序能够管理和控制多个I/O设备的数据传输任务。
- 当CPU向通道发送一条I/O指令后,通道就能够自主完成一组相关的读写操作,包括设备寻址、数据缓冲区管理以及完成后的状态报告等,显著减少了CPU的介入次数。
- 一个通道可以连接并同时服务多个外设,实现真正的并行I/O操作,极大地提高了系统的并发处理能力。
注意DMA与通道的区别:通道(Channels)和DMA(Direct Memory Access)都是为了提高I/O操作效率而设计的技术,DMA主要通过减少CPU在数据传输中的作用来提高效率,而通道则更进一步,不仅减少了CPU的干预,还提供了更强的并行性和自主性,使得I/O操作更为高效和灵活。
3. I/O软件层次结构
(1)用户层I/O软件
- 实现与用户交互的接口, 用户可直接调用在用户层提供的、 与I/O操作有关的库函数
(2)设备独立性软件
- 对用户提供统一接口,如read\write命令
- 对设备的分配回收、逻辑设备名和物理设备名的映射、缓冲管理、差错控制、速率差异…
- 把系统调用参数翻译成设备操作命令
(3)设备驱动程序
- 与硬件直接相关,负责具体实现操作系统对设备发出的操作命令
- 把抽象I/O请求变为具体要求,如把read\write命令变为设备能识别的命令
- 再例如将磁盘块号转换为磁盘的盘面、 磁道号及扇区号(2013)
(4)中断处理程序
- 进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态
- 是首先获得键盘输入信息的程序(2010)
4. 应用程序I/O接口
(1)字符设备接口、块设备接口、网络设备接口
(2)I/O接口模式
I/O操作类型 | 特点 |
---|
阻塞I/O | 用户进程调用I/O操作时, 进程就被阻塞, 需要等待I/O操作完成, 进程才被唤醒继续执行 |
非阻塞I/O | 用户进程调用I/O操作时, 不阻塞该进程, 该I/O调用返回一个错误返回值 |
二、设备独立性软件
1. 高速缓存与缓冲区
(1)磁盘高速缓存
- 目的:减少磁盘I/O次数(2015)
- 利用内存的存储空间来暂存从磁盘中读出的一系列盘块的信息
- 磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块
(2)缓冲区
引入缓冲区的原因
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
(3)分类
① 单缓冲区与双缓冲区

② 环形缓冲区
- 多个大小相等的缓冲区首尾相连构成一个环形
- in指针指向可以输入数据的第一个空缓冲区
- out指针指向可以提取数据的第一个满缓冲区
③ 缓冲池
2. 设备分配与回收
(1)考虑因素
设备类型 | 描述 |
---|
独占设备 | 使用时不再允许其他设备申请使用,属于临界资源,不合理分配可能会引起进程死锁(一般用静态分配) |
共享设备 | 一段时间内被同时访问(而不是同一时间内被同时访问),分配不会引起进程死锁(一般用动态分配) |
虚拟设备 | 虚拟设备:SPOOLing技术实现的,以空间换时间 |
- 安全性
- 安全分配:进程获得I/O后便进入阻塞状态
- 不安全分配:发出I/O请求后继续运行
(2)分配方式
(3)设备独立性
- 概念:应用程序独立于具体使用的物理设备
- I/O重定向:更换用于I/O操作的设备时不必更改应用程序(2020)
- 外部设备是一种特殊的文件,可以用文件名访问物理设备(2020)
- 为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件
- 程序员和应用程序使用逻辑设备名来请求某类设备(2009、2020)
- 系统实际执行时必须将逻辑设备名转为物理设备名(2020)
- 逻辑设备表LUT(逻辑设备名,物理设备名,驱动程序入口地址)用于实现逻辑设备名和物理设备名的转换
(4)设备分配中的数据结构
- 设备控制表DCT(表述设备属性,如标识符、状态等)
- 控制器控制表COCT
- 通道控制表CHCT
- 系统设备表SDT(系统只有一张,包括设备类、设备标识符、DCT等)
- 逻辑设备表LUT(逻辑设备名,物理设备名,驱动程序入口地址)
- 分配的流程,从资源多的到资源紧张的:LUT->SDT->DCT->COCT->CHCT
(5)分配步骤
- 根据用户请求的I/O设备的逻辑名,查找逻辑设备和物理设备的映射表
- 以物理设备为索引,查找SDT,找到该设备所连接的DCT
- 根据DCT找到COCT再找到CHCT
- 在有通道的系统中,一个进程只有获得了通道,控制器和所需设备三者之后,才具备了进行I/O操作的物理条件
3. 假脱机系统(SPOOLing)
(1)主要组成:
(2)特点
- 提高了I/O的速度和设备利用率
- 将独占设备改造为共享设备,以空间换时间
- 实际分给用户进程的不是打印设备,而是共享输出井中的磁盘上的一片存储区域
- 外设输入数据首先放在磁盘输入井中
- 由操作系统控制设备与输入/输出井之间的数据传送(2016)
- 在输入进程的控制下,"输入缓冲区“用于暂存从输入设备输入的数据,之后再转存到输入井中
- 在输出进程的控制下,"输出缓冲区“用于暂存从输出井送来的数据,之后再传到到输出设备上
(3)支持条件
- 大容量高速度的外存、spooling相关软件、独占设备、多道程序设计技术(2016)
三、磁盘和固态硬盘
1. 磁盘结构
(1)图示

(2)重要概念
- 扇区:通常固定为512B,也称为盘块,是磁盘最小的物理存储单元
- 簇:由于扇区众多难以寻址,通常把2^n个扇区合并形成簇,一个簇中只能存放一个文件的内容(2017)
(3)地址结构
- 柱面号,盘面号,扇区号
- 假设每个磁道m个扇区,每个柱面n个盘面,每个盘面q个磁道。第x个盘块地址为
- 柱面号=x/mn;盘面号=(x%mn)/m;扇区号=x/m
2. 磁盘的管理
(1)磁盘初始化
- 物理格式化
- 将磁盘各个磁道划分为扇区,一个扇区通常包含三部分

- 格式化后磁盘空间会减少,用来存储前导码、ECC校验码以及间隙
- 对磁盘分区
- 逻辑格式化
- 建立文件系统
- 建立引导块、根目录、空闲块管理、空文件系统(2017)
- 为什么要逻辑格式化:操作系统无法识别系统上磁盘分区的格式
(2)坏块
3. 磁盘调度算法
(1)读写时间
- 组成
- 减少延迟方法
- 交替编号:让编号相邻的扇区在物理上不相邻
- 错位命名:让相邻盘面的扇区编号错位
(2)调度算法
调度算法 | 描述 |
---|
先来先服务(FCFS) | 性能很差,但不会导致磁臂黏着(2018) |
最短寻找时间优先 | 会导致饥饿现象 |
扫描算法(电梯算法、SCAN) | 对各个未知的响应频率不均匀默认是LOOK算法(2015) |
循环扫描算法(C-SCAN) | 朝某方向移动到最末端后快速返回,返回期间不处理请求 |
LOOK/C-LOOK | 不移动到最末端就可以返回
|
4. 提高磁盘I/O速度途径
- 磁盘高速缓存:在内存中为磁盘盘块设置一个缓冲区,在缓冲区中保存了某些盘块的副本
- 提前读:在读当前块时也把下一个盘块数据读入缓冲区(2012)
- 延迟写:缓冲区的数据不立即写回磁盘,因为可能会在不久后被访问(2012)
- 重排I/O请求次序(2012)
- 优化文件物理块分布(2012)
- 虚拟盘:利用内存空间去仿真磁盘
- 廉价磁盘冗余阵列
- 方法:把数据分别存储到不同磁盘的相同位置,各个磁盘数据并行传输
- 优点:速度提高n-1倍;牺牲1/n的容量为代价
5. 固态硬盘
(1)图示
基于闪存技术

(2)特性
- 数据以页为单位读写,只有在一页所属的块被整个擦除后才能写这一页
①随机写比随机读慢很多②比起传统机械硬盘读写速度更快、没有机械噪声和震动, 能耗更低、 抗震性好、 安全性高
(3)磨损均衡
- 动态磨损均衡
- 写入数据时, 自动选择较新的闪存块。 老的闪存块先歇一歇
- 静态磨损均衡
- 没有数据写入时自动进行数据分配,让老闪存块承担无需写任务的存储任务,平时读写操作在新闪存块中进行
- 静态磨损均衡比动态磨损均衡的性能更好