【操作系统学习笔记】文件管理1.3
参考书籍: 王道考研
视频地址: Bilibili
I/O 控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA 方式
- 通道控制方式
程序直接控制方式
关键词: 轮询
- 完成一次读/写操作的流程
- CPU 向控制器发出读指令。于是设备启动,并且状态寄存器设为1
- 轮询检查控制器的状态
- 输入设备准备好数据后将数据传给控制器,并报告自身状态
- 控制器将输入的数据放到数据寄存器中,并将状态改为0
- CPU 发现设备已就绪,即可将数据寄存器中的内容读入 CPU 的寄存器中,再把 CPU 寄存器中的内容放入内存
- 若还要继续读入数据,则 CPU 继续发出读指令
- CPU 干预的频率: 很频繁,I/O 操作开始之前、完成之后需要 CPU 介入,并且在等待 I/O 完成的过程中 CPU 需要不断的轮询检查
- 数据传送的单位: 每次读/写一个字
- 数据的流向
- 读操作: I/O 设备 -> CPU -> 内存
- 写操作: 内存 -> CPU -> I/O 设备
- 每个读/写都需要 CPU 的帮助
- 主要优缺点
- 实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可
- CPU 和 I/O 设备只能串行工作,CPU 需要一直轮询检查,长期处于忙停状态,利用率低
中断驱动方式
关键词: 中断
引入中断机制。由于 I/O 设备速度很慢,因此在 CPU 发出读/写命令后,可将等待 I/O 的进程阻塞,先切换到别的进程执行。当 I/O 完成后,控制器会向 CPU 发出一个中断信号,CPU 检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU 从 I/O 控制器读一个字的数据传送到 CPU 寄存器,再写入主存。接着,CPU 恢复等待 I/O 的进程的运行环境,然后继续执行
- CPU 会在每个指令周期的末尾检查中断
- 中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能
- 完成一次读/写操作的流程
- CPU 干预的频率: 每次 I/O 操作开始之前、完成之后需要 CPU 介入。等待 I/O 完成的过程中 CPU 可以切换到别的进程执行
- 数据传送的单位: 每次读/写一个字
- 数据的流向
- 读操作: I/O 设备 -> CPU -> 内存
- 写操作: 内存 -> CPU -> I/O 设备
- 主要优缺点
- 与"程序直接控制方式"相比,再"中断驱动方式"中,I/O 控制器会通过中断信号主动报告 I/O 已完成,CPU 不再需要不停的轮询;CPU 和 I/O 设备可以并行工作,CPU 利用率得到明显提升
- 每个字在 I/O 设备与内存之间的传输,都需要经过 CPU。而频繁的中断处理会消耗较多的 CPU 时间
DMA 方式
与中断驱动方式相比,DMA方式直接进行存储器存取。主要用于块设备的 I/O 控制
- 数据的传送单位是块。不再是一个字的传送
- 数据的流向是从设备直接放入内存,或者从内存直接到数据,不再需要 CPU 作为中介
- 仅在传送一个或多个数据块的开始和结束时,才需要 CPU 干预
DMA 控制器是一种特殊的 I/O 控制器。也由主机-控制器接口、I/O 控制逻辑、块设备-控制器接口。在主机-控制器接口中由DR(数据寄存器:暂存从设备到内存、或从内存到设备的数据)、MAR(内存地址寄存器:在输入时,MAR 表示数据应放到内存中的什么位置;输出时 MAR 表示要输出的数据放在内存中的什么位置)、DC(数据计数器:表示剩余要读/写的字节数)、CR(命令/状态寄存器:用于存放 CPU 发来的 I/O 命令,或设备的状态信息)等。DMA 控制器不是每次直接读一整块,也是一个字一个字来读取写入 DR
- 完成一次读/写操作的流程
- CPU 干预的频率: 仅在传送一个或多个数据块的开始和结束时才需要 CPU 干预
- 数据传送的单位: 每次读/写一个或多个块(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
- 数据的流向
- 读操作: I/O 设备 -> 内存
- 写操作: 内存 -> I/O 设备
- 主要优缺点
- 数据传输以块为单位,CPU 介入频率进一步降低。数据的传输不再需要先经过 CPU 再写入内存,数据传输效率进一步增加。CPU 和 I/O 设备的并行性得到提升
- CPU 每发出一条 I/O 指令,只能读/写一个或多个连续的数据块
通道控制方式
通道: 一种硬件,可以理解为弱化版 CPU 。通道可以识别并执行一系列通道指令
- 完成一次读/写的流程
- CPU 向通道发出 I/O 指令。指明通道程序在内存中的位置,并指明要操作的是哪个 I/O 设备。之后 CPU 就切换到其他进程执行了
- 通道执行内存中的通道程序(其中指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)
- 通道执行完规定的任务后,向 CPU 发出中断信号,之后 CPU 对中断进行处理
- CPU 干预的频率: 极低,通道会根据 CPU 的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求 CPU 干预
- 数据传送的单位是一组块
- 数据的流向
- 读操作: I/O -> CPU
- 写操作: CPU -> I/O
- 主要优缺点
- CPU、通道、I/O 设备可并行工作,资源利用率高
- 实现复杂,需要专门的通道硬件支持