Asignación de recursos Linux - LPI 101

Para permitir que los periféricos y dispositivos de la PC se comuniquen directamente con los recursos del sistema, en particular la CPU, el sistema asigna recursos como líneas y canales para cada dispositivo. Estos recursos son líneas de solicitud de interrupción (IRQ), direcciones de entrada/salida y canales de acceso directo a memoria (DMA).

IRQs: Las líneas de solicitud de interrupción permiten a los dispositivos solicitar tiempo de CPU. La CPU detendrá su actividad actual y procesará las instrucciones enviadas por el dispositivo. Las IRQ varían de 0 a 15.

Dirección de E/S: Representan direcciones específicas en el mapa de memoria del sistema. La CPU se comunicará con el dispositivo leyendo y escribiendo en la memoria en la dirección especificada.

DMA: Ciertos dispositivos pueden acceder a la memoria del sistema a través de un canal DMA, lo que les permite escribir y procesar datos sin tener acceso a la CPU. Esto puede mejorar el rendimiento.

Listado de recursos asignados

El kernel mantiene la información relacionada con los recursos asignados en el directorio /proc. Los archivos relevantes son:
  • /Proc/dma
  • /Proc/interrupts
  • /Proc/ioports
  • /Proc/pci
Los recursos asignados también pueden ser listados usando herramientas como lspci y dmesg:

lspci: lista la información del conjunto de chips de todos los componentes PCI conectados. Lista los ajustes de E/S y IRQ con el indicador -v. Observe también la opción -b (BUS centrada) que muestra las asignaciones asignadas por el BIOS en lugar del kernel.

dmesg. Muestra continuamente los mensajes del kernel. También muestra los mensajes del kernel registrados en el momento del arranque durante la etapa "kernel". En esta etapa, el núcleo analiza todo el hardware del sistema y puede asignar automáticamente módulos (controladores) para chipsets dados. Estos mensajes también están disponibles en /var/log/dmesg.

Device I/O port IRQ
/dev/ttyS0 0x3f8 4
/dev/ttyS1 0x02f8 3
/dev/lp0 0x378 7
/dev/lp1 0x278 5
soundcard 0x220

Asignación de recursos manuales

NOTICIA:
Este es un ejemplo muy común, sin embargo, dado que los módulos del kernel sólo se discuten en LPI 102 algunos pueden encontrarlo difícil. Puedes omitir este ejemplo e ir a la sección 2

Ejemplo: configuración de dos tarjetas Ethernet

Para los módulos compilados estáticamente, los parámetros se pueden pasar al kernel durante el arranque. Un ejemplo típico es cuando dos tarjetas Ethernet están presentes y sólo se detecta la primera. La siguiente línea indica al núcleo que:
  • Hay una tarjeta ethernet usando IRQ 10 e I/O 0x300
  • Hay otra tarjeta ethernet usando IRQ 9 y E/S 0x340
ether=10, 0x300,eth0         ether=9,0x340,eth1

Usted escribe esta línea en el prompt de LILO/GRUB 'boot:', o bien, como con la configuración de RAM antes, edite /etc/lilo.conf (use una instrucción append) o /etc/grub.conf.

Observe que la instrucción ether= es un comando genérico del kernel similar a root=, mem= o init=.
También tenga en cuenta que no es necesario especificar ninguna información sobre la tarjeta ethernet (Intel, Netgear ...)
Para los módulos compilados dinámicamente, la configuración de direcciones IRQ y E/S se puede definir usando /etc/modules.conf (o /etc/conf.modules). Suponiendo que en el ejemplo anterior ambas tarjetas donde se usa el módulo kernel e100.o, entonces /etc/modules.conf contendría lo siguiente:

alias eth0 e100
alias eth1 e100

options eth0 io=0x300 irq=10
options eth1 io=0x340 irq=9

Publicar un comentario

0 Comentarios