为什么两个设备共享相同的主要次要设备号?

时间:2011-08-28 02:51:02

标签: linux device-driver

我正在阅读“ 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标识一个独特的设备。

现在我很困惑。为什么两个设备可以共享同一个主要未成年人?设备号到底是什么?

如果我错了,请纠正我..提前致谢。

1 个答案:

答案 0 :(得分:9)

memportnullzero是字符设备(由列表开头的c证明)。 ramN设备是块设备(因此b)。块设备的主要/次要编号与字符设备无关,反之亦然。