我正在阅读“ Linux设备驱动程序,第3版”,并发现了一些我无法理解的内容。
在第3.2章中,作者说:
传统上,主要编号标识与设备关联的驱动程序。 内核使用次要编号来确定要引用的设备。
然后我尝试了“ls -l / dev”来看看,我发现了一些不寻常的事情:
brw-rw---- 1 root disk 1, 1 2011-08-23 23:52 ram1
brw-rw---- 1 root disk 1, 2 2011-08-23 23:52 ram2
brw-rw---- 1 root disk 1, 3 2011-08-23 23:52 ram3
brw-rw---- 1 root disk 1, 4 2011-08-23 23:52 ram4
brw-rw---- 1 root disk 1, 5 2011-08-23 23:52 ram5
...
crw-r----- 1 root kmem 1, 1 2011-08-23 23:52 mem
crw-r----- 1 root kmem 1, 4 2011-08-23 23:52 port
crw-rw-rw- 1 root root 1, 3 2011-08-23 23:52 null
crw-rw-rw- 1 root root 1, 5 2011-08-23 23:52 zero
这些设备(ram1-ram5)都有一个克隆,具有相同的主要次要,但名称和类型不同。我认为作者说“主要数字表示设备类,次要数字表示设备索引。因此Major-Minor标识一个独特的设备。”
现在我很困惑。为什么两个设备可以共享同一个主要未成年人?设备号到底是什么?
如果我错了,请纠正我..提前致谢。
答案 0 :(得分:9)
mem
,port
,null
和zero
是字符设备(由列表开头的c
证明)。 ramN
设备是块设备(因此b
)。块设备的主要/次要编号与字符设备无关,反之亦然。