Che cos’è la modalità reale?

La modalità reale è uno schema di indirizzamento della memoria e uno stato operativo per i microprocessori dei computer. In modalità reale, la memoria a cui è possibile accedere da un programma – solitamente memoria ad accesso casuale (RAM) – non è gestita o bufferizzata in alcun modo dall’hardware, dal software o dai servizi di input e output di base (BIOS). Ciò significa che un programma è in grado di accedere a tutti gli indirizzi di memoria raggiungibili, indipendentemente dall’uso della memoria, e deve gestire da solo tutti gli aspetti della lettura e della scrittura nelle locazioni di memoria. Diverse limitazioni derivano dall’utilizzo della modalità reale, incluso il fatto che la quantità di memoria accessibile è limitata a 1 megabyte, poiché il processore in questa modalità consente agli indirizzi di essere lunghi solo 20 bit. Da un punto di vista pratico, il software per computer non utilizza più la modalità reale, poiché è stato sostituito da una modalità di indirizzamento più sicura, espandibile e flessibile nota come modalità protetta.

L’unità di elaborazione centrale (CPU) di un computer è il luogo in cui è possibile attivare la modalità reale e la maggior parte degli aspetti della modalità in realtà si occupa di problemi solitamente riscontrati nelle applicazioni scritte in linguaggio assembly, perché sono di natura abbastanza atomica. I chip del processore basati sull’architettura 8086 originale iniziano in modalità reale quando vengono accesi per essere in grado di eseguire programmi scritti per hardware precedente, anche se spesso ciò richiederebbe un software di emulazione per avere successo. La modalità protetta ha quasi completamente sostituito l’indirizzamento reale, a partire dal 2011, al punto che sono disponibili pochissimi compilatori in grado di compilare un programma in grado di utilizzare l’indirizzamento reale e ancora meno sistemi operativi tradizionali che potrebbero eseguirlo.

La memoria in modalità reale è fondamentalmente una singola sequenza lineare di byte a cui è possibile accedere liberamente con un indirizzo composto da un indirizzo di segmento a 16 bit e un offset di 4 bit all’interno del segmento, creando un indirizzo completo a 20 bit quando combinato. Un programma può accedere a qualsiasi punto della memoria e leggere o scrivere qualsiasi cosa, indipendentemente da ciò che si trova nella posizione. Ciò significa che, senza un’adeguata gestione e conoscenza, un programma che utilizza la modalità di indirizzamento reale potrebbe facilmente sovrascrivere il sistema operativo e il BIOS di sistema, attivare un interrupt hardware fisico o inviare accidentalmente un segnale a un dispositivo periferico. Ciò non solo potrebbe causare il blocco o l’arresto anomalo di un sistema, ma potrebbe anche causare la perdita di dati o danni fisici all’hardware.

Con l’avanzare dell’architettura del processore, la modalità protetta alla fine ha sostituito la modalità reale in quasi tutti i software. Nel tempo, l’uso della modalità di indirizzamento reale è diventato inutile, perché non era in grado di accedere a più di 1 megabyte di RAM e non poteva utilizzare più di 20 bit del bus di sistema, il che significava che poteva utilizzare solo una frazione delle risorse disponibili sulla maggior parte computer. L’indirizzamento reale comporta anche un rischio significativo per la sicurezza. Uno dei pochi modi per scrivere un programma che utilizza la modalità di indirizzamento reale consiste nell’utilizzare il linguaggio assembly ed eseguire il programma in uno speciale sistema operativo del disco (DOS) che non passa automaticamente alla modalità protetta all’avvio.