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设备与通道或CPU之间的数据传输。
- 通道/处理机:在某些复杂的I/O系统中,通道或处理机用于减轻CPU的负担,它们可以独立地执行I/O操作,而无需CPU的干预。
- 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 设备输入主机;
- 将数据从主机输出至 I/O 设备;
- 状态测试。检测 I/O 设备的状态(”忙“ 还是 ”准备就绪“),来确定接下来是否可以进行数据交换;
- 形成具体的操作命令。例如磁盘驱动器的磁头读扇区、写扇区、寻找磁道等等。