Red de conocimiento informático - Aprendizaje de código fuente - ¿Cuál es la solicitud de interrupción del sistema operativo? ¿Interrumpir el proceso solicitado?

¿Cuál es la solicitud de interrupción del sistema operativo? ¿Interrumpir el proceso solicitado?

1. El concepto básico de interrupción

Interrupción se refiere a cualquier evento de procesamiento urgente inusual o inesperado que ocurre en el sistema durante la ejecución de la computadora, lo que hace que la CPU interrumpa temporalmente el programa que se está ejecutando actualmente y cambie a la ejecución de el evento correspondiente. El programa de procesamiento, una vez completado el procesamiento, regresa al punto interrumpido original para continuar la ejecución o programa un nuevo proceso para su ejecución. El evento que causa una interrupción se llama fuente de interrupción. La señal de procesamiento de interrupción enviada por la fuente de interrupción a la CPU se denomina solicitud de interrupción, y la CPU la transfiere al controlador de eventos correspondiente después de recibir la solicitud de interrupción se denomina respuesta de interrupción.

En algunos casos, aunque se genera una fuente de interrupción y se emite una solicitud de interrupción, el bit de habilitación de interrupción de la palabra de estado del procesador PSW dentro de la CPU se ha borrado, por lo que no se permite que la CPU responda a la interrumpir. Esta situación se llama desactivación de interrupciones. Después de que la CPU deshabilita las interrupciones, no puede recibir interrupciones hasta que se restablezca el bit de habilitación de interrupciones de PSW. Deshabilitar interrupciones también se denomina desactivar interrupciones, y configurar el bit de habilitación de interrupciones de PSW también se denomina activar interrupciones. Activar y desactivar las interrupciones es garantizar la atomicidad de la ejecución de un determinado programa.

Otro concepto comúnmente utilizado es el enmascaramiento de interrupciones. El enmascaramiento de interrupción significa que después de que se genera una solicitud de interrupción, el sistema bloquea selectivamente algunas interrupciones y permite que se responda a otras. Sin embargo, algunas solicitudes de interrupción no se pueden enmascarar ni siquiera deshabilitar. Es decir, estas interrupciones tienen la máxima prioridad. Una vez que se realizan estas solicitudes de interrupción, la CPU debe responder de inmediato. Por ejemplo, las interrupciones causadas por cortes de energía no se pueden desactivar ni enmascarar.

2. Clasificación y prioridad de las interrupciones

De acuerdo con las necesidades del sistema para el procesamiento de interrupciones, el sistema operativo generalmente clasifica las interrupciones y asigna diferentes prioridades de procesamiento a diferentes interrupciones, de modo que cuando ocurren diferentes interrupciones al mismo tiempo, el sistema operativo Puede tratar con ellos en orden de prioridad.

Según las condiciones bajo las cuales se genera la fuente de interrupción, las interrupciones se pueden dividir en interrupciones externas e interrupciones internas. Las interrupciones externas se refieren a interrupciones externas al procesador y la memoria, incluidas las interrupciones de E/S emitidas por dispositivos de E/S y las interrupciones de señales externas (como la tecla ESC del usuario). Interrupciones de reloj causadas por varios temporizadores e interrupciones de depuración causadas por puntos de interrupción establecidos en el depurador, etc. Las interrupciones externas generalmente se denominan interrupciones en sentido estricto.

Las interrupciones internas se refieren principalmente a interrupciones generadas dentro del procesador y la memoria. Las interrupciones internas generalmente se denominan trampas o excepciones. Incluye varios errores causados ​​por operaciones del programa, como direcciones ilegales, errores de verificación, fallas de página, errores de control de acceso, desbordamientos de operaciones aritméticas, formatos de datos ilegales, división por cero, instrucciones ilegales, instrucciones privilegiadas de ejecución del programa del usuario, tiempo compartido, interrupciones de intervalos de tiempo. en el sistema y cambiar del modo de usuario al modo kernel son ejemplos de trampas.

Para responder a las interrupciones según la prioridad de la fuente de interrupción, el sistema operativo asigna diferentes prioridades a diferentes interrupciones. Por ejemplo, en los sistemas UNIX, las prioridades de interrupciones y trampas externas se dividen en ocho niveles. Para bloquear o enmascarar alarmas, la palabra de estado del procesador de la CPU, PSW, también tiene la correspondiente prioridad. Si la prioridad de la fuente de interrupción es mayor que la prioridad del PSW, la CPU responde a la solicitud de la fuente de interrupción; de lo contrario, la CPU bloquea la solicitud de interrupción de la fuente de interrupción;

La prioridad de cada fuente de interrupción se da durante el diseño del sistema y se fija cuando el sistema está en ejecución. La prioridad del procesador la establece dinámicamente el programa del sistema de acuerdo con la situación de ejecución.

Además de la diferencia en la configuración de prioridad, las interrupciones y las trampas tienen las siguientes diferencias principales:

