Gestione della memoria nel sistema operativo: contigua, scambio, frammentazione

Sommario:

Anonim

Cos'è la gestione della memoria?

La 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 assegnata a un processo o rimanga libera.

In questo tutorial del sistema operativo imparerai:

  • Cos'è la gestione della memoria?
  • Perché utilizzare la gestione della memoria?
  • Tecniche di gestione della memoria
  • Cos'è lo scambio?
  • Cos'è l'allocazione della memoria?
  • Cos'è il paging?
  • Cos'è il metodo di frammentazione?
  • Cos'è la segmentazione?
  • Cos'è il caricamento dinamico?
  • Cos'è il collegamento dinamico?
  • Differenza tra caricamento statico e dinamico
  • Differenza tra collegamento statico e dinamico

Perché utilizzare la gestione della memoria?

Ecco i motivi per utilizzare la gestione della memoria:

  • Ti permette di controllare quanta memoria deve essere allocata ai processi che decidono quale processore dovrebbe avere memoria a che ora.
  • Tiene traccia ogni volta che l'inventario viene liberato o non allocato. Secondo esso aggiornerà lo stato.
  • Assegna lo spazio alle routine dell'applicazione.
  • Inoltre si assicura che queste applicazioni non interferiscano tra loro.
  • Aiuta a proteggere i diversi processi l'uno dall'altro
  • Mette i programmi in memoria in modo che la memoria venga utilizzata al massimo.

Tecniche di gestione della memoria

Ecco alcune tecniche di gestione della memoria più cruciali:

Allocazione singola contigua

È la tecnica di gestione della memoria più semplice. In questo metodo, tutti i tipi di memoria del computer tranne una piccola parte riservata al sistema operativo sono disponibili per un'applicazione. Ad esempio, il sistema operativo MS-DOS alloca la memoria in questo modo. Un sistema integrato 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 quando inizia e nell'annullare l'allocazione quando finisce.

Gestione della memoria di paging

Questo metodo divide la memoria principale del computer in unità di dimensioni fisse 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 degli indirizzi lineare e contiguo.

I segmenti richiedono il supporto hardware sotto forma di una tabella dei segmenti. Contiene l'indirizzo fisico della sezione in memoria, dimensioni e altri dati come i bit di protezione dell'accesso e lo stato.

Cos'è lo scambio?

Lo scambio è un metodo in cui il processo dovrebbe essere scambiato temporaneamente dalla memoria principale all'archivio di backup. Successivamente verrà riportato in memoria per continuare l'esecuzione.

L'archivio di backup è un disco rigido o un altro dispositivo di archiviazione secondario che dovrebbe essere abbastanza 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 di memoria.

Vantaggi dello scambio

Ecco i principali vantaggi / vantaggi dello scambio:

  • Offre un grado più elevato di multiprogrammazione.
  • Consente il trasferimento dinamico. Ad esempio, se si utilizza l'associazione dell'indirizzo al momento dell'esecuzione, i processi possono essere scambiati in posizioni diverse. Altrimenti, in caso di bind 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 su 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

  1. Memoria insufficiente: il sistema operativo risiede in questo tipo di memoria.
  2. Memoria elevata : i processi utente vengono conservati in una memoria elevata.

Allocazione delle partizioni

La memoria è suddivisa in diversi blocchi o partizioni. Ogni processo viene assegnato in base al requisito. L'allocazione delle partizioni è un metodo ideale per evitare la frammentazione interna.

Di seguito sono riportati i vari schemi di allocazione delle partizioni:

  • First Fit : in questo tipo di fit, viene allocata la partizione, che è il primo blocco sufficiente dall'inizio della memoria principale.
  • Best Fit: alloca il processo alla partizione che è la prima partizione più piccola tra le partizioni libere.
  • Peggiore: assegna il processo alla partizione, che è la più grande partizione disponibile gratuitamente nella memoria principale.
  • Next Fit: è per lo più simile al primo Fit, ma questo Fit cerca la prima partizione sufficiente dall'ultimo punto di allocazione.

