Sei sulla pagina 1di 41

Capitolo 7 - GESTIONE DELLA MEMORIA PRIMARIA

7.1 - GENERALITA’
La gestione della memoria primaria (Mp) è affidata a moduli del sistema operativo che
devono svolgere le seguenti funzioni:
• Gestire l’assegnazione di memoria alle entità operative che la richiedono (allocazione);
• Gestire l’eliminazione dalla memoria delle entità operative che non ne hanno più
bisogno (deallocazione);
• Mantenere indicazioni sull’uso delle varie posizioni di memoria.

Le esigenze da soddisfare nella realizzazione dei predetti moduli sono fondamentalmente


due:
• semplicità di struttura, per renderne più veloce il funzionamento
• ottenimento di flessibilità ed efficienza nella gestione

Nel seguito si prenderanno in esame otto tecniche di gestione della memoria:


1. Allocazione di spazio contiguo
2. Partizioni
3. Partizioni con riallocazione
4. Memoria paginata
5. Memoria paginata su richiesta
6. Memoria segmentata
7. Memoria segmentata e paginata su richiesta
8. “Overlay”

Per ogni tecnica si esamineranno nell’ordine:


• principio informatore
• specifico HW richiesto od opportuno
• specifici algoritmi usati
• vantaggi e svantaggi

Nel seguito della trattazione si farà ricorso alla seguente terminologia:

Job (o lavoro): insieme delle attività che è necessario svolgere per soddisfare la richiesta di
un utente del calcolatore.
A ciascun job corrisponde uno spazio degli indirizzi del job che contiene tutti i programmi
ed i dati forniti dall’utente.
Un job può essere, dall’utente, suddiviso in passi (step).

Processo (o task): elaborazione che può essere eseguita contemporaneamente ad altre


elaborazioni.
A ciascun processo corrisponde uno spazio degli indirizzi del processo che individua i
programmi ed i dati che occorrono al processo, compresi quelli contenuti nel sistema
operativo.

La fig. 7-1 illustra graficamente il rapporto tra job, passo, processo.

Capitolo 7 7.1
UTENTE

Creato da
JOB
utente

Eventualmente
specificati da PASSO .... PASSO
utente

Creati dal PROCESSO .... PROCESSO


S.O.

Componenti Componenti
standard del standard del
S.O. usate (dal S.O. usate
processo)
Componenti
specifiche del
Componenti
processo
specifiche del
(es.:
processo (es. :
file system ,
programma
iniziatore I/O,
principale,
buffer dati )
sottoprogrammi)
........

........ Spazio degli indirizzi


processo di I/O

Spazio degli indirizzi


processo di CPU

Figura 7-1. Job, passi, processi.

7.2 - ALLOCAZIONE DI SPAZIO CONTIGUO


Si tratta di una tecnica oggi usata sui piccoli calcolatori utilizzati da un solo utente alla volta
(si suol dire che, in questo caso, l’utente coincide con il job e questo con il processo).

7.2.1 PRINCIPIO INFORMATORE


L’intera memoria primaria, tolta la parte utilizzata dal sistema operativo, è messa a
disposizione dell’utente per ospitare lo spazio degli indirizzi del job, come risulta nella fig. 7-
2.

7.2.2 HARDWARE
• Non occorre hardware specifico
• E’ opportuno prevedere un meccanismo di protezione del sistema operativo (per es.:
registro barriera con modo utente e modo supervisore)

Capitolo 7 7.2
Mp

S. O.

A s s e g n a ta e d
M e m o ria
u s a ta d a l jo b
d is p o n ib ile p e r
l’ u te n te
A s s e g n a ta a l jo b
m a n o n u s a ta

Figura 7-2. Allocazione di spazio contiguo

7.2.3 ALGORITMO
L’algoritmo di gestione della memoria è molto semplice; si veda la fig. 7-3.
L’algoritmo è richiamato quando nessun job sta usando la memoria e lo schedulatore dei job
chiede di programmare l’esecuzione di un job. Come già rilevato, di solito è l’utente che
opera da schedulatore dei job.

Richiesta di
allocare un job

La
dimensione No Il job non può essere
del job è < = eseguito - condizione di
memoria primaria errore. Riattivare lo
disponibile schedulatore dei job.
?

Si

Assegnare la memoria
al job. Caricare ed
eseguire il job.

A job terminato
deallocare la memoria e
riattivare lo schedulatore
dei job .

Figura 7-3. Algoritmo di gestione della memoria primaria con


la tecnica di allocazione di spazio contiguo

7.2.4 VANTAGGI
• Il modulo del sistema operativo è di piccole dimensioni ed il suo funzionamento facilmente
comprensibile
• L’intera memoria disponibile è assegnata ad un job quando ne fa richiesta
• L’intera memoria ritorna disponibile quando il job termina

Capitolo 7 7.3
7.2.5 SVANTAGGI
• Scarsa utilizzazione della memoria primaria (se lo spazio degli indirizzi del job non la
occupa tutta)
• Limitazione della dimensione massima dello spazio degli indirizzi dei job eseguibili
• Possibile esistenza di aree di memoria che contengono informazioni mai usate dal job (per
esempio le eventuali routine di errore)
• Possibilità di avere intervalli di tempo nei quali il processore centrale non usa per niente
la Mp (per esempio: dal momento in cui parte una richiesta di I/O al momento in cui
l’operazione è completata), con conseguente scarsa utilizzazione del processore stesso.

7.3 - MULTIPROGRAMMAZIONE
Si definiscono multiprogrammazione l’esecuzione concomitante (concorrente) o intercalata
(“interleaved“) di due o più processi e grado di multiprogrammazione il numero di processi
multiprogrammati.

Per chiarire il concetto si consideri il seguente esempio. Si immagini di dover eseguire su di


un calcolatore dotato di una Mp di 100 MB tre job (JOB 1, JOB 2, JOB 3) che richiedono
rispettivamente 30, 50 e 20 MB e che possono quindi coesistere nella Mp. I tre job sono
strutturati secondo un modello semplice in base al quale si susseguono ciclicamente una
fase di calcolo di durata Ci seguita da una fase di I/O di durata Ii (si veda la fig. 7-4).
JOB 1 JOB 2 JOB 3

Calcolo C1 Calcolo C2 Calcolo C3

I/O I1 I/O I2 I/O I3

M3 = 20 MB
M1 = 30 MB

M2 = 50 MB

Figura 7-4. Modello semplice dei job

Se si inserisce in memoria un solo job, per esempio il JOB 1, si ricavano i valori:

Tempo di attesa (o di inattività del Pc)= I1


% attesa = 100 I1/(C1 + I1)

Se invece si inseriscono in memoria i tre job e li si attiva ciclicamente, nel senso che quando
uno di essi entra nella fase di I/O si fa utilizzare da un altro il Pc si ricavano i valori:
I1 - (C2 + C3 ) se I1 > C2 + C3
Tempo di attesa =
0 altrimenti

e corrispondentemente
100 [I1 - (C2 + C3)] / (C1 + I1)
% attesa =
0

Capitolo 7 7.4
Per poter trarre la conclusione che il processore centrale è effettivamente impegnato per il
100% del tempo occorre naturalmente verificare che la disuguaglianza prima introdotta
valga per tutti e tre i job, ossia che si abbia anche

I2 <= C1 + C3
I3 <= C1 + C2

Si puo’ ora generalizzare la trattazione. Se per un determinato job con “Tempo totale di I/O”
e “Tempo totale Pc” si intendono rispettivamente la somma degli intervalli di tempo in cui il
job ha svolto attività di I/O e la somma degli intervalli di tempo in cui il job ha utilizzato il
processore centrale, si definisce tempo di attesa di (svolgimento dell’) I/O per il job la
quantitá (valore percentuale)

Tempo totale di I/O


ω = ----------------------------------------------------------- 100
Tempo totale Pc + Tempo totale di I/O

Sperimentalmente su calcolatori medio-grandi si trova un valore medio di ω pari al 65 %.

Si definisce poi tempo di attesa di (svolgimento dell’) I/O per il calcolatore la quantità
(valore percentuale)

Durata di permanenza del sistema nello stato “WAIT”


ω’ = ---------------------------------------------------------------- 100
Tempo totale di funzionamento

In questo caso lo stato WAIT è lo stato nel quale si trova il processore centrale quando non
esegue istruzioni e la durata di permanenza in esso è solitamente resa disponibile sui
calcolatori medio-grandi, mentre il tempo totale di funzionamento coincide con l’intervallo di
tempo in cui il calcolatore e’ stato “acceso”.

È ovviamente importante poter effettuare delle stime di ω’, dato che questo parametro
individua il grado di efficienza nello sfruttamento del processore centrale. Una valutazione
nel caso generale è di fatto impossibile, data la molteplicità di elementi da considerare.

Un caso particolare, trattabile matematicamente in forma chiusa, si presenta quando si ha


un calcolatore con un solo processore che deve eseguire n job aventi tutti lo stesso ω. Se si
suppone inoltre che:

1. le attività di calcolo e di I/O siano uniformemente distribuite su tutta la durata di un


job e non vi sia conflitto tra le attivita’ di I/O;
2. le richieste di elaborazione siano soddisfatte ciclicamente, con la tecnica “Round-
Robin” (si veda piu’ avanti nel capitolo 8);

il comportamento del calcolatore è descritto da un processo markoviano delle nascite e delle


morti nel quale si ha

ω n
( 1-ω )

ω’ = 100
n
ω )i

