Memoria Centrale
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.2
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.3
Silberschatz, Galvin and Gagne ©2009
Introduzione

Nei moderni Sistemi Operativi la gestione della memoria è un aspetto fondamentale per la realizzazione
della multiprogrammazione poiché più processi attivi devono essere presenti in memoria

Un programma per essere eseguito deve trovarsi nella memoria primaria

Lo scopo del Sistema Operativo è di allocare la memoria per i processi da mandare in esecuzione in modo
che siano pronti quando la CPU gli viene assegnata

L’allocazione della memoria ai processi è quindi uno dei compiti di un Sistema Operativo
Operating System Concepts – 8th Edition
8.4
Silberschatz, Galvin and Gagne ©2009
Associazione degli indirizzi - 1

I programmi utente passano attraverso stadi diversi, con diverse rappresentazioni degli indirizzi, prima di essere
eseguiti

Indirizzi simbolici

Gli indirizzi nel programma sorgente


Indirizzi rilocabili

Indirizzi calcolati rispetto ad un valore di riferimento


Esempio: count
Esempio: calcolati a partire dalla prima istruzione del programma che ha indirizzo 0
Indirizzi assoluti

Indirizzi propri della memoria centrale

Esempio 74014
Operating System Concepts – 8th Edition
8.5
Silberschatz, Galvin and Gagne ©2009
Associazione degli indirizzi - 2

L’associazione di istruzioni e dati a indirizzi di memoria si può
compiere in diverse fasi

Compilazione - se la posizione in memoria del processo è nota a
priori, può essere generato codice assoluto



se la locazione iniziale cambia, è necessario ricompilare il codice
Caricamento - se la posizione in memoria non è nota in fase di
compilazione, è necessario generare codice rilocabile

il compilatore genera indirizzi relativi che vengono convertiti in
indirizzi assoluti dal loader

se l’indirizzo iniziale cambia, il codice deve essere ricaricato in
memoria
Esecuzione

Se il programma durante la sua esecuzione può essere spostato
da una parte all’altra della memoria allora l’associazione deve
essere fatta a tempo di esecuzione

È necessario un opportuno supporto hardware per il mapping
degli indirizzi

I vantaggi principali sono:


Assoluta indipendenza da una locazione di memoria

Possibilità di cambiare il blocco di memoria occupato
immediatamente
I Sistemi Operativi moderni supportano questa modalità di
associazione
Operating System Concepts – 8th Edition
8.6
Silberschatz, Galvin and Gagne ©2009
Spazi di indirizzi logici e fisici


Gli indirizzi utilizzati da una applicazione sono diversi dagli indirizzi realmente utilizzati dall’applicazione in
memoria

Indirizzo logico (o indirizzo virtuale): è generato dalla CPU nel momento della compilazione

Indirizzo fisico: è l’indirizzo effettivamente utilizzato dall’applicazione in memoria
Il binding mappa indirizzi logici in indirizzi fisici

Binding statico : a tempo di compilazione o di caricamento


Indirizzi logici = indirizzi fisici
Binding dinamico: a run-time

indirizzi logici (o virtuali) <> indirizzi fisici

Possibilità di spostare processi in memoria all’atto dell’esecuzione

Supporto fondamentale a memoria virtuale e swapping
Operating System Concepts – 8th Edition
8.7
Silberschatz, Galvin and Gagne ©2009
Memory-Management Unit (MMU)

L’associazione in fase di esecuzione tra lo spazio degli indirizzi logici e lo spazio di indirizzi virtuali è svolta
da unità di gestione della memoria (memory-management unit, MMU)

La MMU possiede un registro di rilocazione che permette immediatamente di convertire un indirizzo
logico in indirizzo fisico

Il programma utente tratta sempre indirizzi logici mentre l’architettura di sistema tratta indirizzi fisici

Esempio: se l’applicazione utilizza un range di indirizzi logici da 0 a max ed il registro di locazione
contiene il valore r allora il range di indirizzi fisici sarà da 0+r a r+max
Operating System Concepts – 8th Edition
8.8

