1 TEORÍA DE LOS SISTEMAS OPERATIVOS GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA INTRODUCCIÓN. El Subsistema de Entrada y Salida, es la parte del sistema operativo, encargada de la gestión de los dispositivos de E/S y tiene por objeto, actuar como interfaz entre los usuarios del sistema y los dispositivos de E/S, de forma que en las capas superiores del sistema operativo, los dispositivos se traten de una manera, sencilla, segura y eficaz. Respecto a los distintos módulos de gestión del SO, analizados anteriormente, tal vez sea la gestión del módulo de E/S, el más complejo en el diseño de los sistemas operativos, dada la amplia variedad de dispositivos y las numerosas aplicaciones que los utilizan, resultando difícil construir y diseñar una solución general y consistente. El subsistema de E/S proporciona un medio, para el tratamiento de una manera uniforme, de los archivos y dispositivos donde se encuentran estos archivos y permite, que se puedan manipular mediante un conjunto de instrucciones de un lenguaje de alto nivel utilizadas por el usuario. Para que esto sea posible el subsistema de E/S, debe proporcionar al dispositivo final, las señales de control específicas de cada tipo de dispositivo, correspondientes a las órdenes de alto nivel de la unidad de control del procesador, que se producen durante la ejecución de un proceso. Después de estas breves consideraciones se puede definir una operación de E/S, como el intercambio de información entre la memoria principal o la unidad de control de la CPU y los dispositivos periféricos, denominados también dispositivos de E/S o también módulos de E/S. Este intercambio se realiza a través de los controladores existentes en la actualidad, que tienen por objeto regular el tráfico de datos hacia los dispositivos de E/S o viceversa, que puede constituir una sola interacción ocasional con la CPU o tener un número de operaciones de E/S independientes, situadas en una cola de espera, antes de que se completen otras en ejecución. Por otra parte, la ejecución concurrente de tareas independientes, procedentes de los diversos procesos en multiprogramación, requiere una cuidadosa planificación de múltiples secuencias de código diferentes y de sucesos críticos en el tiempo, percibidos o producidos por los dispositivos de E/S. Para que esto sea posible será necesario incorporar al hardware del sistema, pequeños procesadores de E/S, que reciben el nombre de canales de E/S. En este tema se trata de señalar brevemente los aspectos más importantes de los dispositivos de E/S y la planificación que es necesario establecer, para obtener la máxima eficacia, en el funcionamiento del subsistema de E/S, posteriormente, se analizará la organización de las funciones de E/S y finalmente enfocaremos, algunos aspectos hardware del subsistema de E/S, insistiendo en sus atributos únicos, que necesitan una programación especializada y hacen posible las operaciones de concurrencia. DISPOSITIVOS DE ENTRADA Y SALIDA. En la actualidad pueden existir múltiples tipos de dispositivos conectados al sistema informático, mediante los controladores de E/S, cada uno con sus propios requerimientos. La mayor parte de ellos operan asincronamente con respecto a la CPU, por lo tanto, el hardware y software del subsistema de E/S, se enfrenta con las complicadas tareas de atender, tanto las solicitudes individuales de los dispositivos de E/S, como las ordenes de alto nivel, procedentes de la unidad de control del procesador, asegurando una operación segura y eficaz, ocultando los detalles APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 2 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA específicos del dispositivo, presentando a las capas exteriores del sistema operativo una abstracción uniforme de las operaciones de E/S y finalmente a los programas de usuario. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 3 TEORÍA DE LOS SISTEMAS OPERATIVOS En este tema no se puede realizar un estudio detallado de cada uno de los dispositivos que pueden estar conectados a un ordenador, por lo tanto, se dedicará todo el detalle a los dispositivos de discos, que son los más utilizados por el sistema operativo. Desde un punto de vista general, los dispositivos de E/S o periféricos, que realizan las operaciones de E/S con los ordenadores, pueden clasificarse en tres categorías: Dispositivos legibles por las personas, que son los más apropiados para la comunicación con el usuario, entre ellos se pueden destacar los terminales de vídeo, que constan de un teclado y una pantalla y quizá otros dispositivos como un ratón o una impresora. Dispositivos legibles por la máquina, adecuados para comunicarse con los equipos electrónicos del ordenador, entre los que se puede destacar el procesador, los canales de E/S, los dispositivos de E/S. En este grupo se pueden destacar, los discos, las unidades de cinta, los sensores, los controladores, etc. Dispositivos de comunicaciones, apropiados para comunicarse con dispositivos remotos, como por ejemplo, los adaptadores de líneas digitales y módem. Existen grandes diferencias entre las clases de dispositivos y estas son incluso substanciales dentro de cada clase, las principales diferencias son las siguientes: Velocidad de los datos, ya que puede haber una diferencia de varios órdenes de magnitud, en las velocidades de transmisión de datos, según los dispositivos. Aplicaciones, ya que la utilidad que se le da a un dispositivo, tiene una gran influencia en el software y en las políticas del sistema operativo. Complejidad del control, ya que existe una cierta diferencia entre el control de unos dispositivos u otros, así por ejemplo, una impresora necesita una interfaz de control relativamente simple, en cambio en un disco es mucho más compleja. Unidad de transferencia, ya que los datos pueden transmitirse, como flujos de bytes o caracteres, por ejemplo en un terminal, ratón etc, o bien en bloques mayores, constituidos por un conjunto de bytes o caracteres, como por ejemplo en un disco. Representación de los datos, ya que en diferentes dispositivos, se pueden utilizar distintos esquemas de codificación de datos, incluidas las diferencias en los códigos de caracteres y los convenios de paridad. Condiciones de error, ya que la naturaleza de los errores, la manera en que se informa sobre ellos y el rango disponible de respuestas, difieren ampliamente de unos dispositivos a otros. Sincronización, la mayor parte de los dispositivos de E/S, no mantienen ninguna relación con el reloj del ordenador, siendo por tanto impredecible para la UCP, el tiempo que se necesitará para completar una operación de E/S. Esta diversidad en los conceptos anteriores, conduce hacia un enfoque consistente y uniforme de la E/S, que es difícil de alcanzar, tanto desde el punto de vista del sistema operativo, como de los procesos de usuario. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 4 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA PLANIFICACIÓN DE LA ENTRADA/SALIDA EN DISCO. En los últimos años, el crecimiento en velocidad de los procesadores y la memoria principal ha dejado muy atrás el de los accesos a disco, es decir, la velocidad del procesador y de la memoria principal se ha incrementado en dos órdenes de magnitud con respecto al disco y el resultado es que, actualmente, los discos son por lo menos, cuatro veces más lentos que la memoria principal. Este avance se espera que continúe en el futuro inmediato, por lo tanto el rendimiento de los subsistemas de almacenamiento en disco, es de una importancia vital y se han realizado numerosas investigaciones sobre la manera de mejorar dicho rendimiento. El rendimiento de los subsistemas de disco se puede mejorar de dos formas: Utilizando una memoria cache de disco. Planificando las solicitudes de acceso. La mayoría de los trabajos dependen de las unidades de disco para las operaciones de E/S, por lo tanto, es importante que el servicio del disco sea lo más rápido posible, el sistema operativo puede mejorar el tiempo promedio de servicio del disco, de las dos formas anteriores. Una solicitud especifica varias informaciones necesarias: Si se trata de una operación de Entrada o de Salida. Cual es la dirección en el disco, es decir, unidad, cilindro, superficie y bloque. Cual es la dirección de memoria. Cuanta información se transferirá, es decir, número de bytes o de palabras. Si se opta por la planificación de las solicitudes de acceso y se deja para más adelante la utilización de una memoria cache adecuada, se debe observar, que el tiempo total para servir una solicitud del disco es la suma de tres tiempos: Posicionamiento. Latencia. Transferencia. Cada dispositivo de E/S, incluyendo cada unidad de disco, tiene una cola de solicitudes pendientes y cada vez que un proceso necesita E/S del disco, emite una llamada al sistema operativo. Si la unidad y el controlador del disco están disponibles es posible servir de inmediato la solicitud, sin embargo, si la unidad o el controlador está sirviendo una solicitud, será necesario colocar en una sola cola todas las solicitudes que no puedan ser atendidas. En un sistema de multiprogramación con varios procesos activos, con frecuencia esa cola no estará vacía, por lo que al concluir una solicitud, debemos seleccionar una nueva de la cola y servirla. Un servicio de disco requiere el movimiento de la cabeza a la pista deseada, esperar el tiempo de latencia y finalmente transferir los datos, por lo tanto, la planificación del disco implica un cuidadoso examen de las peticiones pendientes, para determinar la forma más eficiente de servir las peticiones de servicio. Para una buena planificación del disco, es preciso examinar las relaciones posicionales entre las solicitudes en espera, tratando de reordenar la cola de solicitudes de manera que las peticiones puedan ser servidas con el mínimo de movimiento mecánico posible. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 5 TEORÍA DE LOS SISTEMAS OPERATIVOS ALGORITMOS DE PLANIFICACIÓN DEL DISCO. Existen varios algoritmos, para minimizar el tiempo de planificación de una operación del dispositivo de disco y para analizar el funcionamiento de los distintos algoritmos se utilizará una cola de peticiones dinámica, teniendo en cuenta, que mientras la cabeza del disco se está colocando, para atender una solicitud, continuarán llegando peticiones posteriores. Las estrategias más populares que se pueden utilizar, para la optimización del acceso a un dispositivo de disco, son las que se estudian a continuación. PLANIFICACIÓN FCFS ( First-Come, First-Served) La forma más sencilla para planificar un disco es la planificación del servicio por orden de llegada. Este algoritmo es fácil de programar e intrínsecamente justo y el único posible cuando las peticiones llegan muy espaciadas en el tiempo. El principal inconveniente es que presenta unos resultados fuertemente dependientes de la distribución de las solicitudes sobre las pistas en el tiempo, por lo tanto es probable que no ofrezca el mejor tiempo de servicio. Supongamos que tenemos una cola de peticiones de acceso con las siguientes solicitudes: 90, 180, 35, 120, 10, 125, 60, 65, Si en un principio, la cabeza de lectura/escritura está situada en la pista 50, se moverá primero a la pista 90, después a la 180, 35, 120, 10, 125, 60, 65. 0 10 35 50 60 65 90 120 125 180 50 * (40) 90 * 35 180 * (145) * 10 (90) (85) 120 * (110) * (115) (65) 60 125 * * (5) *65 TOTAL = 40 + 90 + 145 + 85 + 110 + 115 + 65 + 5 = 655 En todo este recorrido, se ha producido un movimiento de la cabeza de lectura escritura, que totaliza 655 pistas. Con este tipo de planificación se producen bruscos movimientos de la cabeza de lectura/escritura que con otro tipo de planificación se podrían reducir. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 6 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA PLANIFICACION SSTF. (Shortest-Seek, Time-First) Parece razonable servir juntas todas las solicitudes próximas a la posición actual de la cabeza de lectura/escritura del disco, antes de desplazar la cabeza de lectura/escritura a un punto lejano para servir otra solicitud. Si dos peticiones son equidistantes, se dará preferencia al sentido de movimiento actual de la cabeza de lectura/escritura. Esta suposición es la base del algoritmo, que resuelve primero las peticiones de menor tiempo de posicionamiento, para la planificación del disco, como el tiempo de posicionamiento es proporcional a la diferencia entre las solicitudes, medida en pistas, implantamos esta estrategia moviendo la cabeza a la pista más próxima de la cola de solicitudes. En el ejemplo que se ha considerado anteriormente la cola está formada: 90, 180. 35, 120, 10, 125, 60, 65 Si la posición actual es la pista 50. 0 10 35 50 50 60 65 90 120 180 * (10) 60 * (5) 65 * (25) 90 * (30) 120 * 125 (145) (25) 125 * (55) * * * TOTAL = 10 + 5 + 25 + 30 + 5 + 55 + 145 + 25 = 300 Este método de planificación, da como resultado un movimiento de 300 pistas, por lo tanto mejoraría considerablemente el promedio del servicio del disco. Con este tipo de planificación puede aumentar el tiempo máximo de atención de una petición, ya que en un sistema fuertemente cargado, si las peticiones para cilindros próximos llegan con cierta frecuencia y eso puede ocurrir en un sistema de asignación indexada, se podría producir un bloqueo indefinido, para algunas solicitudes más alejadas, en este sentido, es preciso recordar, que en un sistema real las solicitudes pueden llegar en cualquier momento, por lo tanto en un instante determinado, podemos tener una solicitud para la pista 10 y otra para la 180, si mientras se atiende la solicitud de la pista 10, van llegando otras solicitudes, que estén próximas a la pista 10, la solicitud para la pista 180 puede quedar en espera de una manera indefinida. Esta posible situación se denomina inanición u olvido. El algoritmo SSTF, aunque representa una considerable mejora con respecto al algoritmo FCFS no es óptimo. Así por ejemplo si en el caso que se ha representado anteriormente hubiéramos atendido la petición 35 antes de la petición 60, aún en el caso de no ser la más próxima el movimiento total se reduce. Una de las características importantes de los algoritmos FCFS y SSTF, es que cuando se termina de atender una petición, se examina la cola de solicitudes, para decidir el siguiente movimiento de la cabeza, por lo tanto, una vez tomada la decisión, la cabeza se posicionará en la pista correspondiente, sin atender las peticiones que pudiera encontrar en su camino. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 7 TEORÍA DE LOS SISTEMAS OPERATIVOS Para intentar rentabilizar los movimientos de la cabeza, atendiendo las peticiones que se van encontrando, se proponen los algoritmos que se examinan a continuación. PLANIFICACION SCAN. El reconocimiento de la naturaleza dinámica de la cola de solicitudes, nos lleva al algoritmo SCAN (rastreo). Consiste en que la cabeza de lectura/escritura, comienza en un extremo del disco y se desplaza hacia el otro, sirviendo todas las solicitudes que encuentra a su paso, hasta alcanzar el extremo opuesto. Al llegar a este extremo, se invierte la dirección del movimiento de la cabeza de lectura/escritura y continua el servicio de rastreo en el disco hasta llegar al otro extremo. En el ejemplo que se está considerando: 90, 180, 35, 120, 10, 125, 60, 65 Lógicamente en este criterio se necesita conocer la dirección del movimiento de la cabeza de lectura/escritura, así como su posición más reciente. Si se considera que la posición actual es la 50 y la dirección del movimiento de la cabeza de lectura/escritura es descendente, se atendería primero las solicitudes 35 y 10 y al llegar a la pista 0, se invertiría el movimiento de la cabeza de lectura/escritura y se desplazaría hasta el extremo opuesto, sirviendo las solicitudes 60, 65, 90, 120, 125, 180. Si una solicitud llega justamente cuando la cabeza de lectura/escritura no ha sobrepasado esa pista, se serviría casi de inmediato, mientras que una solicitud correspondiente a una pista sobrepasada, tendrá que esperar a que la cabeza de lectura/escritura se mueva hasta el final del disco e invierta su dirección. 0 0 * 10 10 * 35 50 35 * 50 * (15) 60 65 90 60 * (5) * 65 (25) 90 * 120 125 180 (15) (60) (30) 120 * 125 (5) * (55) 180 * TOTAL = 15 + 15 + 10 + 60 + 5 + 25 + 30 + 5 + 55 = 220 Suponiendo que una distribución uniforme de las solicitudes de pistas, considera la densidad de solicitudes, cuando la cabeza de lectura/escritura llega a un extremo e invierte la dirección, en ese momento, lógicamente debe haber pocas solicitudes, para la zona que la cabeza de lectura/escritura acaba de sobrepasar, es decir la mayor densidad de solicitudes, se encontrará en el extremo opuesto del disco, además estas solicitudes, son las que más han esperado. PLANIFICACIÓN C-SCAN. Una variante de la planificación SCAN, diseñada para ofrecer un tiempo de espera más uniforme, es la planificación C-SCAN que consiste en la realización de un rastreo circular. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 8 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA Al igual que la planificación SCAN, la C-SCAN mueve la cabeza de lectura/escritura de un extremo al otro, sirviendo solicitudes durante su marcha, sin embargo, cuando llega al extremo opuesto, regresa de inmediato al inicio del disco, sin servir ninguna solicitud en el camino. En esencia, la planificación C-SCAN considera la última pista adyacente a la primera. Utilizando este algoritmo, la cabeza de lectura/escritura cuando atiende peticiones, se mueve siempre en el mismo sentido, es decir de cero a n, considerando que se trata de un disco en el que la pista cero es la siguiente a la pista n, siendo n el máximo número de pistas del disco PLANIFICACIÓN LOOK. Observe que, de la manera que las hemos descrito, las planificaciones SCAN y C-SCAN, siempre mueven la cabeza de lectura/escritura de un extremo del disco al otro. En la prática, ninguno de los dos algoritmos se implanta de esta forma, sino que es más común, que la cabeza de lectura/escritura se mueva hasta la última solicitud en cada dirección. Si ya no existen solicitudes en la dirección actual, se invierte el movimiento. A estas versiones de la planificación, SCAN y C-SCAN, se las modificar dando lugar a la planificación LOOK y el C-LOOK, que consisten en comprobar si existe alguna solicitud antes de moverse en esa dirección. La decisión de no llegar al extremo del disco, se toma en un momento en el que no hay peticiones en dicho sentido, por lo tanto, una vez tomada esa decisión, cualquier petición que llegue, para la zona no barrida, deberá esperar a la próxima pasada. CRITERIOS DE SELECCIÓN DE ALGORITMOS. Anteriormente se ha realizado un análisis de un conjunto de algoritmos de planificación del disco, por lo tanto, será preciso establecer una serie de consideraciones para la selección de un algoritmo determinado. Es posible definir un algoritmo óptimo, cuando se realiza el diseño de un sistema operativo, pero quizá la simulación y los cálculos necesarios para la planificación óptima no justifiquen el estudio. El rendimiento de cualquier algoritmo de planificación, depende en gran medida de la cantidad y tipo de solicitudes. Si existen pocas solicitudes, lógicamente todos los algoritmos son equivalentes. El método de asignación de archivos, puede tener una gran influencia sobre las solicitudes del servicio del disco. Un programa que trata de leer un archivo asignado contiguamente, generará varias solicitudes cercanas en el disco, por lo tanto, el movimiento de las cabezas de lectura/escritura será muy limitado, sin embargo, si el archivo ha sido asignado de forma enlazada o indexada, puede incluir bloques dispersos por el disco, resultando una mejor utilización del espacio en disco, a costa de un mayor movimiento de las cabezas de lectura/escritura. Es importante también, la ubicación de los directorios y bloques de índices, la forma de apertura del archivo para poder usarlo y si es preciso realizar un alto número de búsquedas en el directorio. Si se tiene en cuenta, que los accesos a los directorios son muy frecuentes, estos deben situarse en la mitad del disco, ya que de esta manera, se reducen considerablemente el número de movimientos de las cabezas de lectura/escritura. Así por ejemplo, si una entrada del directorio esta en el primer bloque y los datos del archivo en los últimos bloques, la cabeza de lectura/escritura tiene que recorrer todo el disco, si el directorio esta situado en los bloques centrales del disco, como mucho se recorrería la mitad del disco. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 9 TEORÍA DE LOS SISTEMAS OPERATIVOS Evidentemente, teniendo en cuenta estos aspectos, el algoritmo de planificación del disco, como todos los demás algoritmos, debe escribirse como un modulo separado, que permita reemplazarlo por otro algoritmo si es necesario. Como elección inicial podría utilizarse la planificación FCFS o bien la SSTF. La planificación SSTF es bastante habitual e interesante, sin embargo, los algoritmos SCAN y C-SCAN, son más apropiados para sistemas de gran uso del disco. ALGORITMOS DE PLANIFICACIÓN PARA DISPOSITIVOS DE CABEZA FIJA. Los algoritmos de planificación de disco que se han analizado anteriormente, es decir, el FCFS, y C-SCAN, todos ellos tienen por objeto, minimizar el movimiento de las cabezas de lectura/escritura, para reducir los tiempos de espera y de servicio. SSTF, SCAN Los dispositivos de cabeza fija, como son los tambores magnéticos, no presentan este problema, ya que no hay movimiento de las cabezas de lectura/escritura, ni tiempo considerable para la selección de una pista, por consiguiente, para estos dispositivos se emplean otros algoritmos. Las colas por sectores es un algoritmo para la planificación de los dispositivos de cabeza fija, que se basa en la división de cada pista en un número fijo de bloques, llamados sectores. La dirección del disco especifica en cada solicitud la pista y el sector, como el tiempo de posicionamiento es cero, para los dispositivos de cabeza fija, la mayor parte del tiempo de servicio es el tiempo de latencia. Para la planificación FCFS, suponiendo que todas las solicitudes están distribuidas uniformemente entre los sectores, la latencia esperada es medio giro. Así por ejemplo, supongamos que la cabeza de lectura/escritura se encuentra sobre el sector 2 y la primera solicitud de la cola es para el sector 12. Para atender esta solicitud tenemos que esperar a que el sector 12 pase por debajo de las cabezas de lectura/escritura. Si en la cola se presenta una solicitud para el sector 5 podemos atenderla antes, sin demorar la solicitud del sector 12. De esta manera, se mejora en gran medida la productividad, sirviendo una solicitud para cada sector conforme pase bajo la cabeza de lectura/escritura, aunque no se encuentre al inicio de la cola de espera. Las colas por sectores definen una cola para cada sector del tambor magnético. Cuando llega una solicitud para el sector i, se coloca en la cola del sector i y al pasar el sector por debajo de las cabezas de lectura/escritura, se sirve la primera solicitud en su cola. Las colas de sectores, se utilizan principalmente, con dispositivos de cabeza fija, aunque también pueden utilizarse en dispositivos de cabeza móvil, si hay más de una solicitud de servicio para una pista o cilindro en particular. Una vez que la cabeza de lectura/escritura se mueve a un cilindro, pueden atenderse todas las solicitudes referentes al cilindro sin tener que mover la cabeza de lectura/escritura, por lo tanto, las colas por sectores pueden usarse para ordenar varias solicitudes de un mismo cilindro. Por supuesto, como sucede con otros algoritmos de planificación, las colas por sectores tendrán efecto, solo si el sistema operativo, puede escoger entre varias solicitudes. ALGORITMOS PARA MINIMIZAR LOS TIEMPOS DE LATENCIA Y DE TRANSFERENCIA. El tiempo de latencia rotacional es difícil de minimizar, dado que la distribución de las solicitudes en sectores dentro de una pista es aleatoria, cabe la posibilidad de agrupar las peticiones por sectores, pero esto solamente daría resultados satisfactorios, en dispositivos sin tiempo de posicionamiento, ya que da lugar a un aumento de dicho tiempo. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 10 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA Teniendo en cuenta que el tiempo de transferencia se debe a que hay que transmitir la información desde el dispositivo de E/S al buffer del controlador y después a la memoria principal. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 11 TEORÍA DE LOS SISTEMAS OPERATIVOS Podría pensarse en eliminar este tiempo, haciendo que la información sea enviada directamente por el controlador a la memoria principal, pero esto es imposible, ya que una vez que damos comienzo a una lectura, el flujo de información se produce a velocidad constante y no podría soportar el hecho de que el bus de datos estuviera ocupado por otras operaciones. El tiempo de transferencia tiene un efecto muy importante sobre el tiempo de latencia, ya que en un principio, los sectores de una pista los podríamos numerar consecutivamente y asignar todos ellos a un fichero determinado. En estas circunstancias, los sectores contiguos del fichero, estarían físicamente contiguos en el disco, dando lugar al sistema de numeración no intercalado. Utilizando un sistema de numeración no intercalado del tipo descrito anteriormente, cuando la cabeza de lectura/escritura, ha terminado de leer un sector, estará situada justo al comienzo del sector siguiente, que debe ser leído a continuación. No obstante durante el tiempo de transferencia, muchos controladores no pueden hacer nuevas lecturas y el disco debe seguir rotando, colocándose en una posición intermedia de un sector consecutivo, con lo que al terminar ese tiempo, hemos de realizar una rotación adicional, para leer el sector siguiente, al de la última operación de lectura. El tiempo de transferencia da lugar, por lo tanto, a un aumento del tiempo de latencia, al ocasionar rotaciones adicionales del disco, que no serían necesarias si no existiera el tiempo de transferencia. Los tiempos de latencia y de transferencia, no pueden hacerse menores directamente, pero cabe la posibilidad de superponer ambas operaciones, para ello es necesario disponer de unos métodos de numeración de sectores más sofisticados, como los que se describen a continuación: 0 1 0 4 0 3 7 2 7 1 5 6 6 3 3 5 2 1 5 4 NUM. NO INTERCALADA 6 2 NUM. INTERCALADA 7 4 NUM. INTERCALADA DOBLE Como se puede observar en las figuras anteriores, en la numeración no intercalada los sectores están situados en el disco de forma contigua, por lo tanto, durante el tiempo de transferencia el disco girará y por lo tanto la lectura del sector siguiente, obligará a una rotación adicional. Con la numeración intercalada, se trata de situar consecutivamente los sectores, dejando un sector intercalado entre los sectores que tienen números consecutivos, de esta forma, si el disco durante el tiempo de transferencia gira como mucho un sector, se podrá leer la pista completa en dos rotaciones del disco. El sistema de numeración intercalado doble, se basa en dejar dos sectores intercalados, entre los sectores que tienen números consecutivos y se utiliza en sistemas con una velocidad de rotación del disco mayor, por lo tanto, si el disco durante el tiempo de transferencia, avanza más de un sector y menos de dos, el sector que puede leerse a continuación, sin rotaciones adicionales, es el que está situado dos posiciones por delante del leído anteriormente, de esta manera se podrá leer una pista completa en tres rotaciones del disco. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 12 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA ORGANIZACIÓN DE LAS FUNCIONES DE ENTRADA Y SALIDA. Vamos a tratar de definir las técnicas, que pueden ser utilizadas para la organización de las operaciones de E/S, pero antes vamos a recordar, sus características más importantes. 1. La mayor parte de las operaciones de E/S se realizan de forma asincrona, es decir, se solicitan en cualquier momento y no mantienen ninguna relación con el reloj del procesador. Dada la necesidad de controlar la operación asincrona, el hardware de E/S, debe incluir señales especiales, que activen la CPU y los controladores del dispositivo, para indicarse mutuamente sus estados, intenciones y disponibilidad de datos y a estas señales se las denomina conjuntamente, señales de dialogo ( Handshaking). 2. La diferencia de velocidad entre la CPU y los dispositivos periféricos, ya apuntada anteriormente es de varios órdenes de magnitud, es decir, todos los dispositivos de E/S son mucho más lentos que la UCP, pero además, existe una gran variedad en lo que se refiere a la velocidad de los dispositivos de E/S. 3. Las conversiones entre formatos de datos, necesarias para saltar las incompatibilidades entre el procesador y los diversos periféricos, ya que algunos dispositivos requieren transferencia de datos de bytes o caracteres y otros esperan transferencias de datos en bloques de caracteres, además existen diferentes codificaciones de datos entre las cuales se pueden citar ASCII, EBCDIC y otras especificas para cada dispositivo. Los sistemas de E/S, se suelen clasificar de acuerdo con el nivel de intervención de la Unidad de Control del procesador en las operaciones de E/S y son posibles tres técnicas: Entrada y Salida Programada. Cuando el procesador esta ejecutando un programa y encuentra una instrucción de E/S, se produce una interrupción, se ejecuta la rutina de interrupción y como consecuencia se envía una orden de alto nivel al controlador, es decir al modulo de E/S correspondiente. Si la operación de E/S, se haya totalmente controlada por la unidad de control del procesador, es decir, arranca, dirige y termina la operación de E/S, en este caso, se dice que se está realizando una E/S programada, por lo tanto, el módulo de E/S llevará a cabo la acción requerida y luego activará los bits apropiados en el registro de estado del controlador o del módulo de E/S. En este caso el módulo de E/S, no lleva a cabo ninguna otra acción para indicar al procesador que la operación se ha realizado, es decir, no interrumpe al procesador, por lo tanto, será responsabilidad del procesador, comprobar periódicamente el estado del modulo de E/S, para saber si se ha completado la operación. Con esta técnica, el procesador es el responsable de extraer los datos de la memoria principal y situarlos en el buffer del controlador, cuando se va a realizar una salida, o de extraer los datos del buffer del controlador y situarlos en la memoria principal, cuando se va a realizar una entrada. Esta técnica se puede implementar con muy poco hardware y por lo tanto, existe en casi todos los sistemas informáticos, pero puede dar lugar a un rendimiento bajo, si la unidad de control del procesador consume mucho tiempo gestionando entradas y salidas. El software de E/S se escribe de manera tal que el procesador ejecute unas instrucciones, que le otorguen el control directo sobre la operación de E/S, incluyendo la comprobación del estado de los dispositivos, el envío de órdenes de lectura o escritura y la transferencia de los datos. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 13 TEORÍA DE LOS SISTEMAS OPERATIVOS Entrada y salida dirigida por interrupciones. El problema de la E/S programada, es que el procesador tiene que esperar un largo tiempo a que el módulo de E/S en cuestión, realice la operación y este listo para recibir o transmitir más datos. El procesador mientras tanto esta esperando y debe interrogar repetidas veces estado del módulo de E/S, por tanto, el nivel de rendimiento del sistema, en conjunto, se degrada fuertemente. Una alternativa diseñada posteriormente para resolver consiste en que el procesador envíe una orden de E/S al módulo correspondiente para que este se haga cargo y la unidad de control del procesador mientras tanto realice operaciones más productivas. Esto requiere algo más de hardware, ya que el módulo de E/S, debe ser capaz de generar las señales correspondientes, para poder comunicar a la unidad de control del procesador la finalización de las operaciones de E/S que estaba realizando, produciendo de esta manera, una interrupción externa. Que permite a la unidad de control del procesador realizar la transferencia de la información a la memoria principal. La unidad de control del procesador seguirá siendo la encargada de arrancar la operación de pero una vez iniciada, la unidad de control del procesador y el módulo de E/S solo se interferirán, cuando quieran acceder a la memoria principal, para la transferencia de la información. E/S, Acceso directo a memoria (DMA, Direct Memory Access). La entrada y salida dirigida por interrupciones, aunque es más eficiente, que la simple E/S programada, todavía requiere de la intervención activa del procesador para transferir los datos entre la memoria y el módulo de E/S y además cualquier transferencia de datos debe recorrer un camino que pasa por el procesador. Así pues, ambas técnicas de E/S adolecen de dos desventajas inherentes: La velocidad de transferencia de E/S, esta limitada por la velocidad con la que el procesador puede comprobar y dar el servicio correspondiente a un dispositivo concreto. El procesador participa en la gestión de la transferencia de E/S y deben ejecutarse una serie de instrucciones en cada transferencia de E/S. Cuando se tienen que mover grandes volúmenes de datos, se necesita una técnica más eficiente, que consiste en el acceso directo a memoria DMA. La función de DMA se puede llevar a cabo, por medio de un módulo separado sobre el bus del sistema o bien puede estar incorporada dentro del módulo de E/S, en cualquier caso, la técnica funciona de la siguiente forma: Cuando el procesador desea leer o escribir un bloque de datos, emite una orden hacia el módulo DMA, enviándole la información siguiente: Si lo que se solicita es una lectura o una escritura. La dirección del dispositivo de E/S involucrado. La dirección inicial de la memoria desde la que se va a leer o a la que se va a escribir. El número de palabras o caracteres que se desea leer o escribir. El procesador continúa entonces con otro trabajo, delegando la operación de E/S, en el módulo de DMA y dicho módulo es el que tendrá que encargarse de llevar a cabo la operación de E/S. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 14 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA El módulo de DMA transfiere el bloque entero o bien una palabra cada vez, directamente hacia o desde la memoria sin pasar por el procesador. Cuando se completa la transferencia, el módulo de DMA envía una señal de interrupción al procesador, de esta manera, el procesador se ve involucrado solo al inicio y al final de la transferencia. El módulo DMA debe tomar el control del bus de datos, para transferir la información a la memoria, por lo tanto, debido a la competencia por la utilización del bus de datos, puede ocurrir que el procesador necesite el bus de datos, cuando esta siendo utilizado por el módulo DMA y en este caso el procesador debe esperar. Es preciso observar que esto no es una interrupción, ya que el procesador no salva el contexto y se dedica a ejecutar otro proceso, sino que el procesador realiza una pausa durante un ciclo del bus y el efecto en general, es que el procesador es más lento durante una transferencia de DMA, no obstante, para una transferencia de E/S de varias palabras, la técnica DMA es bastante más eficiente que la E/S programada o la dirigida por interrupciones. En los grandes sistemas informáticos, que deben soportar un elevado número de dispositivos, se puede llegar a un grado de autonomía mucho más grande, dejando a la unidad de control del procesador, la posibilidad de conectarse a los controladores a través de un canal de E/S, denominado IOP (Input/Output Processor), consistente en un procesador especializado, para realizar las operaciones de E/S, reservándose únicamente la exclusiva responsabilidad de arrancar las operaciones de E/S y procesar los resultados. El propósito de un canal es conseguir, que los dispositivos sean tratados como virtuales, abstractos o transparentes y descargar en lo posible al procesador central del ordenador, del trabajo de utilizarlos directamente. Para ello, será preciso introducir unos elementos de hardware denominados procesadores de E/S (IOP) o canales. No está claro, cuando un módulo de E/S, alcanza el grado de IOP, pero debe tener las siguientes características: Posibilidad de trabajar por DMA e interrupciones. Capacidad de ejecutar programas sencillos escritos especialmente para ellos. Cuando el módulo de E/S en cuestión es un sofisticado IOP o canal de E/S, el concepto de DMA debe tenerse en cuenta con más razón. Los canales se manejan mediante comandos específicos, para realizar las operaciones de E/S, las cuales se suelen llevar a cabo con la ayuda de módulos DMA, de manera que, cuando se termina cada operación, el canal devuelve el estado correspondiente del dispositivo que la realizó, al mismo tiempo que interrumpe al procesador central. Estos canales o procesadores de E/S son muy simples, especializados y sin grandes exigencias de velocidad de procesamiento, resultando bastante más económicos que el procesador central de un sistema informático. Los canales pueden ser de varios tipos: Selectores, que permiten la gestión de varios dispositivos, pero solo pueden gestionar uno en cada momento, estos canales se emplean normalmente, para dispositivos de muy alta velocidad, como pueden ser los discos magnéticos. Multiplexores, que pueden trabajar con varios dispositivos, pudiendo transferir datos simultáneamente por todos ellos, como es lógico, se utilizarán con dispositivos lentos, como por ejemplo las impresoras o los terminales. Multiplexor por bloques, que se basa en las ventajas de los dos anteriores, permitiendo que puedan coexistir operaciones de E/S, sobre varios dispositivos de alta velocidad. El APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 15 TEORÍA DE LOS SISTEMAS OPERATIVOS funcionamiento interno de este tipo de canales se fundamenta, en la encuesta que se realiza sobre los dispositivos que se conectan al mismo. CONTROLADORES DE PERIFÉRICOS. A medida que los sistemas informáticos han evolucionado, se ha producido una tendencia creciente en la complejidad y sofisticación de cada componente individual. En ningún caso se hace esto más evidente que en las funciones de E/S y las etapas de su evolución pueden resumirse como sigue: El procesador controla directamente los dispositivos periféricos, esto se puede ver en dispositivos simples controlados por microprocesadores. Se añade un controlador de periféricos o módulo de E/S, el procesador utiliza la E/S programada sin interrupciones, en este caso, el procesador parece aislarse de los detalles específicos de las interfaces con dispositivos externos. Posteriormente, se considera la misma configuración, señalada en el punto anterior, pero empleándose interrupciones, en este caso, el procesador no tiene que desperdiciar el tiempo esperando a que se realice una operación de E/S, incrementando así la eficiencia. El módulo de E/S recibe el control directo de la memoria, a través de DMA, de esta manera, puede mover un bloque de datos a la memoria o desde la misma, sin que intervenga el procesador, excepto al principio y al final de la transferencia. El módulo de E/S es mejorado, para constituir un procesador separado con un conjunto de instrucciones, especializado para realizar la E/S. El procesador central (CPU), ordena al procesador de E/S, la ejecución de los programas de E/S en la memoria principal. El procesador de E/S localiza estas instrucciones y las ejecuta sin la intervención de la CPU. Esto permite a la CPU, precisar que una secuencia de actividades de E/S se vea interrumpida solo cuando haya terminado la secuencia entera. El módulo de E/S posee su memoria local y es de hecho un computador independiente. Con esta arquitectura se pueden controlar un gran número de dispositivos de E/S, con una participación mínima de la CPU. Un uso muy común de esta arquitectura, ha sido el control de las comunicaciones con terminales interactivos, en este caso, el procesador de E/S se encarga de la mayoría de las tareas implicadas en el control de los terminales. Un módulo de E/S, controlador de periférico, interfaz o tarjeta controladora, actúa como intermediario, entre la CPU y los periféricos, es decir, sirve de puente entre la incompatibilidad de señales entre la CPU y los periféricos pero además traduce las órdenes genéricas de E/S emitidas por la CPU, en unos controles específicos del dispositivo. Algunos controladores pueden gestionar varios dispositivos del mismo tipo o de tipos similares. Un controlador o módulo de E/S tiene la siguiente estructura: BUS DEL SISTEMA LÓGICA DE DIRECCIONES CAPA 1 INTERFAZ DEL BUS Y BUS DE DRIVERS CONJUNTO DE REGISTROS CAPA 2 DE DATOS, ORDENES Y ESTADO CONTROLADOR GENÉRICO DEL DISPOSITIVO PARTE DEL CONTROLADOR CAPA 3 INTERFAZ DEL DISPOSITIVO ESPECIFICA DEL DISPOSITIVO APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 16 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA DISPOSITIVO FÍSICO Las capas 1 y 3 son importantes para los diseñadores del hardware y la capa 2 tiene vital importancia para el sistema operativo. Al conjunto de registros que forman la capa 2, se le suele denominar puerto de E/S. Existen cuatro tipos fundamentales de registros en los controladores: Registros de memoria intermedia de entrada. Registros de memoria intermedia de salida. Registros de órdenes. Designación de modo. Ordenes operacionales de E/S. Registros de Estado. Registros de memoria intermedia de entrada. Su función principal es guardar un dato hasta que la CPU esté preparada para aceptarlo, ya que la CPU puede estar ocupada, cuando el dato esté disponible en el controlador. Si se dispone de memorias múltiples se pueden guardar varios datos. Registros de memoria intermedia de salida. Su función principal consiste en guardar los datos enviados por la CPU, de forma que los dispositivos externos, puedan contar con señales seguras adecuadas a sus requerimientos. Registros de órdenes. Existen dos tipos: Designación de modo, solo se modifica su valor cuando arranca el controlador, recibiendo el nombre de inicialización hardware, determinado el formato, que tendrá la información a transmitir, como por ejemplo el tipo de protocolo (sincrono o asincrono), longitud del carácter (7 y 8 bis), paridad (par o impar). Ordenes operacionales, que gobiernan el mecanismo de las transferencias de los datos, como por ejemplo: leer, escribir, habilitar o deshabilitar la transmisión. Las órdenes de la CPU alteran valores de bits individuales en estos registros. Registros de estado. Se utilizan principalmente para proporcionar informaciones a la CPU acerca del estado del dispositivo de E/S, como por ejemplo, ocupado o preparado. Estará ocupado cuando se pide una operación de entrada y el dispositivo no está disponible y estará preparado cuando el dato esté ya disponible para la CPU en el registro de memoria intermedia de entrada. ENTRADA Y SALIDA PROGRAMADA. Es el método más sencillo y directo de implementar los cambios de información y operaciones de E/S, consistente en responsabilizar a la unidad de control de todos los pasos necesarios para llevar a cabo una operación de E/S, es decir, cada dato transferido conlleva la ejecución de una o más instrucciones de la unidad de control. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 17 TEORÍA DE LOS SISTEMAS OPERATIVOS La transferencia se realiza entre un registro de la unidad de control y un registro del controlador del periférico, ya que este no tiene acceso a memoria. Tanto la unidad de control, la memoria y los controladores periféricos, comparten los buses de datos y direcciones. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 18 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA BUS DE DIRECCIONES BUS DE DATOS RD WR MEMORIA PRINCIPAL MEMRQ UNIDAD DE CONTROL IORQ CONTROLADOR DISPOSITIVOS La unidad de control del procesador es la que pone el contenido en el bus de direcciones y por lo tanto se emplearán para seleccionar un controlador igual que se selecciona una celda de memoria. Los controladores de dispositivos periféricos, incluyen un registro buffer (Registro de memoria intermedia), que hace que a efectos del procesador no haya diferencia física entre una posición de memoria y un controlador. La señal RD es para lecturas en memoria y entradas. La señal WR es para escrituras en memoria y salidas. Asignamos una parte del espacio de direccionamiento a la memoria y otra a los controladores. Así por ejemplo, de las direcciones 0000 a EEEE son de la memoria principal y desde F000 hasta FFFF pertenece a los controladores. Si deseamos que tengan distinto espacio de direccionamiento por ejemplo, 0000 será posición de memoria y también dirección de un controlador, por lo tanto, habrá que añadir dos señales para distinguir, cuando queremos acceder a memoria (MEMRQ) y cuando queremos acceder a un controlador (IORQ). Para llevar un dato desde el periférico a memoria es preciso realizar dos operaciones: Cargar el dato en un registro del controlador. Por ejemplo: IN A,(P). Esta instrucción llevará un dato desde el periférico nº P, hasta el registro A de la Unidad de Control. Almacenarlo en memoria. Por ejemplo: LD (HL), A. Carga en la dirección de memoria que apunta el registro HL, el valor del registro A. Para escribir un dato de memoria en un periférico se utilizarán operaciones similares. Almacenar en un registro del controlador, el contenido de una dirección de memoria. Por ejemplo: LD A, 1100 H almacena en el registro A el contenido de la dirección 1100 hexadecimal. Escribirlo en el periférico. Por ejemplo: OUT (P), A para hacerlo desde el registro A de la unidad de control, hacia el controlador nº P. Cuando se ejecuta una instrucción de este tipo: IN A, (P). Se supone que el controlador debe contestar en un tiempo marcado. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 19 TEORÍA DE LOS SISTEMAS OPERATIVOS Hay sistemas que esperan hasta que el dato está en el buffer del controlador del dispositivo y otros en que pasado un momento, suponen que el dato está y lo leen. En la E/S programada la CPU está esperando a que los datos se acaben de leer o escribir, es decir, está continuamente preguntando al controlador, si se ha realizado la operación en su registro de estado. A esto se le llama bucle de espera activa, que conlleva una baja utilización del procesador y la dificultad de manejar dispositivos múltiples. Si el registro de estado está en 1, la CPU toma el dato y lo lleva a la memoria principal, en el caso de que sea una operación de lectura. Gestores de dispositivos de E/S controlada por programa. Los gestores de dispositivos en un S.O. se implementan como módulos de E/S que se enlazan normalmente al núcleo del sistema operativo. Una transacción típica de E/S controlada por programa tiene la siguiente forma: Inicializar el controlador (Solo si es necesario). Mientras leer datos Arrancar E/S Mientras no preparado Leer registro estado Fin Mientras. Bucle de Espera Activa Ejecutar la Rutina de Servicio El procesador, es decir la unidad de control del procesador, realiza la transferencia de los datos desde el registro de memoria intermedia de entrada del controlador a la memoria principal. Arranca la siguiente lectura y pone No Preparado el registro de estado del controlador, o el registro de estado del controlador se pone automáticamente a No Preparado en el momento de transferir el dato. Fin Mientras. CONTROL DE DISPOSITIVOS MÚLTIPLES. Para intentar controlar más de un controlador, que esté realizando E/S, vamos a expandir el bucle de espera activa, para comprobar el estado de los diversos controladores de E/S y bifurcar a la rutina de servicio de E/S adecuada, del primer controlador que se encuentre preparado. A este procedimiento se le denomina rutina de escrutinios y el bucle de espera activa sería: Comprobar registro estado controlador 1 Si preparado Ejecutar rutina servicio controlador 1 Fin-Si Comprobar registro estado controlador 2 Si preparado Ejecutar rutina servicio controlador 2 Fin-Si . . Comprobar registro estado controlador n Si preparado Ejecutar rutina servicio controlador a APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 20 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA Fin-Si Las rutinas de servicio del controlador, consisten en un conjunto de instrucciones, que realizan la E/S realmente y la rutina de servicio finaliza con una bifurcación a un punto concreto de la rutina de escrutinio, por lo tanto, cuando un controlador está preparado y se realiza la rutina de E/S, que corresponde a ese controlador, el regreso se puede hacer al comienzo de la rutina de escrutinio o bien a comprobar el estado del controlador siguiente en la rutina de escrutinio. Si se reanuda al comienzo de la rutina de escrutinio, aquellos controladores que están al comienzo, tendrán más prioridad, que los que se encuentran al final, ya que su petición siempre será atendida antes. Existen por lo tanto dos tipos de rutina de escrutinio: Rutina de escrutinio cíclica. Rutina de escrutinio por prioridades. Se puede definir el tiempo de latencia de escrutinio, como el tiempo transcurrido desde que un controlador indica que está preparado, hasta que su rutina de servicio comienza a ejecutarse, por lo tanto, en la implicación del tipo de escrutinio sobre el tiempo de latencia del controlador, solo se considera el tiempo correspondiente a la ejecución de la rutina, tiempo que denominamos t y eso quiere decir, que el tiempo de respuesta de E/S, está estrechamente relacionado, con la estrategia aplicada en la realización de la rutina de escrutinio. Rutinas de escrutinio por prioridades. Para el controlador de mayor prioridad, el tiempo de latencia en el caso más favorable será cero, mientras que el tiempo más desfavorable será t, de la última rutina de servicio ejecutada. Para el resto de controladores, su tiempo de latencia estará en función del comportamiento de los controladores de mayor prioridad, en el caso más favorable el tiempo de latencia será 0, cuando sea el único en estado preparado, respecto a los que tiene por encima; en el caso más desfavorable será infinito, cuando haya siempre controladores con mayor prioridad con su registro de estado preparado. Por lo tanto en una rutina de escrutinio por prioridades, puede producirse inanición, en la atención por parte de la CPU, de la rutina de servicios de algunos controladores, es decir, el controlador de mayor prioridad puede monopolizar la atención de la CPU. Rutinas de escrutinio cíclicas. Para todos los controladores de la rutina cíclica, el tiempo de latencia, más favorable será cero, y el caso más desfavorable será la suma de los tiempos de rutina de servicio anteriormente ejecutados. En principio, la noción de encuesta expuesta anteriormente, puede extenderse para proporcionar multitarea en un sistema de propósito general sin recurrir a las interrupciones, ya que la implantación de la rutina de escrutinio, esencialmente es una variante del bucle de espera activa explicado anteriormente y ello nos conduciría a una encuesta continua, que daría lugar a una baja utilización del procesador. La solución podría ser efectuar alguna actividad computacional en un segundo plano y ejecutar la rutina de escrutinio cada cierto tiempo. El problema sería determinar con que frecuencia realizar la rutina de escrutinio y como implementar esa frecuencia en un sistema de propósito general. Si la frecuencia en la ejecución de la rutina de escrutinio es muy alta, la rutina puede degenerar en un bucle de espera activa, manteniendo la mayoría de sus problemas ya que si se ejecuta muchas veces, puede ser que los controladores no hayan podido modificar el registro de estado. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 21 TEORÍA DE LOS SISTEMAS OPERATIVOS Sin embargo, si la rutina de escrutinio se realiza con poca frecuencia, puede aumentar la utilización del procesador, pero al mismo tiempo puede aumentar los tiempos de latencia, reduciendo de esta manera el rendimiento del sistema y posiblemente, provocando perdidas de datos, por lo tanto, se llega a la conclusión de que la frecuencia correcta depende del sistema y de la configuración. Incluso si se resolvieran estas cuestiones y se eligiera una frecuencia para la rutina de escrutinio adecuada, seguiría existiendo el problema de la implementación, ya que fuese lo que fuese lo que el procesador estuviese haciendo, debería ejecutar la rutina de escrutinio a intervalos elegidos. En general, esto implicaría un análisis de tiempo cuidadoso de todos los programas, en términos de sus tiempos de ejecución, con el fin de asegurar, que las bifurcaciones a la rutina de escrutinio, se insertasen en los lugares adecuados, lo cual sería claramente irracionable en la práctica. Por ejemplo en un sistema operativo que gestiona la E/S controlada por programa para varios controladores mediante una rutina de escrutinio, se dispone de tres controladores: DISCO, CINTA e IMPRESORA, la duración de la rutina de servicio para cada controlador es: DISCO = 30 msg. CINTA = 100 msg. IMPRESORA = 500 msg. ¿Calcule el tiempo de latencia en el mejor y peor caso para cada controlador?. a) b) Suponiendo que la mayor prioridad es del disco, después la de la cinta y por último la de la impresora. En el caso más favorable: DISCO = 0 msg. CINTA = 0 msg. IMPRESORA = 0 msg. En el caso más desfavorable DISCO = 500 msg. CINTA = Infinito. IMPRESORA = Infinito. En el caso de rutina de escrutinio cíclica. En el caso más favorable: DISCO = 0 msg. CINTA = 0 msg. IMPRESORA = 0. En el caso más desfavorable: DISCO = 600 msg. CINTA = 530 msg. IMPRESORA = 130 msg. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 22 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA ACCESO DIRECTO A MEMORIA (DMA) La gestión de la E/S por la unidad de control del procesador, explicada anteriormente, es decir, E/S programada, presenta serios inconvenientes, siendo el principal, que la unidad de control, está detenida durante mucho tiempo, esperando a que el controlador del dispositivo, le facilite el dato solicitado. No parece muy lógico, utilizar la unidad de control del procesador, para la realización de estas tareas o actividades, pero además no es solamente el problema de ineficacia que se produce, sino que si como es lógico, existen varios controladores de dispositivos periféricos, la lentitud de algunos dispositivos en contestar, a las solicitudes de lectura o grabación de la unidad de control, hará que otras solicitudes no pudieran ser atendidas en el momento oportuno. Los circuitos de acceso directo a memoria realizados por los módulos DMA y las interrupciones, se utilizan para mejorar la velocidad de las operaciones de E/S y eliminar así el papel de la unidad de control del procesador, en estas actividades. El acceso directo a memoria DMA, es una técnica de transferencia de datos, que tiene lugar normalmente, entre un controlador de E/S y la memoria principal y se realiza mediante un componente hardware específico, denominado controlador de DMA (DMAC). La CPU, puede realizar accesos a memoria de forma aleatoria, sin embargo, el controlador de DMA, solo puede acceder a conjuntos de posiciones de memoria consecutivas, por este motivo, el DMA es adecuado para la transferencia de bloques de datos. Si se trata de una operación de entrada de datos desde un dispositivo periférico, estos quedarán almacenados en el controlador, concretamente en un buffer de entrada o conjunto de posiciones de memoria intermedia consecutivas, por el contrario, si se trata de una operación de salida, se tomará de un buffer de salida o conjunto de posiciones de memoria intermedia consecutivas, para enviarlos al dispositivo periférico. Una de las características más sobresalientes del módulo DMA, es la eficiencia que se consigue, en lo que respecta a la velocidad de transferencia, ya que la transferencia de bloques es bastante más rápida que si se hiciera mediante un mecanismo de E/S programada. Sin embargo, lo más importante es que una operación DMA, se puede realizar de forma prácticamente concurrente con el funcionamiento de la CPU, por lo que la E/S puede no restar un tiempo significativo a la velocidad de ejecución del proceso, que se encuentre en el procesador en ese momento. A nivel hardware suelen existir varios controladores DMA, aglutinados por integración en un mismo chip VLSI, denominados canales, por ejemplo, el 8237A DMAC de Intel utilizado en los sistemas PC, que integra cuatro canales, del 0 al 3, que suelen funcionar de forma coordinada, utilizando un mecanismo basado en prioridades. El DMAC utiliza un reloj propio, que puede ser el mismo que controla la CPU u otro diferente. Además dispone de una entrada para la inserción de estados de espera, en caso de que sea preciso regular externamente su velocidad, adecuándola a los tiempos de acceso de la memoria y de los dispositivos periféricos. En la gestión de la E/S mediante la incorporación a los controladores del módulo DMA, la operación de E/S es arrancada por la unidad de control del procesador, permitiéndose al controlador la transferencia de bloques de datos, hacia o desde la memoria, el puerto de E/S de un controlador, para que pueda funcionar bajo DMA, contiene además de los registros de un controlador normal otros registros, necesarios para su funcionamiento. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 23 TEORÍA DE LOS SISTEMAS OPERATIVOS El funcionamiento básico de un controlador de DMA, consta de los siguientes registros: Registro de Dirección Base, en el que se almacena la dirección de comienzo espacio de memoria involucrado en la transferencia. Registro de Datos a Transferir, en el que se almacena el número de datos que se van a transferir, es decir, el tamaño de cada bloque involucrado en la transferencia. Es preciso darse cuenta, que cada “dato” puede llegar a constituir una unidad superior al byte, según la configuración hardware del controlador utilizado. Registro de Direcciones, que consiste en un contador reversible, cuyo contenido tiene conexión directa al bus de direcciones. Cuando comienza una transferencia DMA, este contador, se incializa con la dirección almacenada en el Registro de Dirección Base. Según se haya programado la transferencia (mediante bits adicionales) este contador, cuenta en sentido ascendente y descendente. Contador de Datos Transferidos, que consiste en un contador, que siempre cuenta en sentido descendente. Cuando se inicia una transferencia DMA, el contador se inicializa con el valor almacenado en el Registro de Datos a Transferir y cuando la cuenta llega a cero, se da por terminada la operación, circunstancia que se señaliza por hardware. Resumiendo para el funcionamiento del controlador como módulo DMA es preciso incorporar a los registros del controlador genérico dos nuevos registros: Registro DIR, contiene la dirección de memoria a la cual se va a efectuar el siguiente acceso, cuando comienza la ejecución de DMA, la CPU carga este registro con la dirección a partir de la cual se van a leer o escribir los datos, este registro se incrementa cada vez que se produce un acceso del controlador a memoria. Registro CONT, contiene inicialmente el número de datos, que se van a transferir en la operación de DMA, el contenido se reduce cada vez que se transfiere un dato, desde la memoria al buffer del controlador o viceversa. Cuando el contenido de CONT es igual a cero, el controlador envía una señal de interrupción a la CPU, para indicarle que ha terminado la operación de E/S. Tanto la unidad de control, la memoria y los controladores de los dispositivos periféricos, comparten los buses de datos y direcciones. BUS DE DIRECCIONES BUS DE DATOS MEMRD MEMWR IORD IOWR MEMORIA PRINCIPAL UNIDAD DE CONTROL BUSRQ BUSACK CONTROLADOR INT DISPOSITIVOS APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 24 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA La unidad de control del procesador es la que pone el contenido de las ordenes en el bus de direcciones y por lo tanto se emplearán para seleccionar la memoria intermedia de un controlador igual que para seleccionar una celda de memoria principal y debe ser capaz de solicitar los buses del sistema, mediante una señal que se denomina (BUSRQ). Desde el punto de vista de la CPU, el DMAC se considera como un periférico más, por lo que tiene reservado un conjunto de direcciones en el mapa de E/S, para el acceso en lectura y escritura a sus registros. En este caso, cuando el DMAC es accedido desde la CPU, sus conexiones al Bus de Direcciones (selección de registro), Bus de datos (valor a leer y escribir), y a las líneas IORD# e I WR# se consideran entradas. El principal problema que se manifiesta en este esquema de conexiones a buses, es la posible competencia entre la CPU y el DMAC por el acceso a los buses del sistema, fundamentalmente al Bus de Datos y al Bus de Direcciones. Esta competencia se resuelve siempre a favor del DMAC, que deberá solicitar los buses del sistema a la CPU, mediante las señales BUSRQ, quien se los concederá siempre, activando la señal de confirmación BUSACK. Una de las principales diferencias entre la CPU y el DMAC, radica en el hecho de que este último, no lee ni escribe datos en el bus de datos, solamente se limita a ordenar la transferencia entre el dispositivo (R/W) y memoria (W/R) La unidad de control del procesador, debe de cargar los datos correctos en los registros DIR y CONT del módulo DMA, para que se pueda arrancar la operación de E/S. La unidad de control, cada vez que acaba un ciclo de CPU del proceso que esta ejecutando, observará el valor de BUSRQ para comprobar sí esa señal esta activa o inactiva. En caso afirmativo le concederá el bus de datos al módulo DMA, indicándoselo con la activación de la señal BUSACK, a este intercambio de señales que se produce, es a lo que se denomina ciclo de DMA. Una vez concedido el Bus de Datos, el DMA debe hacerse cargo de dicho bus y utilizar las señales necesarias para acceder a la memoria y realizar la transferencia. Cuando el módulo DMA haya realizado la transferencia, retira la señal BUSRQ y la unidad de control del procesador puede continuar utilizando el bus de datos en sus ciclos de CPU. Cuando finalice la transferencia totalmente, el módulo DMA enviará una señal a la unidad de control del procesador, denominada INT, indicando que la transferencia ha finalizado. Es necesario destacar que en el módulo DMA, las operaciones de transferencia de datos, tienen preferencia sobre el acceso a los Buses de Datos y Direcciones, con respecto a la unidad de control del procesador. Podemos definir como ciclo de DMA, el conjunto de operaciones de transferencia de datos, que se produce, durante el intervalo de tiempo en el que está activa la señal BUSACK. Como se observa en este método para el tratamiento de las operaciones de E/S, algunas funciones siguen siendo realizadas por la unidad de control del procesador y al controlador de DMA correspondiente al dispositivo, se le ha pasado la función de la transferencia de los datos a la memoria principal o viceversa. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 25 TEORÍA DE LOS SISTEMAS OPERATIVOS Teniendo en cuenta que los Buses del sistema no pueden ser utilizados por el procesador y por el módulo DMA, para las transferencias a memoria, es preciso buscar formas de máximo aprovechamiento del Bus de datos, encontrándose distintos tipos de transferencia: Por Bloques, en cuyo caso toma el control del Bus de Datos y no lo suelta hasta que termina de transmitirse el bloque completo. Por ráfagas, en cuyo caso toma el control del Bus de Datos y transmite los caracteres que tiene en ese momento. Por robo de ciclos, en cuyo caso toma el control del Bus de Datos durante un ciclo, enviando una palabra cada vez. Transparente, que consiste en aprovechar los ciclos en los cuáles el procesador no utiliza el Bus de Datos. FASES DE UNA OPERACIÓN DMA. 1. La unidad de control del procesador, carga los registros DIR y CONT del módulo DMA, con la dirección inicial de memoria, a partir de la cual se va a efectuar el acceso y el número de unidades de información a transferir. 2. La unidad de control arranca la operación de E/S comunicándoselo al módulo de E/S, donde generalmente está incluido el módulo DMA. 3. Cuando el módulo de E/S, tiene disponible la información a transferir, en el registro de memoria intermedia, activa la señal BUSRQ y espera. La activación de la señal constituye una petición por parte del módulo DMA, de los buses de datos y direcciones. 4. Cuando la unidad de control del procesador concluye el ciclo de CPU actual, comprueba el estado de activación de la señal BUSRQ, si está activa envía al módulo DMA la señal BUSACK, indicándole a este que tiene disponibles los buses de datos y direcciones. A partir de este momento, la CPU no puede hacer uso de tales buses, aunque si puede seguir ejecutando operaciones en la ALU. 5. El controlador se hace cargo de los buses y transfiere el dato la memoria o viceversa, e incrementa el valor del registro DIR. 6. Si existe un nuevo dato disponible en el puerto de E/S para su transferencia, es decir CONT no es igual a cero, se repite de nuevo la acción de la fase 5. 7. Si no existe dato disponible en el controlador y el valor de CONT no es igual a cero, se retira la señal BUSRQ y el control de los buses de datos y direcciones es cedido de nuevo a la unidad de control del procesador. 8. Si no existen datos disponibles en el controlador y el valor de Cont es igual a cero, se retira la señal BUSRQ, se cede el control de los buses a la unidad de control y se envía la señal INT, que indica que la operación DMA ha terminado totalmente. En el caso de que existan varios controladores de dispositivo funcionando bajo DMA, debe existir un elemento hardware denominado controlador de DMA, que se encargue de dar una orden de prioridad a las distintas señales de petición de buses que le lleguen de los distintos controladores. ENTRADA Y SALIDA DIRIGIDA POR INTERRUPCIONES. Dentro del tratamiento de las operaciones de E/S, una interrupción externa o de hardware, es una señal enviada por un controlador de periférico al procesador, para indicarle, que la operación de E/S pendiente ha finalizado, por lo tanto, se puede ejecutar la rutina de interrupción por la unidad de control del procesador. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 26 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA El sistema operativo debe disponer de los mecanismos adecuados, para guardar el estado de ejecución actual del proceso interrumpido, ejecutar la rutina de atención a la interrupción y continuar el proceso interrumpido a partir del estado en que se interrumpió. De esta manera la unidad de control no necesita realizar la encuesta definida anteriormente, sobre el registro de estado del controlador, para saber cuando se ha terminado una operación de E/S y por lo tanto, puede seguir ejecutando otros trabajos, hasta que el controlador le envíe una señal de interrupción, para indicarle que la operación de E/S ha finalizado, eliminando de esta manera, el bucle de espera activa. La E/S por interrupciones se diferencia de la E/S programada, en que evita el descenso de la productividad del procesador, ya que suprime el bucle de espera activa. Respecto a la diferencia con la E/S por DMA, hay que tener en cuenta que si la unidad de control del procesador está accediendo a memoria, el controlador no puede enviar el vector de interrupción por el bus de datos, siendo necesario esperar a que la unidad de control la acepte enviando la señal INTACK, que indica el reconocimiento de la interrupción, ya que como se ha expuesto anteriormente debe guardar, el contador de programa, el contenido de los registros, etc. Para que esto sea posible, se tiene que producir un cambio de contexto, para pasar a ejecutar la rutina de tratamiento de la interrupción, ya que cuando acabe esta rutina de interrupción, debe volver al lugar del programa donde lo dejó, es decir, no puede enviar la señal INTACK hasta que la instrucción en curso haya concluido, diferencia fundamental con la petición de buses de DMA que se realizaba robando uno o varios ciclos a la unidad de control, en el curso de la ejecución de la instrucción. La E/S mediante interrupciones tiene una pequeña desventaja, que es el tiempo adicional que supone el cambio de contexto, que se tiene que producir, para atender la interrupción externa. En esta forma de gestión de la E/S, la operación de E/S es arrancada por la unidad de control del procesador, dejando al controlador la realización de la operación de E/S. Cuando la información solicitada se encuentre en el puerto de E/S, el controlador envía a la unidad de control del procesador una señal de interrupción, para indicar que ya puede realizarse la transferencia de los bloques de datos, hacia la memoria, el puerto de E/S de un controlador, para que pueda funcionar de esta manera debe enviar una señal INT a la unidad de control del procesador y esperar a que esta le devuelva la señal de reconocimiento de la interrupción INTACK. Tanto la unidad de control, la memoria y los controladores periféricos, comparten los buses de datos y direcciones. BUS DE DIRECCIONES BUS DE DATOS MEMRD MEMWR IORD IOWR MEMORIA PRINCIPAL APUNTES DE SISTEMAS OPERATIVOS I UNIDAD DE CONTROL INT INTACK CONTROLADOR A. GLEZ. DEL ALBA 27 TEORÍA DE LOS SISTEMAS OPERATIVOS DISPOSITIVOS La unidad de control del procesador es la que pone el contenido de las órdenes en el Bus de Direcciones, por lo tanto, se emplearán para la realización de la operación de E/S y seleccionar la memoria intermedia de un controlador igual que para seleccionar una celda de memoria principal. La unidad de control del procesador, suspenderá el proceso que estaba realizando y se encargará la realización de la operación de E/S. En el caso de que existan varios controladores de dispositivo funcionando mediante interrupciones, debe existir un elemento hardware denominado controlador de interrupciones, que se encargue de dar una orden de prioridad a las distintas señales que le lleguen de los controladores. En este método se pueden considerar tres puntos importantes respecto a las interrupciones, ya que puede haber varios controladores interrumpiendo simultáneamente. 1. La unidad de control del procesador, debe ser capaz de identificar, que controlador ha generado la interrupción, para poder ejecutar la rutina de atención específica. 2. Determinar si se van a tratar interrupciones anidadas. 3. La unidad de control del procesador, debe ser capaz de establecer un orden de atención a las distintas interrupciones cuando estas se generen simultáneamente. Se trata de desarrollar estos puntos: 1. Para identificar la interrupción existen dos formas de determinar que controlador ha generado la interrupción: a) POLLING: Cuando la unidad de control recibe una señal de interrupción, interroga sucesivamente a cada uno de los controladores, para determinar cual de ellos ha generado la señal y en consecuencia ejecutar la rutina de atención a la interrupción. La rutina polling se diferencia de la rutina de escrutinio, utilizada en la E/S controlada por programa, en que en este caso, se tiene la seguridad de que al menos un controlador esta preparado. Este sistema es muy lento y por lo tanto se utiliza otra solución para resolver este problema, que es la vectorización. b) VECTORIZACIÓN, consiste en que el controlador del periférico envíe la señal de interrupción y simultáneamente, envía también a través del bus de datos, una clave ó código que identifica unívocamente la interrupción, a esta clave ó código, es a lo que denominamos vector de interrupción del controlador y se utiliza para reconocer dónde se encuentra en memoria la rutina de tratamiento de la interrupción. El número de bits (n) que se reserven para la identificación de los controladores, indicará el número máximo de estos que pueden conectarse directamente con vectorización (2n). Por ejemplo: si para cada controlador se reservan 5 bits, sólo puede haber 25, es decir, 32 controladores que pueden enviar vectores de interrupción, si se quiere trabajar con más habría que agruparlos y pasar por cada grupo una rutina de encuesta como polling. Una vez tomado el vector se completaría para señalar una celda de memoria, en donde residiría la rutina de tratamiento de la interrupción o incluso la dirección de la rutina. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 28 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA 2. Tratamiento de Interrupciones. Si se utiliza una serie posiciones fijas para salvar el contexto de un proceso durante la ejecución de una rutina de tratamiento de la interrupción, no se podría admitir la atención de una nueva interrupción, ya que los valores salvados quedarían perdidos. Además si el controlador no desactiva la señal de interrupción INT, podría interrumpirse el mismo de forma indefinida. Para evitar esto problemas se utiliza una instrucción, Disable Interrupt (DI), para desactivar las interrupciones y otra Enable Interrupt (EI), para activar las interrupciones. Si se permite el anidamiento de las interrupciones, es necesario disponer de estructuras de almacenamiento dinámicas de tipo LIFO, es decir pilas. Si el anidamiento no esta permitido, basta con que exista un área de memoria de tipo estático (variables ó conjuntos de variables), para almacenar el contexto de ejecución hardware en el instante en que se produce la interrupción. I1 P0 I2 I1 P0 I2 I1 P0 I1 P0 Como se puede observar en la figura cuando la unidad de control recibe la interrupción I1, almacena en la pila el estado de ejecución del proceso que se está ejecutando (P0), comienza entonces a ejecutarse la rutina de atención a la interrupción (I1), cuando esta se está ejecutando, la unidad de control recibe una nueva interrupción (I2), en ese momento guarda en la pila el estado de ejecución de la rutina de atención a I1 y comienza a ejecutar la rutina de atención a I2, cuando finaliza la ejecución de esta rutina recupera la rutina de atención I1 y continua ejecutándola, una vez que esta ha finalizado, recupera de la pila de estado de ejecución a (P0) y continua ejecutando de nuevo el proceso. 3. Prioridad en la atención a interrupciones. En el caso de que se produzcan varias interrupciones de forma simultánea, habrá que establecer un sistema de prioridades, de tal forma que solamente una esté activa. En el caso de que el sistema trabaje bajo Polling, la prioridad está implícita en la rutina de escrutinio, en este caso solo es necesario una línea de interrupciones a la cual acceden todos los controladores. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 29 TEORÍA DE LOS SISTEMAS OPERATIVOS BUS DATOS BUS DE DATOS CPU INT BUS DE DIRECCIONES INTACK CONTROLADOR 1 CONTROLADOR 2 CONTROLADOR N ..... IEI IEO IEI IEO IEI IEF ........... Cuando el sistema trabaja bajo vectorización pueden existir dos soluciones: Si todos los controladores comparten la misma línea INT a la unidad de control, la línea INTACK deberá ir pasando por todos los controladores uno tras otro. Después de la ejecución de una instrucción, si la unidad de control detecta que está activa la señal INT, entonces activa la señal INTACK. De esta forma el controlador i recibe esta señal y se la pasa al siguiente, solo si el no necesita servicio. Así la señal INTACK se propaga hasta el primero que solicita INT, siendo este el que pone su vector de interrupción en el bus de datos. De esta forma el controlador que esté más cercano en la línea de INTACK será el que tenga mayor prioridad. La segunda posibilidad sería que llegaran a la unidad de control tantas líneas INT como controladores existen. En este caso la unidad de control debe de disponer de una unidad de gestión de prioridad. Para gestionar la prioridad de los controladores, la CPU dispone de un componente, que se denomina gestor de interrupciones. El principal inconveniente de esta opción, es la limitación en cuanto al número de controladores con los puede trabajar la CPU, esta limitación será equivalente al número de líneas del gestor de interrupciones. Para solventar dicha limitación se utiliza un sistema mixto entre Polling y Vectorización, los controladores se agrupan por conjuntos y cada uno de ellos utiliza la misma línea de interrupción, cuando la CPU atiende la señal de interrupción de la línea, ejecuta una rutina Polling sobre los controladores del mismo grupo. En los grandes sistemas informáticos, se permite atender interrupciones por niveles, es decir, cada línea, podría atender de forma independiente a cualquiera de interrupciones. Para realizar esta opción, se necesita establecer una máscara, que especifique, que líneas se pueden interrumpir y cuales no. El registro de máscara de interrupciones está formado por una serie de bits, uno por cada línea de interrupción, de tal forma que cada bit corresponde a un nivel de interrupción, es decir, si está en 1 se permite y si está en 0 se inhabilita. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA 30 GESTIÓN Y ADMINISTRACIÓN DE LA ENTRADA Y SALIDA Como resumen se pueden indicar los pasos que hay que realizar en un subsistema de E/S, controlada por interrupciones. 1. La unidad de control del procesador, envía la orden de arranque al controlador especifico y continua con otro proceso. 2. Cuando la información está en el registro de memoria intermedia del controlador, este activa la señal INT. 3. Cuando la unidad de control del procesador finaliza la instrucción en curso y están permitidas las interrupciones, se realiza lo siguiente dependiendo de que las interrupciones se encuentren: Activadas (EI). Desactivadas (DI). Si están activadas, se realiza lo siguiente: Se realiza el cambio de contexto. Se identifica la fuente de interrupción: Por Polling. Por vectorización. Se ejecuta la rutina especifica de la interrupción. Finaliza la interrupción. Si están desactivadas, se impiden y se colocan en la cola de interrupciones. APUNTES DE SISTEMAS OPERATIVOS I A. GLEZ. DEL ALBA