2. Estado de los Recursos
Los posibles estados que puede tener un proceso son ejecución, bloqueado y listo:
Ejecución, es un proceso que está haciendo uso del procesador.
Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo.
Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.
3. Procesamiento de Interrupciones
Es un evento que altera la secuencia en que el procesador ejecuta las instrucciones.
Las interrupciones pueden ser:
− Sincrónicas: son las generadas por la CPU al ejecutar instrucciones
− Asincrónicas: son las generadas por otros dispositivos y no están alineadas al clock del
sistema
Intel designa como excepciones e interrupciones a las sincrónicas o asincrónicas
respectivamente
4. Clases de Interrupciones
Interrupciones de programa: Generadas por alguna condición que se produce como resultado de
la ejecución de una instrucción, como el desbordamiento aritmético, la división por cero, el
intento de ejecutar una instrucción ilegal de la máquina, o una referencia a una zona de memoria
fuera del espacio permitido al usuario.
Interrupciones de reloj: Generadas por el reloj interno del sistema. Esto permite al sistema
operativo llevar a cabo ciertas funciones con determinada regularidad, por ejemplo, el no permitir
que ciertos procesos monopolicen el sistema.
Interrupciones de entrada/salida: Generadas por los controladores de entrada/salida, para indicar
que una operación ha terminado normalmente o para indicar diversas condiciones de error.
Interrupciones de reinicio: Ocurre cuando se presiona el botón de reinicio o llega desde otro
procesador la instrucción de Reinicio.
Interrupciones de verificación de la máquina.: Ocasionadas por el mal funcionamiento del
hardware o por fallas tales como un corte de energía.
5. Habilitación de las Interrupciones
La CPU tiene la capacidad de aceptar o no los pedidos de interrupción de los controladores de E/S.
Esta capacidad está implementada de dos maneras, una general y otra selectiva, a las que
denominaremos enmascaramiento y deshabilitación, sólo a los efectos de distinguirlas en la
denominación.
enmascaramiento: en este caso la CPU posee la propiedad de poder inhibir la aceptación de todas las
solicitudes de interrupción, sin importar de cuál controlador provengan.
Esto se realiza a través del valor de un bit de máscara de interrupción, normalmente perteneciente al
registro de estado de la CPU. La CPU para determinar si hay un pedido efectivo de interrupción hace
el AND de la señal de pedido interno de INT con el valor de este bit y utiliza este resultado para
tomar la decisión. Si el bit está en 0 no existirá un pedido efectivo (por más que haya controladores
de E/S solicitando interrupción). Si está en 1 los requerimientos de interrupción que hubiera serán
procesados. El valor de este bit se cambia mediante instrucciones específicas del set de instrucciones
del procesador. A estas instrucciones las denominaremos enable y disable.
6. Habilitación de las Interrupciones
En un lenguaje de alto nivel las representaremos por los procedimientos enable() y
disable(). La CPU pone automáticamente a 0 este bit al invocar a la rutina de servicio de la
interrupción. Por ello una rutina de interrupción comienza su ejecución con las
interrupciones deshabilitadas y así continuarán a menos que explícitamente sean habilitadas
por el código de la propia rutina. La instrucción que provoca la finalización de la rutina de
interrupción y el retorno a la ejecución del programa interrumpido vuelve a recuperar el
valor anterior del. También es de señalar que cuando una CPU comienza a también arranca
con las interrupciones enmascaradas (deshabilitadas).
En todas las CPUs existe una entrada, independiente de la INT, denominada NMI (por Non
Maskable Interrupt) que trabaja en forma independiente de la máscara de inhibición y un
pedido de interrupción que por ella sea presentado será siempre procesado. La idea de esta
entrada es conectar a ella pedidos de interrupción críticos (tales como la falla de la fuente
de alimentación ó la detección de un error de paridad en la memoria). En la práctica la
arquitectura de los computadores tipo PC no la utilizan.
7. Inhabilitación de las Interrupciones
En este caso se actúa sobre los controladores de E/S en forma individual, de forma
de inhibir su eventual pedido de interrupción. Los controladores de E/S tienen
habitualmente un bit en su registro de CONTROL que actúa como máscara para su
salida de pedido de interrupción.
De hecho la salida tendrá el valor resultante de la ecuación:
salida INT = bit INT registro de ESTADO AND bit MASK_INT registro de
CONTROL
Notemos que el bit que refleja la condición de "pedido de interrupción pendiente"
del registro ESTADO sigue reflejando si el controlador requiere de la intervención
de la CPU. Lo que sucede es que la salida de hardware hacia la CPU queda
condicionada al valor del bit de habilitación del registro CONTROL. Este
mecanismo permite al programador tener poder de decisión selectivo sobre qué
controladores de E/S podrán generar pedidos de interrupción y cuáles no.
8. Inhabilitación de las Interrupciones
El bit MASK_INT descripto inhibe totalmente la generación de interrupciones por parte del
controlador de E/S. Algunos controladores de E/S disponen también de otros bits de
máscara que actúan a nivel diferenciado sobre las distintas posibles condiciones que
generan interrupciones. Por ejemplo en un controlador de comunicaciones se pueden
generar interrupciones por distintos motivos: recepción de un carácter, error en la línea de
comunicaciones, carácter transmitido, cambio en las líneas de control de la comunicación,
etc. y el controlador puede tener bits que inhiban en forma individual la generación de
solicitudes de interrupción asociadas a cada condición.
9. Núcleo del Sistema Operativo
Todas las operaciones que implican procesos son controladas por una porción del sistema operativo, el cual es
llamado su núcleo o centro. El núcleo representa, solamente, una pequeña porción del código de todo el sistema
operativo, pero se encuentra entre los códigos de más amplio uso.
Por razón, el núcleo suele permanecer en el almacenamiento primario, mientras otras porciones del sistema
operativo son transportadas de un lado a otro, entre el almacenamiento primario y el secundario, según las
necesidades. Una de las funciones más importantes incluidas en el núcleo es el proceso de interrupciones.
En los grandes sistemas de múltiples usuarios hay una corriente constante de interrupciones dirigidas al
procesador. La rápida respuesta a estas interrupciones es esencial para mantener bien utilizados los recursos del
sistema, y para proveer tiempos de respuesta aceptables a los usuarios interactivos. El núcleo inhabilita las
interrupciones mientras responde a una interrupción; las interrupciones son habilitadas de nuevo después de
completar el proceso de una interrupción.
10. Cambio de contexto
El sistema operativo incluye rutinas llamadas manipuladores de interrupciones (IH) para
procesar cada tipo diferente de interrupción. Hay manipuladores de interrupciones (IH):
el IH SVC, el lH de entrada/salida, el IH externo, el IH de reinicio, el IH de verificación
de programa y el IH de verificación de la maquina. Cuando se produce una interrupción,
el sistema operativo salva el estado del proceso interrumpido y dirige el control al
manipulador de interrupciones adecuado. Esto se realiza mediante una técnica llamada
cambio de contexto. Las palabras de estado de programa (PSW) controlan el orden de
ejecución de las instrucciones y contiene información sobre el estado del proceso. Hay
tres tipos de PSW: PSW actual, PSW nueva y PSW vieja.
La dirección de la siguiente instrucción que va a ser ejecutada se guarda en la PSW
actual, que también indica los tipos de interrupciones actualmente habilitadas, y las
actualmente inhabilitadas. El CPU permite que tengan lugar interrupciones
habilitadas, las interrupciones inhabilitadas permanecen pendientes, o son ignoradas en
algunos casos. El procesador nunca puede ser inhabilitado para interrupciones SVC de
reinicio, o algunos tipos de interrupciones de programas. Pronto quedarán claras las
razones para la habilitación e inhabilitación de interrupciones.
11. Cambio de Contexto
En un sistema uniprocesador existe solamente una PSW actual, pero hay seis PSW
nuevas y seis PSW viejas (una para cada tipo de interrupción). La PSW nueva para un
tipo de interrupción dado contiene la dirección permanente en el hardware, donde reside
el manipulador de interrupciones para este tipo especifico. Cuando ocurre una
interrupción (Fig. 3.5), Si el procesador no está inhabilitado para este tipo de
interrupción, entonces el hardware cambia las PSW en los casos siguientes:
Al almacenar la PSW actual en la PSW vieja, para ese tipo de interrupción,
Al almacenar la PSW nueva para ese tipo de interrupción, dentro de la PSW actual.
Después de este intercambio de PSW, la PSW actual contiene la dirección del
manipulador de interrupción adecuado. El manipulador de interrupciones procesa ahora
la interrupción.
Cuando se completa el proceso de la interrupción, el CPU es enviado al proceso que
estaba en ejecución en el momento de la interrupción, o al proceso de listo de más alta
prioridad. Esto depende de sí el proceso de interrupción es apropiado
12. PSW
En computación, el program status word (PSW) es un área de la
memoria o registro que contiene información sobre el estado de un
programa utilizado por el sistema operativo
El PSW contiene un campo de error y un código de condición. La
longitud del PSW depende de la arquitectura. En general, el PSW es
utilizado para controlar la ejecución secuencial de instrucciones e
indicar el estado del sistema en relación al programa en ejecución.
Almacenando el PSW durante una interrupción, el estado de
la CPU puede ser preservado para una posterior inspección.
Cargando un nuevo PSW o una parte de un PSW, el estado de la
CPU puede ser inicializado o modificado.