Σ
(
n! ! 1-ω
i!
i=0

Capitolo 7 7.5
ω’ cala, come è plausibile, al crescere di n (grado di multiprogrammazione) ed i suoi valori
sono riportati nella tabella di fig. 7-5.

Valore percentuale del Tempo di attesa di I/O per un singolo job ( ω )

1 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 55.0 60.0 65.0 70.0 75.0 80.0

2 0.1 0.6 1.3 2.4 4.0 6.0 8.6 11.8 15.5 20.0 25.2 31.0 37.6 45.0 52.0 61.5

3 0.0 0.0 0.1 0.2 0.4 0.9 1.5 2.5 4.1 6.3 9.3 13.4 18.9 25.9 34.6 45.1

4 0.0 0.0 0.0 0.1 0.2 0.4 0.8 1.5 2.8 4.8 8.1 13.1 20.6 31.1

5 0.0 0.0 0.1 0.1 0.3 0.7 1.4 2.9 5.8 11.0 19.9

6 0.0 0.0 0.1 0.1 0.4 0.9 2.2 5.2 11.7

7 0.0 0.0 0.1 0.2 0.7 2.2 6.3


n 8 0.0 0.1 0.2 0.8 3.0

9 0.0 0.1 0.3 1.3

10 0.0 0.1 0.5

11 0.0 0.2

12 0.1

13 0.0

Figura 7-5. Valori di ω’ (per n job caratterizzati tutti dallo stesso valore di ω)

Le indicazioni della tabella sono utilizzate per ottenere delle stime ragionevoli in situazioni
reali anche se solitamente non sono soddisfatte le condizioni sopra elencate per la
definizione di ω’.

Esempio di impiego della tabella di fig.7-5.


Si debbano eseguire tre job, per ciascuno dei quali l’esecuzione in un sistema
monoprogrammato richiede 2 ore usando il Pc per 0.4 ore e svolgendo di conseguenza
attivita’ di I/O per 1.6 ore. Si ha pertanto per i tre job

ω = 1.6/ (0.4 + 1.6) = 0.8 = 80%

L’esecuzione in sequenza dei tre job richiede un tempo t pari a 6 ore.


Se i tre job vengono multiprogrammati, sempre supponendo che non vi sia interferenza tra
le loro attivita’ di I/O, dalla tabella si ricava

ω’ = 45.1 =~ 45%

e di conseguenza i tre job si completano in un tempo t’ tale che

0.55t’ = 0.4 x 3
da cui si ricava
t’ =~ 2.2 ore

Prima di riprendere la trattazione si sottolinea il fatto che tutte le tecniche di gestione


della memoria primaria illustrate nella parte restante di questo capitolo
presuppongono un sistema monoprocessore multiprogrammato.

Capitolo 7 7.6
7.4 - ALLOCAZIONE CON PARTIZIONI
7.4.1 PRINCIPIO INFORMATORE
La memoria primaria contiene la parte residente del sistema operativo ed il resto è suddiviso
in regioni separate (dette partizioni) ciascuna delle quali è destinata a contenere lo spazio
degli indirizzi di un job. Si veda la fig. 7-6 per un esempio.

Mp

S.O.

Spazio indirizzi JOB 1


PARTIZIONE 1

PARTIZIONE 2 Spazio indirizzi JOB 2 Spazi assegnati


ma non utilizzati

PARTIZIONE 3 Spazio indirizzi JOB 3

Spazio non
assegnato

Figura 7-6. Allocazione con partizioni

7.4.2 HARDWARE
Il meccanismo di protezione dagli accessi non voluti per il sistema operativo e per i job può
essere realizzato in uno dei due seguenti modi:
1) Registri barriera
• Ne occorrono due per definire gli indirizzi inferiore e superiore della partizione
del job attivo (quello che sta usando il processore centrale)
• Vanno modificati ogni volta che il processore centrale è riassegnato (ossia
assegnato ad un diverso job)
• Sono accessibili solo dal S.O.
2) Chiave di protezione
• Ne occorre una per ogni partizione (per es.: 0 per il sistema operativo, 1 - 15
per i job); le partizioni hanno dimensioni multiple di un valore prefissato o
“blocco” (per esempio di 2 KB) e l’hardware associa una stessa chiave a tutti i
blocchi di una partizione
• Riassegnare il processore centrale vuol dire cambiare il contenuto di un campo
destinato ad ospitare la chiave nel registro PSW

7.4.3 ALGORITMI
L’allocazione della Mp è per lo più gestita dallo “schedulatore dei job” ed impegna una
partizione di memoria se non e’ gia’ in uso.

Capitolo 7 7.7
Il software richiesto cambia con la specifica tecnica usata per la gestione delle partizioni:
partizioni statiche (o fisse) oppure partizioni dinamiche (o variabili)

Partizioni statiche
• La memoria disponibile è suddivisa in partizioni prima dell’esecuzione dei job
• Le partizioni sono definite dal sistema operativo o dall’operatore e la gestione
puo’ essere fatta per mezzo di una tabella: si veda per esempio la tabella di fig.
7-7, costruita per una Mp di 1024 MB nella quale si suppone che i primi 312
MB siano usati dal sistema operativo
• Ogni job (o suo passo) deve specificare l’ammontare massimo di memoria
richiesto (ossia la dimensione massima del suo spazio degli indirizzi)
N° della partizione
(chiave di protezione) Dimensione Indirizzo iniziale Stato
1
8 MB 312 MB IN USO
2
32 MB 320 MB IN USO
3
32 MB 352 MB NON IN USO
4
120 MB 384 MB NON IN USO
5
520 MB 504 MB IN USO

Figura 7-7. Esempio di definizione di partizioni statiche

Questa tecnica funziona bene (cioe’ con scarse inutilizzazioni della memoria) quando la
dimensione degli spazi degli indirizzi e la frequenza dei job sono note; altrimenti si possono
avere utilizzazioni scarse (si veda l’esempio particolarmente negativo descritto dalla tabella
di fig. 7-8).

N° della DIMENSIONE DIMENSIONE


PARTIZIONE PARTIZIONE JOB SPAZIO SPRECATO

1 8 MB 1 MB 7 MB
2 32 MB 9 MB 23 MB
3 32 MB 9 MB 23 MB
4 120 MB 33 MB 87 MB
5 520 MB 121 MB 399 MB
---------- ---------- ----------
712 MB 173 MB 539 MB

Figura 7-8. Esempio di cattiva utilizzazione delle partizioni

Partizioni dinamiche
• Le partizioni sono create via via che si presentano i job e le loro dimensioni
sono scelte pari agli spazi degli indirizzi dei job allocati in memoria

In questo caso la gestione della memoria primaria puo’ essere fatta con due tabelle, una per
le partizioni, una per le aree libere. Le figg. 7-9 e 7-10 forniscono un esempio di tali tabelle,
sempre per una Mp di 1024 MB. Le tabelle hanno un numero di righe pari al massimo grado
di multiprogrammazione previsto, il numero di elementi in esse non è costante nel tempo e
spesso parte delle righe non è usata (tali righe sono individuate dall’espressione “NON IN
USO” nella colonna “Stato” delle tabelle).

L’allocazione richiede:
Capitolo 7 7.8
• il reperimento di un’area libera di dimensione uguale o maggiore della partizione
richiesta attraverso l’impiego di un opportuno algoritmo
• l’eventuale suddivisione in due dell’area libera (se l’area libera è maggiore della
partizione)

La deallocazione si effettua quando un job termina e richiede l’eventuale fusione di aree


libere contigue.

N° della partizione
(chiave di protezione) Dimensione Indirizzo iniziale Stato
1
8 MB 312 MB ALLOCATA
2
32 MB 320 MB ALLOCATA
3
--- --- NON IN USO
4
120 MB 384 MB ALLOCATA
5
--- --- NON IN USO
___ ___ ___

Figura 7-9. Tabella delle partizioni

N° della
area libera Dimensione Indirizzo iniziale Stato
1
32 MB 352 MB DISPONIBILE
2
520 MB 504 MB DISPONIBILE
3
--- --- NON IN USO
4
--- --- NON IN USO
___ ___ ___

Figura 7-10. Tabella delle aree libere

Per l’allocazione si possono adottare due algoritmi, denominati “FIRST FIT” e “BEST FIT”.

Nell’algoritmo FIRST FIT:


• La tabella delle aree libere è ordinata per indirizzi iniziali crescenti delle aree stesse;
• La ricerca parte dall’area libera che ha l’indirizzo iniziale più basso e prosegue sino a
trovare un’area libera in grado di ospitare la partizione.
Questo algoritmo presenta tre vantaggi:
• Il reperimento dell’area libera richiede in media l’esame di metà tabella;
• La ricerca di eventuali aree libere adiacenti, al termine di un job, è facile e richiede in
media anch’essa la scansione di mezza tabella soltanto;
• Favorisce l’uso delle aree libere agli indirizzi bassi di memoria, consentendo la formazione
di una grossa area libera agli indirizzi alti, atta ad ospitare eventuali grandi spazi di
indirizzi.

Nell’algoritmo BEST FIT:


• La tabella delle aree libere è ordinata per dimensioni crescenti delle aree stesse;

Capitolo 7 7.9
• La ricerca parte parte dall’area libera di dimensione minima e si ferma alla prima area
libera in grado di contenere la partizione cercata (è l’area libera che dà l’adattamento
migliore).
Questo algoritmo presenta alcuni vantaggi:
• Il reperimento dell’area libera richiede in media l’esame di metà tabella;
• Se esiste un’area libera che va esattamente bene, essa viene scelta (il che non è
necessariamente vero per l’algoritmo FIRST FIT);
• Se non esiste un’area libera che vada esattamente bene, si sceglie la più piccola area che
contiene la partizione e non si distruggono eventuali grosse aree;
ma anche un particolare inconveniente:
• Le aree libere restanti dopo le allocazioni possono essere di dimensioni piccole e spesso
non sono utilizzabili per ospitare spazi di indirizzi, dando origine ad un fenomeno detto di
frammentazione esterna. Questo inconveniente può essere ridotto alternando partizioni
statiche e dinamiche e gli algoritmi FIRST FIT e BEST FIT in funzione delle sequenze di
job da allocare.

