viernes, 25 de noviembre de 2011

Unidad IV. Administracion de Entrada/Salida

4.1.- Dispositivos y manejadores de dispositivos
Dispositivos de entrada/salida

Se pueden clasificar en dos grandes categorías:
1. Dispositivos de bloque
2. Dispositivos de carácter
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.
Las principales características de los dispositivos de carácter 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 busqueda.
- Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.

Manejadores de Dispositivos
 
Todo el código que depende de los dispositivos aparece en los manejadores de dispositivos.
Cada controlador posee uno o más registros de dispositivos:
  • Se utilizan para darle los comandos.
  • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
  • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
  • Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador esta ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:
  • El manejador de disco debe: (ver figura 4.1.2)
    • Estimar el lugar donde se encuentra en realidad el bloque solicitado.
    • Verificar si el motor de la unidad funciona.
    • Verificar si el brazo esta colocado en el cilindro adecuado, etc.
    • Resumiendo: debe decidir cuales son las operaciones necesarias del controlador y su orden.
    • Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
    • Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
    • Al finalizar la operación debe verificar los errores.
    • Si todo esta o.k. transferirá los datos al software independiente del dispositivo.
    • Regresa información de estado sobre los errores a quien lo llamo.
    • Inicia otra solicitud pendiente o queda en espera.

4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers).

Los manejadores de dispositivos tienen la función de comenzar las operaciones de E/S en un dispositivo y procesar la terminación de una solicitud de E/S.

El sistema de archivos básico trata con bloques de datos que son los que se intercambian con los discos o cintas. Ubica estos bloques en el almacenamiento secundario o en el intermedio en memoria principal. Este sistema normalmente se considera parte del SO.

El supervisor básico de E/s se responsabiliza de iniciar y terminar la E/s con archivos, Selecciona el dispositivo donde se realizará la E/S, según el archivo seleccionado. Planifica los accesos a disco y cinta, asigna los buffers de E/S y reserva la memoria secundaria. Es parte del SO.

La E/S lógica tiene la función de permitir a los usuarios y aplicaciones acceder a los registros.

El método de acceso es el nivel mas cercano al usuario, proporcionando una interfaz entre las aplicaciones y los archivos.

Los usuarios y las aplicaciones tratan con registros y la E/S se realiza de a bloques. Los registros deben bloquearse para la salida, y desbloqueaser en la lectura. Para manejar la E/S con bloques deben proveerse las funciones para ello: por ejemplo, se debe gestionar el almacenamiento secundario (asignación de bloques libres de memoria secundaria a los archivos, gestionar el espacio libre, manejar la solicitud de bloques individuales. Todo esto debe organizarse optimizando el rendimiento.

4.3 Estructuras de datos para manejo de dispositivos.

Hay estructuras que se crean en memoria durante la ejecución de los procesos relacionadas con el uso que estos hacen de los archivos.

El sistema cuenta con una tabla de archivos abiertos (open file table) general donde figura información sobre los archivos activos (que están siendo usados por los procesos) e índices de referencia al archivo. Algunos sistemas requieren hacer un open previo al primer read.

La llamada a sistema open toma el nombre de archivo, busca en el directorio, copia la entrada del directorio en la tabla de archivos abiertos. Todo esto si estas acciones son permitidas de acuerdo a los modos de protección del archivo.

Un puntero para accederlo rápidamente es también puesto en la tabla de archivos abiertos.

En un sistema multiusuario, un archivo puede ser abierto por mas de dos usuarios simultáneamente, cada uno con su puntero.

Hay dos tipos de tablas. La tabla por proceso contiene información sobre los archivos abiertos por el proceso y contiene un apuntador a la segunda tabla, la de los archivos abiertos en todo el sistema. Esta segunda tabla tiene información independiente del proceso que lo ejecute como ubicación del archivo en el disco, medida del archivo, etc.

La tabla del sistema tiene también la cantidad de procesos que tienen abierto el archivo, y con cada close este valor se va decrementando. Cuando queda en cero, se remueve esa entrada.

La información asociada a un archivo abierto es:

Puntero (File pointer)
Contador de aperturas del file (File open count) cuando lo tiene abierto mas de un
proceso simultáneamente

Ubicación del archivo en el disco

Hay sistemas que permiten compartir entre varios procesos, secciones de un archivo: un archivo ejecutable que reside en disco y es llevado a memoria y forma parte del espacio de direcciones de varios procesos; o archivos de datos cuyos bloques en memoria son accedidos por varios procesos.

4.4.- Operaciones de E/S


Tanto en la E/S programada como la basada en interrupciones, la UCP debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la UCP y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo a la UCP, e interrumpir a la UCP sólo cuando haya terminado la operación completa de EIS. Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory Access).
Cuando se utiliza acceso directo a memoria, es el controlador el que se encarga directamente de transferir los datos entre el periférico y la memoria principal, sin requerir intervención alguna por parte del procesador. Esta técnica funciona de la siguiente manera: cuando el procesador desea que se imprima un bloque de datos, envía una orden al controlador indicándole la siguiente información:
  • Tipo de operación: lectura o escritura.
  • Periférico involucrado en la operación.
  • La dirección de memoria desde la que se va a leer o a la que va a escribir directamente con el controlador de dispositivo (dirección).
  • El número de bytes a transferir (contador).
