根据LDD3第三章
Traditionally, the major number identifies the driver associated with the device. For example, /dev/null and /dev/zero are both managed by driver 1, whereas virtual consoles and serial terminals are managed by driver 4; similarly, both vcs1 and vcsa1 devices are managed by driver 7. Modern Linux kernels allow multiple drivers to share major numbers, but most devices that you will see are still organized on the one-major-one-driver principle.
主设备号与设备驱动关联。
The minor number is used by the kernel to determine exactly which device is being referred to. Depending on how your driver is written (as we will see below), you can either get a direct pointer to your device from the kernel, or you can use the minor number yourself as an index into a local array of devices. Either way, the kernel itself knows almost nothing about minor numbers beyond the fact that they refer to devices implemented by your driver.
次设备号表示引用哪个设备(因为一个驱动可以对应多个设备)。
以linux-2.6.19代码为例看MTD字符设备驱动代码drivers/mtd/mtdchar.c, 在mtd_open()中,
/* You can't open the RO devices RW */
if ((file->f_mode & 2) && (minor & 1))
return -EACCES;
这里的(minor & 1)说明次设备的最低位的特性。当最低为1时,设备是只读的。例如:主设备号相同时,次设备号分别为0,1的设备是表示同一个设备,不过0是可写的,而1是只读的。