Una interrupción entre procesadores ( IPI ) es un tipo especial de interrupción mediante la cual un procesador puede interrumpir a otro procesador en un sistema multiprocesador si el procesador que interrumpe requiere la acción del otro procesador. Las acciones que pueden solicitarse incluyen:
- descargas de cachés de unidades de gestión de memoria , como búferes de búsqueda de traducción , en otros procesadores cuando un procesador cambia las asignaciones de memoria;
- detenerse cuando el sistema está siendo apagado por un procesador.
Mecanismo
La opción M65MP de OS / 360 utilizó la función de control directo del S / 360 para generar una interrupción en otro procesador; en S / 370 y sus sucesores, incluido z / Architecture , la instrucción SIGNAL PROCESSOR proporciona una interfaz más formalizada. La documentación para algunos sistemas operativos de IBM se refiere a esto como un toque de hombro.
En las computadoras compatibles con IBM PC que utilizan el controlador de interrupción programable avanzado (APIC), la señalización IPI a menudo se realiza mediante el APIC. Cuando una CPU desea enviar una interrupción a otra CPU, almacena el vector de interrupción y el identificador del APIC local del objetivo en el Registro de comando de interrupción (ICR) de su propio APIC local. A continuación, se envía un mensaje a través del bus APIC al APIC local del objetivo, que por lo tanto emite una interrupción correspondiente a su propia CPU.
Ejemplos de
En un sistema multiprocesador que ejecuta Microsoft Windows , un procesador puede interrumpir a otro procesador por las siguientes razones, además de las enumeradas anteriormente:
- poner en cola una interrupción DISPATCH_LEVEL para programar un hilo en particular para su ejecución;
- punto de interrupción del depurador del kernel.
Ver también
Referencias
- ↑ Matt (28 de abril de 2002). "Comprensión de IRQL" . Consultado el 6 de diciembre de 2014 .