stringtranslate.com

Fallo de protección general

Un fallo de protección general ( GPF ) en las arquitecturas de conjunto de instrucciones (ISA) x86 es un fallo (un tipo de interrupción ) iniciado 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 núcleo 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 presentó 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 (número de vector 13 (0Dh)). Algunos sistemas operativos también pueden clasificar algunas excepciones no relacionadas con violaciones de acceso, como excepciones de código de operación ilegales , como fallos de protección general, 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 que falla de la cola de ejecución, envía una señal al usuario y continúa ejecutando otros procesos. Sin embargo, si el sistema operativo no logra detectar el fallo de protección general, es decir, ocurre otra violación de protección antes de que el sistema operativo regrese de la interrupción GPF anterior, la CPU envía una señal de doble fallo , deteniendo el sistema operativo. Si ocurre otro fallo más ( triple fallo ), 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 . El 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 del PC AT hacen lo mismo, por lo que en un PC, un triple fallo provoca un reinicio inmediato del sistema.

Comportamiento específico

Microsoft Windows

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

En Windows 95, 98 y Me, hay un mensaje de error alternativo, que se utiliza principalmente con programas de Windows 3.x: "Se ha producido un error en el programa. Para seguir trabajando de todas formas, haga clic en Ignorar y guarde el trabajo en un archivo nuevo. Para salir de este programa, haga clic en Cerrar. Perderá la información que haya introducido desde la última vez que guardó el trabajo". Al hacer clic en "Cerrar", aparecerá uno de los mensajes de error anteriores, según la versión de Windows. "Ignorar" también provoca esto a veces.

Unix

En Linux y otros sistemas Unix , los errores se informan por separado (por ejemplo, error de segmentación para errores de memoria).

Errores de memoria

En los errores de memoria, el programa que comete la falla accede a una memoria a la que no debería acceder. Algunos ejemplos son:

Sin embargo, muchos sistemas operativos modernos implementan sus esquemas de control de acceso a memoria mediante paginación en lugar de segmentación, por lo que a menudo sucede que las referencias de memoria no válidas en sistemas operativos como Windows se informan mediante errores de página en lugar de errores de protección general. 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 memoria de un programa, con el fin de proporcionar una interfaz estándar para manejar muchos tipos diferentes de condiciones de error generadas por el procesador.

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

Si bien en teoría es posible que un sistema operativo utilice tanto paginación como segmentación, en su mayoría los sistemas operativos comunes suelen depender de la paginación para la mayor parte de sus necesidades de control de acceso a la memoria.

Errores de privilegio

Existen algunas funciones de un ordenador que están reservadas para el uso exclusivo del sistema operativo . Si un programa que no forma parte del sistema operativo intenta utilizar una de estas funciones, puede provocar un fallo de protección general.

Además, existen ubicaciones de almacenamiento que están reservadas tanto para el sistema operativo como para el propio procesador. Como consecuencia de su reserva, son de solo lectura y un intento de escribir datos en ellas por parte de un programa sin privilegios produce un error.

Causas técnicas de averías

El procesador activa fallas de protección general cuando encuentra una instrucción protegida que excede el nivel de permiso de la tarea que se está ejecutando actualmente, ya sea porque un programa en modo usuario está intentando ejecutar una instrucción protegida o porque el sistema operativo ha emitido una solicitud que pondría al procesador en un estado indefinido.

Los sistemas operativos modernos detectan y gestionan los fallos de protección general. Por lo general, si el fallo se originó en un programa de modo usuario, el programa de modo usuario se cierra. Sin embargo, si el fallo se originó en un controlador del sistema central o en el propio sistema operativo, el sistema operativo suele guardar la información de diagnóstico en un archivo o en la pantalla y deja de funcionar. Reinicia el equipo o muestra una pantalla de error , como una pantalla azul de la muerte o un pánico del kernel .

Se excedieron los límites del segmento

Los límites de segmento se pueden superar:

Permisos de segmento violados

Los permisos de segmento pueden ser violados por:

Segmentos cargados ilegalmente

Esto puede ocurrir cuando:

Traspuesta

Pueden ocurrir fallas en la estructura del segmento de estado de tarea (TSS) cuando:

Misceláneas

Otras causas de fallas de protección general son:

Referencias

  1. ^ "Solución de problemas de "Error de aplicación irrecuperable" en DrWatson". Soporte . Microsoft . 27 de febrero de 2014.
  2. ^ "Página 223" . Consultado el 24 de septiembre de 2023 .

Lectura adicional