磁盘缓存与缓冲区#
Buffer 在内存上开辟一片区域作为缓冲
单缓冲:写入后等待缓冲区空闲才可以继续写
双缓冲:可以实现一面写,写第二面的时候,可能第一面就在读
循环缓冲:多个大小相等的循环链式缓冲区,首尾用 in/out 指针指示
缓冲池:多个缓冲区组成,分为空缓冲队列、满输入缓冲队列、满输出缓冲队列。
设备分配与回收#
- 独占使用设备
- 分时共享设备
- SPOOLing 设备
设备分配数据结构
- 设备控制表:代表一个设备。包含设备信息
- 控制器控制表:设备控制器控制设备与内存交换数据,存放相应通道控制表指针
- 通道控制表,一个通道可为多个控制器服务,指向多个控制器
- 系统设备表:全局唯一,记录物理设备情况
设备分配策略:静态分配(用于独占,一次性分配)、动态分配
分配安全性:分配应当防止进程死锁。
- 安全分配:进程 I/O 就阻塞,直到 I/O 完成再唤醒。CPU 与 I/O 串行工作
- 不安全分配:I/O 时可以继续请求 I/O 设备,如果被占用就阻塞,可能死锁
逻辑设备名到物理设备名的映射:系统中设置逻辑设备表 LUT 映射到物理设备。可以整个系统一个映射表,或是每个用户一个映射表
设备驱动程序接口
系统提供统一 / 相似接口,适配不同设备。
SPOOLing 技术#
将独占设备改造为共享设备
输入输出井,模拟脱机 I/O 的磁盘,临时存放 I/O 内容。
输入输出缓冲区,暂存 I/O 内容。
输入输出进程控制 I/O,用户数据从 输入设备到输入缓冲区再到输入井,当 CPU 需要输入时,直接从输入井读入内存。输出时,从 CPU 到输出缓冲区再到输出井,等待输出设备空闲时再输出。
提高 I/O 速度,实现虚拟设备。