Estructura típica de dispositivo E/S

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

En general, la estructura típica de un dispositivo de entrada/salida está dividida en tres partes:

  • Adaptador de Entrada/Salida del ordenador, o interfaz del bus: Se encarga de traducir las señales al dialecto empleado por el bus del ordenador. Algunos ejemplos de interfaces de este tipo son los buses PCI, PCMCIA, USB, PCI-express o SATA entre muchos otros.
  • Control del dispositivo, o puerto de lectura/escritura: Ofrece una interfaz que es empleada por el gestor de dispositivos para gobernar el dispositivo, que dispone de:
    • Registros de órdenes
    • Registros de estado
    • Registros de lectura/escritura, o alternativamente una pequeña memoria propia.
  • Adaptador de Entrada/Salida del dispositivo, o interfaz del dispositivo: Se encarga de traducir las señales al dialecto empleado por el dispositivo.

Cuanto más elaborado sea el puerto de lectura/escritura, mayor rendimiento se puede llegar a alcanzar, puesto que el gestor de dispositivo será más sencillo (y eso implica menor número de instrucciones a ejecutar en el gestor de dispositivo).

La conexión existente entre el procesador y el dispositivo de E/S queda resumida de la siguiente manera:


Estructura del dispositivo


Gestor de dispositivos

El gestor de dispositivo, popularmente conocido por la palabra inglesa driver, es la parte del sistema operativo que se encarga de gobernar un cierto dispositivo o una familia de dispositivos de naturaleza similar. El gestor de dispositivo se trata de una pieza de software que conoce los detalles de bajo nivel del dispositivo. De esta manera el driver hace uso del conjunto de instrucciones que ofrece el puerto de E/S, los registros de estado y de lectura y escritura, para gobernar el dispositivo. Si el fabricante del dispositivo no ofrece un driver para un cierto sistema operativo, el dispositivo y los recursos que ofrece no puede ser gestionado por el sistema operativo. Por lo general el fabricante de un dispositivo desarrolla el gestor de dispositivo para los sistemas operativos mayoritarios (i.e. Windows y Linux) para asegurar que su dispositivo alcanza la mayor cuota de usuarios posibles.

Los gestores de dispositivos representan en torno al 70% de los sistemas operativos<ref>Construction of a Highly Dependable Operating System, Proc. 6th European Dependable Computing Conference (EDCC-6), pp. 3-12, Oct. 2006</ref>. Por lo general, en los sistemas operativos monolíticos se ejecutan en el espacio del núcleo del sistema operativo por razones de rendimiento. Por tanto, se ejecutan en modo privilegiado, así un error de programación en un driver lleve a un cuelgue completo del sistema con casi total seguridad. Se estima que en torno al 85% de cuelgues de Microsoft Windows XP <ref>Recovering Device Drivers, Proc. OSDI '04, pp. 1-16, 2004</ref>se debe a errores de programación en drivers.

No obstante, en sistemas operativos convencionales como Windows, Linux y Mac, existen mecanismos que permiten ejecutar drivers como procesos de usuario, tal y como sucede en sistemas operativo de tipo micronúcleo. De esta manera, un error de programación no produce el cuelgue del sistema completo. No obstante, dichos gestores de dispositivos se limitan a dispositivos particularmente lentos en los que la tasa de transferencia de datos es baja y los tiempos de respuesta del dispositivo son altos, por ejemplo, los gestores de dispositivos para lectores de tarjetas inteligentes (smartcards, lo que incluye las tarjetas SIM que se emplean en telefonía móvil) en Linux funcionan en espacio de usuario.

DMA

DMA (Direct memory access) es un dispositivo capaz de transferir datos entre la memoria principal y el dispositivo de E/S. El procesador le ordena hacer transferencias, y cuando termina, produce una interrupción.

Gracias a esta característica, diferentes dispositivos con distintas velocidades pueden comunicarse sin que la CPU, que es independiente al acceso a memoria principal, sufra una gran carga de interrupciones.

Pueden estar integrados tanto en el sistema como en el propio dispositivo.

Frecuentemente son multicanal, por lo que se pueden tener varias transferencias en curso simultáneamente.

Pueden soportar transferencias de memoria a memoria.

Notas

<references/>