4.2 Principios del Hardware de Entrada/salida

El enfoque que se considerará tiene que ver con la interfaz que desde el hardware se presenta al software:

  • Comandos que acepta el hardware.
  • Funciones que realiza.
  • Errores que puede informar.

Dispositivos de E / S

Se pueden clasificar en dos grandes categorías:

  • Dispositivos de bloque.
  • Dispositivos de caracter.

Los Dispositivos de bloque almacenan información en bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños de bloque comunes van desde 512 bytes hasta 32678 bytes. La propiedad fundamental de un dispositivo de bloques consiste en que es posible leer o escribir cada bloque con independencia de todos los demás. Los Discos son los dispositivos de bloques más comunes

Las principales características de los dispositivos de bloque son:

  • La información se almacena en bloques de tamaño fijo.
  • Cada bloque tiene su propia dirección.
  • Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
  • Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
  • Un ejemplo típico de dispositivos de bloque son los discos.

El otro tipo de dispositivo de E/S es el dispositivo de caracteres. Un Dispositivo de este tipo suministra o acepta un flujo de caracteres sin estructurarlos en bloques; no es direccionable ni tiene una operación de desplazamiento. Las impresoras, interfaces de red, ratones (para apuntar) y casi todos los demás dispositivos que no son tipo disco, pueden considerarse como tipo de caracteres

Las principales características de los dispositivos de caracter son:

  • La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
  • No se pueden utilizar direcciones.
  • No tienen una operación de búsqueda.
  • Un ejemplos típico de dispositivos de caracter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.

Algunos dispositivos no se ajustan a este esquema de clasificación, por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres.

El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que encarga la parte dependiente del dispositivoa un software de menor nivel, el software manejador del dispositivo.

Controladores de Dispositivos

Las unidades de e / s generalmente constan de:

  • Un componente mecánico.
  • Un componente electrónico, el controlador del dispositivo o adaptador.

Muchos controladores pueden manejar más de un dispositivo.

El S. O. generalmente trabaja con el controlador y no con el dispositivo.

Los modelos más frecuentes de comunicación entre la cpu y los controladores son:

  • Para la mayoría de las micro y mini computadoras:
    • Modelo de bus del sistema.
  • Para la mayoría de los mainframes:
    • Modelo de varios buses y computadoras especializadas en e / s llamadas canales de e / s.

La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:

  • La comunicación es mediante un flujo de bits en serie que:
    • Comienza con un preámbulo.
    • Sigue con una serie de bits (de un sector de disco, por ej.).
    • Concluye con una suma para verificación o un código corrector de errores.
  • El preámbulo:
    • Se escribe al dar formato al disco.
    • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.

El controlador debe:

  • Convertir el flujo de bits en serie en un bloque de bytes.
  • Efectuar cualquier corrección de errores necesaria.
  • Copiar el bloque en la memoria principal.

Cada controlador posee registros que utiliza para comunicarse con la cpu:

  • Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.
  • Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.

El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.

Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.

Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:

  • Obtenga el control de la cpu.
  • Verifique los resultados de la operación.

La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.

Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la PC IBM pueden verse a continuación:

Tenga o no E/s con correspondencia en memoria, la CPU necesita direccionar los controladores de dispositivos para intercambiar datos con ellas. La CPU puede solicitar datos a una controladora de E/S, byte por byte, pero ello obliga a ala CPU a perder tiempo. Por esta razón, es común utilizar un esquema distinto, llamado acceso directo a memoria (DMA: direct memory Access). El SO solo puede usar DMA si el hardware tiene una controladora DMA, aunque casi todos los sistemas lo tienen. A veces esta controladora está integrada en las controladoras de disco y de otro tipo, pero tal diseño requiere una controladora DMA (por ejemplo en la tarjeta matriz) para regular las transferencias a múltiples dispositivos, a menudo de manera concurrente.

Para explicar cómo funciona el DMA. Primero examinaremos la forma en que se efectúan las lecturas de disco cuando no se usa DMA. Primero, la controladora lee el bloque (uno o más sectores) de la unidad, bit por bit, hasta que todo el bloque este en búfer interno de la controladora. Luego, calcula la suma de verificación para comprobar que no hubo errores al leer, y produce una interrupción. Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque del disco del búfer de la controladora byte por byte o palabra por palabra, ejecutando un ciclo, en cada una de cuyas iteraciones lee un byte o palabra de un registro de control de la controladora y lo almacena en la memoria principal.

Cuando se usa DMA, el procedimiento es distinto. Primero la CPU programa la controladora DMA, colocando valores en sus registros para que sepa que debe transferir y a donde (paso 1 en la figura 5-4). La CPU también envía un comando ala controladora de disco indicándole que lea datos del disco, los coloque en su bufer interno y coteje la suma de verificación. Cuando haya datos validos en el bufer de la controladora de disco, el DMA podrá iniciar.

La controladora DMA inicia la transferencia, enviando ala controladora de disco una solicitud de lectura por el bus (paso 2). Esta solicitud de lectura tiene el mismo formato que cualquier otra y la controladora de disco no sabe, ni le importa, si provino de la CPU o de una controladora DMA. Por lo regular, la dirección de memoria en la que se escribirá esta en las líneas de dirección del bus, así que cuando la controladora de disco toma la siguiente palabra de su buffer interno, sabe dónde colocarla. La escritura en memoria es otro ciclo de bus estándar (paso 3). Cuando termina la escritura, la controladora de disco envía una señal de acuse ala controladora DMA, también por el bus (paso 4). Después, la controladora DMA incrementa la dirección de memoria que se usara y disminuye la cuenta de bytes. Si esta sigue siendo mayor que 0, se repiten los pasos 2 a 4 hasta que llega a 0. En ese momento, la controladora DMA interrumpe ala CPU para avisarle que ya termino la transferencia. Cuando el sistema operativo inicie, no tendrá que copiar el bloque de disco a la memoria; ya está ahí.