PRACTICA No. 4



"DEVICE FILES"



OBJETIVO: Comprender como maneja Linux todos los dispositivos conectados a la computadora.



INTRODUCCIÓN:

Qué es un manejador de dispositivo ?

Todos los periféricos conectados a la computadora que estamos usando para correr Linux son tratados como archivos especiales (device files) por el sistema operativo. Un periférico o dispositivo es una terminal, un disco duro, una impresora, un manejador de CD-ROM, o un modem. Todo lo que recibe o envía datos hacia el sistema operativo es un dispositivo.

El concepto de tratar todo en el sistema como un dispositivo es uno de los beneficios de la arquitectura Unix. Cada dispositivo tiene un archivo especial llamado manejador de dispositivo (device file), el cual incluye todas las instrucciones necesarias para que Linux se comunique con el dispositivo. Cuando un nuevo dispositivo es desarrollado, puede ser usado por Linux escribiendo su manejador de dispositivo, el cual es usualmente un conjunto de instrucciones que explican como mandar y recibir datos.

Los manejadores de dispositivos permiten al kernel de Linux incluir solo el sistema operativo y el soporte de software. Teniendo las instrucciones para comunicarse hacia los dispositivos dentro de un conjunto de archivos. Estos pueden ser buscados cuando son necesitados (en el caso de que raramente sean usados) o almacenados en memoria todo el tiempo cuando el sistema operativo es reiniciado. Los refinamientos hechos hacia un periférico, pequeños cambios hacia el archivo manejador del dispositivo pueden tener informado al sistema operativo de nuevas características y capacidades.

Cuando una aplicación envía datos a un dispositivo, el kernel de Linux no tiene que preocuparse por el mecanismo. El kernel solo pasa la petición al manejador del dispositivo y deja que éste maneje las comunicaciones. Similarmente, cuando estamos tecleando, el manejador de dispositivo de la terminal acepta la acción y la pasa al shell, filtrando cualquier código especial que el kernel no conozca, traduciéndolo a un formato que el kernel pueda operar.

Por omisión y convención Linux guarda los manejadores de dispositivos en el directorio /dev. Pueden guardarse los manejadores de dispositivos en cualquier parte del sistema de archivos, pero guardándolos en /dev hace obvio que son los manejadores de dispositivos.

Diferencia entre dispositivos modo bloque y modo caracter.

Cada tipo de dispositivo en el sistema Linux se comunica con la aplicación en una de las formas siguientes: carácter por carácter o como un conjunto de datos en un bloque de tamaño predefinido. Las terminales, impresoras y módems asíncronos son dispositivos modo carácter. Cuando se usa el modo caracter se envía uno a la vez y hace eco en la otra terminal. Los manejadores (device drivers) de disco duro y la mayoría de manejadores, usan el modo bloque, porque este es el camino más rápido para enviar o recibir grandes cantidades de información.

Los archivos de dispositivo (device files) son llamados dispositivos modo carácter o dispositivos modo bloque, basados en la forma de comunicación.

Cabe mencionar que los dispositivos que operan a modo carácter son distintos de los de modo bloque, en el aspecto de como el dispositivo maneja su búfer. Los dispositivos modo carácter hacen su propio búfer. Los dispositivos modo bloque, usualmente se comunican en bloques de 512 o 1024 bytes y el kernel se ocupa del búfer.

Algunos periféricos necesitan usar archivos de dispositivo a modo bloque y carácter al mismo tiempo. Los manejadores de dispositivo manejan el modo carácter y el modo bloque a través de dos diferentes archivos de dispositivo. El archivo de dispositivo que se usa depende de como la aplicación quiera escribir o leer datos hacia el periférico.

El archivo de dispositivo tiene todos los detalles de si el periférico opera a modo carácter o modo bloque. Una manera fácil de saber que tipo de modo utiliza un periférico es obtener un listado largo del archivo de dispositivo. El listado se obtiene con el comando 'ls -l' que muestra los permisos, dueño, grupo, etc.. del archivo. Si el primer carácter es una b, indica que el periférico opera en modo bloque y una c indica que el periférico opera en modo carácter.

Por ejemplo, para inspeccionar un dispositivo serial en el sistema:

# ls -l /dev/cua0

crw-rw---- 1 root uucp 5, 64 Jul 17 1994 /dev/cua0

#