La fig. 7-11 riporta un esempio di utilizzo di partizioni dinamiche (in questo caso gli
algoritmi FIRST FIT e BEST FIT conducono allo stesso risultato) per una Mp di 1024 MB.

Si consideri il seguente semplice esempio di dimensionamento della memoria primaria. Si


immagini che un tipico job da eseguire richieda 40 MB ed abbia ω = 65%. Volendo ottenere
ω’ = 2.9%, sulla base della tabella di fig. 7-5 occorre scegliere n = 5. Di conseguenza
occorrono 200 MB per i 5 job e 100 MB aggiuntivi (la metà di 200) per tenere conto della
frammentazione. In totale occorrono quindi per i job: 200 MB + 100 MB = 300 MB.

La frammentazione esterna può essere eliminata con le tecniche di riallocazione o di


paginazione che verranno esaminate nel seguito. Si tenga presente che peraltro la
riallocazione prevede che si possa generare frammentazione esterna da eliminarsi in seguito
mentre la paginazione è più raffinata e non dà origine per niente a frammentazione esterna.

7.4.4 VANTAGGI
• Facilita la multiprogrammazione e quindi consente una migliore utilizzazione del
processore centrale e dei dispositivi di I/O
• Non richiede hardware complesso
• Impiega algoritmi semplici e facili da realizzare

7.4.5 SVANTAGGI
• Può originare frammentazione esterna
• La singola area libera può non essere grande abbastanza per una partizione, anche in
assenza di frammentazione
• Richiede ovviamente (a parità di dimensioni degli spazi degli indirizzi) una memoria più
grande che nel caso di allocazione di spazio contiguo, per poter contenere più job
• La Mp può contenere informazione mai usata
• La dimensione massima di una partizione, e quindi dello spazio degli indirizzi di un job, è
limitata dalla memoria disponibile

Capitolo 7 7.10
Job da allocare

JOB 4
(24 MB)
JOB 5
(128 MB)

JOB 6
( 256 MB )

0 0 0
Sistema Sistema Sistema
operativo operativo operativo

312M 312M 312M JOB1


JOB 1 (8 MB) JOB1
320M 320M 320M
JOB 2 JOB 2
Area libera
(32 MB) (32 MB)
352M 352M JOB 4 352M
JOB 4
Area libera
(32 MB) 376M A. lib. (8MB) 376M

384M 384M Area libera


JOB 3 (128 MB)
JOB 3
(120 MB)

504M 504M
504M
JOB 5 JOB 5
632M 632M
Area libera JOB 6 JOB 6
(520 MB)
888M 888M
Area libera Area libera
(136 MB) (136 MB)

Stato iniziale JOB 4, JOB 5 e JOB 6 JOB 2 e JOB 3


sono stati allocati sono terminati

Figura 7-11 Esempio di impiego delle partizioni dinamiche (per agevolare la lettura della
figura, partizioni ed aree libere non sono in scala)

7.5 - PARTIZIONI DI MEMORIA CON RIALLOCAZIONE


7.5.1 PRINCIPIO INFORMATORE
La Mp viene gestita con la tecnica delle partizioni dinamiche ma tutte le aree libere vengono
fuse in una sola con un’operazione di compattamento della memoria. Il compattamento
richiede la riallocazione dei job e di conseguenza, per tutti i job che vengono spostati in
memoria, la modifica di tutti gli elementi che sono sensibili alla posizione (per esempio:
registri base, istruzioni che fanno riferimento alla memoria, liste di parametri, strutture di
dati). Lo spostamento avviene verso l’alto della Mp, ossia verso gli indirizzi bassi.
Il compattamento si può effettuare:
a. ogni volta che si effettua una deallocazione, il che comporta

Capitolo 7 7.11
• assenza di frammentazione esterna
• semplicità di aggiornamento della tabella delle aree libere
• maggior impegno di tempo rispetto al caso b (si tenga presente che per ogni indirizzo
dello spazio degli indirizzi di un job che viene riallocato occorre eseguire due istruzioni,
una di lettura ed una di scrittura)
b. solo se non si trova un’area libera atta a soddisfare la richiesta di allocazione di un job e
solo se la somma delle aree libere consente l’allocazione; in questo caso
• l’aggiornamento della tabella delle aree libere è piu’ complesso che nel caso a
• si minimizza l’impegno di tempo per il compattamento
La fig. 7-12 riporta un esempio del modo di procedere.

Job da allocare
JOB 7
0 (256 MB) 0 0

S.O. S.O. S.O.

312M
312K 312M
312K 312M
312K
JOB 1 (8 MB) JOB 1 Job 1
320M 320M 320M
A.libera (32MB) JOB 4 Job4
352M 344M 344M
JOB 4 (24 MB) JOB 5 Job5
376M
Area libera
A.libera(128K 472M 472M
(128 MB) JOB 6 Job 6
504M
JOB 5
(128 MB)
632M 728M 728M
JOB 6 Job 7
Area libera
(256 MB)
(296 MB)

888M 984M
Area libera
(136 MB) A.libera(40 MB
)

Stato iniziale Dopo il Dopo l’ allocazione


compattamento della partizione per il
JOB 7

Figura 7-12. Esempio di compattamento della memoria (Mp di 1024 MB)

7.5.2 HARDWARE
L’hardware richiesto cambia con la soluzione adottata. In effetti si hanno le seguenti
alternative:
1) ricaricamento dei job in memoria
La soluzione non richiede hardware particolare ma è onerosa come tempi e soprattutto
non tiene conto di eventuali azioni irreversibili già compiute dai job (per esempio in
uscita). In sostanza è una soluzione concettualmente semplice ma del tutto
insoddisfacente.
2) tipizzazione dei dati
Si aggiungono dei bit ad ogni posizione di Mp per denotare il tipo di informazione in essa
contenuto (esempio: intero, virgola mobile, carattere, puntatore ad indirizzo). I bit sono
trasparenti al programma e sono usati dal sistema operativo per individuare gli elementi

Capitolo 7 7.12
da modificare in caso di riallocazione. Questo approccio è stato utilizzato in pochi
calcolatori e comporta l’onere dei bit aggiuntivi.
3) riallocazione dinamica
Accanto ai due registri barriera, che memorizzano il limite inferiore e superiore dello
spazio degli indirizzi di un job (si veda il paragrafo 7.4.2) ed il cui contenuto è definito al
momento del caricamento iniziale in Mp e non è più modificato, si introduce un ulteriore
registro denominato registro base (per la riallocazione) il cui contenuto è sommato
all’indirizzo effettivo ogni volta che si deve eseguire un’istruzione che specifica un indirizzo
in Mp.

La fig. 7-13 illustra l’applicazione di questo approccio alla riallocazione del JOB 4
effettuata in fig. 7-12. Per una migliore leggibilità della figura si è mantenuta
l’abbreviazione M che va inteso come un fattore moltiplicativo di valore 1048576.

In alternativa si può convenire che lo spazio degli indirizzi parta sempre dall’indirizzo 0.
In questa ipotesi il contenuto del registro base è sempre positivo ed il sistema operativo
può intercettare indirizzi sia al di sopra che al di sotto dello spazio degli indirizzi con un
unico registro barriera che contiene il limite superiore dello spazio stesso.

La fig. 7-14 riporta la corrispondente definizione dei parametri per lo stesso JOB 4 di fig.
7-12, prima della riallocazione.

In entrambe le modalità di definizione dello spazio degli indirizzi si possono usare, come
già rilevato per le partizioni senza riallocazione:
• registri distinti per ogni partizione;
• registri condivisi tra le partizioni, salvandone il contenuto ogni volta che un job rilascia
il processore centrale.

Ovviamente se lo spazio degli indirizzi di un job viene riallocato più volte durante la sua
permanenza in Mp gli spostamenti si sommano via via.
Se, per esempio, lo spazio degli indirizzi di un job A viene caricato inizialmente in Mp
dall’indirizzo 70 M all’indirizzo 95 M, il contenuto del registro base è 0. A seguito di un
primo compattamento lo spazio degli indirizzi viene spostato verso l’alto di 20 M e si trova
quindi compreso tra l’indirizzo 50 M e l’indirizzo 75 M: corrispondentemente il contenuto
del registro base diventa –20 M. Se, a seguito di un secondo compattamento, lo spazio
degli indirizzi viene ulteriormente spostato verso l’alto di 10 M, esso risulta compreso tra
gli indirizzi 40 M e 65 M ed il contenuto del registro base diventa –30 M (ossia pari alla
somma dei due successivi spostamenti, il primo di 20 M, ilsecondo di 10 M)

Capitolo 7 7.13
0
P a rtiz io n e
del JO B 4

352M 352M
In d iriz z o R e g is tro
e ffe ttiv o base

Load 1, 372M 3 7 2M 0 0 0 0 0 360M Load 1, 372M


360M

0 1 5 5 71
372M + 372M 0 1 5 5 7 1

3 7 6 M -1
3 7 6 M -1

S p a z io d e g li
in d iriz z i d e l J O B 4 L a to L a to
p ro c e s s o re m e m o ria

M e m o ria fis ic a

P rim a d e lla ria llo c a z io n e

0
Partizione del
JOB 4

352M 320M
Registro
Indirizzo
base
effettivo

360M Load 1, 372M -32M Load 1, 372M


3 7 2M 328M

015571
372M 340M 015571
+

344M-1
376M-1

Spazio degli indirizzi


del JOB 4
Lato Lato
processore memoria

Memoria fisica
Dopo il compattamento e
la conseguente riallocazione

Figura 7-13. Esempio di riallocazione con uso di registro base

Capitolo 7 7.14
Registro
base
0
352M
0 indirizzo 352M
effettivo

