stringtranslate.com

Triple falta

En la arquitectura de computadora x86 , una falla triple es un tipo especial de excepción generada por la CPU cuando ocurre una excepción mientras la CPU intenta invocar el controlador de excepción de doble falla , que a su vez maneja las excepciones que ocurren mientras intenta invocar un controlador de excepción normal.

Los procesadores x86 a partir del 80286 provocarán un ciclo de apagado cuando se detecte un triple fallo. Esto suele provocar que el hardware de la placa base inicie un reinicio de la CPU, lo que, a su vez, hace que se reinicie todo el equipo. [1] [2]

Posibles causas de fallas triples

Los fallos triples indican un problema con el núcleo del sistema operativo o los controladores de dispositivos . En los sistemas operativos modernos, un fallo triple suele deberse a un desbordamiento o subdesbordamiento del búfer en un controlador de dispositivo que sobrescribe la tabla de descriptores de interrupciones (IDT). Si la IDT está dañada, cuando se produzca la siguiente interrupción , el procesador no podrá llamar ni al controlador de interrupciones necesario ni al controlador de doble fallo porque los descriptores de la IDT están dañados. [ cita requerida ]

Maquinas virtuales

En QEMU , una falla triple produce un volcado de la máquina virtual en la consola, con el puntero de instrucción establecido en la instrucción que activó la primera excepción.

En VirtualBox , un triple error hace que se muestre un error de Meditación del Gurú al usuario. Una máquina virtual en este estado tiene la mayoría de las funciones deshabilitadas y no se puede reiniciar. Si el depurador de VirtualBox está abierto, se imprime un mensaje que indica que se ha producido un triple error, seguido de un volcado de registros y el desensamblaje de la última instrucción ejecutada, similar a la salida del rgcomando del depurador.

Al utilizar Intel VT-x , una falla triple provoca la salida de la VM, con motivo de salida 2. El motivo de salida se guarda en el VMCS y puede ser manejado por el software VMM.

Otros usos

El procesador Intel 80286 fue el primer procesador x86 en introducir el ahora omnipresente modo protegido . Sin embargo, el 286 no podía volver al " modo real " básico compatible con el 8086 sin reiniciar el procesador, lo que solo se puede hacer utilizando hardware externo a la CPU. En el IBM AT y compatibles, el método documentado para hacer esto era utilizar una función especial en el controlador de teclado Intel 8042 , que activaría el pin RESET del procesador. Sin embargo, se descubrió que provocar un triple fallo intencional en la CPU hacía que la transición ocurriera mucho más rápido (0,8 milisegundos en lugar de 15+ milisegundos) y de forma más limpia, lo que permitía a los sistemas operativos multitarea cambiar de un lado a otro a alta velocidad. [3]

Algunos núcleos de sistemas operativos, como Linux , aún utilizan el triple fallo como último recurso en su proceso de reinicio si falla un reinicio ACPI . Esto se hace configurando el registro IDT en 0 y luego emitiendo una interrupción. [1] Dado que la tabla ahora tiene una longitud de 0, todos los intentos de acceder a ella fallan y el procesador genera un triple fallo.

Referencias

  1. ^ ab Collins, Robert (2000). "Triple Faulting the CPU". Mejoras de productividad y trucos de programación . Archivado desde el original el 2017-09-09 . Consultado el 2015-11-22 .
  2. ^ Collins, Robert (2000). "ELEGANT RESET". Archivado desde el original el 2017-09-09 . Consultado el 2017-09-09 .
  3. ^ Osterman, Larry (8 de febrero de 2005). "Reedición de Faster Syscall Trap". Blog de Larry Osterman . Blogs de MSDN . Archivado desde el original el 9 de septiembre de 2017. Consultado el 23 de julio de 2010 .