La tecnica di paginazione della memoria separa la visione della memoria dell’utente da quella fisica. Ma l’utente percepisce un programma come una collezione di “segmenti” separati: main, procedure, aree dati, stack…. Ogni segmento ha la sua dimensione, e l’indirizzo di ogni elemento è indicato dal numero del segmento e dalla posizione (offset) dell’elemento in quel segmento: <#segmento, offset>. In un sistema segmentato, il compilatore genera in modo automatico i segmenti in base al programma:
variabili locali
codice di ogni funzione o procedura
variabili locali statiche di ogni funzione o procedura
stack di esecuzione
Poiché i segmenti sono memorizzati in MP, abbiamo bisogno di una tabella dei segmenti (ST). Ogni entry della ST è formata da una coppia: base del segmento (l’indirizzo fisico di partenza del segmento in MP) e limite del segmento (la lunghezza del segmento). Il numero di ogni segmento non è altro che l’indice nella ST che contiene la coppia <base,limite> relativa a quel segmento.
I segmenti di un processo, come nel caso delle pagine, non devono essere contigui in MP , ma i segmenti sono di dimensione diversa, e non qualsiasi “buco” di MP può andar bene. Tuttavia, la grandezza media dei segmenti è piccola, per cui il loro uso è molto più vantaggioso dell’allocazione contigua a partizioni variabili. La segmentazione è una soluzione più “naturale” della paginazione, ma soffre degli stessi problemi (seppure mitigati) dell’allocazione contigua a partizioni variabili. Per eliminare questi problemi (mantenendo i vantaggi), si possono paginare i segmenti. Il primo sistema ad adottare uno schema combinato è stato il sistema MULTICS. Nel MULTICS, ogni entry della ST non contiene l’indirizzo base del segmento, ma punta alla PT (Page Table) relativa a quel segmento.
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.