Supponiamo che il registro di rilocazione
contenga il valore 14000

Qualunque tentativo da parte
dell’applicazione di accedere alle locazioni
di memoria 0 e 346 si traduce in

0 + 14000 = 14000

346 + 14000 = 14346
Silberschatz, Galvin and Gagne ©2009
Caricamento dinamico

Un applicazione durante il suo ciclo di esecuzione utilizza delle procedure esterne (librerie di procedure)

Il caricamento dinamico permette di caricare una procedura in memoria solo quando viene richiamata

La memoria viene utilizzata meglio poiché la procedura è caricata solo se effettivamente utilizzata

Anche se l’applicazione è enorme, la memoria occupata è effettivamente solo quella necessaria

Il programmatore deve prestare attenzione progettando l’applicazione in modo da trarre vantaggio dal
caricamento dinamico
Operating System Concepts – 8th Edition
8.9
Silberschatz, Galvin and Gagne ©2009
Librerie di procedure

Le librerie di procedure possono essere fondamentalmente di due tipi

Librerie statiche - contengono procedure che vengono collegate al codice del programma principale dal
compilatore o dal loader e diventano parte dell’eseguibile


Lo svantaggio principale è che se n programmi utilizzano la stessa libreria statica questa sarà
incorporata da ogni eseguibile e quindi lo stesso codice sarà caricato più volte in memoria

Oltretutto se l’applicazione una volta mandata in esecuzione non utilizzerà nessuna procedura della
libreria occuperà inutilmente spazio in memoria
Librerie dinamiche – non sono collegate al codice e vengono caricate in memoria solo quando
l’applicazione chiama una delle sue procedure. La librerie è quindi caricata in memoria a run-time
utilizzando un caricamento dinamico

L’applicazione che utilizza una libreria dinamica conterrà all’interno del suo codice il nome della
procedura che vuole chiamare

Il vantaggio principale è che il codice di una libreria dinamica può essere condivisa tra più processi
evitando inutili duplicazioni in memoria di codice identico

Sotto linux le librerie dinamiche hanno estensione .so

Sotto Windows le librerie dinamiche hanno la “ben nota” estensione .dll
Operating System Concepts – 8th Edition
8.10
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.11
Silberschatz, Galvin and Gagne ©2009
Swapping

L’idea dell’avvicendamento dei processi (o swapping) è salvare nella memoria secondaria un
processo non in esecuzione (swap out) e ricaricarlo (swap in) appena prima di dargli la CPU

Lo swapping permette di avere più processi attivi di quanti effettivamente possa contenere la
RAM

I processi attivi sono mantenuti temporaneamente su un’area del disco fisso ad uso esclusivo
del Sistema Operativo chiamata area di swap (o backing store)

Poiché un processo può essere ricaricato in una diversa aria di memoria principale è necessario
utilizzare codice dinamicamente rilocabile in fase di esecuzione
Operating System Concepts – 8th Edition
8.12
Silberschatz, Galvin and Gagne ©2009
Il cambio di contesto nello swapping

La fase di contex switch utilizzando lo swapping può aumentare significativamente

Ad esempio supponiamo di avere in memoria un processo di 10MB e supponiamo che il disco fisso abbia una
velocità di trasferimento di 40MB/sec

Il tempo di trasferimento è pari a:
10.000KB / 40.000KB/sec = ¼ sec = 250 millisecondi

A questo tempo va aggiunto il tempo per posizionare le testine (circa 8 millisecondi) quindi passiamo a:
258 millisecondi

Infine va considerato che l’avvicendamento include una fase di scrittura (swap out) ed una di lettura (swap in)
quindi in totale avremo:
516 millisecondi

Quindi un quanto di tempo dovrebbe essere maggiore di 0,516 secondi
Operating System Concepts – 8th Edition
8.13
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.14
Silberschatz, Galvin and Gagne ©2009
Allocazione contigua della memoria

