外设

计算机系统中的硬件设备(外设)千差万别,一般连接在计算机系统中I/O总线上,通过I/O控制器与CPU进行交互。I/O控制器在物理上包含三个层次:I/O地址空间、I/O接口和设备控制器。每个连接到I/O总线上的设备都有自己的I/O地址空间(即I/O端口),这也是CPU可以直接访问的地址。CPU一般支持I/O地址空间访问,即通过特定的I/O访问指令访问;也支持基于内存的I/O地址空间,即通过一般的访存指令访问。这些I/O访问请求通过I/O总线传递给I/O接口。

I/O接口是处于一组I/O端口和对应的设备控制器之间的一种硬件电路。它将I/O访问请求中的特定值转换成设备所需要的命令和数据;并且检测设备的状态变化,及时将各种状态信息写回到特定I/O地址空间,供操作系统通过I/O访问指令来访问。I/O接口包括键盘接口、图形接口、磁盘接口、总线鼠标、网络接口、括并口、串口、通用串行总线、PCMCIA接口和SCSI接口等。

设备控制器并不是所有I/O设备所必须的,只有少数复杂的设备才需要。它负责解释从I/O接口接收到的高级命令,并将其以适当的方式发送到I/O设备;并且对I/O设备发送的消息进行解释并修改I/O端口的状态寄存器。典型的设备控制器就是磁盘控制器,它将CPU发送过来的读写数据指令转换成底层的磁盘操作。

操作系统对硬件设备的控制方式主要与三种:程序循环检测方式(Programmed I/O,简称PIO)、中断驱动方式(Interrupt-driven I/O)、直接内存访问方式(DMA, Direct Memory Access)。