jueves, 27 de diciembre de 2012

Sistemas Operativos Unidad 4 y 5



Operaciones de entrada y salida

Las operaciones de comunicación del programa con el exterior se denominan operaciones de entrada/salida.

Desde un punto de vista físico, las instrucciones de entrada y salida sirven para la comunicación del ordenador con los periféricos (pantalla, impresora, discos, teclado, etc.). Desde el punto de vista lógico, el programa considera tales dispositivos como ficheros que responden al concepto de colección secuencial de informaciones a las que se les asigna un nombre mediante el cual se le hace referencia.

Los casos más usuales son considerar al teclado como fichero estándar de entrada del que se toman los datos necesarios cuando estos son solicitados, y la pantalla como fichero estándar de salida al que se mandan los resultados del proceso.  

Operaciones de salida por dispositivos estándar

Se realizan mediante las sentencias:

Write (ítem, ítem, ...)                      writeIn (ítem, ítem, ...)

Las cuales visualizan en pantalla los objetos que figuran entre paréntesis. Estos pueden ser constantes, variables o expresiones en el caso general. La sentencia write imprime todos los valores en la misma línea. La sentencia writeIn obliga a pasar al principio de la línea siguiente una vez ha finalizado la impresión de todos los valores.



Operaciones de entrada por dispositivos estándar

Se realizan mediante las sentencias:

Read (ítem, ítem, …)                         readIn (ítem, ítem, …)

La sintaxis es similar a la de write:



Esta sentencia espera a que se introduzcan por teclado un dato por cada variable de la sentencia. El tipo de dato ha de concordar con el tipo de variable, en caso contrario dará error.

Los valores de datos escritos sucesivamente en la misma línea se separan por uno o varios espacios, excepto los de tipo carácter, que se leen uno a uno independientemente de que sea el carácter espacio u otro cualquiera. Deben existir tantos datos como valores a leer.

Tanto read como readIn no leen directamente del teclado sino que leen a través de una memoria intermedia o buffer. Cada vez que pulsamos una tecla, el carácter correspondiente es introducido en el buffer.



Tanto en la E/S programada como la basada en interrupciones, la CPU 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 CPU 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 CPU, e interrumpir a la CPU solo cuando haya terminado la operación completa de E/S: esta técnica se denomina acceso directo a memoria (DMA).

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 efectuara la operación.
2.    El controlador contesta aceptando la petición de E/S.
3.    El controlador le ordena al dispositivo que lea una cierta cantidad de datos desde una posición determinada del dispositivo a su memoria interna.
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 datos pendientes de transferir.
5.    Los pasos 3 y 4 se repiten hasta que no queden más datos pendientes de transferir.
6.      Cuando el registro de contador está a cero, el controlador interrumpe a la CPU para indicar que laoperacion de DMA ha terminado.

 Funciones que debe realizar un computador para ejecutar trabajos de entrada/salida: 

    - Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S. 
    - Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido). 
    - Sincronización y coordinación de las operaciones. 

Esta última función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes). 

Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para efectuar una transferencia elemental de información son precisas las siguientes funciones: 

    - Establecimiento de una comunicación física entre el procesador y el periférico para la transmisión de la unidad de         información. 
 
   - Control de los periféricos, en que se incluyen operaciones como prueba y modificación del estado del periférico. Para         realizar estas funciones la CPU gestionara las líneas de control necesarias. 
Definiremos una operación de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos (es decir, una transferencia completa de datos). 

Para la realización de una operación de E/S se deben efectuar las siguientes funciones: 

    - Recuento de las unidades de información transferidas (normalmente bytes) para reconocer el fin de operación. 
    - Sincronización de velocidad entre la CPU y el periférico. 
    - Detección de errores (e incluso corrección) mediante la utilización de los códigos necesarios (bits de paridad, códigos de        redundancia cíclica, etc.) 
    - Almacenamiento temporal de la información. Es más eficiente utilizar un buffer temporal específico para las operaciones        de E/S que utilizan el área de datos del programa. 
    - Conversión de códigos , conversión serie/paralelo, etc.

No hay comentarios:

Publicar un comentario