1. I/O子系统的层次结构

用户层软件
实现与用户交互的接口,向上提供方便易用的库函数
设备独立性软件
- 向上层提供统一的调用接口(如read/write系统调用);
- 设备的保护;
- 差错处理;
- 设备的分配与回收;
- 数据缓冲区管理;
- 建立逻辑设备名到物理设备名的映射关系,根据设备类型选择调用相应的驱动程序
设备驱动程序
设置设备寄存器、检查设备状态
中断处理程序
进行中断处理
硬件
执行IO操作,有机械部件、电子部件组成。
2. 设备独立性软件
设备独立性软件需要通过
逻辑设备表(LUT,Logical Unit Table)
来确定逻辑设备对应的物理设备,并找到该设备对应的驱动程序。操作系统可以采用两种管理方式管理逻辑设备表(LUT):
- 第一种方式,整个系统只设置一张LUT,意味着所谓用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统
- 第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统
3. I/O核心子系统

设备独立性、设备驱动程序、中断处理程序属于操作系统的内核部分,即“I/O系统”,或称“I/O核心子系统”。
假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术在用户层软件实现的。但大纲将假脱机技术归为“I/O核心子系统”的功能。
I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。
设备保护:不同用户对各个文件有不同的访问权限。在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的PCB。