首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

在Linux系统中,存在一个抽象化的设备目录,名为/dev,如图6.1所示。该目录下存有指向系统中硬件的特殊文件。这些指向硬件设备的文件,极大地简化了程序员对硬件的操作。因为,程序员就可以像访问普通文件一样来访问硬件,而无需使用特殊的接口函数。

图6.1  /dev目录下文件列表情况

Linux系统将设备分成了3种类型:字符设备、块设备和网络接口。

l     字符设备:字符设备就是能够像字节流一样访问的设备,字符终端和串口就属于字符设备。

l     块设备:块设备上可以容纳文件系统。与字符设备不同,在读写操作时,块设备每次只能传输一个或多个完整的块。在Linux操作系统中,应用程序可以像访问字符设备一样读写块设备(一次读取或写入任意的字节数据)。因此,块设备和字符设备的区别仅仅是在内核中对于数据的管理不同。

l     网络接口:网络接口存在一定的特殊性,其与内核的通信完全不同于内核与字符设备或块设备的通信。网络接口可以是一个硬件设备,也可以是一个软件设备。

图6.2给出了位于/dev目录下的字符设备和块设备示例。可以看到,如果该设备是字符设备的话,将以字符“c”开头。如果是块设备的话,将以字符“b”开头。

查看/dev下的设备文件名,可以看到,每个设备都带有诸如“14,4”或“3,0”这样的编号。使用ls命令列出所有以hda开头的设备名称,如图6.3所示,注意其划线部分。这种号码称为主从设备号,内核通过该号码将设备文件与真实设备关联起来。前面的数字称为主设备号,指向硬件设备,而次设备号指向子设备。

由同一个设备驱动控制的所有设备具有相同的主设备号。从设备号则被用来区分具有相同主设备号且由相同的设备驱动控制的不同设备。如图6.3所示,/dev/hda1和/dev/hda2设备文件的主设备号均为3,次设备号分别为1和2。

    

              图6.2  块设备与字符设备示例                           图6.3  设备标号示意图

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论