La memoria principale è normalmente suddivisa in due parti:

Il Sistema Operativo è caricato nella parte bassa della memoria (a partire dall’indirizzo 0)

I processi utente sono memorizzati nella memoria alta


Ogni processo è contenuto in una singola, contigua
sezione di memoria
La memoria può essere allocata utilizzando diverse strategie
tra le quali le più note sono:

Partizioni multiple fisse

Partizioni multiple variabili
Operating System Concepts – 8th Edition
8.15
Silberschatz, Galvin and Gagne ©2009
Partizioni multiple fisse

Nello schema a partizioni multiple fisse (Multiprogramming with a Fixed number of
Tasks, MFT) la memoria è suddivisa in blocchi (non necessariamente tutti uguali) di
dimensione fissata a priori e non modificabile

Ogni partizione può contenere un processo

Il numero di partizioni decide il grado di multiprogrammazione

Al termine di un processo, la partizione è libera per contenere un altro processo

Quando un processo viene schedulato, il SO cerca una partizione libera
di dimensioni sufficienti ad accoglierlo

Meccanismo dei registri limite e di rilocazione può essere utilizzato
per proteggere le varie partizioni …
Operating System Concepts – 8th Edition
8.16
Silberschatz, Galvin and Gagne ©2009
Registro limite e di rilocazione

Ogni processo deve avere uno spazio di memoria proprio e separato dal resto
dei processi in modo che nessun altro possa accedervi

Una soluzione consiste nell’utilizzare due registri

Registro di rilocazione: contiene il più piccolo indirizzo fisico ammesso

Registro limite: contiene l’intervallo degli indirizzi ammissibili

Solo il Sistema Operativo può accedere a questi registri ed impedisce ai
programmi utenti di modificarli

In fase di contex switch il Sistema Operativo Operativo carica:

Nel registro di rilocazione l’indirizzo iniziale della partizione

Nel registro limite la dimensione del processo
Operating System Concepts – 8th Edition
8.17
rilocazione
Silberschatz, Galvin and Gagne ©2009
MFT problemi: frammentazioni

Frammentazione interna

Un processo allocato in una partizione difficilmente ha
esattamente la stessa dimensione

La parte che rimane viene sprecata

Ad esempio, nella partizione da 2Mbyte, 512KB vengono
sprecati

Frammentazione esterna

Un altro svantaggio sta nel numero di buchi che restano liberi in ogni
partizione


Operating System Concepts – 8th Edition
Ad esempio: allocando diversi processi in ogni partizione otteniamo
uno spreco di
512KB+512KB+1MB+2MB = 3MB
Un processo potrebbe essere allocato nel blocco ottenuto sommando i
diversi buchi sprecati
8.18
Silberschatz, Galvin and Gagne ©2009
Svantaggi MFT

Frammentazione interna


Frammentazione esterna


In un blocco di dimensione fissa la memoria interna ad un partizione è assegnata ma non utilizzata
completamente
Lo spazio di memoria lasciato dai buchi è sufficiente per contenere un altro processo ma non è contigua
Se un processo è più grande della più grande partizione non può essere caricato

Aumentando la dimensione delle partizioni diminuisce il grado di multiprogrammazione ma tende anche ad
aumentare la frammentazione interna
Operating System Concepts – 8th Edition
8.19
Silberschatz, Galvin and Gagne ©2009
Partizioni multiple variabili

Nella schema a partizioni multiple variabili (Multiprogramming with a Variable number of Tasks, MVT) ogni
partizione è allocata dinamicamente e dimensionata in base alla dimensione del processo da allocare

Vantaggi (w.r.t MFT)

Non è più presente la frammentazione interna: ogni partizione è dell’esatta dimensione del processo

Il grado di multiprogrammazione è variabile

La dimensione massima dei processi è limitata dalla disponibilità di spazio fisico
Operating System Concepts – 8th Edition
8.20
Silberschatz, Galvin and Gagne ©2009
MVT problemi: frammentazione esterna

