Il termine IA-32 letteralmente significa Intel Architetture 32 bit (Architettura Intel a 32 bit), questo acronimo è stato coniato per differenziare una famiglia di processori, ovvero i successori del 80386 dalla famiglia dei processori Itanium. I processori Itanium sono sempre di proprietà di Intel ma operano a 64 bit. Il processore Intel 80386 conosciuto anche come i386 è stato prodotto da Intel a partire dal 1986 fino al 2007, ed è stato usato come processore di molti personal computer nel periodo compreso tra il 1986 e il 1994.

L’i386 fu il primo processore ad essere dotato di architettura a 32 bit, della modalità protetta e del supporto hardware per la modalità virtuale paginata. L’Intel i386 appartiene alla famiglia di processori su cui fu sviluppato il kernel di Linux, a tutti gli effetti rappresenta un pezzo di storia dell’informatica.

Caratteristiche

L’IA-32 rappresenta l’Instruction Set Architecture (ISA) di questi processori. L’ISA è l’insieme di tutte le istruzioni che un determinato processore o una famiglia di processori possono eseguire. I processori appartenenti a queste architetture supportano tre modalità operative:

  • Modalità reale;
  • Modalità protetta;
  • Modalità virtuale 8086.

In aggiunta a queste esiste la modalità:

  • System management.

Modalità reale

È la modalità con cui il processore fornisce gli stessi servizi presenti sull’8086, con l’aggiunta di alcune estensioni, come ad esempio la possibilità di switchare tra le varie modalità. In questa modalità il processore può indirizzare solo 1 MB della RAM e non dispone del supporto al multitasking, alla memoria virtuale e ovviamente alla memoria protetta.

Modalità protetta

La modalità protetta è la modalità nativa del processore, in questa modalità il processore è in grado di fornire un supporto lato hardware al multitasking, alla memoria protetta e alla memoria virtuale paginata. In questa modalità il processore può indirizzare normalmente 232 byte, ovvero 4 GB di RAM. All’interno della modalità protetta, i processi utenti vengono suddivisi in più segmenti disgiunti. I riferimenti ai segmenti sono raccolti, come abbiamo visto, all’interno delle tabelle dei descrittori, quali da GDT e la LDT. I processi sono gestiti dal processore mediante il TSS (Task Segment Selector). Oltre ai descrittori dei segmenti dei processi utenti, le architetture IA-32 implementano una serie di descrittori speciali chiamati GATE, come ad esempio gli Interrupt GATE o i Trap GATE.

Modalità virtuale 8086

Questa modalità viene anche chiamata modalità virtuale reale, essa permette di eseguire programmi all’interno della modalità protetta in modalità reale, sotto il controllo del sistema operativo.

System management mode

Questa modalità è stata introdotta nel 1990 sul processore 386SL e permette di eseguire del codice presente in una particolare locazione di memoria con un livello di protezione molto alto. Questa particolare locazione di memoria viene detta SMRAM (System Management RAM) e il livello di protezione usato è il -2, ovvero sopra al sistema operativo. Questa modalità permette di operare una particolare gestione dell’hardware, come ad esempio la regolazione dell’accensione o dello spegnimento dei dispositivi o la diagnostica dei componenti.

Tuttavia questa modalità permetteva anche l’esecuzione di codice maligno (infiltrato nella SMRAM) potenzialmente in grado di cancellare il sistema operativo.

Transizioni

La modalità in cui si trova il processore viene definita dal valore di un flag nel registro CR0, vedremo in seguito il significato e la posizione di questo registro.

Schema di transizione tra le modalità dell'IA-32
Schema di transizione tra le modalità dell’IA-32