Modalità Protetta

Sommario


Capitolo 1:
La CPU 80286

1.1 La Modalità Reale 8086
1.1.1 Accesso alle memorie esterne alla RAM in modalità reale 8086

1.2 La Modalità Protetta 80286
1.2.1 La compatibilità verso il basso e la linea A20 della 80286
1.2.2 La nascita ufficiale della Modalità Protetta sulle CPU della famiglia 80x86
1.2.3 Memoria reale e memoria virtuale in modalità protetta 80286
1.2.4 I descrittori di segmento
1.2.5 I descrittori speciali
1.2.6 I registri della 80286 per la modalità protetta


Capitolo 2:
Modalità Protetta 80286 - Caratteristiche avanzate

2.1 Protezione
2.1.1 Programmi, segmenti e task
2.1.2 Spazio di indirizzamento virtuale privato
2.1.3 Livelli di privilegio
2.1.4 Livelli di privilegio e accesso ai segmenti di dati con RPL
2.1.5 Livelli di privilegio e trasferimento del controllo con i gates
2.1.6 Chiamata di una procedura con call gate
2.1.7 Ritorno intersegmento da una procedura

2.2 Multitasking e transizioni di stato
2.2.1 Il Task State Segment
2.2.2 Il descrittore del Task State Segment
2.2.3 Il Task Register
2.2.4 Il Task Gate
2.2.5 Regole per il Task Switch

2.3 Interruzioni ed eccezioni
2.3.1 La Interrupt Descriptor Table (IDT)
2.3.2 Interruzioni hardware
2.3.3 Interruzioni software
2.3.4 Interrupt Gates e Trap Gates
2.3.5 Gestione delle interruzioni con i Task Gates
2.3.6 Interruzioni e scheduling
2.3.7 Vettori riservati per le eccezioni

2.4 Gestione della memoria virtuale
2.5 Segmenti di codice conformi (C=1)


Capitolo 3:
Modalità Protetta 80286 - Esempi pratici

3.1 Controllo e inizializzazione del sistema. Istruzioni privilegiate
3.1.1 Il registro FLAGS
3.1.2 Il registro Machine Status Word
3.1.3 Istruzioni privilegiate
3.1.4 Inizializzazione della CPU 80286
3.1.5 Inizializzazione della Modalità Protetta

3.2 Esempi pratici
3.2.1 Identificazione del tipo di CPU
3.2.2 Disabilitazione delle interruzioni mascherabili e della NMI
3.2.3 Salvataggio dello stato dei PIC Master e Slave
3.2.4 Abilitazione della linea A20 dell'Address Bus
3.2.5 Predisposizione della 80286 per il ritorno in modalità reale
3.2.6 Salvataggio dello stack per la modalità reale
3.2.7 Predisposizione della Global Descriptor Table
3.2.8 Ingresso in modalità protetta
3.2.9 Ritorno in modalità reale
3.2.10 Configurazione degli emulatori DOS e delle macchine virtuali
3.2.11 Programma di esempio con GDT
3.2.12 Programma di esempio con GDT e IDT
3.2.13 Programma di esempio con GDT, LDT, IDT e Task Switch


Capitolo 4:
La CPU 80386

4.1 Caratteristiche generali della CPU 80386
4.1.1 Organizzazione della memoria
4.1.2 Paginazione della memoria
4.1.3 Tipi di dati supportati
4.1.4 Registri della 80386
4.1.5 Struttura delle istruzioni per la 80386
4.1.6 Modalità di indirizzamento della 80386 - Effective Address
4.1.7 Nuove istruzioni della 80386
4.1.8 Istruzioni che operano implicitamente su dati a 32 bit
4.1.9 Indirizzamenti nel modo 16 bit e 32 bit

4.2 Programmazione di sistema con la 80386
4.2.1 Gestione della memoria - Modello segmentato
4.2.2 Gestione della memoria - Modello Flat
4.2.3 Gestione della memoria - Paginazione


Capitolo 5:
Modalità Protetta 80386 - Gestione della Memoria