Dopo che diversi processi si sono avvicendati in memoria vengono lasciati diversi buchi

I buchi con il tempo diventano sempre più sparsi e non utilizzabili
Operating System Concepts – 8th Edition
8.21
Silberschatz, Galvin and Gagne ©2009
MVT: Metodi di allocazione

Il Sistema Operativo tiene traccia di tutti i buchi liberi e della loro dimensione

Quando un processo deve essere caricato in memoria il Sistema Operativo deve cercare un buco
sufficientemente grande per contenerlo

Le strategie per scegliere un buco libero sono:
 First-fit: scegli la prima partizione abbastanza grande per poter caricare il processo



Best-fit: scegli la più piccola partizione abbastanza grande per poter caricare il processo
 È necessario scandire tutta la lista dei buchi (se non è ordinata)
Worst-fit: scegli la partizione più grande
 È necessario scandire tutta la lista dei buchi (se non è ordinata)
Sperimentalmente il metodo migliore di allocazione risulta essere il First-fit ed il Best-fit in termini di
velocità e di impiego di memoria
Operating System Concepts – 8th Edition
8.22
Silberschatz, Galvin and Gagne ©2009
Svantaggi MVT


Frammentazione esterna

Con il tempo si formano diversi buchi non contigui che non sono in grado di ospitare un processo

La gravità del problema della frammentazione esterna per allocazione contigua dipende dalla quantità totale
di memoria e dalla dimensione media dei processi

Regola del 50%: Con First-fit, per n blocchi assegnati, 0.5n blocchi possono andare “persi” per frammentazione
Si può ridurre la frammentazione esterna con la compattazione …
Operating System Concepts – 8th Edition
8.23
Silberschatz, Galvin and Gagne ©2009
MVT: compattazione

La compattazione è la soluzione che si adopera per recuperare i buchi di memoria inutilizzata

L’idea è di spostare le immagini dei processi in maniera da ricavare un buco di memoria contigua sufficientemente
grande da permettere di caricare altri processi

Per poter utilizzare la compattazione è necessario che i processi siano rilocabili

Essendo una operazione onerosa che può richiedere molto tempo durante la compattazione il sistema è
inutilizzabile

Strategie di compattazione - La compattazione può essere effettuata in diversi modi:

Spostare tutti i processi verso un estremo della memoria (molto costoso)

Spostare i processi in buchi già esistenti verso gli estremi della memoria (statisticamente si sposta meno
memoria)

Spostare solo i processi necessari per far entrare un nuovo processo che altrimenti non avrebbe spazio
sufficiente
Operating System Concepts – 8th Edition
8.24
Silberschatz, Galvin and Gagne ©2009
MVT: esempi compattazione
Operating System Concepts – 8th Edition
8.25
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.26
Silberschatz, Galvin and Gagne ©2009
Paginazione

L’allocazione della memoria presenta diversi problemi per via della frammentazione interna ed esterna

Il problema nasce dall’allocazione contigua della memoria che necessita di trovare buchi in cui allocare il
processo intero

La paginazione è un metodo che permette di allocare ai processi una spazio di memoria fisica non
necessariamente contiguo
Operating System Concepts – 8th Edition
8.27
Silberschatz, Galvin and Gagne ©2009
Paginazione: metodo di base

La memoria fisica è divisa in blocchi di dimensione fissa chiamati frame o pagine fisiche

La dimensione è una potenza di 2, compresa fra 512 byte e 16 MB, ma valori tipici negli elaboratori attuali
sono 4KB-8KB

La memoria logica utilizzata dal processo è divisa in blocchi della stessa dimensione chiamati pagine

Il processo è sempre allocato all’interno della memoria logica in uno spazio contiguo

Per eseguire un processo di n pagine è necessario trovare n frame liberi prima di caricare il processo

I frame non devono essere necessariamente contigui
Operating System Concepts – 8th Edition
8.28
Silberschatz, Galvin and Gagne ©2009
Schema di traduzione degli indirizzi

