Error de protección general


Una falla de protección general ( GPF ) en las arquitecturas de conjunto de instrucciones (ISA) x86 es una falla (un tipo de interrupción ) iniciada por mecanismos de protección definidos por ISA en respuesta a una violación de acceso causada por algún código en ejecución, ya sea en el kernel o en un programa de usuario. El mecanismo se describe por primera vez en los manuales y hojas de datos de Intel para la CPU Intel 80286 , que se introdujo en 1983; también se describe en la sección 9.8.13 del manual de referencia del programador Intel 80386 de 1986. Un fallo de protección general se implementa como una interrupción ( vector número 13 (0Dh)). AlgunosLos sistemas operativos también pueden clasificar algunas excepciones no relacionadas con infracciones de acceso, como excepciones de código de operación ilegales , como fallas de protección generales, aunque no tengan nada que ver con la protección de la memoria. Si una CPU detecta una violación de protección, deja de ejecutar el código y envía una interrupción GPF. En la mayoría de los casos, el sistema operativo elimina el proceso fallido de la cola de ejecución, señala al usuario y continúa ejecutando otros procesos. Sin embargo, si el sistema operativo no detecta la falla de protección general, es decir, se produce otra violación de protección antes de que el sistema operativo regrese de la interrupción GPF anterior, la CPU señala una falla doble y detiene el sistema operativo. Si otro fracaso más (falla triple ), la CPU no puede recuperarse; desde 80286, la CPU entra en un estado de detención especial llamado "Apagado", del que solo se puede salir mediante un reinicio de hardware . IBM PC AT , el primer sistema compatible con PC que contiene un 80286, tiene hardware que detecta el estado de apagado y reinicia automáticamente la CPU cuando ocurre. Todos los descendientes de PC AT hacen lo mismo, por lo que en una PC, una falla triple provoca un reinicio inmediato del sistema.

En Microsoft Windows , la falla de protección general se presenta con un lenguaje variado, dependiendo de la versión del producto:

Un problema causó que el programa no funcionara correctamente. Windows cerrará el programa y le notificará si hay una solución disponible.

Windows 11 ya no hace esto. Cierra aleatoriamente el programa si experimenta una falla de protección general

Sin embargo, muchos sistemas operativos modernos implementan sus esquemas de control de acceso a la memoria a través de la paginación en lugar de la segmentación, por lo que a menudo ocurre que las referencias de memoria no válidas en sistemas operativos como Windows se informan a través de fallas de página en lugar de fallas de protección generales. Los sistemas operativos suelen proporcionar una capa de abstracción (como el manejo de excepciones o señales) que oculta cualquier mecanismo interno del procesador que se haya utilizado para generar un error de acceso a la memoria de un programa, con el fin de proporcionar una interfaz estándar para manejar muchos tipos diferentes de errores generados por el procesador. condiciones de error

En términos de la arquitectura x86, las fallas generales de protección son específicas de la protección basada en segmentación cuando se trata de accesos a la memoria. Sin embargo, las fallas de protección general todavía se usan para informar otras violaciones de protección (aparte de las violaciones de acceso a la memoria) cuando se usa la paginación, como el uso de instrucciones a las que no se puede acceder desde el nivel de privilegio actual (CPL).


Mensaje de error para una falla de protección general en Windows 3.1x
Ejemplo de mensaje de error para una falla de protección general en Windows 3.1x