Los archivos de dispositivos son usualmente nombrados indicando el tipo de dispositivo que son. La mayoría de terminales, por ejemplo, tienen un archivo de dispositivo con el nombre tty seguido por dos o más letras o números, tal como tty1, tty1A, o tty04. Las letras tty identifican al archivo como una terminal (tty es por teletype), y los números o letras identifican una terminal específica a la que es referida. Cuando se encuentran en el directorio llamado /dev, el nombre completo del archivo de dispositivo se convierte en /dev/tty01. El manejador del mouse conectado a su computadora se accesa a través del manejador /dev/mouse.

Lista de nombres de varios manejadores de dispositivos.



Dispositivo Nombre
Primer floppy (A:) /dev/fd0
Segundo floppy (B:) /dev/fd1
Primer disco duro (completo) /dev/hda
Primer disco duro, partición primaria 1 /dev/hda1
Primer disco duro, partición primaria 2 /dev/hda2
Primer disco duro, partición primaria 3 /dev/hda3
Primer disco duro, partición primaria 4 /dev/hda4
Primer disco duro, partición lógica 1 /dev/hda5
Primer disco duro, partición lógica 2 /dev/hda6
...
Segundo disco duro (completo) /dev/hdb
Segundo disco duro, partición primaria 1 /dev/hdb1
...
Primer disco duro SCSI (completo) /dev/sda
Primer disco duro SCSI, partición primaria 1 /dev/sda1
...
Segundo disco duro SCSI (completo) /dev/sdb
Segundo disco duro, partición primaria 1 /dev/sdb1
...


Algunos archivos de los manejadores de dispositivos pueden existir aunque estos no estén instalados. Así que si se tiene el archivo /dev/sda, no significa que realmente se tenga un disco duro SCSI.

Número mayor y menor de dispositivo (Major and Minor Numbers)

Linux puede usar el mismo manejador de dispositivo para todos los dispositivos del mismo tipo. Por ejemplo, un sistema Linux podría tener una tarjeta multipuerto (múltiples puertos seriales) con 10 terminales Wyse 60. Linux puede usar el mismo manejador de dispositivo para cada terminal porque todas ellas son del mismo tipo.

Sin embargo, el sistema operativo tiene un método para diferenciar a cada una de las 10 terminales que se quiera direccionar. Aquí es donde los números de dispositivos son usados. Cada dispositivo es definido por dos números de dispositivo:

a) El número mayor, que identifica el manejador de dispositivo que se ocupara y

b) El número menor, que identifica el número de dispositivo.



Por ejemplo, las 10 terminales Wyse 60 sobre la tarjeta multipuerto pueden usar un manejador de dispositivo con el mismo número mayor (el cual realmente apunta a la localización del archivo manejador de dispositivo en el directorio /dev), pero cada uno tiene un número menor diferente, este es utilizado por el sistema operativo únicamente para identificar la terminal en la tarjeta.

Cada dispositivo en el sistema operativo tiene un número mayor y un número menor de dispositivo asignado único. Si dos dispositivos tuvieran el mismo número, Linux no puede comunicarse propiamente con ellos.

Los números de dispositivo son creados con el comando mknod (make node) y se borran con el comando estándar rm.

Para el uso del mouse se necesitan los siguientes archivos de dispositivo, si no cuenta con estos archivos de dispositivo, deberá crealos.



Interface Dispositivo Mayor Menor Comando
Logitech /dev/logibm 10 0 mknod /dev/logibm c 10 0
PS/2 /dev/psaux 10 1 mknod /dev/psaux c 10 1
Inport /dev/inportbm 10 2 mknod /dev/inportbm c 10 2
ATI-XL /dev/atibm 10 3 mknod /dev/atibm c 10 3


Realizar el siguiente ejercicio para crear los diferentes manejadores de dispositivo para el mouse:

#cd /dev Nos cambiará al directorio de manejadores de

dispositivo donde vamos a trabajar.

#

#ls -li logibm Hace un listado largo con su respectivo número

de inodo del manejador de dispositivo.

12386 crw-rw-r-- 1 root root 10, 0 Dec31 1979 logibm

#



Apuntar el resultado de la pantalla.





#rm logibm Borra el manejador de dispositivo

#

#mknod /dev/logibm c 10 0 Crea un nuevo manejador de dispositivo.

#

#ls -li logibm Lista el nuevo manejador para comprobar

que fué creado en forma correcta.

13490 crw-r--r-- 1 root root 10, 0 Nov6 21:26 logibm