8M 20M
Load 1, 20M Load 1, 20M
360M
Partiz.
del
JOB 4
20M 015571 015571
+
372M

24M-1 376M-1
Spazio degli
indirizzi del JOB 4

Memoria fisica

Figura 7-14. Spazio degli indirizzi definito a partire dalla posizione 0

7.5.3 ALGORITMI
Gli algoritmi sono derivabili da quelli visti nel paragrafo precedente per l’allocazione con
partizioni aggiungendo il compattamento (si veda la fig. 7-15, relativo al caso b del paragrafo
7.5.1).

7.5.4 VANTAGGI
• Eliminazione degli inconvenienti della frammentazione esterna
• Ottenimento di un maggiore livello di multiprogrammazione
• Migliore utilizzazione della Mp e del processore centrale

7.5.5 SVANTAGGI
• La riallocazione richiede hardware specifico e può rallentare il funzionamento (su ogni
singolo accesso in memoria incide il tempo necessario per determinare il vero indirizzo
attraverso il coinvolgimento del registro base)
• Il compattamento può assorbire tempi rilevanti: se, per esempio, la Mp è organizzata a
byte e le operazioni di lettura e di riscrittura del contenuto di un singolo indirizzo
richiedono complessivamente 50 ns, spostare una partizione di 20 MB richiede in totale
~ 20 x 106 x 50 x 10-9 = 1000 x 10-3 = 1 s
• Può restare della memoria inutilizzata (statisticamente si stima pari a metà della
partizione del job medio)
• La memoria può contenere informazioni mai utilizzate
• Una partizione non può essere più grande della memoria fisica

Capitolo 7 7.15
Richiesta di allocare
una partizione di
dimensione x MB

Vi è una Si Allocare la partizione


area libera >= x MB e aggiornare le Riprendere
? tabelle esecuzione

No

No La somma
di tutte le aree libere
è >= x MB
?

Si

Impossibile allocare
la partizione in
questo momento

Compattare la memoria
e aggiornare le tabelle
corrispondentemente
( adesso vi è una unica
area libera >= x MB )

Figura 7-15. Algoritmo di allocazione per memoria a partizioni con riallocazione

7.6 - MEMORIA PAGINATA


7.6.1 PRINCIPIO INFORMATORE
Lo spazio degli indirizzi di un job è diviso in parti uguali (dette pagine; in inglese page) e la
memoria è divisa in parti della stesse dimensioni (detti blocchi; in inglese block o frame).
Data l’uguaglianza delle dimensioni una pagina può essere inserita in un blocco qualsiasi.
Le pagine sono logicamente contigue, i blocchi non necessariamente, ma si fa in modo che la
corrispondenza tra pagine e blocchi non abbia effetto sullo spazio degli indirizzi. Le
dimensioni della pagina (da 512 B a 4 KB) costituiscono una caratteristica importante
nell’impiego di questa tecnica.
La gestione della memoria paginata comporta per il sistema operativo:
• Tenere conto dello stato della memoria. Occorrono a questo scopo:
• Per ogni job una tabella delle corrispondenze tra pagine e blocchi (Page Map Table,
in breve PMT)
• Per il sistema una tabella dei blocchi, che specifichi per ogni blocco se è allocato o
disponibile e, nel caso sia allocato, quale pagina contiene (Memory Block Table o
in breve MBT)
• Per il sistema una tabella dei job (Job Table o in breve JT) che, per ogni job, ne
riporti la dimensione, l’indirizzo iniziale della sua PMT e lo stato (se allocato o no in
Mp)
Capitolo 7 7.16
• Determinare il job da allocare
• Questo compito è affidato al Job Scheduler
• Eseguire l’allocazione assegnando al job i primi blocchi liberi reperiti
• Eseguire la deallocazione aggiornando la MBT al termine dell’esecuzione di un job

La fig. 7-16 fornisce un esempio di struttura delle PMT per un sistema che ha una Mp di 10
KB suddivisa in 10 pagine da 1 KB e che ospita tre job. La scelta della dimensione della Mp
in questo come in altri successivi esempi è ovviamente dettata solo dall’esigenza di avere
una struttura semplice da rappresentare graficamente.

Pagina Blocco Blocchi

0 0
0
Pag.0
0 5 Sistema
1K
1024 1000 operativo 1
1
Pag.1 1 6
2K
2047
JOB 1 JOB 2
2566 LOAD 1, 2108 pag.0 2
0
3K
Pag.0 518 LOAD 1, 2108 0 2 Blocco libero
3
1024 4K
JOB 2 4
Pag.1 pag.1
2048
1 4
5K
JOB 1 5
Pag.2 2108 pag.0
015571
2 7 6K
3071 JOB 1 6
pag.1
JOB 2 7K
JOB 2
7228 015571 pag.2 7

8K
8000
0 JOB 3
pag.0 8
Pag.0
0 8 9K
Blocco libero 9
1023
JOB 3
10239

Spazi degli Page Map Memoria fisica


indirizzi Table

Figura 7-16. Esempio di memoria paginata

7.6.2 HARDWARE
Per memorizzare le PMT si hanno le seguenti alternative:
1) Registri specifici
Ne occorre uno per ogni pagina e devono essere veloci, e quindi costosi, dato che sono
coinvolti in ogni indirizzamento della memoria. Se ne può ridurre il numero o limitando lo
spazio degli indirizzi di un job oppure introducendone un numero tale da gestire il
massimo spazio degli indirizzi consentito e salvandone il contenuto ogni volta che un job
rilascia il processore centrale.

Capitolo 7 7.17
2) Uso di specifica area nella memoria primaria
Questo metodo va bene per grandi spazi degli indirizzi ed elimina la necessità di effettuare
salvataggi: occorre però fare in modo che sia nota la posizione della PMT del job in
esecuzione. A questo scopo:
• si può memorizzare la PMT del job in esecuzione sempre a partire da una posizione di
memoria prestabilita; in questo caso occorre inserire in memoria l’intera PMT ogni volta
che il processore centrale cambia job;
• si possono memorizzare le PMT in posizioni qualsiasi tenendo traccia dei loro indirizzi
iniziali ed inserendo in un apposito registro denominato Page Map Table Address
Register (o PMTAR per brevità) l’indirizzo iniziale della PMT del job che si sta
eseguendo; in questo caso basta cambiare solo il contenuto del PMTAR ogni volta che il
processore centrale cambia job.

Questo secondo approccio è stato usato per esempio per la famiglia di calcolatori IBM
System/370. In essi viene chiamato DAT (Dynamic Address Translation) il meccanismo di
corrispondenza tra pagine e blocchi che attua una trasformazione PMT(p) del numero di
pagina p in un numero di blocco (si veda la fig. 7-17). In tale famiglia di calcolatori gli
indirizzi venivano definiti da 24 dei 32 bit a disposizione in una parola: ogni elemento
delle PMT è memorizzato in 2 B ed i 12 bit più significativi individuano il n° di blocco,
mentre gli altri 4 non sono usati nella realizzazione della tecnica in esame. Nel caso
pessimo una PMT può quindi essere costituita da 4096 pagine e richiedere 8192 byte. In
effetti in PMTAR si memorizza anche la lunghezza della tabella PMT in modo da usare la
memoria strettamente necessaria.
Vale la pena di rilevare che detta famiglia di calcolatori ha avuto evoluzioni nel tempo
quanto a dimensione massima dello spazio degli indirizzi di un job. Annunciata nel 1964
(in effetti come Sistema 360) lo spazio degli indirizzi, individuato come sopra detto da 24
bit, era al più di 16 Mbyte. Nel 1982 lo spazio massimo è stato portato a 2 GB
consentendo l’indirizzamento con 31 bit e successivamente nel 1988 lo spazio massimo è
stato portato a 16 TB con indirizzamento a mezzo di 44 bit.

Questa alternativa presenta però un grave inconveniente e cioè un sensibile


rallentamento del funzionamento perché ogni accesso in memoria ne richiede 2 (uno per
accedere alla PMT, uno per accedere alla posizione vera e propria).

3) Soluzione ibrida:
Alcuni elementi delle PMT sono contenuti in un insieme di registri (per esempio 16)
mentre gli elementi restanti sono contenuti in Mp. I registri costituiscono una memoria
associativa, invisibile al sistema operativo, e grazie al principio di località il doppio
accesso in memoria può essere necessario per esempio solo nel 10% dei casi.
La fig. 7-18 riporta un esempio di una siffatta memoria associativa che viene chiamata in
causa quando un job richiede una pagina.

7.6.3 ALGORITMI
Il sistema operativo deve gestire i tre tipi di tabelle prima definiti:
• Tabella dei job (JT)
• Tabella dei blocchi di memoria (MBT)
• Tabelle delle corrispondenze tra pagine e blocchi (PMT)
La fig. 7-19 riporta un esempio delle predette tabelle nel caso di un calcolatore con pagine
da 4 KB e nel quale ogni elemento delle PMT occupa 2 byte. Le dimensioni degli spazi degli
indirizzi per i tre job sono state scelte in modo da contenere la dimensione delle tabelle.

Capitolo 7 7.18
Indirizzo effettivo
32 bit
24 bit
12 bit 12 bit

p b EAR
0 7,8 19,20 31

Inutilizzati Numero Numero byte


pagina nella pagina

Meccanismo di DAT
Numero Numero
pagina blocco

PMT (p) b
0
0 7,8 19,20 31
1
Indirizzo in
2 memoria
fisica
3

4 Memoria fisica
5

4095

PMT

Figura 7-17. Esempio di determinazione dell’indirizzo in Mp a partire dall’indirizzo in EAR (Effective


Address Register) nei calcolatori IBM System/370.

Capitolo 7 7.19
N° JOB N° PAGINA

