Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Taller Drivers
1. Taller: programación de drivers para Linux 2.6
Resumen:
Se hará una introducción teórica a la programación de Drivers para Linux, con
ejemplos que serán usados y modificados por los participantes. Escribir drivers
básicos ayuda a comprender lo que pasa en espacio de kernel con las llamadas
de sistema que con frecuencia se usan (read, write, lseek, ioctl).
Material de apoyo:
Antes y durante la semana de la Campus Party, se mejorará el documento
http://wiki.freaks-unidos.net/linux%20drivers, y los ejemplos que allí se
encuentran.
Recomendaciones para el taller:
Preparar un entorno seguro para compilar drivers antes de el taller será de mucha
utilidad.
Se recomienda como mínimo tener una instalación reciente de GNU/Linux para la que se
puedan compilar módulos.
Lo ideal es contar con una máquina virtual (Qemu, VMWare) ó User mode Linux lista,
con conexión a la red local, y con su distribución preferida instalada. Se
recomienda Debian ó Ubuntu.
Los siguientes documentos pueden ser de utilidad:
* http://wiki.freaks-unidos.net/instalando%20debian%20en%20user%20mode%20linux
* http://wiki.freaks-unidos.net/qemu-debian-es
¿Qué es un driver?
Desde el punto de vista de El Kernel, un driver es una capa de código entre el
dispositivo de hardware y la aplicación. Un driver usa los (grandes) privilegios con
los que se ejecuta su código para definir exactamente como se quiere que un
dispositivo sea visto por una aplicación. Pueden existir diferentes drivers para un
mismo dispositivo de hardware.
El driver está en el kernel. El kernel tiene las siguientes tareas:
Manejo de procesos : Creación y destrucción de procesos, comunicación entre
●
procesos, asignación de CPU
Manejo de memoria : La memoria es un recurso crítico, y el kernel administra
●
su asignación.
Sistemas de archivos
●
Control de dispositivos (drivers).
●
2. El kernel diferencia tres tipos de drivers:
Drivers de carácter (char devices)
●
Drivers de bloques (block devices)
●
Drivers de red (network devives)
●
No todos los drivers son de dispositivos. Algunos son de software. Por ejemplo, el
driver de un sistema de archivos como ext3 o reiserfs son drivers de software, que
mapea estructuras de datos de bajo nivel a estructuras de datos de más alto nivel.
¿Por qué escribir un driver?
Existen muchas razones para querer escribir un driver.
Para dar soporte a nuevo hardware
●
Para mantener un producto propio
●
Se está creando hardware a un ritmo rápido, y se necesitarán más personas en
●
capacidad de crear drivers.
Recomendaciones para la creación de drivers:
Proveer mecanismos, y no políticas
La idea es que un driver permita acceder a los dispositivos de hardware, sin imponer
restricciones arbitrarias a los que usan el driver. En UNIX esto es una regla de
diseño, que se conoce como separación de mecanismos y políticas. Una consecuencia de
esta filosofía es la minimización de las líneas de código que tiene un driver.
Para no escribir políticas en el driver, se puede hacer una aplicación de usuario
que se encargue de configurar el dispositivo, y/o una librería para acceder a él. La
idea es que el driver cambie muy poco.