I/O设备
需熟练掌握I/O控制方式和软件层次,常在选择题中考察。
设备类型
以linux系统为例,说明系统的I/O设备类型
- 块设备(Block Devices):
- 块设备以固定大小的块(通常为512字节或4KB)为单位进行数据读写。
- 代表性的块设备包括硬盘驱动器(如SATA、SSD)、USB闪存驱动器、CD/DVD驱动器等。
- 块设备通常用于存储文件系统,支持随机访问和缓存。
- 字符设备(Character Devices):
- 字符设备以字符流为单位进行数据读写,没有块的概念。
- 代表性的字符设备包括键盘、鼠标、串口设备、声卡等。
- 字符设备通常用于实时数据流、交互性输入/输出。
- 网络设备(Network Devices):
- 网络设备允许计算机通过网络与其他计算机通信。
- 代表性的网络设备包括以太网适配器(Ethernet Adapter)、Wi-Fi适配器、调制解调器(Modem)等。
I/O控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA方式
I/O软件层次
- 用户层I/O软件:
- 目的:提供简单、易用的界面供用户级程序访问I/O设备。
- 特点:这层通常是库函数或系统调用的形式,如C语言的
printf
、scanf
或UNIX的read
、write
等。 - 功能:文件操作、控制台I/O、网络通信等。
- 设备独立性软件:
- 目的:为不同的I/O设备提供统一的接口,从而使用户层软件和设备驱动程序之间解耦。
- 特点:它隐藏了硬件的特定细节,使上层软件不必为每种特定的设备编写不同的代码。
- 功能:命名、保护、设备独立的I/O操作、错误处理等。
- 设备驱动程序:
- 目的:为每种I/O设备提供专门的接口和管理。
- 特点:设备驱动是操作系统中与硬件直接交互的部分,通常由硬件制造商提供。
- 功能:初始化设备、处理设备的细节、数据传输、错误处理等。每种设备(如磁盘、网卡、打印机等)都有自己专门的驱动程序。
- 中断处理程序:
- 目的:响应来自I/O设备的中断请求。
- 特点:当I/O设备完成任务或需要注意时,它会发送一个中断信号给CPU。中断处理程序负责捕获这个中断并执行相应的处理。
- 功能:保存当前CPU的状态、处理中断请求、恢复CPU状态等。
I/O应用程序接口
操作系统通常会提供一套设备I/O应用程序接口(API)。这套API为应用程序提供了一种标准化的方式来请求I/O操作,而无需关心底层硬件的细节。
I/O API的主要目的之一是为应用程序提供一个与硬件无关的接口。这意味着应用程序可以使用相同的API调用来读写不同的设备,而不需要知道这些设备的具体实现细节。