Memoria segmentata

La memoria segmentata è un sistema di indirizzamento della memoria del computer, che può essere fisica o virtuale e può funzionare in modalità reale o protetta.

Il sistema di memoria segmentata è stato utilizzato per espandere il limite di 64 KB sullo spazio degli indirizzi flat di prima generazione. I computer realizzati prima della memoria segmentata utilizzavano un sistema di indirizzamento flat basato su un codice esadecimale a quattro cifre. Con esadecimale, il numero di 4 cifre più alto che puoi creare è FFFF (o 65535), che equivale a 64 KB.

L'indirizzamento segmentato della memoria, l'alternativa alla combinazione flat, viene utilizzato nei sistemi a 16 bit come MS-DOS Windows 3.1, per indirizzare i segmenti di memoria da 64 KB con un offset da specificare all'interno del segmento.

La generazione di processori Intel 8086 è stata progettata per gestire fino a 1 MB di memoria, ma è stata ostacolata dai limiti dello spazio di indirizzi flat. Piuttosto che riprogettare l'intero sistema di memoria, Intel lo ha modificato per ottenere la maggiore capacità attraverso un indirizzo composto a 16 bit in due parti.

La MMU (unità di gestione della memoria) interpreterà quindi il segmento, così come il suo offset, per trovare l'indirizzo fisico. Una volta individuato l'indirizzo, la MMU chiedeva se i permessi di memoria consentivano la richiesta e, in tal caso, la eseguiva.

A rigor di termini, lo spazio degli indirizzi flat utilizzato nell'elaborazione a 32 bit è effettivamente segmentato. Tuttavia, l'intero spazio è un singolo segmento che indirizza l'intero segmento a 32 bit o 4 GB di spazio di memoria.