#



Apuntar el resultado de la pantalla.





#chmod 664 logibm Cambiar los permisos del archivo para

dejarlo en su forma original.

#

#ls -li logibm Listar el manejador para ver los cambios hechos.

13490 crw-rw-r-- 1 root root 10, 0 Nov6 21:26 logibm

#



Apuntar el resultado de la pantalla.





#ls -li psaux Hace un listado largo con su respectivo

número de inodo del manejador de dispositivo.

12421 crw-rw-r-- 1 root root 10, 1 Dec31 1979 psaux

#



Apuntar el resultado de la pantalla.





#rm psaux Borra el manejador de dispositivo

#

#mknod /dev/psaux c 10 1 Crea un nuevo manejador de dispositivo.

#

#ls -li psaux Lista el nuevo manejador para

comprobar que fué creado en forma correcta.

13491 crw-r--r-- 1 root root 10, 1 Nov6 21:31 psaux

#

Apuntar el resultado de la pantalla.





#chmod 664 psaux Cambiar los permisos del archivo para

dejarlo en su forma original.

#

#ls -li psaux Listar el manejador para ver los cambios hechos.

13491 crw-rw-r-- 1 root root 10, 1 Nov6 21:31 psaux

#



Apuntar el resultado de la pantalla.





#ls -li inportbm Hace un listado largo con su respectivo número de inodo

del manejador de dispositivo.

12383 crw-rw-r-- 1 root root 10, 2 Dec31 1979 inportbm

#

Apuntar el resultado de la pantalla.





#rm inportbm Borra el manejador de dispositivo

#

#mknod /dev/inportbm c 10 2 Crea un nuevo manejador de dispositivo.

#

#ls -li inportbm Lista el nuevo manejador para comprobar

que fué creado en forma correcta.

13492 crw-r--r-- 1 root root 10, 2 Nov6 21:33 inportbm

#



Apuntar el resultado de la pantalla.





#chmod 664 inportbm Cambiar los permisos del archivo para

dejarlo en su forma original.

#

#ls -li inportbm Listar el manejador para ver los cambios hechos.

13492 crw-rw-r-- 1 root root 10, 2 Nov6 21:33 inportbm

#



Apuntar el resultado de la pantalla.





#ls -li atibm Hace un listado largo con su respectivo

número de inodo del manejador de dispositivo.

12210 crw-rw-r-- 1 root root 10, 3 Dec31 1979 atibm

#



Apuntar el resultado de la pantalla.





#rm atibm Borra el manejador de dispositivo.

#

#mknod /dev/atibm c 10 3 Crea un nuevo manejador de dispositivo.

#

#ls -li atibm Lista el nuevo manejador para comprobar que

fué creado en forma correcta.

13489 crw-r--r-- 1 root root 10, 3 Nov6 21:12 atibm

#



Apuntar el resultado de la pantalla.





#chmod 664 atibm Cambiar los permisos del archivo para

dejarlo en su forma original.

#

#ls -li atibm Listar el manejador para ver los cambios hechos.

13489 crw-rw-r-- 1 root root 10, 3 Nov6 21:12 atibm

#



Apuntar el resultado de la pantalla.







CUESTIONARIO:

1. Defina que es un dispositivo para el sistema operativo Linux ?

2. Mencione los beneficios que se obtienen de trabajar con los manejadores de dispositivos.

3. Cual es la principal función del manejador de dispositivo ?

4. En que directorio se guardan los manejadores de dispositivos ?

5. De qué forma pueden comunicarse los dispositivos con el sistema Linux y que nombre reciben estos (mencione algunos ejemplos de cada uno) ?

6. Mencione una diferencia entre los dispositivos modo carácter y modo bloque.

6. Un dispositivo puede tener un archivo de dispositivo a modo bloque y modo carácter al mismo tiempo (si,no y porque) ?

7. Diga una forma fácil para ver de que tipo de manejador de dispositivo se trata un archivo determinado.

8. Mencione de que forma son usualmente asignados los nombres a los archivos de dispositivo y porqué ?

9. Necesita el sistema Linux un manejador diferente para dispositivos del mismo tipo ?

10. Cómo puede el sistema Linux diferenciar entre los manejadores del mismo tipo para saber sobre cual enviar o recibir datos ?

11. Qué pasaría si más de un dispositivo tuvieran el mismo número mayor y menor ?





CONCLUSIONES.



anterior siguiente