40-IO软件的层次结构
I/O软件的层级结构
用户层软件
用户层软件实现了与用户交互的接口,用户可以直接使用该层提供的,与I/O操作相关的库函数进行对设备进行操作。
用户层软件将用户请求翻译成格式化的I/O请求,并且通过系统调用请求操作系统内核的服务。
操作系统核心子程序
设备独立性软件(系统调用)
设备性软件又称设备无关性软件。与设备硬件特性无关的功能都在这层实现
实现功能
- 向上层提供统一的调用接口(如write/read系统调用)
- 设备的保护
- 差错处理
- 设备的分配与回收
- 数据缓冲区管理
- 建立逻辑设备名到物理设备名之间的关系,根据设备类型选择相应的驱动程序。
- 逻辑设备名:打印机1、打印机2
- 映射关系通过逻辑设备表实现
操作系统用两种方式管理逻辑设备表
- 整个系统只设备一张LUT
- 每个用户设置一张LUT
设备驱动程序
主要负责对硬件设备的具体控制,将上层发出的一系列命令(如write/read)等转化为特定这边能听得懂的一系列操作。包括设备寄存器,检查设备状态等。
不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家需提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备等工作。
中断处理程序
当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号的类型来找到相应的中断处理程序并执行 。中断处理程序的流程如下。中断处理程序、设备驱动程序直接和硬件打交道

IO核心子程序
IO核心子程序要实现的功能就是设备独立性软件、设备驱动程序、中断处理程序这三节需要实现的功能
考研中我们需要重点掌握的功能有:I/O调度,设备保护,假脱机技术,设备分配与回收,缓冲区管理
假脱机技术(SPOOLing技术)
假脱机技术在用户层实现,但是408大纲又将假脱机技术归为"I/O核心子系统"
设备独立性软件
I/O调度,设备保护,假脱机技术,设备分配与回收,缓冲区管理在设备独立性软件层实现
I/O调度
用某种算法来确定一个好的顺序来处理各个I/O请求
同理,打印机等设备也可以用先来先服务、优先级算法、短作业优先等算法来确定I/O调度
设备保护
操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)
在Unix系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB.当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现"设备保护”的功