3 11 REGISTRO DI RICERCA

INDIRIZZO INIZIALE DELLA


Ricerca in
PAGINA IN Mp
parallelo

1 3 57 344

1 7 81 920

3 11 49 152
MEMORIA
ASSOCIATIVA
2 2 20 480

2 1 16 384

4 0 77 824

REGISTRO DI USCITA

Figura 7-18. Memoria associativa usata per la memoria paginata

7.6.4 VANTAGGI
• Eliminazione della frammentazione esterna senza necessità di riallocazione
• Possibilitàdi ottenere un maggiore livello di multiprogrammazione
• Migliore sfruttamento della memoria primaria e del processore centrale
• Ottima protezione degli spazi degli indirizzi dato che a priori un job non ha modo di
accedere ai blocchi di memoria contenenti lo spazio degli indirizzi di un altro job
• Possibilità di ottenere un’area di memoria comune a più job, per esempio utilizzando un
opportuno schema di caricamento in memoria dei job; naturalmente occorre aggiungere
adeguate protezioni. La fig. 7-20 riporta un esempio di questo modo di procedere: tutti i
job sono caricati a partire da 8K nel loro spazio degli indirizzi.

Capitolo 7 7.20
Numero Dimensione Indirizzo iniziale Stato del job
job Page Map Table o dell’ elemento
della tabella
1 8 KB 3600 ALLOCATO
2
12 KB 4160 ALLOCATO
3
4 KB 3820 ALLOCATO
4
--- --- NON IN USO
Tabella dei Job (JT)

N°pag. N° blocco N°pag. N° blocco N°pag. N° blocco


3600 4160 3820
0 5 0 2 1 8
3602 4162
1 6 1 4
4164 PMT del JOB 3
2 7
PMT del JOB1
PMT del JOB 2

Tabelle PMT

N° blocco Stato
0 Sistema operativo
1
Sistema operativo
2
Job 2
3
Disponibile
4 Job 2
5 Job 1
6
Job 1
7
Job 2
8
Job 3
9 Disponibile
Tabella dei blocchi di memoria (MBT)

Figura 7-19. Tabelle usate per la gestione della memoria paginata

Capitolo 7 7.21
0 0 0
Sistema Pag. 0 1
operativo 1
4K
Pag. 1 2
2
8K 3
4
4 7
Pag. 2
PMT del JOB 2

12K
Pag. 3

16K
Pag. 4

20479
Spazio degli indirizzi
del JOB 2

Figura 7-20. Definizione di blocchi comuni a piu’ job

7.6.5 SVANTAGGI
• L’ hardware richiesto aumenta il costo del processore centrale e rallenta l’indirizzamento
della Mp
• Il processore centrale impiega tempo per tenere aggiornate le tabelle (specie le PMT)
• Si ha frammentazione interna (o rottura di pagine), originata dal fatto che non e’ detto
che lo spazio degli indirizzi sia di dimensioni pari ad un multiplo esatto della dimensione
della pagina. L’ultima pagina può quindi non essere piena. In effetti si considera come
valor medio dello spazio sprecato mezza pagina per job; lo spreco ovviamente diminuisce
se le pagine sono piccole (ma in tal caso crescono le dimensioni delle PMT ed aumenta il
valor medio del tempo di lettura per byte della pagina)
• Si può avere memoria non utilizzata, pari a circa metà dello spazio degli indirizzi del job
medio (dato sperimentale): si ha quando un job richiede uno spazio maggiore dell’insieme
dei blocchi disponibili e non è quindi allocabile
• La memoria può contenere informazioni mai usate
• Lo spazio degli indirizzi di un job è limitato dalla dimensione della memoria fisica
• Parte della Mp è occupata dalle tabelle

7.7 - MEMORIA PAGINATA SU RICHIESTA


7.7.1 PRINCIPIO INFORMATORE
La Mp viene gestita introducendo pagine e blocchi, come per la memoria paginata, ma non
si richiede che lo spazio degli indirizzi di un job sia contenuto tutto in Mp. Tipicamente le
pagine vengono inserite dalla memoria secondaria in Mp solo quando servono, cioè quando
sono richieste dal job durante l’esecuzione. In questo modo lo spazio degli indirizzi può

Capitolo 7 7.22
superare le dimensioni fisiche della Mp e si parla di memoria virtuale in quanto il sistema
operativo produce l’illusione di una memoria molto grande.

L’approccio funziona perché molte pagine non sono in effetti usate in quanto nei programmi
reali, specie se complessi e di grandi dimensioni:
• vi possono essere routine di errore scritte dall’utente che ovviamente si eseguono solo se
si presentano errori
• vi possono essere opzioni mutuamente esclusive o non coinvolte in ogni esecuzione
• spesso si assegna a molte tabelle una occupazione fissa di memoria anche se sono usate
solo in parte
• vi possono essere parti eseguite in tempi mutuamente esclusivi

La fig. 7-21 illustra un esempio di applicazione di questa tecnica. Partendo dalla situazione
descritta nella fig. 7-19, nella quale vi sono 2 blocchi liberi, il sistema operativo vuol
prendere in carico un JOB 4 il cui spazio degli indirizzi è di 4 pagine. Le PMT devono avere
un campo in più (“stato”), costituito tipicamente da 1 bit con la seguente convenzione:
il bit ha valore 1 se la pagina è in Mp
il bit ha valore 0 se la pagina non è in Mp
Nel caso del JOB 4 le pagine 0 ed 1 sono allocate, la 2 e la 3 no. Per queste due ultime
pagine il campo “numero di blocco” nella PMT non ha evidentemente significato.

La gestione della memoria paginata su richiesta deve affrontare i seguenti problemi:


1) Cosa fare se un job richiede una posizione dello spazio degli indirizzi che non è in Mp
Se il bit di stato della pagina che contiene la posizione cercata ha il valore 0 si genera una
interruzione da pagina mancante (o Page fault): il sistema operativo deve caricare la
pagina dalla memoria secondaria e riprendere l’esecuzione.
All’inizio dell’esecuzione di un job si puo’ caricare in Mp solo la prima pagina di ciascun
job; in effetti di solito si caricano in memoria piu’ pagine adiacenti (2 o più) per sfruttare il
principio di localita’.
2) Quali pagine conservare in Mp
L’eliminazione di pagine dalla Mp può essere fatta con vari algoritmi, che verranno
descritti in seguito e che devono condurre comunque alla copiatura in memoria
secondaria della pagina eliminata se è stata modificata. L’operazione è detta Page
Swapping o Page Replacement o Page Removal.
Lo spostamento eccessivo di pagine tra memoria primaria e memoria secondaria è detto
page thrashing (“thrashing” sta per fallimento) ed esistono metodi per cercare di ridurre
questo inconveniente.

La gestione della memoria paginata su richiesta comporta per il sistema operativo:


• Tenere conto dello stato della memoria. A questo scopo occorrono, come per la memoria
paginata:
• per ogni job una Page Map Table (PMT)
• per il sistema una Memory Block Table (MBT)
• per il sistema una Job Table (JT), per individuare in Mp la posizione delle PMT dei
singoli job
ed inoltre
• per ogni job una File Map Table (FMT), per rintracciare nella memoria secondaria le
pagine da caricare in Mp
• Determinare il job da allocare. Questo compito è svolto dal Job Scheduler tenendo conto
delle interruzioni per page fault
• Eseguire l’allocazione che consiste nel reperire uno o più blocchi liberi e nel cambiarne
stato, aggiornando la PMT coinvolta
• Eseguire la deallocazione che richiede:
• di liberare uno o più dei blocchi allocati se non se ne trova di liberi quando un job fa
richiesta di allocazione

Capitolo 7 7.23
• di rendere disponibili tutti i blocchi usati da un job quando esso termina l’
esecuzione
Si noti che nella memoria paginata su richiesta le operazioni di allocazione e deallocazione
possono essere richieste anche durante l’esecuzione di un job, e non soltanto all’inizio od
alla fine della esecuzione come nelle tecniche di gestione prima viste.

7.7.2 HARDWARE
Oltre all’hardware richiesto per la memoria paginata occorrono:
• un bit nella PMT per indicare se la pagina è in Mp oppure no
• un meccanismo di interruzione per trasferire il controllo al sistema operativo allorché
un job chiede accesso ad una pagina non in Mp
• un eventuale meccanismo di registrazione dell’uso delle varie pagine, per gli scopi che
saranno chiariti in seguito

L’interruzione per page fault ha un codice prestabilito e l’indirizzo logico che ha causato
l’interruzione è memorizzato in una posizione di Mp anch’essa prestabilita in modo da essere
recuperabile dal sistema operativo. L’elaborazione di una siffatta interruzione richiede
l’esecuzione di una o due operazioni di I/O per il trasferimento di pagine tra Mp e memoria
secondaria (due se si deve rimuovere una pagina che era stata modificata). Per ridurre i
tempi di attesa del processore centrale anche queste operazioni possono essere
multiprogrammate e si parla di “multiprogrammazione spinta”. In questa ipotesi occorre
prevedere un terzo stato nella MBT ossia quello di blocco in transito: un blocco il cui stato è
in transito non è al momento disponibile per una eventuale allocazione. Al termine della
operazione di I/O lo stato è cambiato in allocato o disponibile.
Si tenga infine presente che l’esecuzione di una istruzione può generare diverse interruzioni
per page fault, specie nelle architetture CISC.

