当前位置:嗨网首页>书籍在线阅读

20-设备节点

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.5 设备节点

设备节点是应用程序与设备驱动交互的特殊文件。当应用程序在设备节点上执行一般的UNIX I/O(例如打开、关闭、读取和写入时)操作时,内核以不同于普通文件I/O的方式来处理这些请求。内核将该请求转发给设备驱动。设备驱动处理这些I/O操作,并向用户返回结果。设备节点提供设备抽象,使应用程序不必了解特定设备或特殊接口。设备节点是UNIX系统上访问硬件的标准机制。但网络设备却是个例外,回顾UNIX历史,有些人认为把网络设备单独处理是个错误。对所有机器硬件使用同样的read()、write()和mmap()系统调用进行操作,正是UNIX简洁优雅的最佳体现。

内核如何识别哪些设备驱动该处理哪些请求呢?每个设备节点都具有两个数值属性,分别是主设备号(major number)和次设备号(minor number)。主次设备号与对应的设备驱动映射表已载入内核。如果设备节点的主次设备号和内核的设备驱动不对应(由于各种原因,偶尔会发生这种情况),在设备节点上的open()请求操作会返回-1,并设置errno为ENODEV。这种设备被称为不存在的设备。