Las trampas generalmente son causadas por las instrucciones actuales que ejecuta el procesador, mientras que las interrupciones son causado por una fuente de interrupción no relacionada con la instrucción actual. Los servicios proporcionados por el controlador de trampas son utilizados por el proceso actual, mientras que los servicios proporcionados por el controlador de interrupciones no están destinados al proceso actual.

Una vez que la CPU termina de ejecutar una instrucción, responde a una interrupción antes de que comience la siguiente instrucción y también puede responder a una trampa durante la ejecución de una instrucción. Por ejemplo, cuando la instrucción de ejecución es ilegal, aunque la instrucción ilegal ejecutada no se puede completar, la CPU aún puede procesarla.

3. Interrupción suave

El concepto de interrupción suave proviene principalmente del sistema UNIX. Las interrupciones suaves corresponden a interrupciones duras. La solicitud de interrupción correspondiente generada a través del hardware se denomina interrupción completa. Este no es el caso de las interrupciones suaves. Es un método de comunicación implementado entre procesos de comunicación simulando interrupciones duras. Después de que la fuente de interrupción envía una señal de interrupción suave, la CPU o el proceso receptor realiza el procesamiento de interrupción en el "momento apropiado" o completa la función correspondiente a la señal de interrupción suave. El "sincronismo apropiado" aquí significa que el proceso que recibe la señal de interrupción suave debe esperar hasta que el proceso receptor obtenga el procesador. Si el proceso de recepción ocupa el procesador, entonces el proceso de recepción se transferirá inmediatamente para ejecutar la función correspondiente a la señal de interrupción suave después de recibir la señal de interrupción suave.

4. Proceso de procesamiento de interrupciones

Una vez que la CPU responde a la interrupción y la transfiere al controlador de interrupciones, el sistema comienza el procesamiento de interrupciones. El proceso de procesamiento de la interrupción se describe en detalle a continuación:

1) La CPU verifica si se cumplen las condiciones para responder a la interrupción. Las condiciones para que la CPU responda a una interrupción son: hay una solicitud de interrupción desde la fuente de la interrupción y la CPU permite la interrupción. Si no se cumplen las condiciones de respuesta a la interrupción, no se puede realizar el procesamiento de la interrupción.

2) Si la CPU responde a una interrupción, la CPU apaga la interrupción, haciéndola entrar en un estado en el que no puede responder a la interrupción nuevamente.

3) Guardar la escena del proceso interrumpido. Para permitir que el proceso regrese correctamente al punto de interrupción después de que se complete el procesamiento de la interrupción, el sistema debe guardar los valores actuales de la palabra de estado del procesador PSW y el contador de programa PC. Estos valores generalmente se mantienen en una pila o registro de hardware específico.

4) Analizar la causa de la interrupción y llamar a la subrutina de procesamiento de la interrupción. Cuando ocurren múltiples solicitudes de interrupción simultáneamente, se procesa la solicitud de interrupción emitida por la fuente de interrupción con la mayor prioridad. En el sistema, para facilitar el procesamiento, generalmente se compilan diferentes subrutinas de procesamiento de interrupciones (subrutinas de procesamiento de trampas) para diferentes fuentes de interrupciones. Las direcciones de población de estas subrutinas (o las direcciones de población de instrucciones de captura) se almacenan en unidades de memoria específicas. Además, diferentes fuentes de interrupción también corresponden a diferentes palabras de estado del procesador PSW. Estos diferentes PSW se colocan en unidades de memoria correspondientes y junto con la dirección de población de la subrutina de procesamiento de interrupciones constituyen el vector de interrupción. Obviamente, dependiendo del tipo de interrupción o trampa, el sistema puede encontrar rápidamente la prioridad de la respuesta a la interrupción, la dirección de entrada de la subrutina de procesamiento de interrupciones (o instrucción de trampa) y el PSW correspondiente de la tabla de vectores de interrupción.

5) Ejecutar la subrutina de procesamiento de interrupciones. Para las trampas, en algunos sistemas, la instrucción trap se utiliza para enviar una señal de interrupción suave al proceso de ejecución actual y luego llamar a la subrutina de procesamiento correspondiente para su ejecución.

6) Salir de la interrupción, restaurar la escena del proceso interrumpido o programar un nuevo proceso para ocupar el procesador.

7) Activa las interrupciones y la CPU continúa la ejecución.

5. Programa de gestión de dispositivos y modo de interrupción

La contradicción entre la alta velocidad del procesador y la baja velocidad de los dispositivos de entrada y salida es un tema importante a resolver en la gestión de dispositivos. Para mejorar la eficiencia general, reducir el tiempo de espera de la CPU en el modo de control directo del programa y mejorar la eficiencia del trabajo paralelo del sistema, es necesario utilizar el modo de interrupción para controlar los dispositivos de entrada y salida y la transferencia de datos entre la memoria y la CPU.

En términos de estructura de hardware, este método requiere una línea de solicitud de interrupción correspondiente entre la CPU y el dispositivo de entrada y salida (o controlador), y una línea de solicitud de interrupción correspondiente en el registro de estado de control de la entrada y controlador del dispositivo de salida.