Per agevolare il funzionamento del sistema operativo per ogni blocco, od all’interno della
MBT od in appositi registri del processore centrale, si memorizzano di solito una chiave di
protezione (si veda il paragrafo 7.4.2), diversa per ogni job, e 3 bit denominati di
utilizzazione, di cambiamento e di protezione del prelievo:
il bit di utilizzazione (o reference bit) R viene posto ad 1 se una qualsiasi posizione del
blocco è utilizzata durante l’esecuzione delle istruzioni del job
il bit di cambiamento (o change bit) C viene posto ad 1 se si memorizza qualcosa in una
posizione del blocco
il bit di protezione del prelievo (o fetch protection bit) F ha il seguente significato:
• se F=0 il prelievo è consentito con qualsiasi chiave mentre la memorizzazione è
consentita solo con la stessa chiave
• se F=1 sia il prelievo sia la memorizzazione sono consentiti solo con la stessa chiave

Come già rilevato ogni pagina è sistemata ad uno specifico indirizzo nella memoria
secondaria e questo indirizzo è reperibile grazi alla FMT.

La fig. 7-22 riporta un esempio di interazione tra le tabelle prima descritte.

Capitolo 7 7.24
Pagina Stato Blocco 0
0
0 1 5 1K
Sistema
1024 operativo
1 1 6
2K
2047 JOB 2
JOB 1 pag. 0
0
0 1 2 3K

1024 1 1 4 3172 LOAD 1, 1120 JOB 4


pag. 0
2048 ADD 1 , 2410
2 1 7

3071 4K
JOB 2 JOB 2
pag. 1
5K
0 JOB 1
pag. 0
6K
0 1 8 JOB 1
1023
pag. 1
JOB 3 7000
7K
JOB 2
0 pag. 2
8K
JOB 3
pag. 0
9K
100 LOAD 1, 1120
0 1 3 JOB 4
ADD 1, 2410 9312 006802 pag. 1

1 1 9
1024 10239
2 0 -- Memoria fisica
1120 006802 3 0 --
1120

2048 PMT dei job

2410
006251

3072

4095 JOB 4

Spazi indirizzi

Fig. 7-21 – Esempio di memoria paginata su richiesta

Capitolo 7 7.25
Nel caso della famiglia di calcolatori IBM System/370 già ricordata se si impiega la tecnica
della memoria paginata su richiesta nella PMT oltre ai 12 bit usati per individuare il numero
del blocco si usa anche il tredicesimo, denotato I in figura, con il seguente significato: se I =
1 è necessario generare una interruzione per page fault allorché si richiede la pagina
corrispondente, se I = 0 la pagina è presente in Mp. Inoltre la FMT è fusa con la PMT (hanno
lo stesso numero di righe) in un’unica tabella i cui elementi hanno pertanto il seguente
formato:

N° BLOCCO I Non INDIRIZZO PAGINA


usati
12 bit 1 16 bit
32 bit

7.7.3 ALGORITMI
Nella gestione della memoria paginata su richiesta si ha una stretta interazione tra
hardware e software.
La fig. 7-23 mostra una possibile suddivisione dei compiti tra di essi per un calcolatore con
pagine da 4 KB, supponendo: (a) che la routine di gestione delle interruzioni per page fault
trovi alla posizione di memoria 144 (valore arbitrario) il numero di pagina che ha originato
l’interruzione; (b) che, per semplicità, i dati richiesti siano contenuti in una stessa pagina;
(c) che, a seguito dell’interruzione, sia caricata una sola pagina in Mp.

7.7.3.1 INSERIMENTO DI PAGINE


L’inserimento di pagine non richiede algoritmi particolari stante la possibilità di inserire una
pagina in un qualsiasi blocco. Si può pensare che, per esempio, il sistema operativo effettui
la ricerca di blocchi liberi scorrendo la MBT a partire dal primo blocco utilizzabile (esclusi
cioè quelli che ospitano la parte residente del sistema operativo).

7.7.3.2 RIMOZIONE DI PAGINE


Gli algoritmi per la rimozione di pagine, detti anche algoritmi di paginazione, sono
ovviamente chiamati in causa quando tutti i blocchi sono allocati ed occorre fare spazio per
una pagina richiesta da un job ma non presente in memoria.
In generale l’analisi del funzionamento di un programma conduce a definire tre elementi:
• la traccia dell’esecuzione (execution trace), costituita dalla lista delle istruzioni
ordinatamente eseguite dal programma;
• la traccia degli indirizzi (address trace), costituita dalla lista degli indirizzi via via
richiesti per l’esecuzione delle istruzioni del programma;
• la traccia delle pagine (page trace), costituita dalla lista delle pagine via via richieste
dall’esecuzione del programma.
La traccia delle pagine è sufficiente per caratterizzare il comportamento di una memoria
paginata su richiesta. Se nell’esecuzione di una traccia di pagine la pagina richiesta è in Mp
si parla di page success, se invece la pagina non è in Mp si parla (come già detto) di page
fault. Per valutare la bontà o meno di un algoritmo di rimozione delle pagine, definite allora
per la traccia in esame le quantità
S = n° di page success
F = n° di page fault
si usano i seguenti parametri:
s = frequenza di successi = S /(S + F)
f = frequenza di insuccessi = F /(S + F)
Ovviamente un algoritmo sarà tanto migliore per quella traccia quanto minore e’ la
frequenza di insuccessi. Si esamineranno ora alcuni esempi di algoritmi.

Capitolo 7 7.26
Job Table (JT)
Job Dimens. Ind. iniziale della FMT Stato
1 ALLOCATO

2 12 KB ALLOCATO

3 ALLOCATO
Informazione contenuta
44 NON IN USO Bit di cambiamento nella MBT od in specifici
.... registri
Bit di utilizzazione
Memory Block
Table (MBT) Registro Bit di protezione
Blocco Stato PMTAR del prelievo Blocco
0 Sistema operativo 0
Chiave F R
UC
1 Sistema operativo Sistema 0
operativo
2 4K
4K
JOB 2, pagina 0 e
Chiave F R C
3 Disponibile tabelle
1
4 JOB 2, pagina 1
8K
5 Chiave F R C
JOB 1, pagina 0
8710 LOAD 1, 8300
6 JOB 1, pagina 1 (JOB 2, pag.0) 2
7 Disponibile 12K Chiave F R C
8 3
JOB 3, pagina 0
( Disponibile )
9
Disponibile
16K
Chiave F R C
4
File Map Table (JOB 2) Page Map Table (JOB 2) (JOB 2, pag.1)
Pag. Indirizzo della pagina Pag. Blocco Stato
20K
0 0 2 1 Chiave F R C
(JOB 1, pag.0) 5
1 1 4 1
_ 0 24K
2 2 Chiave F R C
2 2
(JOB 1, pag.1) 6
28K
Chiave F R C
0 7
( Disponibile )
518 LOAD 1, 8300 Pag.0 32K
Chiave F R C
(JOB 3, pag.0) 8
4K
36K
Chiave F R C
Pag.1
9
8K ( Disponibile )

8300 015571
Memoria fisica
Pag.2
12K

Memoria secondaria

Figura 7-22. Esempio di interazione delle tabelle per una memoria paginata su richiesta

Capitolo 7 7.27
Algoritmo ideale
Allorchè si deve rimuovere una pagina si rimuove quella che non sarà più usata o che non
verrà richiesta per l’intervallo di tempo più lungo. Naturalmente non e’ applicabile in pratica
perché bisognerebbe avere capacità predittive ed è quindi usato solo come termine di
confronto tra altri algoritmi nella gestione di una traccia di pagine assegnata.

Algoritmo First-In First-Out (FIFO)


Allorché occorre rimuovere una pagina, si sceglie quella che è da più tempo in memoria.
Questo algoritmo presenta dei vantaggi:
• semplicità concettuale
• mantenimento in memoria di una pagina appena allocata
ma presenta anche dei significativi svantaggi:
• la realizzazione non e’ banale (richiede, per esempio, che venga associato ad ogni blocco
l’istante in cui e’ stata inserita in esso la pagina, individuando tale istante attraverso
l’orologio del calcolatore)
• una pagina da tempo in memoria finisce con l’essere rimossa anche se continua ad
essere usata frequentemente
• e’ soggetto all’anomalia di Belady: per determinate tracce di pagine un aumento della
memoria fisica può produrre peggiori prestazioni e cioè un valore maggiore di f
• altri algoritmi risultano più efficienti, nel senso che la frequenza di page fault risulta
inferiore

Algoritmo Least Recently Used (LRU)


Allorché occorre rimuovere una pagina, si sceglie quella che non è usata da più tempo.
Questo algoritmo sfrutta il principio di località e fa parte degli algoritmi denominati a stack
per i quali si dimostra che non sono soggetti all’anomalia di Belady e per i quali, pertanto,
un aumento della memoria fisica non può mai produrre peggiori prestazioni.
Anche questo algoritmo è di applicazione onerosa perché richiede di associare un istante di
tempo ad ogni caricamento di blocco e di aggiornarne il valore ogni volta che si fa riferimento
al blocco.

Algoritmo Not Recently Used (NRU)


Si tratta di una approssimazione dell’algoritmo LRU che usa il “reference bit” associato ai
vari blocchi della Mp. Il bit è messo ad 1 quando si accede al blocco per utilizzare la pagina
in esso contenuta ed è messo a 0 dal sistema operativo o periodicamente od attraverso un
meccanismo di scansione ciclica dei blocchi di memoria. Dovendo rimuovere una pagina il
sistema prende per primi in esame i blocchi con il reference bit a 0 e solo se non ve ne sono
prende in esame i blocchi con il reference bit ad 1.

Algoritmo Least Frequently Used (LFU)


Allorché occorre rimuovere una pagina, si sceglie quella che è stata usata meno
frequentemente controllando appositi contatori (associati ai blocchi di memoria). Questo
algoritmo presenta il rischio di rimuovere una pagina che è stata caricata da poco tempo e
che pertanto è stata ancora poco usata ma che potrebbe essere molto richiesta in seguito
oppure di mantenere in memoria una pagina che è stata usata molto intensamente ma che
da tempo non viene più usata.

