深入理解 I/O 架构与设备驱动
1. 设备文件概述
在类 Unix 操作系统中,一切皆文件,I/O 设备也被视为特殊文件,即设备文件。这意味着可以使用与操作磁盘上常规文件相同的系统调用直接与 I/O 设备进行交互。例如, write() 系统调用既可以将数据写入常规文件,也可以通过写入 /dev/lp0 设备文件将数据发送到打印机。
设备文件主要分为两种类型:块设备文件和字符设备文件。它们的区别如下:
- 块设备 :数据可以随机寻址,并且传输数据块所需的时间较短且大致相同。常见的块设备包括硬盘、软盘、CD - ROM 驱动器和 DVD 播放器。
- 字符设备 :数据要么无法随机寻址(如声卡),要么虽可随机寻址,但访问随机数据所需的时间很大程度上取决于其在设备内的位置(如磁带驱动器)。
网络卡是一个例外,它是不直接与设备文件关联的硬件设备。
设备文件自 Unix 操作系统早期版本就已开始使用,通常是存储在文件系统中的真实文件。但其索引节点(inode)不需要包含指向磁盘数据块的指针,而是包含对应硬件设备的标识符。传统上,这个标识符由设备文件类型(字符或块)和一对数字组成:
- 主设备号 :标识设备类型。通常,具有相同主设备号和类型的所有设备文件共享同一组文件操作,因为它们由同一个设备驱动程序处理。
- 次设备号 :在共享相同主设备号的一组设备中标识特定设备。例如,由同一磁盘控制器管理的一组磁盘具有相同的主设备号和
超级会员免费看
订阅专栏 解锁全文
1030

被折叠的 条评论
为什么被折叠?



