2011-08-28 19 views
6

Estoy leyendo "controladores de dispositivo Linux, 3ª edición", y encontré algo que no puedo entender.¿Cómo es que dos dispositivos comparten el mismo número de dispositivo mayor-menor?

en el capítulo 3.2, el autor dijo:

Tradicionalmente, el mayor número identifica el controlador asociado con el dispositivo. El kernel usa el número menor para determinar exactamente a qué dispositivo se hace referencia.

Entonces intentado "ls -l/dev" para echar un vistazo, me encontré con algo inusual:

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 

Estos dispositivos (ram1-ram5) tienen un clon, con el mismo gran -minor, pero diferente nombre y tipo. Pensé que el autor decía "número principal significa clase de dispositivo, y número menor significa índice de dispositivo. Por lo tanto, Major-Minor identifica un dispositivo único."

Ahora estoy confundido. ¿Cómo es que dos dispositivos podrían compartir el mismo menor de edad? ¿Cuáles son exactamente los números de los dispositivos?

Corrígeme si me equivoqué .. Gracias de antemano.

Respuesta

8

mem, port, null y zero son dispositivos de caracteres (como lo demuestra el c la lista comienza con). Los dispositivos ramN son dispositivos de bloque (de ahí el b). Los números mayores/menores para dispositivos de bloques son independientes de los dispositivos de caracteres, y viceversa.

+0

por lo que son archivos totalmente diferentes que asocian diferentes dispositivos? También encontré esto en LDD3: "** Los kernels modernos de Linux permiten que varios controladores compartan números mayores, pero la mayoría de los dispositivos que verá todavía están organizados según el principio de uno-mayor-uno-controlador. **": si es así, ¿Cómo puede el núcleo elegir el controlador correcto para el dispositivo? – kumo

+1

@Shello, primero, esto está desactualizado, la asignación dinámica es mucho más común en estos días. En segundo lugar, es más exacto decir, one-major-and-type-pair-one-driver (es decir, puede considerar que el tipo es parte de la especialización) – bdonlan

Cuestiones relacionadas