Interrumpir

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 27 de abril de 2022; la verificación requiere 1 edición .

La interrupción es uno de los conceptos básicos de la tecnología informática , que radica en el hecho de que cuando ocurre un evento, el control se transfiere a un procedimiento especial llamado controlador de interrupción (ISR, ing.  Interrupt Service Routine ) [1] . A diferencia de los saltos condicionales e incondicionales, se puede llamar a una interrupción en cualquier parte del programa, incluso si la ejecución del programa está suspendida, y generalmente es causada por eventos externos al programa. Después de realizar las acciones necesarias, el controlador de interrupciones, por regla general, devuelve el control al programa interrumpido [2] .

Cita

Como regla general, las interrupciones se utilizan para trabajar con dispositivos periféricos. Por ejemplo, debe enviar una solicitud para cargar datos del disco a la memoria y, mientras la carga está en curso, realizar otras operaciones o detener la ejecución hasta que se reciba una interrupción y, una vez completada la descarga, vaya al controlador de interrupciones. que comenzará a procesar los datos entrantes [1] . Con la ayuda de las interrupciones, también se puede implementar la multitarea , la depuración de programas , la emulación de ciertos dispositivos, etc.

Especies

Dependiendo de la fuente de la señal de interrupción, se dividen en:

El término "trampa" ( inglés  trap ) se utiliza a veces como sinónimo del término "interrupción" o "interrupción interna". Como regla general, el uso se establece en la documentación del fabricante de una arquitectura de procesador particular.

Enmascaramiento

Las interrupciones externas, según la posibilidad de prohibición, se dividen en:

Los controladores de interrupciones generalmente se escriben de tal manera que su tiempo de procesamiento sea lo más corto posible, ya que otras interrupciones no pueden procesarse durante su operación, y si hay muchas de ellas (especialmente de una fuente), entonces pueden perderse. Windows usa el mecanismo de llamada a procedimiento retrasado para hacer esto .

Priorización

Hasta el final del procesamiento de la interrupción, generalmente se establece una prohibición de procesar este tipo de interrupción para que el procesador no ingrese al ciclo de procesamiento de una interrupción. La priorización significa que todas las fuentes de interrupción se dividen en clases y a cada clase se le asigna su propio nivel de prioridad de solicitud de interrupción [3] .

Tabla de interrupciones

Un vector de interrupción  es un número asignado por el dispositivo que identifica el controlador de interrupción correspondiente. Los vectores de interrupción se combinan en una tabla de vectores de interrupción que contiene las direcciones de los controladores de interrupción [4] . La ubicación de la mesa depende del tipo y modo de funcionamiento del procesador.

Transparencia

Se supone que la interrupción debe proporcionar transparencia, es decir, con la excepción de los datos que deben cambiarse en función del propósito de la interrupción, una vez finalizado el procesamiento de la interrupción, el procesador debe volver al mismo estado en el que se encontraba. fue en el momento de su llamada [5] . En el caso más simple, basta con guardar el estado de todos los registros del procesador en la pila.

Interrupción de software

Una interrupción de software es una interrupción síncrona que puede ser implementada por un programa usando una instrucción especial.

En los procesadores x86, para llamar explícitamente a una interrupción síncrona, existe una instrucciónInt cuyo argumento es el número de interrupción (de 0 a 255). En las computadoras compatibles con IBM PC , algunas interrupciones son procesadas por las rutinas del BIOS almacenadas en la ROM , y la interrupción sirve como una interfaz para acceder a un servicio proporcionado por el BIOS. Además, las interrupciones pueden ser atendidas por el BIOS de las tarjetas de expansión (por ejemplo, tarjetas de red o de video ), el sistema operativo e incluso los programas ordinarios (de aplicación) que están constantemente en la memoria mientras se ejecutan otros programas (los llamados programas residentes). ). A diferencia del modo real , en el modo protegido de los procesadores x86, los programas ordinarios no pueden atender interrupciones, esta función está disponible solo para el código del sistema (sistema operativo).

MS-DOS utiliza interrupciones numeradas de 20h a 3Fh para interactuar con sus módulos y programas de aplicación (los números se dan en notación hexadecimal , como es habitual cuando se programa en lenguaje ensamblador x86 ). Por ejemplo, el acceso al conjunto principal de funciones de MS-DOS se realiza mediante la ejecución de una instrucción Int 21h(en este caso, el número de función y sus argumentos se transfieren en registros ). Esta asignación de números de interrupción no está cableada, y otros programas pueden instalar sus propios controladores de interrupción en lugar de o encima de los controladores existentes instalados por MS-DOS u otros programas, que generalmente se usan para cambiar la funcionalidad o expandir la lista de funciones del sistema. Los virus también aprovechan esta oportunidad .

Notas

  1. 1 2 Tanenbaum, 2018 , pág. 452.
  2. Pogorely, 1989 , pág. 56.
  3. Tanenbaum, 2018 , pág. 454=456.
  4. Tanenbaum, 2018 , pág. 453.
  5. Tanenbaum, 2018 , pág. 454.

Literatura