Nell'architettura x86. una doppia eccezione accade se il processore incontra un problema nel risolvere un interrupt oppure un'eccezione in attesa. Un esempio di situazione in cui si potrebbe verificare una doppia eccezione è in caso venga invocato un interrupt ma il segmento di memoria contenente il codice gestore dell'interrupt è invalido o corrotto. Se il processore va incontro ad un ulteriore problema mentre cerca di eseguire il codice per ovviare alla doppia eccezione, allora viene generata una tripla eccezione e il processore viene spento.
Dal momento che una doppia eccezione può verificarsi solo a causa di bug nel kernel, raramente si verificano per colpa di programmi eseguiti in modalità utente nei sistemi operativi moderni, a meno che il programma non ottenga in qualche modo i privilegi kernel (qualche virus e anche qualche programma DOS a basso livello). Altri processori come i PowerPC oppure gli SPARC di solito salvano lo stato corrente a determinati registri riservati. Una doppia eccezione quindi sarà una situazione in cui un'ulteriore eccezione si verifica mentre il processore sta ancora utilizzando i contenuti di questi registri per elaborare l'eccezione. I processori SPARC presentano ben 4 livelli di registri di questo tipo, quindi possiedono un sistema di registri a four-windows.
Bibliografia
[modifica | modifica wikitesto]- 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.