Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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).
Capitolo 7 7.1
UTENTE
Creato da
JOB
utente
Eventualmente
specificati da PASSO .... PASSO
utente
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)
........
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
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 .
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.
M3 = 20 MB
M1 = 30 MB
M2 = 50 MB
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)
Si definisce poi tempo di attesa di (svolgimento dell’) I/O per il calcolatore la quantità
(valore percentuale)
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.
ω 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.
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
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 ω’.
ω’ = 45.1 =~ 45%
0.55t’ = 0.4 x 3
da cui si ricava
t’ =~ 2.2 ore
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 non
assegnato
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
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).
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
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)
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
___ ___ ___
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
___ ___ ___
Per l’allocazione si possono adottare due algoritmi, denominati “FIRST FIT” e “BEST FIT”.
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.
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
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)
Figura 7-11 Esempio di impiego delle partizioni dinamiche (per agevolare la lettura della
figura, partizioni ed aree libere non sono in scala)
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
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
)
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
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
0
Partizione del
JOB 4
352M 320M
Registro
Indirizzo
base
effettivo
015571
372M 340M 015571
+
344M-1
376M-1
Memoria fisica
Dopo il compattamento e
la conseguente riallocazione
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
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
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 )
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.
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
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.
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
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
Capitolo 7 7.19
N° JOB N° PAGINA
3 11 REGISTRO DI RICERCA
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
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)
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)
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
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
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.
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.
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
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
2410
006251
3072
4095 JOB 4
Spazi indirizzi
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:
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.
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.
Capitolo 7 7.28
Iniziare
l‘elaborazione
dell’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 ) ?
La Si Ricopiare la
pagina era pagina sul disco
cambiata ?
Ricavare il numero di No
pagina richiesto dalla
posizione 144
Leggere la
pagina
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.
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”
Capitolo 7 7.30
• il segmento è un’unità “logica” di informazione, visibile al programma,
di dimensione variabile
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
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 )
160
[X] = 3
0
Dimensione Accesso
Indirizzo 3460
Stato iniziale [X]
120 Y: 3580
0 Y:
160 E 1 4000
2
340
Capitolo 7 7.32
Riferimento a
segmento S e
byte B
Il No
segmento S Interruzione per
è in memoria assenza di
? segmento
Sì
B No
è < lunghezza Interruzione per
del segmento uscita dai limiti del
? segmento
Sì
Il tipo
di accesso richiesto No Interruzione per
( esecuzione , lettura , violazione di
scrittura ) è protezione del
consentito segmento
?
Sì
Accedere alla
posizione di
indirizzo A
7.8.3 ALGORITMI
Capitolo 7 7.33
Gli algoritmi sono simili a quelli della memoria paginata su richiesta e
consentono di ottenere:
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
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 ]
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 ]
Capitolo 7 7.37
UTENTI
SQRT
E LSE E E
PL / 1
LSE E E Nessuno Tipi di accesso:
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”
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
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 )
Capitolo 7 7.40
A
( 20 MB)
C
B ( 30 MB)
( 50 MB)
D
( 20 MB)
F E
( 30 MB) ( 40 MB)
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
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