Su sistema Linux, qual è la differenza tra Interrupt Vector Table (IVT) e Interrupt Descriptor Table (IDT)?qual è la differenza tra IVT e IDT?
risposta
Questo non ha nulla a che fare con Linux. Sono le strutture della CPU, che il sistema operativo inizializza per gestire interrupt ed eccezioni. Nella modalità di indirizzamento reale la struttura contiene solo indirizzi di ISR. Questo formato di esso è noto come IVT. Nella modalità protetta la struttura è più complessa e si chiama IDT. Il manuale della CPU di Intel o AMD ti dirà tutti i dettagli sulla gestione degli interrupt.
I moderni SO funzionano quasi completamente in modalità protetta e quindi utilizzano l'IDT. L'IVT è necessario solo all'avvio del sistema operativo, perché ciò avviene in modalità reale.
IVT è valido solo in modalità reale e IDT è valido per la modalità protetta
sull'architettura x86, il vettore Tabella Interrupt (IVT) è una tabella che specifica gli indirizzi di tutti i 256 interrompere gestori usati in modalità reale [more...]
il Descriptor Table interrupt (IDT) è specifico per l'I386 architettura. È la controparte in modalità Protetta della Tabella degli interrupt vettoriali (IVT) in modalità Real che indica dove si trovano le Routine di servizio di interrupt (ISR). [more...]
Interrupt Elaborazione in modalità reale Nel modo reale, minore 1K di memoria detiene una struttura di dati nota come vettore Tabella Interrupt (IVT). Ci sono nominalmente 256 voci in questa tabella. (A partire dall'80286, l'IVT non deve disporre di 256 voci o iniziare all'indirizzo fisico 0. La base e l'indirizzo e la lunghezza dell'IVT sono determinati osservando l'I ** nterrupt Descrittor Table Register **.) Ogni voce contiene un puntatore lontano a una routine di servizio di interrupt. Qualsiasi tipo di interrupt indirizza alla routine di servizio di interrupt appropriata tramite questa tabella. Il processore indicizza il numero di interruzione in questa tabella; spinge CS, IP e flag correnti nello stack; e chiama il puntatore remoto specificato nell'IVT. Il gestore elabora l'interrupt e quindi esegue un'istruzione IRET per restituire il controllo al punto in cui il processore è stato eseguito al momento dell'interrupt.
Interruzione dell'elaborazione in modalità protetta Nella modalità protetta, gli interrupt vengono gestiti in modo simile alla modalità reale. L'Interrupt Descriptor Table (IDT) fa ciò che fa l'IVT in modalità reale. IDT è costituito da una matrice di descrittori di segmento a 8 byte chiamati gate. Il registro della tabella descrittore degli interrupt (IDTR) contiene l'indirizzo di base e il limite di IDT. L'IDT deve esistere nella memoria fisica e non dovrebbe mai passare alla memoria virtuale. Questo perché se si verifica un'interruzione mentre l'IDT è stato scambiato, il processore genererebbe un'eccezione, richiedendo all'IDT di ottenere il gestore per la gestione di questa eccezione e così via fino a quando il sistema non si è arrestato. Le porte nell'IDT possono essere costituite da tre tipi: porte di interruzione, porte di trappole e porte di attività. Non ci soffermeremo sui dettagli della trappola e dei cancelli. Per ulteriori informazioni, consultare la documentazione del processore Intel.
http://www.reverse-engineering.info/SystemHooking/hooksoft.htm