Si se lee el disco sin DMA:
-El controlador lee en serie el bloque (uno o más sectores) de la unidad:
- La lectura es bit por bit.
- Los bits del bloque se graban en el buffer interno del controlador.
-Se calcula la suma de verificación para corroborar que no existen errores de lectura.
-El controlador provoca una interrupción.
-El S. O. lee el bloque del disco por medio del buffer del controlador:
-La lectura es por byte o palabra a la vez.
-En cada iteración de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria.
-Se desperdicia tiempo del CPU.
DMA se ideó para liberar al CPU de este trabajo de bajo nivel.
El CPU le proporciona al controlador:
-La dirección del bloque en el disco.
-La dirección en memoria a donde debe ir el bloque.
-El número de bytes por transferir.
Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación:
-Copia el primer byte o palabra a la memoria principal.
-Lo hace en la dirección especificada por medio de la dirección de memoria de DMA.
-Incrementa la dirección DMA y decrementa el contador DMA en el número de bytes que acaba de transferir.
-Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupción.
-Al iniciar su ejecución el S. O. luego de la interrupción provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ahí.
El controlador necesita un buffer interno porque una vez iniciada una transferencia del disco:
-Los bits siguen llegando del disco constantemente.
-No interesa si el controlador está listo o no para recibirlos.
-Si el controlador intentara escribir los datos en la memoria directamente:
-Tendría que recurrir al bus del sistema para c / u de las palabras (o bytes) transferidas.
-El bus podría estar ocupado por otro dispositivo y el controlador debería esperar.
-Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada, el controlador la tendría que almacenar en alguna parte.
Si el bloque se guarda en un buffer interno:
-El bus no se necesita sino hasta que el DMA comienza.
-La transferencia DMA a la memoria ya no es un aspecto crítico del tiempo.
Los controladores simples no pueden atender la e / s simultánea:
-Mientras transfieren a la memoria, el sector que pasa debajo de la cabeza del disco se pierde; es decir que el bloque siguiente al recién leído se pierde.
-La lectura de una pista completa se hará en dos rotaciones completas, una para los bloques pares y otra para los impares.
-Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco:
-Sería necesario leer un bloque y luego saltar dos o más bloques.
-El salto de bloques:
-Se ejecuta para darle tiempo al controlador para la transferencia de los datos a la memoria.
-Se llama separación.
-Al formatear el disco, los bloques se numeran tomando en cuenta el factor de separación.
-Esto permite al S. O.:
-Leer los bloques con numeración consecutiva.
-Conservar la máxima velocidad posible del hardware.
Instrucciones máquina que el CPU puede utilizar para E/S
- 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.
Ejecución de instrucciones e interrupciones y estructura de E/S.
Interrupciones de E/S:
Para iniciar una operación de E/S por parte de un proceso del usuario:
-La CPU carga los registros en el controlador del dispositivo.
-El controlador examina los registros para saber qué acción realizar.
-Tras realizar la acción el controlador informa de ello a la CPU.
-Esa comunicación se efectúa generando una interrupción.
Al iniciar una E/S hay dos alternativas:
-E/S síncrona: el SO espera a que termine la E/S.
-E/S asíncrona: el SO devuelve el control al programa del usuario sin esperar a que se complete la E/S.
Funcionamiento asíncrono + multiprogramado:
-El usuario solicita E/S mediante llamada al sistema.
-El SO tramita la operación.
-El SO entrega el control a otro proceso (mientras se desarrolla la E/S).
-Cuando la E/S termina genera una interrupción que:
-Interrumpe el proceso actual.
-Provoca la aparición del SO, que reactiva el proceso que hizo la llamada.
No hay comentarios:
Publicar un comentario