(caricamento statico)
Il modello di caricamento a segmentazione è il metodo naturale per il caricamento di programmi con modello logico a segmentazione. Nel modello logico a segmentazione lo spazio logico del programma non è uno spazio lineare ma è suddiviso in segmenti di lunghezza variabile, definiti dal programmatore, che riflettono la struttura dei programmi (ogni segmento può essere per esempio un modulo del programma o un’area dati). Ogni segmento viene caricato in una partizione con il metodo delle partizioni variabili (usa come unità di assegnazione il byte); ci deve essere una partizione libera per ogni segmento, ma le partizioni assegnate ai segmenti possono non essere vicine. La segmentazione è una generalizzazione del metodo a partizioni variabili che porta ad una riduzione del problema della frammentazione poiché è più facile adattare i segmenti alle partizioni, anche piccole, che rimangono disponibili.
Oltre alla tabella dei descrittori delle partizioni per l’assegnazione delle partizioni, viene usata una tabella dei descrittori di segmento per ogni processo. La tabella dei descrittori di segmento di un processo contiene per ogni segmento l’indirizzo iniziale della partizione assegnata e la dimensione del segmento.
Ogni indirizzo logico all’interno del programma è espresso dal numero di segmento e dall’indirizzo relativo all’interno del segmento (offset). L’indirizzo fisico viene calcolato sommando l’offset all’indirizzo iniziale della partizione in cui è memorizzato il segmento, ricavato dalla tabella dei descrittori di segmento.
La rilocazione è dinamica. Si usano dei registri base con l’indirizzo iniziale dei segmenti.
Ci possono essere dei meccanismi di protezione per controllare l’accesso ai singoli segmenti. Il controllo può avvenire in base al tipo di segmento (per esempio i segmenti di codice non possono essere modificati). Inoltre per ogni segmento può essere stabilito un diritto di accesso memorizzato nel descrittore del segmento; quando un processo tenta di accedere a un segmento si controlla che il processo abbia i diritti necessari, altrimenti l’accesso viene negato.
La segmentazione si presta anche in modo naturale alla condivisione di codice o dati. In genere i processi condividono segmenti di codice, in modo che in memoria ce ne sia una sola copia, e usano segmenti privati per i dati.