Ad ogni processo è associata una tabella delle pagine (PT) contenente i numeri dei frame usati per
memorizzare le pagine del processo

Serve per tradurre gli indirizzi logici negli indirizzi fisici corrispondenti

L’indirizzo generato dalla CPU è divisa in due parti:


Numero di pagina (p): è utilizzato come indice nella tabella delle pagine che contiene l’indirizzo base del
frame nella memoria fisica

Scostamento (offset) di pagina (d): è combinato con l’indirizzo di pagina fisica per ottenere l’indirizzo
effettivo della memoria fisica
Nota:

In fase di contex switch il Sistema Operativo attiva la tabella delle pagine
per il processo a cui è stata assegnata la CPU

Il tempo per la fase di contex switch con l’introduzione della paginazione può
quindi aumentare in maniera considerevole
Numero di pagina
Scostamento
p
d
Operating System Concepts – 8th Edition
8.29
Silberschatz, Galvin and Gagne ©2009
Es. di paginazione di memoria logica e
memoria fisica
Operating System Concepts – 8th Edition
8.30
Silberschatz, Galvin and Gagne ©2009
Es. di paginazione di memoria logica e
memoria fisica
Operating System Concepts – 8th Edition
8.31
Silberschatz, Galvin and Gagne ©2009
Dimensione delle pagine

La dimensione della pagine è definita dall’architettura del sistema ed è in genere una potenza di 2

La dimensione di una pagina può variare dai 512 byte ai 16MB

La scelta di una potenza di due semplifica notevolmente la traduzione di un indirizzo logico in un indirizzo fisico

Se

lo spazio logico di indirizzamento è 2m

la dimensione di una pagina è 2n
allora abbiamo:

m-n bit per indicizzare le pagine

n bit per lo scostamento (i.e., la grandezza di ogni pagina)
Operating System Concepts – 8th Edition
8.32
Numero di pagina
Scostamento
p
d
m-n bit
n bit
Silberschatz, Galvin and Gagne ©2009
Esempio

Supponiamo di avere le seguenti condizioni

Dimensione delle pagine di 4 byte

Dimensione totale della memoria 32 byte

n=2

m=5

