己所不欲勿施于人!
全部博文(80)
分类: LINUX
2012-07-17 07:40:08
在unix/linux系统中,一切都是文件。所有硬盘、软盘、键盘等设备都用文件来代表,对应着/dev下面的文件。对于应用程序来说,可以像对待普通文件一样打开,关闭、读写这些设备文件。
但是这种文件名,比如/dev/sda、/dev/raw/raw1都是用户空间名称,OS Kernel根本不知道这个名称指的是什么。在内核空间是通过major、minor device number 来区分设备的。
major device number可以看作是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device number.这个数字是几时Kernel中device driver table 的索引,这个表保存着不同设备驱动程序。
而minor device number用来代表被访问的具体设备。也就是说Kernel根据major device number 找到设备驱动程序,然后再从minor device number 获得设备位置等属性。
所有这些major device number 是已经预先分配好的。
比如裸设备是162,scsi块设备是8
在我的系统中,raw1 的major、minor device number 分别是162,1
而raw1绑定到 major8,minor 17
我们看到major 8,minor 17 对应的是 sdb1.