I/O管理概述
I/O设备
- 字符设备
- 块设备
I/O管理目标
- 提高设备利用率
- 合理分配设备
- 提高设备与CPU、各外部设备之间的并行性
- 方便用户的使用
- 提供使用方便且独立于设备的界面
- 统一:对各种不同的设备提供一致的界面
对于一系列的操作设备,如磁盘、键盘等系统都提供统一的 read 操作界面。 - 独立于设备:用户使用的设备与物理设备无关
用户直接与逻辑设备进行交互,与设备的物理特性无关。
I/O管理功能
- 跟踪设备状态:动态地记录各种设备的状态
- 设备分配:独占设备;共享设备;虚拟设备
- 静态分配 —— 应用程序级或作业级
程序进入系统时进行分配,退出系统时收回全部资源 - 动态分配 —— 进程级
进程提出设备申请时进行分配,使用完毕后立即收回
动态分配可以提高资源的利用率,但是存在着死锁的风险。
- 静态分配 —— 应用程序级或作业级
- 缓冲管理:缓和CPU与设备间速度不匹配的矛盾
- 设备控制:设备驱动+中断处理
- 设备驱动:控制设备完成具体的IO操作
- 中断处理:当这次的IO操作完成后用来处理这一次IO操作的中断工作。
I/O应用接口
I/O软件层次
I/O系统调用实现了统一的I/O接口,I/O系统调用封装了设备通用类型行为。
每个通用类型都可以通过一组标准函数(即接口)来访问 如块设备I/O系统调用包括磁盘,磁带,光盘等一系列块设备的read,write,seek。具体的I/O差别
被内核模块(设备驱动程序)所封装,这些设备驱动程序一方面可以定制以适用于各种设备,另一方面也提供了一组标准接口。
每个设备在逻辑上都有一个设备控制器
I/O控制方式
- 程序I/O方式(循环等待方式)
- 中断方式
- DMA方式
- 通道控制方式
I/O核心子系统(为系统调用提供服务)
由于I/O设备种类繁多,功能和传输速率差异巨大,需要多种方法来进行设备控制。这些方法共同组成了操作系统内核的I/O子系统,它将内核的其他方面从繁重的I/O设备管理中解放出来。I/O核心子系统提供的服务主要有:I/O调度、缓冲与高速缓存、设备分配与回收、假脱机、设备保护和差错处理等。
缓冲区与高速缓存
设备分配
- 设备分配方式
- 独享方式
- 共享方式
- 虚拟方式
- 设备分配算法
- 先来先服务
- 优先级高者优先
- 设备分配的安全性
- 安全分配方式
- 不安全的分配方式
- 设备独立性