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.
- 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.
- 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.
- 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