5.1 Gestione della memoria - Modello segmentato
5.2 Gestione della memoria - Modello Flat
5.3 Gestione della memoria - Paginazione


Capitolo 6:
Modalità Protetta 80386 - Caratteristiche avanzate

6.1 Protezione a livello dei segmenti
6.1.1 Verifiche sul tipo di segmento
6.1.2 Verifiche sul campo LIMIT di un descrittore di segmento
6.1.3 Livelli di privilegio
6.1.4 Restrizioni sull'accesso ai segmenti di dati
6.1.5 Restrizioni sull'accesso ai dati presenti nei segmenti di codice
6.1.6 Restrizioni sul trasferimento del controllo
6.1.7 Call Gates
6.1.8 Stack Switching
6.1.9 Ritorno da una procedura
6.1.10 Restrizioni sul set di istruzioni
6.1.11 Restrizioni sull'uso dei puntatori

6.2 Protezione a livello delle pagine
6.2.1 Restrizioni sulla memoria indirizzabile
6.2.2 Verifiche sul tipo di pagina
6.2.3 Combinazioni di protezione tra i due livelli di tabelle
6.2.4 Protezione combinata tra segmenti e pagine

6.3 Multitasking
6.3.1 Il Task State Segment (TSS)
6.3.2 Il descrittore del TSS
6.3.3 Il Task Register (TR)
6.3.4 Il descrittore di Task Gate
6.3.5 Modalità di esecuzione di un task switch
6.3.6 Il Back Link al TSS del vecchio task
6.3.7 Uso del Busy Bit per impedire chiamate rientranti
6.3.8 Spazio di indirizzamento di un task

6.4 Gestione dell'Input/Output
6.4.1 Port Mapped I/O
6.4.2 Memory Mapped I/O
6.4.3 Istruzioni di I/O
6.4.4 Protezione per le operazioni di I/O

6.5 Interruzioni ed eccezioni
6.5.1 Tipi di eccezioni
6.5.2 Tipi di interruzioni hardware
6.5.3 Ordine di priorità per interruzioni ed eccezioni simultanee
6.5.4 La Interrupt Descriptor Table (IDT)
6.5.5 Tipi di descrittore per la IDT
6.5.6 Meccanismo di protezione per interruzioni ed eccezioni
6.5.7 Codici di errore
6.5.8 Vettori riservati per le eccezioni


Capitolo 7:
Modalità Protetta 80386 - Esempi pratici

7.1 Inizializzazione del sistema
7.2 Passaggio in Modalità Protetta
7.2.1 Segmentazione
7.2.2 Paginazione

7.3 Ritorno in Modalità Reale
7.3.1 Eccezioni in Modalità Reale

7.4 Esempi pratici
7.4.1 Identificazione del tipo di CPU
7.4.2 Disabilitazione delle interruzioni mascherabili e della NMI
7.4.3 Salvataggio dello stato dei PIC Master e Slave
7.4.4 Abilitazione della linea A20 dell'Address Bus
7.4.5 Salvataggio dello stack per la modalità reale
7.4.6 Predisposizione della Global Descriptor Table
7.4.7 Ingresso in modalità protetta
7.4.8 Ritorno in modalità reale
7.4.9 Configurazione degli emulatori DOS e delle macchine virtuali
7.4.10 Programma di esempio con GDT
7.4.11 Segmenti di codice e dati nella memoria oltre il primo MiB
7.4.12 Programma di esempio con GDT e IDT
7.4.13 Programma di esempio con GDT, LDT, IDT e Task Switch



Appendici


Appendice A: Tabella dei codici ASCII estesi
Appendice B: Tabella dei codici di scansione della tastiera
Appendice C: Tabella di conversione tra le principali basi numeriche
Appendice D: Header di un file EXE per DOS
Appendice E: Il Program Segment Prefix
Appendice F: Tabella delle istruzioni della CPU (RM)
Appendice H: Tabella delle istruzioni della CPU (PM)
Appendice I: Vettori d'eccezione in modalità protetta