Interruzioni in protected mode
In modo protetto la tabella delle interruzioni è sostituita con una tabella chiamata Tabella dei Descrittori delle Interruzioni (IDT,
Interrupt Descriptor Table). Essa come la GDT e la LDT contiene descrittori di segmento
( di 8 bytes ciascuno.
Esistono tre tipi di descrittore:
- Interrupt Gate Descriptor
- utilizzato per le normali procedure di interruzione all’interno dello stesso
processo
- Task Gate
Descriptor
- utilizzato per interruzioni che portano all'esecuzione di un altro
task (processo o thread)
- Trap Gate Descriptor
- utilizzato per il debugging.
L’ Interrupt Gate Descriptor e il Trap Gate Descriptor contengono il selettore di segmento
(16 bit), l' offset (32 bit) e i bit d’attributo.
Il Task Gate Descriptor contiene il selettore di TSS di 16 bit e i bit
d'attributo
La IDT è referenziata dal registro IDTR ( indirizzo base: 32 bit, LIMIT:
16 bit) e può essere
allocata ovunque io memoria.
Le eccezioni si differenziano dalle interruzioni esterne per
le modalità di rientro al programma interrotto. Mentre le interruzioni esterne
rientrano all’istruzione successiva, le eccezioni di solito rientrano in punti diversi a
seconda della causa che l'ha provocata:
- tipo fault, (per es. page
fault)
- il rientro avviene all’istruzione che ha provocato l'eccezione
- viene
salvato il contesto del processo interrotto com’era prima che
l’eccezione si verificasse.
- tipo abort (errore di
malfunzionamento grave dell’hardware)
- il rientro non avviene (potete solo resettare il PC e… sperare)