设备独立性软件
使得应用进程中所用的设备,不局限于某个具体的物理设备
1.1 逻辑设备名
抽象设备名
- 可以避免绑定特定的物理设备,而导致可以本可避免的阻塞
- 可灵活实现IO重定向
1.2 设备独立性软件功能
1.2.1 设备驱动程序的统一接口
- 要求每个设备驱动程序与OS间有相同的接口
- 要求抽象的设备名映射到适当物理设备的驱动程序入口
1.2.2 缓冲管理
1.2.3 差错控制
- 暂时性错误:暂时性事件引起的错误
- 持久性错误:持久性故障引起的错误
暂时性错误主要由设备驱动性程序处理;而持久新错误中可处理的由设备独立性软件处理。
1.2.4 对独立设备的分配回收
- 独占设备
- 共享设备
独占设备由操作系统统一分配回收,进程使用时应向OS提出申请;
1.2.5 独立于设备的逻辑数据块
设备数据块大小不同,独立性软件需向上提供与设备无关的数据块的大小
1.3 设备控制数据结构
1.3.1 设备控制表DCT
记录设备情况
- 设备类型
- 设备标识字段
- 设备队列首指针:待使用该设备的进程排成队列
- 忙闲标志
- 控制器表指针:指向该设备连接的控制器的控制表
- 重复执行次数
1.3.2 控制器控制表COCT
用以记录控制器情况
- 控制器标识符
- 控制器状态
- 与控制器连接的通道表指针
- 控制器队列队首指针
- 控制器队列队尾指针
1.3.3 通道控制表CHCT
记录通道情况
- 通道标识符
- 通道状态
- 与通道连接的控制器表首址
- 通道队列队首指针
- 通道队列队尾指针
1.3.4 系统设备表SDT
记录系统中全部设备的情况
表项内容如下:
- 设备类
- 设备标识符
- DCT
- 驱动程序入口
1.3.5 逻辑设备表 LUT
完成逻辑设备名到物理设备名的映射
有两种形式,系统级LUT只设一张,只适合单用户
或用户级LUT在用户登录时设置一张
- 系统级LUT:
逻辑设备名 |
物理设备名 |
驱动程序入口地址 |
-
用户级LUT
逻辑设备名 |
系统设备表指针 |
1.4 设备分配
1.4.1 设备分配过程
- 分配设备
- 分配控制器
- 分配通道