Gestione della memoria nel sistema operativo: contigua, scambio, frammentazione
Cos'è la gestione della memoria?
Gestione della memoria è il processo di controllo e coordinamento della memoria del computer, assegnando porzioni note come blocchi a vari programmi in esecuzione per ottimizzare le prestazioni complessive del sistema.
È la funzione più importante di un sistema operativo che gestisce la memoria primaria. Aiuta i processi a spostarsi avanti e indietro tra la memoria principale e il disco di esecuzione. Aiuta il sistema operativo a tenere traccia di ogni posizione di memoria, indipendentemente dal fatto che sia allocata a qualche processo o che rimanga libera.
Perché utilizzare la gestione della memoria?
Ecco i motivi per utilizzare la gestione della memoria:
- Ti consente di verificare quanta memoria deve essere allocata ai processi che decidono quale processore dovrebbe ottenere memoria e in quale momento.
- Tiene traccia di ogni volta che l'inventario viene liberato o non allocato. Secondo esso aggiornerà lo stato.
- Assegna lo spazio alle routine applicative.
- Assicurati inoltre che queste applicazioni non interferiscano tra loro.
- Aiuta a proteggere processi diversi gli uni dagli altri
- Mette i programmi in memoria in modo che la memoria venga utilizzata al massimo.
Tecniche di gestione della memoria
Ecco alcune tecniche cruciali di gestione della memoria:
Unica allocazione contigua
È la tecnica di gestione della memoria più semplice. Con questo metodo, tutti i tipi di memoria del computer, tranne una piccola porzione riservata al sistema operativo, sono disponibili per un'applicazione. Ad esempio, il sistema operativo MS-DOS alloca la memoria in questo modo. Un sistema embedded viene eseguito anche su una singola applicazione.
Allocazione partizionata
Divide la memoria primaria in varie partizioni di memoria, che sono per lo più aree di memoria contigue. Ogni partizione memorizza tutte le informazioni per un'attività o un lavoro specifico. Questo metodo consiste nell'assegnare una partizione a un lavoro all'avvio e nella non allocazione al termine.
Gestione della memoria paginata
Questo metodo divide la memoria principale del computer in unità di dimensione fissa note come frame di pagina. Questa unità di gestione della memoria hardware mappa le pagine in frame che dovrebbero essere allocati in base alla pagina.
Gestione della memoria segmentata
La memoria segmentata è l'unico metodo di gestione della memoria che non fornisce al programma dell'utente uno spazio di indirizzi lineare e contiguo.
I segmenti necessitano di supporto hardware sotto forma di tabella di segmenti. Contiene l'indirizzo fisico della sezione in memoria, dimensione e altri dati come bit e stato di protezione dell'accesso.
Cos'è lo scambio?
Lo swapping è un metodo in cui il processo dovrebbe essere scambiato temporaneamente dalla memoria principale al backing store. Sarà poi riportato nella memoria per l'esecuzione continua.
L'archivio di backup è un disco rigido o un altro dispositivo di archiviazione secondario che dovrebbe essere sufficientemente grande da contenere copie di tutte le immagini di memoria per tutti gli utenti. È anche in grado di offrire un accesso diretto a queste immagini della memoria.
Vantaggi dello scambio
Ecco i principali vantaggi/pro dello scambio:
- Offre un grado più elevato di multiprogrammazione.
- Consente il trasferimento dinamico. Ad esempio, se viene utilizzata l'associazione degli indirizzi in fase di esecuzione, i processi possono essere scambiati in posizioni diverse. Altrimenti, in caso di vincoli ai tempi di compilazione e caricamento, i processi dovrebbero essere spostati nella stessa posizione.
- Aiuta a ottenere un migliore utilizzo della memoria.
- Minimo spreco di tempo della CPU al completamento in modo che possa essere facilmente applicato a un metodo di pianificazione basato sulla priorità per migliorarne le prestazioni.
Cos'è l'allocazione della memoria?
L'allocazione della memoria è un processo mediante il quale ai programmi del computer viene assegnata memoria o spazio.
Qui, la memoria principale è divisa in due tipi di partizioni
- Poca memoria - Operasistema di ting risiede in questo tipo di memoria.
- Memoria alta– I processi utente vengono mantenuti in memoria elevata.
Allocazione delle partizioni
La memoria è divisa in diversi blocchi o partizioni. Ogni processo viene assegnato in base ai requisiti. L'allocazione delle partizioni è un metodo ideale per evitare la frammentazione interna.
Di seguito sono riportati i vari schemi di allocazione delle partizioni:
- Primo adattamento: In questo tipo fit viene allocata la partizione che è il primo blocco sufficiente dall'inizio della memoria principale.
- migliore vestibilità: Assegna il processo alla partizione che è la prima partizione più piccola tra le partizioni libere.
- Peggiore adattamento: Assegna il processo a partizione, che è la partizione sufficientemente grande disponibile liberamente nella memoria principale.
- Adattamento successivo: È per lo più simile al primo Fit, ma questo Fit cerca la prima partizione sufficiente dall'ultimo punto di allocazione.
Cos'è il cercapersone?
Il paging è un meccanismo di archiviazione che consente al sistema operativo di recuperare processi dalla memoria secondaria alla memoria principale sotto forma di pagine. Nel metodo Paging, la memoria principale è divisa in piccoli blocchi di memoria fisica di dimensione fissa, chiamati frame. La dimensione di un frame dovrebbe essere mantenuta uguale a quella di una pagina per sfruttare al massimo la memoria principale ed evitare la frammentazione esterna. Paging viene utilizzato per un accesso più rapido ai dati ed è un concetto logico.
Cos'è la frammentazione?
I processi vengono archiviati e rimossi dalla memoria, creando spazio di memoria libero, troppo piccolo per essere utilizzato da altri processi.
A volte, infatti, i processi che non sono in grado di allocare blocchi di memoria perché le loro dimensioni ridotte e i blocchi di memoria rimangono sempre inutilizzati, si chiama frammentazione. Questo tipo di problema si verifica durante un sistema di allocazione dinamica della memoria quando i blocchi liberi sono piuttosto piccoli, quindi non è in grado di soddisfare alcuna richiesta.
Due tipi di metodi di frammentazione sono:
- Frammentazione esterna
- Frammentazione interna
- La frammentazione esterna può essere ridotta riorganizzando il contenuto della memoria per posizionare tutta la memoria libera insieme in un unico blocco.
- La frammentazione interna può essere ridotta assegnando la partizione più piccola, che è comunque sufficiente per sostenere l'intero processo.
Che cos'è la segmentazione?
Il metodo di segmentazione funziona in modo quasi simile al paging. L'unica differenza tra i due è che i segmenti sono di lunghezza variabile, mentre, nel metodo di impaginazione, le pagine sono sempre di dimensione fissa.
Un segmento di programma include la funzione principale del programma, le strutture dati, le funzioni di utilità, ecc. Il sistema operativo mantiene una tabella della mappa dei segmenti per tutti i processi. Include anche un elenco di blocchi di memoria liberi insieme alla loro dimensione, numeri di segmento e posizioni di memoria nella memoria principale o la memoria virtuale.
Cos'è il caricamento dinamico?
Il caricamento dinamico è una routine di un programma che non viene caricata finché il programma non la chiama. Tutte le routine dovrebbero essere contenute su disco in un formato di caricamento riposizionabile. Il programma principale verrà caricato in memoria e verrà eseguito. Il caricamento dinamico fornisce inoltre un migliore utilizzo dello spazio di memoria.
Cos'è il collegamento dinamico?
Il collegamento è un metodo che aiuta il sistema operativo a raccogliere e unire vari moduli di codice e dati in un unico file eseguibile. Il file può essere caricato in memoria ed eseguito. Il sistema operativo può collegare le librerie a livello di sistema in un programma che combina le librerie in fase di caricamento. Nel metodo di collegamento dinamico, le librerie vengono collegate al momento dell'esecuzione, quindi la dimensione del codice del programma può rimanere piccola.
Differenza tra carico statico e dinamico
| Caricamento statico | Caricamento dinamico |
|---|---|
| Il caricamento statico viene utilizzato quando si desidera caricare staticamente il programma. Quindi al momento della compilazione, l'intero programma verrà collegato e compilato senza bisogno di alcun modulo esterno o dipendenza dal programma. | In un programma caricato dinamicamente verranno forniti i riferimenti e il caricamento verrà effettuato al momento dell'esecuzione. |
| Al momento del caricamento, l'intero programma viene caricato in memoria e inizia la sua esecuzione. | Le routine della libreria vengono caricate in memoria solo quando sono richieste nel programma. |
Differenza tra collegamento statico e dinamico
Ecco le principali differenze tra collegamento statico e collegamento dinamico:
| Collegamento statico | Collegamento dinamico |
|---|---|
| Il collegamento statico viene utilizzato per combinare tutti gli altri moduli richiesti da un programma in un unico codice eseguibile. Ciò aiuta il sistema operativo a prevenire qualsiasi dipendenza dal runtime. | Quando si utilizza il collegamento dinamico, non è necessario collegare il modulo o la libreria effettivi al programma. Utilizzare invece un riferimento al modulo dinamico fornito al momento della compilazione e del collegamento. |
Sintesi
- La gestione della memoria è il processo di controllo e coordinamento della memoria del computer, assegnando porzioni chiamate blocchi a vari programmi in esecuzione per ottimizzare le prestazioni complessive del sistema.
- Ti consente di verificare quanta memoria deve essere allocata ai processi che decidono quale processore dovrebbe ottenere memoria e in quale momento.
- Nell'allocazione contigua singola, tutti i tipi di memoria del computer, tranne una piccola porzione riservata al sistema operativo, sono disponibili per un'applicazione
- Il metodo di allocazione partizionata divide la memoria primaria in varie partizioni di memoria, che sono per lo più aree di memoria contigue
- Il metodo di gestione della memoria di paging divide la memoria principale del computer in unità di dimensione fissa note come frame di pagina
- La memoria segmentata è l'unico metodo di gestione della memoria che non fornisce al programma dell'utente uno spazio di indirizzi lineare e contiguo.
- Lo swapping è un metodo in cui il processo dovrebbe essere scambiato temporaneamente dalla memoria principale al backing store. Sarà poi riportato nella memoria per l'esecuzione continua.
- L'allocazione della memoria è un processo mediante il quale ai programmi del computer viene assegnata memoria o spazio.
- Il paging è un meccanismo di archiviazione che consente al sistema operativo di recuperare processi dalla memoria secondaria alla memoria principale sotto forma di pagine.
- La frammentazione si riferisce alla condizione di un disco in cui i file sono divisi in pezzi sparsi sul disco.
- Il metodo di segmentazione funziona in modo quasi simile al paging. L'unica differenza tra i due è che i segmenti sono di lunghezza variabile, mentre, nel metodo di impaginazione, le pagine sono sempre di dimensione fissa.
- Il caricamento dinamico è una routine di un programma che non viene caricata finché il programma non la chiama.
- Il collegamento è un metodo che aiuta il sistema operativo a raccogliere e unire vari moduli di codice e dati in un unico file eseguibile.

