Articulo de referencia

Nivel de prioridad de interrupción

El nivel de prioridad de interrupción ( IPL ) es una parte del estado actual de interrupción del sistema , que indica las solicitudes de interrupción que se aceptarán en ese mom...

El nivel de prioridad de interrupción ( IPL ) es una parte del estado actual de interrupción del sistema , que indica las solicitudes de interrupción que se aceptarán en ese momento. El IPL puede indicarse en hardware mediante los registros de un controlador de interrupciones programable , o en software mediante una máscara de bits o un valor entero y el código fuente de los subprocesos. [1]

Descripción general

Una IPL basada en números enteros puede ser tan pequeña como un solo bit, con solo dos valores: 0 (todas las interrupciones habilitadas) o 1 (todas las interrupciones deshabilitadas), como en el caso de MOS Technology 6502. Sin embargo, algunas arquitecturas permiten un rango mayor de valores, donde cada valor habilita solicitudes de interrupción que especifican un nivel superior, mientras que bloquea las del mismo nivel o de un nivel inferior.

Asignar diferentes prioridades a las solicitudes de interrupción puede ser útil para intentar equilibrar el rendimiento del sistema frente a la latencia de las interrupciones . Algunos tipos de interrupciones necesitan una respuesta más rápida que otros, pero la cantidad de procesamiento puede no ser grande, por lo que tiene sentido asignar una prioridad más alta a ese tipo de interrupción. [2]

El control del nivel de interrupción también se utilizó para sincronizar el acceso a las estructuras de datos del núcleo. De este modo, el controlador de interrupciones del planificador de nivel 3 elevaba temporalmente el IPL a 7 antes de acceder a cualquier estructura de datos del planificador y luego lo bajaba a 3 antes de cambiar de contexto de proceso. Sin embargo, no se permitía que un controlador de interrupciones redujera el IPL por debajo del valor en el que se había introducido, ya que hacerlo podría destruir la integridad del sistema de sincronización.

Por supuesto, los sistemas multiprocesador añaden sus complicaciones, que no se abordan aquí.

Independientemente de lo que admita el hardware, los sistemas típicos de tipo UNIX solo utilizan dos niveles: el mínimo (todas las interrupciones deshabilitadas) y el máximo (todas las interrupciones habilitadas). [3] [4]

IPL de OpenVMS

Como ejemplo de uno de los sistemas de manejo de IPL más elaborados que se hayan implementado, la computadora VAX y el sistema operativo VMS asociado admiten 32 niveles de prioridad, de 0 a 31. Las prioridades 16 y superiores son para solicitudes de hardware externo, mientras que los valores inferiores a 16 están disponibles para interrupciones de software (utilizadas internamente por el sistema operativo para programar sus propias actividades). No se utilizan todos los valores, pero estos son algunos de los más importantes:

  • El nivel 31 es para la interrupción por "fallo de energía".
  • El nivel 24 es para la interrupción del reloj. Tenga en cuenta que esta es una prioridad más alta que las interrupciones de E/S.
  • Los niveles 20-23 se utilizan para dispositivos de E/S.
  • Los niveles 8-11 se utilizan para interrupciones de bifurcación . Cuando un controlador recibe una interrupción de dispositivo (prioridad 20-23), se supone que debe realizar el menor procesamiento posible con esa alta prioridad; en cambio, si es necesario realizar operaciones que consumen mucho tiempo, estas se deben posponer solicitando una interrupción de software en el rango 8-11; cuando se activa esta interrupción, se reanudará el procesamiento posterior. Similares a esto son las "mitades inferiores" y sus sucesoras en el núcleo Linux .
  • El nivel 7 se utiliza para sincronizar el acceso a las estructuras de datos del programador de procesos.
  • El nivel 4 se utiliza para tareas de posprocesamiento de E/S, es decir, la finalización de una solicitud QIO , incluida la devolución de resultados al proceso de aplicación.
  • El nivel 3 se utiliza para la interrupción de reprogramación de procesos. Cualquier código que se ejecute en niveles de interrupción superiores no puede asumir que había un contexto de proceso actual (ya que podría estar en curso una reprogramación de proceso). En particular, no se permiten errores de página en este nivel ni en niveles superiores.
  • El nivel 2 se utiliza para sincronizar el acceso a las estructuras de datos por proceso. Cada vez que el núcleo necesita acceder al contexto de un proceso, envía a ese proceso un AST especial del núcleo que se ejecuta en el contexto del proceso en la segunda IPL.
  • El nivel 0 es el nivel normal para la ejecución de código sin interrupciones, incluido el código de aplicación normal.

El hardware Alpha contiene compatibilidad nativa con IPL. Cuando OpenVMS se trasladó a Itanium en 2001, el esquema de IPL se simuló utilizando funciones proporcionadas por el hardware de Itanium.

Véase también

Referencias

  1. ^ "Entender las interrupciones". www.ibm.com . Consultado el 22 de agosto de 2024 .
  2. ^ "Diferencia entre IRQ y nivel de prioridad de interrupción". Super User . Consultado el 22 de agosto de 2024 .
  3. ^ "Prioridades de interrupción: ¿qué significa realmente?". Electrical Engineering Stack Exchange . Consultado el 22 de agosto de 2024 .
  4. ^ "Interrupciones prioritarias | (Sondeo de software y conexión en cadena)". GeeksforGeeks . 2017-07-28 . Consultado el 2024-08-22 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Nivel_de_prioridad_de_interrupción&oldid=1242058058"