Memoria

Memory manager: la parte del so che gestisce la mem principale si chiama memory manager

Compiti di un mem manager: tenere traccia della mem libera e occupata, allocare mem ai processi e deallocarla quando non piu necessaria Nota: in alcuni casi il mem manager puo gestire anche parte della mem secondaria al fine di emulare mem principale

Nota: il mem manager e' software (la Memory Manager Unit, MMU e'hw)

Binding, loading, linking

Con il termine binding si indica l'associazione di indirizzi logici di mem (nomi di variabili, laber) ai corrispondenti indirizzi fisici.

il bindig puo avvenire:

  • durante la compilazione
  • durante il caricamento
  • durante l'esecuzione

Binding durante la compilazione

Gli indirizzi vengono allocati al momento della compilazione e resteranno gli stessi ad ogni exec del programma. Il codice generato e' chiamato assoluto Es: codice per microcontrollori, kernel, file COM, in MS-DOS

vantaggi

  • non richiede hardware speciale
  • semplice
  • molto veloce

svantaggi

  • non funziona con la multiprogrammazione

Binding durante il caricamento

il codice generato dal compilatore non contiene indirizzi assoluti ma relativi (al PC oppure ad un indirizzo base). Il codice divanta ricollocabile

Durante il caricamento il loader si preoccupa di aggiornare tutti i riferimenti agli indirizzi di memoria coerentemente al punto iniziale di caricamento

vantaggi  permette di gestire multiprogrammazione  non richiede uso di hardware particolare  svantaggi  richiede una traduzione degli indirizzi da parte del loader, e quindi formati particolare dei file eseguibili memoria_2026-03-11_12-35-34

vantaggi

  • permette di gestire multiprogrammazione
  • non richiede uso di hardware particolare

svantaggi

  • richiede una traduzione degli indirizzi da parte del loader, e quindi
  • iormati particolare dei file eseguibili

Binding durante l'esecuzione

L'individuazione dell'indirizzo di memoria effettivo viene effettuata durante l'esecuzione da un componente hardware apposito: la memory management unit (MMU) (che non e' il memory manager (MM))

memoria_2026-03-11_12-37-58

Indirizzi logici e indirizzi fisici

Spazio di indirizzamento logico:

  • ogni processo è associato ad uno spazio di indirizzamento logico
  • gli indirizzi usati in un processo sono indirizzi logici, ovvero riferimenti a questo spazio di indirizzamento

Spazio di indirizzamento fisico

  • ad ogni indirizzo logico corrisponde un indirizzo fisico
  • la MMU opera come una funzione di traduzione da indirizzi logici a indirizzi fisici

Registro di rilocazione

Se il valore del registro di rilocazione è R, uno spazio logico 0…Max viene tradotto in uno spazio fisico R…R+MAX

esempio: nei processori Intel 80x86, esistono 4 registri base per il calcolo degli indirizzi (CS, DS, SS, ES) memoria_2026-03-11_13-01-58

Registro di rilocazione e limite

Il registro limite viene utilizzato per implementare meccanismi di protezione della memoria memoria_2026-03-11_13-02-48

Viene controllato che l'indirizzo 897 sia minore o uguale al reg del reg limite (1000) se e'cosi allora va avanti.

Loading dinamico

Consente di poter caricare alcune routine di libreria solo quando vengono richiamate

Come viene implementato?

  • tutte le routine a caricamento dinamico risiedono su un disco (codice rilocabile), quando servono vengono caricate
  • le routine poco utili (e.g., casi di errore rari…) non vengono caricate in memoria al caricamento dell'applicazione

Nota:

  • spetta al programmatore sfruttare questa possibilità
  • il sistema operativo fornisce semplicemente una libreria che implementa le funzioni di caricamento dinamico

Linking dinamico

Linking statico:

  • se il linker collega e risolve tutti i riferimenti dei programmi…
  • le routine di libreria vengono copiate in ogni programma che le usa (e.g. printf in tutti i programmi C)

Linking dinamico:

  • è possibile posticipare il linking delle routine di libreria al momento del primo riferimento durante l'esecuzione
  • consente di avere eseguibili più compatti
  • le librerie vengono implementate come codice reentrant:
  • esiste una sola istanza della libreria in memoria e tutti i processi eseguono il codice di questa istanza

Vantaggi

  • risparmio di memoria
  • consente l'aggiornamento automatico delle versioni delle librerie
  • le librerie aggiornate sono caricate alla successiva attivazione dei programmi

Svantaggi

  • può causare problemi di "versioning"
  • occorre aggiornare le versioni solo se non sono incompatibili
  • cambiamento numero di revisione e non di release

Nota: dlopen: consente di caricare librerie dinamiche a run time. E’ il metodo per implementare plug-in

Allocazione contigua

L'allocazione e' una delle funzioni principali del gestore di memoria Consiste nel reperire e assegnare uno spazio di mem fisica a:

  • un prog che viene attivato
  • per soddisfare ulteriori richieste effettuate dai prog durante la loro exec

Allocazione contigua:

  • tutto lo spazio assegnato ad un processa deve essere formato da celle consecutive

Allocazione non contigua:

  • è possibile assegnare a un processo aree di memorie separate

Nota:

  • la MMU deve essere in grado di gestire la conversione degli indirizzi in modo coerente
  • esempio: la MMU basata su rilocazione gestisce solo allocazione contigua

Allocazione Statica:

  • un processo deve mantenere la propria aerea di memoria dal caricamento alla terminazione
  • non è possibile rilocare il processo durante l'esecuzione

Allicazione Dinamica:

  • durante l'esecuzione, un processo può essere spostato all'interno della memoria

Allocazione a partizioni fisse

La memoria disponibile (quella non occupata dal s.o.) viene suddivisa in partizioni. Ogni processo viene caricato in una delle partizioni libere che ha dimensione sufficiente a contenerlo

Caratteristiche

  • statica e contigua
  • vantaggi: molto semplice
  • svantaggi: spreco di memoria, grado di parallelismo limitato dal numero di partizioni

memoria_2026-03-11_13-33-36

Gestione memoria:

  • è possibile utilizzare una coda per partizione, oppure una coda comune per tutte le partizioni

Sistemi monoprogrammati:

  • esiste una sola partizione, dove viene caricato un unico programma utente
  • esempio:
    • MS-DOS free-DOS
    • sistemi embedded

Paginazione

Segmentazione

Memoria virtuale