IO软件的层次结构
层次结构
中断处理程序
位于操作系统底层,与硬件相关联。在转入中断处理程序后,检查设备状态寄存器内容,判断产生中断的原因,根据IO操作的完成情况进行相应处理。
- 如果数据传送出错,向上层软件报告设备的出错信息,实施重新执行
- 如果正常完成,唤醒等待的进程,将其转化为就绪态
- 如果有等待传输的IO命令,通知相关软件启动下一个IO请求
设备驱动程序
包括与设备密切相关的所有代码,从独立于设备的软件中接收并执行IO请求。
- 把用户提交的逻辑IO请求转化为物理IO操作
- 监督设备是否正确执行,管理数据缓冲区,进行必要的纠错处理
负责设备初始化、执行设备驱动例程、调用和执行中断处理程序
层次化
设备驱动程序分为整体驱动程序和分层驱动程序。
整体驱动程序直接向操作系统提供接口和控制硬件。
分层驱动程序将驱动程序分成多层,放在栈中,系统接到IO请求时先调用栈顶的驱动程序,随后向下调用,直到请求被处理
独立于设备的IO软件
执行适用于所有设备的常用IO功能,向用户层软件提供一致性接口
包括设备命名、设备包含、提供设备无关的数据单位、缓冲技术、设备分配与状态跟踪、错误处理与报告。
用户空间的IO软件
库函数
一部分IO软件不在操作系统中,是和应用程序链接在一起的库函数。
SPOOLing软件
在内核外运行的系统IO软件,采用预输入、缓输出和井管理技术,通过创建守护进程和特殊目录解决独占型设备的空占问题。