Capitolo 7 7.28
Iniziare
l‘elaborazione
dell’istruzione

Generare l indirizzo dei Passare alla prossima


dati istruzione

Ciclo di
Calcolare il numero di elaborazione
pagina delle istruzioni
nell’hardware

( PMT )
La Si Prelevare i dati e
Hardware pagina è in completare l’istruzione
memoria
?
Segnale di interruzione per
No assenza di pagina ( page fault )

Vi è
un blocco di No Scegliere pagina da
memoria libero rimuovere dalla
Software memoria fisica
( MBT ) ?

Aggiornare tabelle dei blocchi e


Si delle pagine

La Si Ricopiare la
pagina era pagina sul disco
cambiata ?

Ricavare il numero di No
pagina richiesto dalla
posizione 144

Ricavare l’indirizzo della


pagina sul disco dalla ( FMT )
FMT

Leggere la
pagina

Aggiornare tabelle dei blocchi e


delle pagine

Load PSW
Riprendere l’esecuzione della
istruzione interrotta

Figura 7-23. Esempio di algoritmo per la gestione di una memoria paginata su richiesta

Capitolo 7 7.29
Algoritmo di rimozione casuale
Tenuto conto degli oneri operativi conseguenti alla utilizzazione di uno dei
precedenti algoritmi, in alcuni sistemi operativi la scelta della pagina da
rimuovere è fatta in modo del tutto casuale cercando di minimizzare l’impegno
del processore centrale nella scelta.

Come corollario alla trattazione degli algoritmi si tenga presente che i


riferimenti alla memoria da parte dei programmi non sono casuali e che spesso
consentono di individuare le fasi dell‘esecuzione ed anche specifiche
operazioni.
Per migliorare le prestazioni di un sistema con memoria paginata bisogna
rendere i “più” locali possibile i riferimenti alla memoria. Se, per esempio, gli
elementi di una matrice bidimensionale di grandi dimensioni sono memorizzati
secondo l’ordine A(1,1), A(1,2), ... , A(1,m), A(2,1), ... , A(2,m), ... , A(n,1), ... ,
A(n,m), come avviene in alcuni linguaggi di programmazione, conviene
utilizzarne gli elementi seguendo l’ordine di memorizzazione per evitare di
cambiare pagina nel passaggio da un elemento al successivo.

7.7.4 VANTAGGI
• Eliminazione della frammentazione esterna senza necessità di riallocazione
• Possibilità di ottenere un maggior livello di multiprogrammazione
• Migliore sfruttamento della Mp utilizzandola completamente ed evitando il
caricamento di pagine che non servono
• Migliore sfruttamento del processore centrale
• Possibilità di realizzare una memoria virtuale di grandi dimensioni
• Possibilità di “multiprogrammazione spinta” (si veda il paragrafo 7.7.2)

7.7.5 SVANTAGGI
• Aumento del costo dell’hardware
• Impegno del processore centrale per l’aggiornamento delle tabelle e la
gestione degli algoritmi di paginazione
• Occupazione della Mp per ospitare le tabelle
• Frammentazione interna
• Pericolo di “page thrashing”

7.8 - MEMORIA SEGMENTATA


7.8.1 PRINCIPIO INFORMATORE
Si definisce segmento un raggruppamento logico di informazioni (per esempio:
il programma principale, una subroutine, una matrice).
Lo spazio degli indirizzi di un job consiste spesso di un insieme di segmenti (si
veda fig. 7-24) e la memoria segmentata cerca di sfruttare questa suddivisione
dello spazio degli indirizzi.
In una memoria segmentata ogni riferimento allo spazio degli indirizzi deve
contenere :
• l’individuazione del segmento
• la posizione all’ interno del segmento
La suddivisione in segmenti è “visibile” al programmatore ma non richiede che
il programmatore se ne preoccupi in quanto la maggior parte dei linguaggi di
programmazione ha per esempio dichiarazioni del tipo
Call y
per richiamare una subroutine (y = nome subroutine).
Ė bene rilevare che esiste una significativa differenza tra pagina e segmento:
• la pagina è un’unità “fisica” di informazione, invisibile al programma,
di dimensione fissa

Capitolo 7 7.30
• il segmento è un’unità “logica” di informazione, visibile al programma,
di dimensione variabile

La gestione della memoria segmentata comporta per il sistema operativo:


• Tenere conto dello stato della memoria. Occorrono a questo scopo:
• per ogni job una tabella delle corrispondenze tra segmenti e posizioni
di memoria (Segment Map Table o in breve SMT); se ne veda un
esempio nella fig. 7-25, relativa al job di fig. 7-24
• per ogni job una tabella delle corrispondenze tra i nomi dei segmenti
e gli identificatori standardizzati, solitamente numeri interi, ad essi
attribuiti dal sistema (Segment Name Table)
• per il sistema una tabella delle aree libere
• per il sistema una tabella dello stato dei segmenti attivi (Active
Segment Table o in breve AST; per il suo impiego si veda il paragrafo
7.8.3.1 )
• Determinare job da allocare. Questo compito è affidato al Job Scheduler,
che opera statisticamente se l’uso della memoria virtuale è limitato, o
dinamicamente su interruzioni da segmento altrimenti
• Eseguire l’allocazione
• Il segmento viene inserito in un’area che lo contenga, previa
eventuale riallocazione dei segmenti esistenti
• Eseguire la deallocazione
• Viene deallocato uno dei segmenti esistenti se non esiste un’area
libera in grado di contenere il segmento da inserire. Al termine
dell’esecuzione di un job tutta la memoria usata da suoi segmenti
viene resa disponibile.

7.8.2 HARDWARE
L’hardware deve svolgere due funzioni:
1. formare l’indirizzo
2. definire la corrispondenza tra byte e posizione in memoria
1. Formazione dell’indirizzo
In base a quanto prima osservato occorre generare un numero di segmento ed
un numero di byte. Spesso si ha un unico campo nell’istruzione e l’indirizzo
effettivo è generato con tecnica di formazione lineare interpretando, a indirizzo
generato, alcuni bit come numero di segmento.

N°SEGMENTO N° BYTE

2. Definizione della corrispondenza


Come per la memoria paginata occorrono dispositivi per realizzare e gestire le
SMT. Occorre inoltre:
• controllare che l’indirizzo del byte cada entro il segmento (data la variabilità
di dimensione del segmento)
• controllare che sia consentito l’accesso alla posizione individuata (data la
maggiore significatività dei segmenti)
• tenere nota dei segmenti che sono stati modificati dopo il caricamento in Mp
od ai quali è stato fatto riferimento (con opportuni bit nella SMT)

La corrispondenza può essere definita con l’algoritmo di fig. 7-26.

Capitolo 7 7.31
0 0 0 0
Call [X] | <Y> C:

60
[B] <C> = [A] | 6 Segmento B
Y: 100 ( zona di lavoro )
Segmento A
160 ( matrice )
Segmento MAIN
( programma
principale) 340
Segmento X
( subroutine )

Figura 7-24. Spazio degli indirizzi (memoria segmentata)


[MAIN] = 0
0

CALL [X] | <Y>


Sistema
operativo
C = A( 6 )

160

[X] = 3
0
Dimensione Accesso

Indirizzo 3460
Stato iniziale [X]

120 Y: 3580
0 Y:
160 E 1 4000

2
340

[A] = 5 3 340 E 1 3460


3800
0 [A]
1 4
2
5
100 L 1 3800
3900
6
100 60 LS 0 --
4000
[B] = 6 Segment Map
[MAIN]
0 Table
Tipi di Accesso :
C: E = esecuzione permessa
L = lettura permessa
S = scrittura permessa
60 4160
Spazio degli Tipi di Stato:
indirizzi segmentato 1 = in memoria
0 = non in memoria
Memoria fisica
Figura 7-25. Allocazione in memoria ( memoria segmentata )

Capitolo 7 7.32
Riferimento a
segmento S e
byte B

Il No
segmento S Interruzione per
è in memoria assenza di
? segmento

B No
è < lunghezza Interruzione per
del segmento uscita dai limiti del
? segmento

Il tipo
di accesso richiesto No Interruzione per
( esecuzione , lettura , violazione di
scrittura ) è protezione del
consentito segmento
?

Mettere il bit di riferimento a 1.


Porre il bit di cambiamento a 1
se accesso in scrittura.

Sommare all’ indirizzo iniziale L


del segmento S l’indirizzo B del
byte per ottenere l’indirizzo fisico
in memoria A del riferimento
(A=L+B)

Accedere alla
posizione di
indirizzo A

Figura 7-26. Algoritmo di definizione della corrispondenza tra segmenti e posizioni di


memoria (i bit di riferimento e di cambiamento svolgono le stesse funzioni descritte per
la memoria paginata su richiesta).

7.8.3 ALGORITMI
Capitolo 7 7.33
Gli algoritmi sono simili a quelli della memoria paginata su richiesta e
consentono di ottenere:

a. Eliminazione della frammentazione esterna


Ricorrendo alle SMT i segmenti possono essere spostati in memoria senza
influire sui job, in modo da avere sempre un’unica area libera.

b. Memoria virtuale
Tutti i segmenti stanno in Ms e sono caricati in Mp quando occorre (a seguito
di una interruzione).
La realizzazione della memoria virtuale con i segmenti presenta vantaggi
rispetto alla realizzazione con pagine in quanto
• si caricano solo i byte necessari
• si caricano tutti i byte necessari, con una sola operazione
ma presenta anche svantaggi:
• la gestione della Mp è complessa se i segmenti hanno dimensione
arbitraria
• la gestione della Ms è complessa
• si carica un intero segmento anche se ne occorre una minima parte
• nessun segmento può essere più grande della memoria fisica

c. Segmenti di dimensioni crescenti dinamicamente


