En la arquitectura de la 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 excepciones de doble falla , que a su vez maneja las excepciones que ocurren al intentar invocar un controlador de excepciones regular.
Los procesadores x86 que comienzan con 80286 provocarán un ciclo de apagado cuando se encuentre una falla triple. Esto generalmente hace que el hardware de la placa base inicie un reinicio de la CPU, lo que, a su vez, hace que toda la computadora se reinicie. [1] [2]
Posibles causas de fallas triples
Las fallas triples indican un problema con el kernel del sistema operativo o los controladores de dispositivo . En los sistemas operativos modernos, una falla triple generalmente es causada por un desbordamiento o subdesbordamiento del búfer en un controlador de dispositivo que escribe sobre la tabla de descriptores de interrupciones (IDT). Si el IDT está dañado, cuando ocurra la próxima interrupción , el procesador no podrá llamar ni al manejador de interrupciones necesario ni al manejador de doble falla porque los descriptores en el IDT están corruptos. [ 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 desencadenó la primera excepción.
Cuando se utiliza Intel VT-x , una falla triple provoca una salida de 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 modo protegido ahora omnipresente . Sin embargo, el 286 no podría volver al " modo real " básico compatible con 8086 sin reiniciar el procesador, lo que solo se puede hacer usando hardware externo a la CPU. En 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 afirmaría el pin RESET del procesador. Sin embargo, se descubrió que la falla triple intencional de la CPU causaba que la transición ocurriera mucho más rápido y de manera más limpia, lo que permite que los sistemas operativos multitarea cambien de un lado a otro a alta velocidad. [3]
Algunos kernels de sistemas operativos, como Linux , todavía usan fallas triples como último esfuerzo en su proceso de reinicio si falla un reinicio de ACPI . Esto se hace estableciendo 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 una falla triple.
Referencias
- ↑ a b Collins, Robert (2000). "Triple fallo de la CPU" . Mejoras de la productividad y trucos de programación . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 22 de noviembre de 2015 .
- ^ Collins, Robert (2000). "RESET ELEGANTE" . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 9 de septiembre de 2017 .
- ^ Osterman, Larry (8 de febrero de 2005). "Reducción de trampas de llamada al sistema más rápida" . WebLog de Larry Osterman . Blogs de MSDN . Archivado desde el original el 9 de septiembre de 2017 . Consultado el 23 de julio de 2010 .