Cos'è il paging?

Il paging è un meccanismo di archiviazione che consente al sistema operativo di recuperare i processi dalla memoria secondaria nella memoria principale sotto forma di pagine. Nel metodo Paging, la memoria principale è suddivisa in piccoli blocchi di memoria fisica di dimensioni fisse, chiamati frame. La dimensione di un frame dovrebbe essere mantenuta uguale a quella di una pagina per avere il massimo utilizzo della memoria principale ed evitare la frammentazione esterna. Il 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, il che crea spazio di memoria libero, che è troppo piccolo per essere utilizzato da altri processi.

A volte, quel processo che non è in grado di allocare ai blocchi di memoria perché le sue dimensioni ridotte ei blocchi di memoria rimangono sempre inutilizzati è chiamato 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:

  1. Frammentazione esterna
  2. Frammentazione interna
  • La frammentazione esterna può essere ridotta riorganizzando il contenuto della memoria per collocare tutta la memoria libera in un unico blocco.
  • La frammentazione interna può essere ridotta assegnando la partizione più piccola, che è ancora abbastanza buona per supportare l'intero processo.

Cos'è la segmentazione?

Il metodo di segmentazione funziona in modo quasi simile alla paginazione. L'unica differenza tra i due è che i segmenti sono di lunghezza variabile, mentre, nel metodo di paging, le pagine sono sempre di dimensioni fisse.

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 alle sue dimensioni, ai numeri dei segmenti e alle posizioni di memoria nella memoria principale o nella memoria virtuale.

Cos'è il caricamento dinamico?

Il caricamento dinamico è una routine di un programma che non viene caricato fino a quando il programma non lo chiama. Tutte le routine dovrebbero essere contenute su disco in un formato di caricamento rilocabile. Il programma principale verrà caricato in memoria e verrà eseguito. Il caricamento dinamico fornisce anche 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 al momento del caricamento. Nel metodo di collegamento dinamico, le librerie sono collegate al momento dell'esecuzione, quindi la dimensione del codice del programma può rimanere piccola.

Differenza tra caricamento statico e dinamico

Caricamento statico Caricamento dinamico
Il caricamento statico viene utilizzato quando si desidera caricare il programma in modo statico. Quindi, al momento della compilazione, l'intero programma sarà 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 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. Questo aiuta il sistema operativo a prevenire qualsiasi dipendenza dal runtime. Quando viene utilizzato il collegamento dinamico, non è necessario collegare il modulo o la libreria effettivi con il programma. Invece di utilizzare un riferimento al modulo dinamico fornito al momento della compilazione e del collegamento.

Sommario:

  • 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 permette di controllare quanta memoria deve essere allocata ai processi che decidono quale processore dovrebbe avere memoria a che ora.
  • In Single Contiguous Allocation, tutti i tipi di memoria del computer tranne una piccola parte 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 Paged Memory Management divide la memoria principale del computer in unità di dimensioni fisse note come frame di pagina
  • La memoria segmentata è l'unico metodo di gestione della memoria che non fornisce al programma dell'utente uno spazio degli indirizzi lineare e contiguo.
  • Lo scambio è un metodo in cui il processo dovrebbe essere scambiato temporaneamente dalla memoria principale all'archivio di backup. Successivamente verrà riportato in memoria per continuare l'esecuzione.
  • 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 i processi dalla memoria secondaria nella memoria principale sotto forma di pagine.
  • La frammentazione si riferisce alla condizione di un disco in cui i file sono divisi in parti sparse sul disco.
  • Il metodo di segmentazione funziona in modo quasi simile alla paginazione. L'unica differenza tra i due è che i segmenti sono di lunghezza variabile, mentre, nel metodo di paging, le pagine sono sempre di dimensioni fisse.
  • Il caricamento dinamico è una routine di un programma che non viene caricato fino a quando il programma non lo 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.