Differenza tra paging e segmentazione

La gestione della memoria è una delle funzioni di base del sistema operativo. I moderni sistemi operativi consentono a ciascun processo di ottenere più memoria virtuale rispetto alla dimensione totale della memoria (fisica) effettiva su un determinato sistema informatico. L'obiettivo principale della gestione della memoria è quello di combinare memoria grande ma lenta con memoria piccola ma ad alta velocità, per ottenere l'effetto di una memoria ad alta velocità più ampia.

Cos'è Paging?

La separazione tra partizione fissa e variabile è inefficace in termini di utilizzo della memoria, poiché il partizionamento fisso risulta interno, mentre dinamico nella frammentazione esterna. Una possibile soluzione al problema della frammentazione è consentire al processo di non essere scritto in un blocco di memoria continuo. Il programma può essere disperso arbitrariamente nella memoria. In questo caso, la memoria di lavoro è suddivisa in blocchi più piccoli di dimensioni fisse chiamati frame. Lo spazio di indirizzamento logico del programma è anche diviso in blocchi della stessa dimensione, chiamati pagine. Quando un programma viene inserito nella memoria, le pagine vengono scritte in frame di memoria libera. Per facilitare il trasferimento dei programmi da un disco a una memoria funzionante, il disco è anche diviso in frame della stessa dimensione dei frame di memoria. Pertanto, un frame dal disco viene scritto in un frame della memoria di lavoro. Il sistema di paging funziona nel modo seguente: quando il programma viene accettato per l'esecuzione, viene calcolata la sua dimensione, che viene espressa con il numero di pagine richiesto. Se un numero sufficiente di frame è libero, il processo viene registrato nella pagina di memoria per pagina. Allo stesso tempo, il numero di frame in cui ogni pagina è scritta viene inserito nella tabella frame.

Cos'è la segmentazione?

Il programma utente e i dati associati possono essere suddivisi in un numero di segmenti. I segmenti di tutti i programmi non devono avere le stesse dimensioni, sebbene esista una lunghezza massima del segmento. Come per il paging, l'indirizzo logico che utilizza la segmentazione consiste di due parti, in questo caso il numero di segmenti e dislocazioni all'interno di quel segmento. A causa dell'uso di segmenti di dimensioni diverse, la segmentazione è simile al partizionamento dinamico. In assenza di uno schema di sovrapposizione o di uso della memoria virtuale, è necessario che tutti i segmenti del programma vengano caricati nella memoria per l'esecuzione. La differenza rispetto al partizionamento dinamico è che la segmentazione può richiedere più di una partizione e che la partizione non deve essere adiacente. La segmentazione risolve il problema della frammentazione interna, ma oltre al partizionamento dinamico rimane il problema della frammentazione esterna. Tuttavia, poiché il processo è suddiviso in un numero di parti più piccole, la frammentazione esterna è in genere più piccola. A differenza del paging, che è invisibile al programmatore, la segmentazione è solitamente visibile e adatta all'organizzazione di programmi e dati. Ai fini della programmazione modulare, il programma oi dati possono essere ulteriormente suddivisi in diversi segmenti più piccoli. Lo svantaggio di questa tecnica è che il programmatore deve conoscere i limiti della dimensione massima del segmento. La prossima convenienza nell'usare segmenti di dimensioni diverse è che non esiste una connessione prospettica tra indirizzi logici e fisici. Analogamente al paging, la tecnica di segmentazione semplice utilizza la tabella dei segmenti per ogni processo e un elenco di blocchi disponibili nella memoria principale.

Differenza tra paging e segmentazione

1. Concetto di cercapersone e segmentazione

Il cercapersone offre uno spazio di indirizzi virtuale e fisico e uno spazio di memoria secondario su blocchi (pagine) di uguale lunghezza. Ciò consente di allocare lo spazio di indirizzamento virtuale continuo al processo di dispersione (non necessariamente continuamente distribuito) nello spazio di indirizzamento reale e nella memoria secondaria. Anche la pagina, come termine, si riferisce alla memoria piuttosto che agli oggetti logici che sono visibili a livello di programma. La segmentazione fornisce uno spazio di indirizzi virtuali su blocchi (segmenti) che corrispondono direttamente agli oggetti a livello di programma. Per questo motivo, il segmento non ha una lunghezza fissa, quindi anche la dimensione del segmento può essere modificata durante l'esecuzione del programma. La protezione e la divisione sono quindi possibili a livello di oggetto e ci sono processi visibili in cui viene eseguita la segmentazione.

2. Caratteristiche del cercapersone e della segmentazione

Lo sviluppatore dell'applicazione non è a conoscenza del paging. Scrive programmi come se la memoria fosse lineare, e il sistema operativo e il processore sono preoccupati per il suo partizionamento e la conversione in indirizzi virtuali. Il programmatore sui sistemi di segmentazione, tuttavia, elenca due parti dell'indirizzo, segmento e pagina nei loro programmi. Tutte le pagine hanno le stesse dimensioni mentre i segmenti sono diversi. La segmentazione ha più spazi di indirizzi lineari e il paging solo uno. I segmenti consentono il partizionamento logico e la protezione dei componenti dell'applicazione, mentre le pagine no.

3. Vantaggi del cercapersone e della segmentazione

Il cercapersone, che è trasparente per il programmatore, elimina la frammentazione esterna e quindi garantisce un uso efficiente della memoria principale. I pezzi che si muovono dentro e fuori la memoria principale sono fissi e hanno le stesse dimensioni, quindi è possibile sviluppare sofisticati algoritmi di gestione della memoria che sfruttano il comportamento del programma. La segmentazione è visibile allo sviluppatore e ha la capacità di gestire la crescita della struttura dei dati, la modularità e il supporto per lo scambio e la protezione.

Cercapersone vs. Segmentazione: grafico di confronto

paging

Segmentazione

dimensione delle pagine fisse i segmenti non hanno dimensioni fisse
invisibile per programmatore visibile per programmatore
uno spazio di indirizzamento lineare più spazi di indirizzi lineari
non consente il partizionamento logico e la protezione dei componenti dell'applicazione consente

Riepilogo di paging e segmentazione

  • Il paging si basa sulla distribuzione dell'intero spazio di indirizzamento su blocchi a lunghezza fissa che vengono gestiti come quantizzazioni di memoria. Inoltre, è necessario fornire un mezzo per contrassegnare la memoria disponibile che può essere eseguita dalla presenza dell'intestazione di ogni pagina che indica lo stato della pagina (elenco collegato globale in cui ogni nodo punta alla successiva pagina libera) o da posizionando l'indirizzo della pagina libera nell'array globale, che di solito è la soluzione peggiore.
  • Segmentazione significa dividere lo spazio degli indirizzi in segmenti che hanno chiaramente i diritti di accesso al processore MMU. All'interno del segmento, i processi allocano esattamente la quantità di memoria di cui hanno bisogno, ma il problema della gestione della memoria è come fornire una tale allocazione in cui è possibile conservare memoria di blocchi continui abbastanza grande che potrebbe richiedere del tempo.