Computing">
Tema VI Parte2
Tema VI Parte2
Tema VI Parte2
DISPOSITIVOS
TEMA VI SISTEMAS OPERATIVOS – PARTE 2
Mecanismo de las Interrupciones
Cuando la unidad de control del ordenador ejecuta un programa cargado en memoria, lo hace una
instrucción tras otra, secuencialmente. Supongamos que durante la ejecución del programa el operador
decide cancelarlo (por ejemplo, porque se da cuenta de que ha preparado mal los datos de entrada del
programa). Entonces, el operador debe teclear un mensaje en la consola para indicar al supervisor que
suspenda la ejecución del programa. Esto implica que el supervisor debe ejecutar una instrucción de leer
desde la consola para aceptar el mensaje tecleado por el operador.
¿Cómo puede dar el supervisor esta instrucción si en este momento la unidad de control está ejecutando
el programa?
Esta es una situación típica que resuelve el mecanismo de interrupciones. En nuestro ejemplo, el
operador, una vez tecleado su mensaje (mientras el programa sigue ejecutándose), pulsaría una tecla
especial de la consola (por ejemplo ESC). Al pulsar esta tecla se produce una interrupción, que consiste
en:
La unidad de control deja de ejecutar el programa.
La unidad de control pasa a ejecutar la rutina de control del supervisor.
Entonces, la rutina de control del supervisor analizará la causa de la interrupción (puede haber varias),
detectará que ha sido el operador, y dará una instrucción de leer el mensaje de la consola.
Para poder realizar las interrupciones el hardware está provisto de cierto
mecanismo que permita romper la secuencia normal de ejecución, que
llamaremos «bit de interrupción» y «máscara de interrupción», que
normalmente están a cero.
El «bit de interrupción» es un registro de un solo bit, que se pone a 1 (ON) cada
vez que surge una interrupción. El registro «máscara de interrupciones» consta
de varios bits, uno por cada tipo de interrupción que puede producirse.
Así, cuando ocurre una interrupción se pone en 1el bit correspondiente a esta
interrupción en la «máscara de interrupciones», además del «bit de
interrupciones».
Una instrucción típica es ejecutada por la unidad de control
en dos fases:
1. Fase «fetch»: extrae la instrucción de memoria e introduce
en los registros internos del procesador.
2. Fase «execute»: encamina los operandos, decodifica el
código de operación, ejecuta la instrucción y pone en el
contador de instrucciones la dirección de la siguiente.
Estas fases se completan con otra en la que la unidad de
control, después de la fase segunda («execute»), se examina el
«bit de interrupciones». Si está en OFF, ejecuta la instrucción
siguiente. Si está en ON, debe bifurcar a la rutina de control. Si
suponemos que ésta está cargada en memoria en la posición 100
por ejemplo, la unidad de control pondrá la dirección 100 en el
contador de instrucciones, para que la siguiente instrucción a
ejecutar sea la primera de la rutina de control.
Por otra parte, el programa cuya ejecución se ha interrumpido
deberá, ser reanudado una vez que la rutina de control haya
terminado de tratar la interrupción. Para ello, hay que guardar
en algún sitio de memoria (BCP) la dirección de la instrucción
siguiente a aquella en que se ha interrumpido.
TIPOS DE INTERRUPCIONES
En la «máscara de interrupciones» cada bit representa un tipo de interrupción.
Las interrupciones se pueden clasificar en las categorías siguientes:
Interrupciones de entrada/salida. Cada bit de la «máscara de interrupciones»
representa un dispositivo de E/S. Se produce una interrupción de E/S cuando se
acaba una operación de E/S.
Interrupciones de programa. Se tiene un bit en la «máscara de interrupciones»
para este tipo. Cuando la unidad de control ejecuta una instrucción SVC, lo que
hacer es poner ON este bit de la «máscara de interrupciones» y el «bit de
interrupciones». Esto provoca automáticamente una interrupción, es decir, una
transferencia de control a la rutina del supervisor, el cual, tras analizar la
interrupción, proporcionará al programa el servicio solicitado y le devolverá
control.
Interrupciones de error de programa. Cuando la unidad de control detecta un
error en la ejecución de una instrucción, provoca una interrupción de este tipo.
En la «máscara de interrupciones» reservamos tres bits para estas
interrupciones, que indican:
— Código de operación inválido.
— Operando inválido.
— Overflow aritmético.
Interrupción del operador. Causadas por pulsar teclas de la consola con ciertas
funciones específicas. Reservaremos varios bits en la «máscara de
interrupciones» que atenderán a cada una de las teclas configuradas para
interrumpir el proceso:
Máscara de Interrupciones
Son Temporizadores
Mantienen la fecha y la hora
Sirve para controlar el tiempo que los procesos pueden estar ejecutandose
19
Hardware del reloj
2 tipos
◦ Se conectan a la red de potencia y generan una interrupción con cada ciclo
de red
◦ Programables: se construyen con 3 elementos
Oscilador de cuarzo
Contador
Registro de precarga
-6
◦ Para un reloj de 1MHz (1/10 Hz, 1 pulso por microsegundo) y registro de precarga de 16 bits, se
pueden generar interrupciones desde cada microsegundo hasta 65535 microsegundos
20
Actualizar fecha y hora (I)
En ordenadores antiguos no había reloj de tiempo real
La fecha se da al arrancar. Se traduce a un nº de pulsos desde el 1 de Enero de
1970.
Con cada pulso de reloj se incrementa un contador
Problema: se puede desbordar
21
Actualizar fecha y hora (II)
Solución:
◦ Utilizar un contador más grande (Ej: 64 bits)
◦ Se guarda en segundos con un contador auxiliar para contar el nº de pulsos del segundo
actual
64 bits
◦ Se guarda en segundos el instante de arranque del sistema y un contador para los pulsos
desde el momento de arranque.
32
2 = más de 136 años
Hora y fecha Nº de pulsos del
en segundos segundo actual
22
Controlar el tiempo de ejecución
Al cargar un proceso
◦ Se actualiza un contador con los pulsos del cuanto asignado a un proceso
Cuando llega a 0
◦ Se llama al planificador
23