Donde el campo Operación corresponde al código de operación de las instrucciones máquina normales. Especifica la operación que debe realizar la CCW. La unidad de control decodifica este campo y envía las señales adecuadas de control al dispositivo. Existen varias operaciones, las más importantes son las siguientes:
Lectura: el canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo nº de palabras, en orden ascendente de direcciones, empezando en la dirección especificada en el campo dirección del dato.
Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura.
Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S, como rebobinar una cinta magnética, etc.
Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo dirección del dato como la dirección de la siguiente CCW a ejecutar.
Flags: Los bits de este campo indican lo siguiente:
CC (Encadenamiento de comando): cuando este bit está a 1, indica al canal que la siguiente CCW especifica una nueva operación de E/S que debe realizarse con el mismo dispositivo. El canal ejecuta primero la operación de E/S especificada en la CCW que tiene a 1 el flag CC. Después ejecuta la siguiente sobre el mismo dispositivo. Desde el punto de vista del dispositivo, las dos operaciones resultantes de la primera y segunda CCW aparecen como dos comandos de E/S separados.
CD (Encadenamiento de datos): una CCW con el bit CD a 1, indica al canal que la siguiente CCW contiene una nueva dirección del dato y un nuevo nº de palabras. Éstos deben utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S, mediante la orden especificada por la CCW actual. Cuando el canal termina la transferencia de datos especificada en la CCW con el bit CD a 1, no corta la conexión con el dispositivo de E/S, continúa la transferencia utilizando la dirección y el nº de palabras de la siguiente CCW.
SKIP (Salto): este bit, cuando está a 1, hace que el programa de canal salte un número de palabras igual al especificado en el campo nº de palabras. Cuando se utiliza con la orden de lectura, este flag hace que los datos se lean del dispositivo sin que se transfieran a la memoria principal.
PCI (Interrupción controlada por programa): el canal produce una interrupción cuando ejecuta una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento de comandos, la interrupción se genera después de que hayan concluido todas las transferencias de datos.
Una vez emitida la orden, el procesador continúa realizando otro trabajo sin necesidad de transferir el bloque de datos. Es el propio controlador el que se encarga de transferir el bloque de datos del periférico a memoria. La transferencia se realiza palabra a palabra. Cuando el controlador ha completado la transferencia, genera una interrupción que activa la rutina de tratamiento correspondiente, de tal manera que se sepa que la operación ha concluido.
Utilizando acceso directo a memoria el procesador únicamente se ve involucrado al inicio y al final de la transferencia. Por tanto, cuando el sistema operativo despierta al proceso que pidió la E/S, no tiene que copiar el bloque a memoria porque ya está allí. El DMA requiere una etapa de almacenamiento intermedio en el controlador del dispositivo para armonizar la velocidad del dispositivo de EIS con la copia de los datos en memoria principal. La razón para este almacenamiento intermedio reside en que una vez que el dispositivo empieza la transferencia de datos, ésta debe hacerse a velocidad constante para evitar transferencias parciales y nuevas esperas de posicionamiento del dispositivo sobre los datos (latencia). Una vez transferidos los datos a la memoria del controlador, éste los copia en memoria principal aprovechando el ancho de banda libre del bus.
Los pasos a seguir en una operación de E/S con DMA son los siguientes:
1. Programación de la operación de E/S. Se indica al controlador la operación, los datos a transferir y la dirección de memoria sobre la que se efectuará la operación.
2. El controlador contesta aceptando la petición de E/S.
3. El controlador le ordena al dispositivo que lea (para operación de lectura) una cierta cantidad de datos desde una posición determinada del dispositivo a su memoria interna. 7.3.
4. Cuando los datos están listos, el controlador los copia a la posición de memoria que tiene en sus registros, incrementa dicha posición de memoria y decrementa el contador de datospendientes de transferir.
5. Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer.
6. Cuando el registro de contador está a cero, el controlador interrumpe a la UCP para in dicar que la operación de DMA ha terminado.
Inicio y control de los programas de canal
Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S. Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro instrucciones máquina que la CPU puede utilizar para estos fines. Son las siguientes:
START I/O Inicia una operación de E/S. El campo de dirección de la instrucción seemplea para especificar el canal y el dispositivo de E/S que participa en la operación.
HALT I/O Finaliza la operación del canal.
TEST CHANNEL Prueba el estado del canal.
TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.
Una operación de E/S se inicia con la instrucción START I/O. La ubicación del programa de canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel A ddress word), que siempre está almacenada en la posición 72 de la memoria principal.

No hay comentarios:

Publicar un comentario