Una de las funciones principales de un S. O. es el control de todos los dispositivos de E/S de la computadora. Las unidades de E/S generalmente constan de: Un componente mecnico. El controlador del dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Cada controlador posee un buffer local y un conjunto de registros que utiliza para comunicarse con la CPU.
3.1.- En que consiste sistema basado en mecanismo de interrupciones: Este mtodo es utilizado intensivamente en la programacin actual, y es la base del funcionamiento de los procesadores modernos. La esencia del mtodo consiste en que el perifrico que desea establecer comunicacin, dispone de un canal especial llamado IRQ para solicitarla al procesador. Cuando el procesador recibe esta seal, que se denomina peticin de interrupcin, termina la instruccin que est en ejecucin y atiende al perifrico. Es el sistema ms eficiente para atender a perifricos de velocidad media, o cuando hay que atender a gran nmero de ellos.
Las interrupciones surgen de la necesidad que tienen los dispositivos perifricos de enviar informacin al procesador.
La primera tcnica que se emple para esto fue el polling, que consista en que el propio procesador se encargara de sondear los dispositivos perifricos cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l. Este mtodo presentaba el inconveniente de ser muy ineficiente, ya que el procesador consuma constantemente tiempo y recursos en realizar estas instrucciones de sondeo.
El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta problemtica, y delegar en el dispositivo perifrico la responsabilidad de comunicarse con l cuando lo necesitara. El procesador, en este caso, no sondea a ningn dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de informacin, una condicin de error, etc.). Una interrupcin es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecucin de un programa, y luego restablecer la ejecucin del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecucin como si nada hubiera pasado. Las interrupciones son generadas por los controladores de dispositivos.
Para que las tareas urgentes se lleven a cabo primero, las computadoras modernas utilizan un sistema de prioridades de interrupciones.
3.2.- Cmo se emplea en una operacin de lectura desde un dispositivo de e/s lento? Todos los dispositivos que deseen comunicarse con el procesador por medio de interrupciones deben tener asignada una lnea nica capaz de avisar al CPU cuando le requiere para realizar una operacin. Esta lnea se denomina IRQ ("Interrupt ReQuest" o peticin de interrupcin).
Las IRQ son lneas que llegan al controlador de interrupciones, un componente de hardware dedicado a la gestin de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al mismo. El controlador de interrupciones debe ser capaz de habilitar o inhibir las lneas de interrupcin y establecer prioridades entre las mismas. Cuando varias lneas de peticin de interrupcin se activan a la vez, el controlador de interrupciones utilizar estas prioridades para escoger la interrupcin sobre la que informar al procesador principal. Tambin puede darse el caso de que una rutina de tratamiento de interrupcin sea interrumpida para realizar otra rutina de tratamiento de una interrupcin de mayor prioridad a la que se estaba ejecutando; aunque hay interrupciones que no se pueden deshabilitar.
Esta lnea es activada por el controlador de interrupciones cuando tiene una interrupcin que servir. Al activarse esta lnea, el procesador consulta los registros del controlador de interrupciones para averiguar cul IRQ hay que atender. A partir del nmero del IRQ busca en la tabla de vectores de interrupcin la direccin de la rutina a la que debe llamar para atender la peticin del dispositivo asociado a dicha IRQ.
Los controladores de interrupcin suelen hacer algo ms que comunicar el evento al controlador de dispositivo. Cuando una interrupcin ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de informacin a transferir es muy pequea, caso del teclado, sera muy costoso comunicar siempre el evento al controlador de dispositivo asociado. En estos casos, el propio controlador de interrupcin registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulacin de caracteres en un buffer del teclado. La notificacin al controlador se hace nicamente cada cierto nmero de ocurrencias del evento, en el caso del reloj, o activando un flag que indica que hay datos en el buffer del teclado.
3.3 Qu mecanismo se utilizan para determinar el tipo de interrupcin que ocurri?
Hemos visto que, incluso en el caso de dispositivos externos o perifricos, al final las transferencias de datos suponen siempre el paso de estos por el bus del sistema. En este sentido el bus es una lnea a la que se conectan cierto nmero de dispositivos y todos pueden "ver" o escuchar los datos que pasan. Adicionalmente tambin casi todos ellos pueden "escribir" o depositar datos en esta lnea. Por supuesto este canal no es un chat en el que todos hablan cuando les parece. Las transmisiones estn sincronizadas por el tic-tac del reloj del sistema. Adems existe siempre un rbitro, generalmente el procesador, que acta como el director de un debate, concediendo la palabra al dispositivo adecuado.
La organizacin y control del trfico es posible porque los dispositivos conectados al bus se construyen de forma que, aunque estn a la escucha de los datos que circulan por l, solo reaccionan cuando la direccin existente en ese momento en el bus de direcciones tiene un valor concreto. Esta "direccin" puede ser un valor nico (raramente) o cualquiera dentro de un rango de valores contiguos. En estas circunstancias, y dependiendo de la direccin y del estado de otras lneas, el dispositivo puede escribir un dato en el bus de datos, o leer el que exista en ese momento en el bus. En el resto de casos, el dispositivo sencillamente ignora lo que sucede en el bus. Por ejemplo, la interfaz del teclado solo reacciona cuando el bus contiene direcciones entre 60h y 6Fh inclusive. Cada una de estas direcciones es lo que se conoce como un puerto E/S ("I/O port") y viene a ser como la "direccin" del dispositivo. El principio de funcionamiento es que cuando el dispositivo ve que el dato en el bus de direcciones se refiere a l, realiza una accin determinada. Por ejemplo, poner o leer un dato en el bus de datos. Como veremos a continuacin, cuando un dispositivo responde a un rango de direcciones, cada direccin tiene distinto uso. Nota: Aunque la verdadera "tarjeta de presentacin" de cualquier dispositivo es la identificacin de su "puerto" (mediante la direccin/es correspondiente/s), es costumbre referirse a algunos dispositivos mediante una etiqueta como indicativo del puerto en lugar de su direccin. Son los denominados dispositivos lgicos ("Lgical devices"). Entre los ms conocidos estn los puertos de comunicacin serie COM1 a COM4, los de impresora LPT1 a LPT3 y los de discos; A:; B:; C:; Etc. En realidad estos identificadores deben ser traducidos internamente a nmeros de puerto, aunque para usarlos sea ms cmodo referirse a ellos mediante sus etiquetas. Como puede verse, referirse a un puerto E/S equivale a referirse a un dispositivo concreto y los intercambios de informacin con los dispositivos de E/S, se realizan como en el resto de los casos utilizando direcciones. De modo que cuando el sistema necesita dirigirse a un "puerto", utiliza una direccin. En este sentido, el procedimiento es anlogo al utilizado para intercambios de datos entre el procesador y la memoria o entre direcciones de memoria, aunque en este ltimo caso, el procesador dispone de un amplio abanico de instrucciones que permiten mover y operar directamente entre registros y direcciones de memoria, frente a solo dos (las instrucciones IN y OUT) cuando estas operaciones se realizan entre registros y direcciones de puertos. Tanto si la transferencia es con una posicin de memoria como con un puerto, la forma de operar es siempre la misma; poner el dato en el bus de datos y la direccin en el de direcciones. El sistema sabe que se trata de una direccin de memoria o de puerto y cual es la accin esperada (lectura o escritura) porque se dispone seales adecuadas en las patillas del procesador, que tienen su prolongacin en el bus de control. Aunque las direcciones de perifricos son coincidentes (en valor) con las de memoria, no hay posibilidad de confusin porque los elementos conectados al bus (memoria y perifricos) saben cuando un dato se dirige a unas u otros por el estado de las mencionadas lneas.
Ubicacin de los puertos para los dispositivos de E/S en PCs (parcial)
3.4.- Qu es el acceso directo a memoria, DMA? Utilizado por dispositivos de entrada y Salida de alta velocidad, capaces de transmitir informacin a una velocidad que se acerca mucho a la de la memoria. El Controlador del Dispositivo transfiere bloques de datos del buffer de almacenamiento directamente a la memoria principal sin intervencin de la CPU. Pasos: 1.- El Procesador enva una solicitud de E/S al controlador E/S el cual enva una solicitud al disco. El Procesador contina ejecutando instrucciones. 2.- El disco reenva los datos al controlador de E/S, los datos se colocan en la direccin de memoria especificada por la orden DMA. 3.- El Disco enva una interrupcin al procesador para indicar que la peticin E/S se ha Realizado.
Los sistemas anteriores tienen el inconveniente de que cualquiera que sea el procedimiento por el que se inicia la E/S, es el procesador es el que debe atenderla. Sin embargo, hay ocasiones, en especial cuando se trata de transferencias de datos entre perifricos rpidos y memoria (por ejemplo discos), en que se alcanza una mayor eficacia dejando al procesador al margen del proceso (la cuestin tiene cierta lgica pues al fin y al cabo, el asunto no va con l). Estos procesos se conocen como acceso directo a memoria DMA ("Direct Memory Access"), y exigen dos requisitos: I- El procesador debe ser capaz de dejar libre el bus de datos para que otro dispositivo tome su control, limitndose mientras tanto a esperar. II- Otro dispositivo debe tomar el control del bus ("bus mastering"), para controlar l mismo el proceso. En el PC se cumplen ambas condiciones. Al tratar la arquitectura de los procesadores 8088 y siguientes, La placa base dispone de un chip especfico, el controlador de acceso directo a memoria DMAC ("DMA Controller"), as como ciertas lneas dedicadas en el propio bus de control.
Utilizado para evitar E/S programada para grandes movimientos de datos Requiere un controlador de DMA Ignora la CPU para transferir datos directamente entre el dispositivo de E/S y la memoria Proceso de seis pasos para realizar transferencias DMA
2.4 Interrupciones del procesador
Una interrupcin es un evento que altera la secuencia en que el procesador ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema de cmputo. Cuando ocurre una interrupcin:
El sistema operativo toma el control (es decir, el hardware pasa el control al sistema operativo). El sistema operativo guarda el estado del proceso interrumpido. En muchos sistemas esta informacin se guarda en el bloque de control de proceso interrumpido. El sistema operativo analiza la interrupcin y transfiere el control a la rutina apropiada para atenderla; en muchos sistemas actuales el hardware se encarga de esto automticamente. La rutina del manejador de interrupciones procesa la interrupcin. Se restablece el estado del proceso interrumpido (o del siguiente proceso). Se ejecuta el proceso interrumpido (o el siguiente proceso).
DMA se ide para liberar a la cpu de este trabajo de bajo nivel. La cpu le proporciona al controlador: La direccin del bloque en el disco. La direccin en memoria adonde debe ir el bloque. El nmero 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 verificacin: Copia el primer byte o palabra a la memoria principal. Lo hace en la direccin especificada por medio de la direccin de memoria de DMA. Incrementa la direccin DMA y decrementa el contador DMA en el nmero de bytes que acaba de transferir. Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupcin. Al iniciar su ejecucin el S. O. luego de la interrupcin 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: o Tendra que recurrir al bus del sistema para c / u de las palabras (o bytes) transferidas. o El bus podra estar ocupado por otro dispositivo y el controlador debera esperar. o Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada, el controlador la tendra 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 crtico del tiempo.