【I/O 系统组成】
I/O 系统是 OS 的重要组成部分,用于管理 I/O 设备、存储数据等,其是 OS 中最繁杂、与硬件联系最密切的部分
I/O 系统的基本由以下几部分组成:
- 需要用于输入、输出和存储信息的设备
- 需要相应的设备控制器
- 控制器与CPU连接的高速总线
- 有的大中型计算机系统,配置I/O通道
为满足系统与用户的功能,I/O 系统应具备以下功能:
- 隐藏物理设备细节
- 实现设备无关性
- 提高处理机和设备的并行性与利用率
- 对I/O设备进行控制
- 确保对设备正确共享
- 错误处理
【I/O 系统的层次结构】
层次结构,是指系统中的设备管理模块分为若干层次
在 I/O 系统中,下层为上层提供服务,完成输入输出功能中的某些子功能,并屏蔽功能实现的细节
I/O 软件的层次
通常来说,I/O 软件分为以下四个层次:
- 用户层软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与 I/O 操作有关的库函数对设备进行操作
- 设备独立软件:用于实现用户程序与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间
- 设备驱动程序:与硬件直接相关,用于具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序
- 中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后,返回到被中断进程
I/O 系统的分层
与上述的 I/O 软件组织的层次结构相对应,I/O 系统本身也可分为下面三个层次:
- 中断处理程序:处于I/O系统的底层,直接与硬件进行交互
- 设备驱动程序:处于次底层,是进程和控制器之间的通信程序,其将上层发来的抽象I/O请求,转换为对I/O设备的具体命令和参数,并把它装入到设备控制其中的命令和参数寄存器中
- 设备独立性软件:包括设备命名、设备分配、数据缓冲等软件
【I/O 系统接口】
在 I/O 系统与高层接口中,根据设备类型的不同,又进一步分为若干个接口:
块设备接口:对于块设备来说,数据的存取和传输是以数据块为单位的,而块设备接口是块设备管理程序与高层间的接口,其反映了大部分磁盘存储器和光盘存储器的本质特征,用于控制块设备的输入和输出
流设备接口:对于流设备来说,数据的存取和传输是以字符为单位的,而流设备接口是流设备管理程序与高层间的接口,反映了大部分字符设备的本质特征,用于控制字符设备的输入和输出
网络通信接口:OS 提供相应的网络软件和网络通信接口,使得计算机能通过网络与其他计算机通信