Definendo ampliabile un segmento, il S.O. può modificarne la dimensione
quando occorre (questo meccanismo è usato, per esempio, per la tabella dei
simboli nella traduzione di linguaggi avanzati)

d. Concatenazione e caricamento dinamici


Solo il segmento corrispondente alla parte principale (“main”) di un
programma viene caricato in memoria all’inizio dell’esecuzione: gli altri
segmenti sono caricati quando servono.

e. Condivisione di segmenti
Se 2 o più job usano la stessa procedura, con la memoria segmentata si può
evitare di averne 2 o più copie in memoria. La fig. 7-27 illustra la situazione di
segmenti duplicati (la procedura COS). La fig 7-28 illustra invece la situazione
di segmenti condivisi: le SMT puntano alla stessa copia fisica della procedura
COS.
Per poter essere condivisa una procedura deve essere pura (o rientrante) e cioè
deve:
( a ) operare solo su variabili contenute in registri o segmenti distinti
di dati associati al job
( b ) comportarsi sempre allo stesso modo ogni volta che viene
eseguita
( c ) non scrivere su se stessa
Per coordinare la condivisione si usa, a livello di sistema, la già citata AST.
Allorché un segmento condivisibile è usato per la prima volta, si inserisce un
elemento in AST per indicare lo stato attuale del segmento (se in memoria o
no), il nome del job che lo usa ed il numero identificativo del segmento.
Successivamente, ogni volta che un job fa riferimento ad un segmento, viene
esaminata l’AST allo scopo di evitare delle duplicazioni: se il segmento esiste
già in AST, il nome del job è aggiunto alla lista degli utenti attuali del
segmento e la SMT viene riempita in modo da far condividere la stessa copia
fisica del segmento.
La gestione della condivisione non è semplice ma può dare enormi vantaggi in
termini di risparmio nell’uso della Mp.

Capitolo 7 7.34
f. Controllo degli accessi ai dati
La condivisione di segmenti rende assai importante il controllo degli accessi
per evitare alterazioni originate da errori o tentativi dolosi .
In genere per prevenire copiature illecite un segmento che contiene una
procedura può essere solo eseguito mentre un segmento che contiene per
esempio una tabella di dati dovrebbe essere solo letto: esecuzione e scrittura
vanno impedite.
L’informazione sulle modalità di accesso compare nelle SMT; pertanto
differenti job possono avere diritti diversi sullo stesso segmento.
La definizione degli accessi consentiti può essere fatta mediante una tabella
come quella di fig. 7-29.

7.8.4 VANTAGGI
• Assenza di frammentazione esterna
• Memoria virtuale
• Crescita dinamica dei segmenti
• Concatenazione dinamica
• Condivisione di segmenti
• Controllo degli accessi

7.8.5 SVANTAGGI
• Aumento di costo dell’hardware
• Impegno del Pc per l’individuazione degli indirizzi
• Uso di spazio in Mp per le tabelle
• Impegno del Pc per consentire la crescita e la riallocazione dei segmenti
• Complicazioni nella gestione della Ms
• Massima dimensione di un segmento limitata dalla dimensione di Mp
• Pericolo di “segment thrashing”

Capitolo 7 7.35
1
Sistema
operativo
[ MAIN 1]

0
[ MAIN 1 ]
3 1

2
[ DATI 1 ]
3
[ DATI 1 ]
4
4
[ SIN ] 5 [ SIN ]
6
6
7
[ COS ] [ COS ]
SMT del job 1
Spazio degli indirizzi
del job 1
1 [ MAIN 2 ]
0

[ MAIN 2 ] 1

2
[ DATI 2 ]
3
5
4
[ DATI 2 ]
5
[ SQRT ]
6
6
7
[ SQRT ] [ COS ]
SMT del job 2

7
Memoria fisica
[ COS ]

Spazio degli indirizzi


del job 2

Figura 7-27. Esempio di segmenti duplicati

Capitolo 7 7.36
1
Sistema
operativo
[ MAIN 1]

0
[ MAIN 1 ]
3 1

2
[ DATI 1 ]
3
[ DATI 1 ]
4
4
[ SIN ] 5 [ SIN ]
6
6
7
[ COS ] [ COS ]
SMT del job 1
Spazio degli indirizzi
del job 1
1 [ MAIN 2 ]
0

[ MAIN 2 ] 1

2
[ DATI 2 ]
3
5
4
[ DATI 2 ]
5
[ SQRT ]
6
6
7
[ SQRT ]
SMT del job 2

7
Memoria fisica
[ COS ]

Spazio degli indirizzi


del job 2

Figura 7-28. Esempio di segmenti condivisi

Capitolo 7 7.37
UTENTI

Bianchi Rossi Parodi Valle ......


SEGMENTI

SQRT
E LSE E E

PL / 1
LSE E E Nessuno Tipi di accesso:

Listino di borsa E =esecuzione


LS L L L L = lettura
S = scrittura
Procedura stipendi
LS LS L Nessuno

Figura 7-29. Matrice di controllo degli accessi

7.9- MEMORIA SEGMENTATA E PAGINATA SU RICHIESTA


7.9.1 PRINCIPIO INFORMATORE
Questa tecnica di gestione della Mp combina i due precedenti metodi di
gestione (memoria paginata su richiesta e memoria segmentata) per eliminare i
problemi di riallocazione e limitazione della dimensione dei segmenti.

7.9.2 HARDWARE
Sono state proposte varie soluzioni.
Per esempio nell’IBM System/370 l’indirizzo è strutturato nel seguente modo:

24 bit

N° N° N°
SEGMENTO PAGINA BYTE
( 256 ) ( 16 ) ( 4K )
0 78 15 16 19 20 31

Ne derivano di conseguenza
dimensione massima dei segmenti: 64 KB
dimensione delle pagine: 4 KB
In effetti il S.O.consente anche di scegliere pagine da 2 KB e segmenti della
dimensione massima di 1024 KB.
Il passaggio da indirizzo virtuale ad indirizzo fisico è attuato per mezzo di
diverse tabelle (vedere fig. 7-30)

7.9.3 ALGORITMI
Si possono combinare gli algoritmi già considerati per paginazione su richiesta
e per segmentazione, eliminando le parti che risultano ripetute.
Vale la pena di rilevare che si ha una notevole interazione tra software ed
hardware, in particolare per la traduzione degli indirizzi.

Capitolo 7 7.38
7.9.4 VANTAGGI
Unisce i vantaggi di memoria paginata e di memoria segmentata.

7.9.5 SVANTAGGI
• Maggior costo dell’hardware
• Maggior impegno del Pc
• Complessità di gestione
• Frammentazione interna
• Occupazione di Mp per ospitare le varie tabelle
• Pericolo di “page thrashing”

7.10 – “OVERLAY” (SOVRAPPOSIZIONE)


Questa tecnica di gestione della memoria si colloca al di fuori della linea di
evoluzione trattata finora in questo capitolo. Usata solitamente con memoria a
partizioni, essa approssima la segmentazione senza però richiedere hardware
specifico.
Il metodo si basa sulla individuazione delle relazioni tra le procedure che
costituiscono un job e richiede che l’utente specifichi tali relazioni a priori.

La fig. 7-31 illustra un esempio di applicazione della tecnica nel caso di un job,
il cui spazio degli indirizzi è di 190 MB, da eseguire su di un calcolatore dotato
di memoria fisica da 100 MB.

Capitolo 7 7.39
Registro delle SMT
( indica posizione e lunghezza
della SMT corrente )

Indirizzo della
SMT
0 3,4 7,8 25,26 31
Lunghezza
della SMT Segment Map Table Page Map Table

32 bit 16 bit
Indirizzo della Numero di
0 L PMT S 0 blocco P

1 L S 1 P

2 L S 2 P
L

3 L S 3 P

4 L S 4 P
L

5 L S 5 P

L S P

L S P
0 3,4 7,8 28,29 31 0 12 15
Assenza
Campo Assenza di di pagina
lunghezza del segmento se P = 1
Blocchi di memoria
segmento se S = 1
Chiave F R C

Chiave di protezione della 4 KB


memorizzazione , bit di prelievo, bit Chiave F R C
di utilizzazione e bit di cambiamento
( per ogni blocco di 2 KB ) Chiave F R C

4 KB
___
Vincoli introdotti per ridurre costo e n° bit delle
tabelle :
1. Lunghezza della SMT deve essere un ___
multiplo di 16 ( quattro zeri da aggiungere
4 KB
a destra della lunghezza ) ___
2. Indirizzo della SMT deve essere un
multiplo di 64 ( sei zeri da aggiungere a
destra dell’ indirizzo )
3. La lunghezza del segmento è un multiplo
di pagine di 4 KB ___
4. Indirizzo della PMT deve essere un
4 KB
multiplo di 8 ( tre zeri da aggiungere a ___
destra dell’ indirizzo )

Figura 7-30. Passaggio da indirizzo virtuale ad indirizzo fisico nell’IBM System/370

Capitolo 7 7.40
A
( 20 MB)

C
B ( 30 MB)
( 50 MB)

D
( 20 MB)
F E
( 30 MB) ( 40 MB)

Spazio degli indirizzi totale = 190 MB

(a) Struttura delle chiamate alle procedure

0 0

A
20 MB-1
20 MB
20 MB 20 MB
C

B 50 MB -1
50 MB 50 KB
50 MB 50 MB
D
70 MB -1
70 MB-1 E
70 MB
70 MB

90 MB -1
F 90 KB
90 MB

100 MB -1 100 MB1-1

Memoria fisica (b) Assegnazione della memoria con “overlay“ (bastano 100 MB)

Figura 7-31. Gestione della memoria con “overlay” (le procedure non in memoria sono
caricate quando occorre dal S.O.)

Capitolo 7 7.41

Potrebbero piacerti anche