L’indirizzo logico 3 (00011 = #pagina=0, offset=3)
corrisponde all’indirizzo fisico
(5x4)+3 = 23

L’indirizzo logico 6 (00110 = #pagina=1, offset=2)
corrisponde all’indirizzo fisico
(6x4)+2 = 26
Operating System Concepts – 8th Edition
8.33
Silberschatz, Galvin and Gagne ©2009
Tabella dei frame


Poiché il SO gestisce la memoria fisica, deve essere informato su:

quali frame sono assegnati e a chi

quali e quanti frame sono liberi

…
Le informazioni sono contenute nella tabella dei frame

Una entry per ciascun frame, per definire se la pagina fisica è libera o assegnata e, nel secondo caso, a
quale pagina di quale(/i) processo(/i)
Operating System Concepts – 8th Edition
8.34
Silberschatz, Galvin and Gagne ©2009
Paginazione: vantaggi

Con la paginazione è possibile evitare la frammentazione esterna


Però… l’ultimo frame assegnano potrebbe non essere completamente occupato causando quindi frammentazione
interna


Ogni frame libero si può assegnare ad un processo che ne abbia bisogno
Il caso peggiore si verifica quando un processo è un multiplo della dimensione della pagina + 1 byte. In
questo caso una pagina è completamente sprecata
La dimensione delle pagine è aumentata col tempo, attualmente si usano pagine di 4096, 8192, 16384 byte, fino a
4 Mbyte

Pagine più grandi producono maggiore frammentazione interna, ma permettono di avere tabelle delle pagine
più piccole (meno occupazione di memoria)
Operating System Concepts – 8th Edition
8.35
Silberschatz, Galvin and Gagne ©2009
Archietteura di paginazione

Com’è implementato il meccanismo di traduzione degli indirizzi?

Poiché ogni indirizzo deve passare attraverso il sistema di paginazione, il meccanismo di traduzione degli indirizzi
deve essere molto efficiente

Il collo di bottiglia potrebbe essere l’accesso alla tabella della pagine (PT)

Infatti, ogni indirizzo logico deve essere tradotto in un indirizzo fisico con un accesso alla PT

Se la tabella è di piccole dimensioni può stare nei registri (accesso veloce)

… in realtà negli attuali sistemi la tabella della pagine può avere un numero di elementi troppo grande per essere
contenuta all’interno dei registri della CPU

Due sono le possibili soluzioni:

Registro di base della tabella delle pagine (Pagetable base register, PTBR)

Memoria associativa (Translation look-aside buffer, TLB)
Operating System Concepts – 8th Edition
8.36
Silberschatz, Galvin and Gagne ©2009
Registro di base della tabella delle pagine

Il registro PTBR punta alla tabella delle pagine che risiede in memoria



In fase di context switch è necessario solo aggiornare questo registro riducendo il tempo del cambio di
contesto
Il problema di questa soluzione è che per ogni indirizzo logico, occorrono due accessi alla RAM:

Uno per recuperare il frame (conversione indirizzo logico in fisico)

Uno per recuperare il dato
In definitiva il numero di accessi alla memoria fisica aumenta di un fattore 2
Operating System Concepts – 8th Edition
8.37
Silberschatz, Galvin and Gagne ©2009
Memoria associativa (o TLB) - 1

Una memoria associativa (translation look-aside buffer, TLB) è una cache particolarmente veloce

All’interno della memoria associativa abbiamo una coppia del tipo (chiave,valore)

Per ogni chiave passata in input alla memoria associativa, questa viene confrontata contemporaneamente con
tutte le chiavi presenti per restituire il valore in output

Il dispositivo è molto veloce e costoso, e le dimensioni di una TLB sono ridotte (dai 64 ai 1024 elementi)
Operating System Concepts – 8th Edition
8.38
Silberschatz, Galvin and Gagne ©2009
Memoria associativa (o TLB) - 2

Nella memoria associativa viene caricata una porzione della tabella della pagine (anche tutta se è
possibile)

Ad ogni chiave corrisponde un numero di pagina a cui corrisponde un frame

Per ogni indirizzo logico (p,d), il numero di pagina p viene dato in input alla memoria associativa per
ottenere il relativo frame
#pagina (chiave)
#frame

Se la ricerca ha successo (hit) si ha solo una penalizzazione del 10% del tempo di accesso alla
memoria senza paginazione

Se la ricerca fallisce (TLB miss) allora occorre usare la tabella delle pagine nella RAM
Operating System Concepts – 8th Edition
8.39
Silberschatz, Galvin and Gagne ©2009
Architettura di paginazione con TLB
Operating System Concepts – 8th Edition
8.40
Silberschatz, Galvin and Gagne ©2009
Hit ratio

Definiamo il tasso di successo (hit ratio) la percentuale di volte che la ricerca nella TLB ha successo
 Con un hit ratio dell’80% il numero della pagine è trovata nella TLB l’80% delle volte

Supponiamo che un accesso in memoria impiega 100 nanosecondi
Se la ricerca nella TLB impiega 20 nanosecondi allora un accesso in memoria impiega:

20 + 100 = 120 nanosecondi

Se il numero di pagina non è contenuto nella TLB allora è necessario accedere alla memoria fisica per
determinarlo, quindi un accesso in memoria impiega:
20 + 100 + 100 = 220 nanosecondi

Nel caso in cui la percentuali di hit ratio è dell’80% e di insuccessi è del 20% il tempo medio di accesso
alla memoria fisica è:
0.80 x 120 + 0.20 x 220 = 140 nanosecondi
le prestazioni degradano del 40%

Nel caso in cui la percentuali di hit ratio è dell’95% e di insuccessi è del 2% il tempo medio di accesso
alla memoria fisica è:
0.95 x 120 + 0.02 x 220 = 122 nanosecondi
le prestazioni degradano del 22%
Operating System Concepts – 8th Edition
8.41
Silberschatz, Galvin and Gagne ©2009
Pagine condivise

Due processi potrebbero eseguire lo stesso codice

Ad esempio una libreria oppure un editor di testi in un ambiente multiutente

La paginazione permette di condividere facilmente codice tra diversi processi (codice puro o rientrante)

Questa opzione è possibile perché il codice rientrante non cambia durante l’esecuzione del processo

Il codice condiviso deve apparire nella stessa locazione nello spazio degli indirizzi logici di tutti i processi
Operating System Concepts – 8th Edition
8.42
Silberschatz, Galvin and Gagne ©2009
Esempio di pagine condivise
Operating System Concepts – 8th Edition
8.43
Silberschatz, Galvin and Gagne ©2009
Outline

Introduzione

Swapping

Allocazione contigua

Paginazione


Struttura della tabella delle pagine
Segmentazione
Operating System Concepts – 8th Edition
8.44
Silberschatz, Galvin and Gagne ©2009
Segmentation



La segmentazione è uno schema di gestione della memoria che supporta il punto di vista dell’utente
I due spazi di indirizzamento non coincidono ma il meccanismo di traduzione permette di collegarli
Normalmente l’utente percepisce un programma come un
collezione di “segmenti” separati


Programma principale
Procedure
Aree dati procedura
Programma principale
Stack

Tabelle dei simboli



Operating System Concepts – 8th Edition
8.45
Silberschatz, Galvin and Gagne ©2009
Vista logica della segmentazione
1
4
1
2
3
2
4
3
user space
Operating System Concepts – 8th Edition
physical memory space
8.46
Silberschatz, Galvin and Gagne ©2009
Indirizzare un elemento del segmento

Un compilatore in fase di compilazione genera automaticamente i segmenti, ad esempio un compilatore C crea i
seguenti segmenti:

Il codice

Variabili globali

Heap, da cui si alloca la memoria

Variabili locali statiche di ogni funzione o procedura

Librerie standard del C

Ogni segmento ha lunghezza variabile

Un elemento del segmento (codice o dati) è identificato mediante la coppia (#segmento, offset)

#segmento: numero del segmento a cui l’elemento appartiene

offset: scostamento all’interno del segmento
Operating System Concepts – 8th Edition
8.47
Silberschatz, Galvin and Gagne ©2009
Architettura di segmentazione - 1

I segmenti sono allocati all’interno della memoria fisica

Per indicizzare i segmenti abbiamo bisogno di una tabella dei segmenti

Ogni elemento della tabella dei segmenti è formata da una coppia:


Base del segmento: l’indirizzo fisico di partenza del segmento in MP

Limite del segmento: la lunghezza del segmento
Il #segmento nell’indirizzo logico, è l’indice all’interno della tabella contenente la coppia (base, limite)
relativa a quel segmento
Operating System Concepts – 8th Edition
8.48
Silberschatz, Galvin and Gagne ©2009
Architettura di segmentazione - 2
Operating System Concepts – 8th Edition
8.49
Silberschatz, Galvin and Gagne ©2009
Esempio di segmentazione
Operating System Concepts – 8th Edition
8.50
Silberschatz, Galvin and Gagne ©2009
Frammentazione

I segmenti di un processo, come nel caso delle pagine, non devono essere contigui nella memoria fisica

I segmenti sono di dimensione diversa, e un qualsiasi “buco” va bene, per cui:


È necessario adottare strategie di allocazione best/first fit

Ci possono essere problemi di frammentazione esterna

Un segmento potrebbe non trovare spazio in ram (anche se lo spazio c’è...)
Tuttavia, la grandezza media dei segmenti è piccola, per cui il loro uso è comunque più vantaggioso
dell’allocazione contigua a partizioni variabili
Operating System Concepts – 8th Edition
8.51
Silberschatz, Galvin and Gagne ©2009
Scarica

Lezione 8