Chapter VII
CSAPP NOTE CHAP VII
Chap 7 输入输出#
输入输出子系统#
I/O子系统层次结构#
I/O子系统包括I/O软件和I/O硬件。软件分为用户空间和内核空间。
- 用户空间: 用户程序 (printf), 运行时系统
- 内核空间:
- 与设备无关的I/O软件
- 设备驱动程序
- 中断服务程序
- I/O硬件

I/O软件核心#

与设备无关的I/O软件#
提供统一的抽象视图,隐藏设备差异。
- 为设备驱动提供统一接口
- 缓冲处理 (管理内核缓冲区)
- 错误报告 (处理通用错误)
- 逻辑块大小处理 (统一块大小)
- 打开/关闭文件 (抽象为文件)
设备驱动程序#
与具体设备相关,由设备商提供。
- 包含I/O端口的访问逻辑
- 实现具体I/O操作
- 处理特定设备的中断
- 根据I/O控制方式 (程序、中断、DMA) 实现
I/O硬件连接#

I/O端口和I/O指令#

设备控制器#
I/O设备的电子部分,包含数据缓冲、状态/控制寄存器。这些寄存器统称为 “I/O端口”。
I/O端口编址#
为I/O端口编号。IA-32采用独立编址,I/O地址空间与内存地址空间分离,允许64K个8位端口。
I/O指令#
访问I/O端口的特权指令。
- IN: 从端口读数据到AL/AX。
- OUT: 写数据从AL/AX到端口。
数据传送方式#
- 无条件传送: CPU直接读写,假定外设恒定就绪,只用于同步设备。
- 查询传送: CPU循环查询外设状态(“忙-等待”),若准备好则传送。浪费CPU资源。

- 中断传送: CPU启动I/O后执行其他程序。外设就绪后发”中断请求”,CPU响应并处理数据。

- DMA (直接存储器访问): CPU让出总线控制权,外设与主存之间直接成批传送数据,完成后再中断CPU。