Jump to content

英文维基 | 中文维基 | 日文维基 | 草榴社区

Double fault

From Wikipedia, the free encyclopedia

On the x86 architecture, a double fault exception occurs if the processor encounters a problem while trying to service a pending interrupt or exception. An example situation when a double fault would occur is when an interrupt is triggered but the segment in which the interrupt handler resides is invalid. If the processor encounters a problem when calling the double fault handler, a triple fault is generated and the processor shuts down.

As double faults can only happen due to kernel bugs, they are rarely caused by user space programs in a modern protected mode operating system, unless the program somehow gains kernel access (some viruses and also some low-level DOS programs). Other processors like PowerPC or SPARC generally save state to predefined and reserved machine registers. A double fault will then be a situation where another exception happens while the processor is still using the contents of these registers to process the exception. SPARC processors have four levels of such registers, i.e. they have a 4-window register system.

See also

[edit]

Further reading

[edit]
  • Collins, Robert (2000). "Triple Faulting the CPU". Productivity Enhancements and Programming Tricks. Archived from the original on 2017-09-09. Retrieved 2015-11-22.*
  • Osterman, Larry (2005-02-08). "Faster Syscall Trap redux". Larry Osterman's WebLog. MSDN Blogs. Archived from the original on 2017-09-09. Retrieved 2010-07-23.