Corso di Informatica Prerequisiti

Transcript

Corso di Informatica Prerequisiti
Corso di Informatica
Modulo T4
2-Organizzazione della memoria
M. Malatesta 2-Organizzazione della memoria-07
1
04/05/2014
Prerequisiti
Struttura elementare del computer
Struttura elementare della memoria centrale
Multiprogrammazione
Uso pratico elementare di un sistema operativo
Concetto intuitivo di struttura dati tabella
Concetto intuitivo di lista
M. Malatesta 2-Organizzazione della memoria-07
2
04/05/2014
1
Introduzione
In questa Unità vediamo le tecniche più comuni con le quali il SO gestisce
la memoria. Si tratta ovviamente di tecniche trasparenti al
programmatore, ma che il tecnico informatico deve conoscere,
soprattutto nell’ambito della programmazione di sistema.
Come si può gestire la RAM per permettere la multiprogrammazione?
Quali problemi si presentano allocando e deallocando programmi in
RAM?
Quali possono essere le possibili strutture del descrittore della
memoria?
A queste domande diamo una risposta in questa Unità.
3
04/05/2014
M. Malatesta 2-Organizzazione della memoria-07
SO e memoria centrale
In generale, la memoria centrale è destinata a contenere sia il SO che i
programmi in esecuzione.
Quindi è necessario che:
il SO utilizzi in minima parte la memoria, per
lasciare spazio al software applicativo
(programmi utente, compilatori, software di
sviluppo);
Sistema operativo
Programmi utente
siano presenti opportuni meccanismi di
protezione, al fine di impedire al software
generico di invadere le aree destinate al SO.
M. Malatesta 2-Organizzazione della memoria-07
4
04/05/2014
2
Allocazione della RAM
Le principali tecniche per allocare la memoria fisica ai processi sono:
1. allocazione singola
2. partizioni fisse
3. partizioni variabili
5
04/05/2014
M. Malatesta 2-Organizzazione della memoria-07
Allocazione della RAM
1. allocazione singola
L’allocazione singola veniva normalmente utilizzata nei sistemi
monoprogrammati, come indicato nello schema.
La protezione si realizzava mediante un
registro limite (bound register) che
specificava la zona alla quale i programmi
non potevano accedere. Durante
l’esecuzione di un programma, qualunque
operazione di indirizzamento era sottoposta
al confronto con il valore del bound
register così da evitare l’invasione dell’area
destinata al SO.
M. Malatesta 2-Organizzazione della memoria-07
Area libera
Programmi utente
Sistema operativo
Indirizzi
crescenti
6
04/05/2014
3
Allocazione della RAM
1. allocazione singola
Questa tecnica prevede che in memoria siano presenti il SO e un singolo
processo utente, quindi non è possibile la multiprogrammazione.
In particolare, il SO può essere allocato:
nella parte bassa della RAM (fig. a);
nella memoria alta (ROM, v. fig. b);
parte nella RAM e parte (i driver delle periferiche) in ROM (fig. c).
Indirizzi
crescenti
Area libera
Programma
utente
SO
SO (ROM)
Area libera
Programma
utente
fig. a
fig. b
Driver (ROM)
Area libera
Programma
utente
SO
fig. c
M. Malatesta 2-Organizzazione della memoria-07
7
04/05/2014
Allocazione della RAM
2. partizioni fisse
Una successiva tecnica, consente un migliore utilizzo della memoria ed è
basata sulla suddivisione di questa in partizioni di lunghezza prefissata
(generalmente diversa l’una dall’altra).
In questo caso, ogni partizione
può essere occupata da un
programma e quindi è possibile
la multiprogrammazione.
P3
P2
P1
Partizioni
M. Malatesta 2-Organizzazione della memoria-07
Sistema operativo
Indirizzi
crescenti
8
04/05/2014
4
Allocazione della RAM
2. partizioni fisse
Quando un programma P deve essere caricato in memoria, il gestore della
memoria controlla se esiste una partizione libera sufficiente a contenere
P:
in caso affermativo, P viene caricato ed eseguito, e la partizione viene
considerata occupata
altrimenti deve attendere che si liberi una partizione adeguata.
La protezione si realizza mediante due registri limite che
contengono gli indirizzi inferiore e superiore della partizione
assegnata al programma in esecuzione (in ogni istante un solo
processo può avanzare effettivamente, e pertanto è sufficiente
una sola coppia di tali registri)
9
04/05/2014
M. Malatesta 2-Organizzazione della memoria-07
Allocazione della RAM
2. partizioni fisse
OSSERVAZIONI:
Se la dimensione di P è maggiore della dimensione della partizione più
grande, P non può essere caricato.
Area libera
Qualora esistano più partizioni
libere adatte a contenere P, il
Programma A
gestore di memoria sceglie la più
Area libera
piccola, poichè la parte inutilizzata
non può essere allocata ad altri
processi. Si crea però il problema
della frammentazione.
Programma B
Programma C
Sistema operativo
M. Malatesta 2-Organizzazione della memoria-07
Indirizzi
crescenti
10
04/05/2014
5
Allocazione della RAM
2. partizioni fisse
D’altra parte, se si usa la strategia di assegnare a un processo la più
piccola partizione libera sufficiente a contenerlo, potrebbe verificarsi
il caso che un processo debba attendere, pur disponendo di grosse
partizioni libere.
Se si usa la strategia di mantenere tutti i processi in un’unica lista e di
prelevare di volta in volta quello che può essere ospitato nella prima
partizione resasi libera, si corre il rischio che piccoli programmi
tengano occupate grosse partizioni.
M. Malatesta 2-Organizzazione della memoria-07
11
04/05/2014
Allocazione della RAM
2. partizioni fisse
Quest’ultimo problema può essere risolto come mostrato in figura; ad
ogni singola partizione è associata una coda dei processi che essa può
ospitare.
M. Malatesta 2-Organizzazione della memoria-07
12
04/05/2014
6
Allocazione della RAM
2. partizioni fisse
Nel caso delle partizioni fisse, il descrittore di memoria può essere
semplicemente e convenientemente rappresentato con una tabella (detta
anche tabella di occupazione della memoria). Per l’esempio precedente,
potremmo avere:
ORIGINE LUNGHEZZA OCCUPANTE
0
100
101
200
301
100
401
180
581
60
Puntatori ai
descrittori di
processo
M. Malatesta 2-Organizzazione della memoria-07
13
04/05/2014
Allocazione della RAM
2. partizioni fisse
Quando un processo richiede una partizione di dimensione n si effettua
una ricerca sulla tabella:
in caso di insuccesso, il processo resta in attesa;
altrimenti il suo descrittore viene allocato in tabella, secondo le
tecniche scelte di rilocazione (statica o dinamica, quest’ultima essendo
quella quasi sempre usata).
M. Malatesta 2-Organizzazione della memoria-07
14
04/05/2014
7
Allocazione della RAM
3. partizioni variabili
I problemi accennati causati dalla tecnica a partizioni fisse (limiti alla
multiprogrammazione, frammentazione, utilizzo non efficiente della
memoria) possono essere abbastanza bene risolti mediante una tecnica
più evoluta di partizionamento.
Questa tecnica consiste nel creare partizioni variabili. Poichè può
variare la loro ampiezza, di conseguenza varia anche il loro numero.
In questo modo, il gestore della memoria assegna ad ogni programma
P la quantità di memoria effettivamente necessaria.
M. Malatesta 2-Organizzazione della memoria-07
15
04/05/2014
Allocazione della RAM
3. partizioni variabili
Quando P chiede l’esecuzione, il gestore della memoria controlla
l’esistenza di una partizione libera adatta a contenerlo. Quando viene
trovata, P viene allocato e se nella partizione scelta resta spazio
disponibile, questo PUO’ essere in generale allocato ad un altro
processo.
Inoltre, quando P termina, la partizione liberata può essere fusa con altre
partizioni libere adiacenti.
M. Malatesta 2-Organizzazione della memoria-07
16
04/05/2014
8
Allocazione della RAM
3. partizioni variabili
Vediamo un esempio di utilizzo delle partizioni variabili.
a) I 3 programmi A, B e C
vengono allocati in memoria.
b) Il programma B termina
la sua esecuzione
c) Viene allocato
il programma D
M. Malatesta 2-Organizzazione della memoria-07
17
04/05/2014
Allocazione della RAM
3. partizioni variabili
Anche nella tecnica a partizioni variabili, la protezione viene assicurata
mediante una coppia di registri limite come descritto in precedenza.
d) Il programma A termina la
sua esecuzione
M. Malatesta 2-Organizzazione della memoria-07
e) Viene allocato il programma E
18
04/05/2014
9
Allocazione della RAM
3. partizioni variabili
Il programma E, se avesse dimensione opportuna, potrebbe essere caricato
nello spazio residuo della partizione sottostante quella occupoata da D,
lasciando libera la prima partizione, abbandonata da A.
d) Il programma A termina la
sua esecuzione
e) Viene allocato il programma E
19
04/05/2014
M. Malatesta 2-Organizzazione della memoria-07
Allocazione della RAM
3. partizioni variabili
Il descrittore di memoria in questo caso sarà rappresentato da una lista i
cui elementi hanno la struttura seguente (si fa riferimento all’ultimo
esempio e) mostrato):
ORIGINE LUNGHEZZA OCCUPANTE
0 64
64 50
114 10
124 80
Puntatori ai descrittori di
processo
M. Malatesta 2-Organizzazione della memoria-07
20
04/05/2014
10
Allocazione della RAM
3. partizioni variabili
Si può notare che, dopo l’allocazione del programma E, risultano 32K di
spazio libero, ma suddiviso in piccole parti (frammentazione).
Possono presentarsi diversi casi:
se la frammentazione non è troppo spinta, se ci sono più partizioni
libere in cui un programma può essere caricato, ciò può essere fatto in
base a specifiche tecniche, che descriviamo di seguito;
se la frammentazione arriva a livelli tali da far degradare le prestazioni
del sistema, si rende necessaria un’operazione di compattamento, che
presenta comunque costi elevati, in quanto tutta la memoria deve
essere letta e riscritta.
M. Malatesta 2-Organizzazione della memoria-07
21
04/05/2014
Allocazione della RAM
3. partizioni variabili
Come vedremo, alcuni problemi possono essere ridotti o eliminati, se si
adotta la tecnica della paginazione, in quanto:
le aree libere hanno dimensioni multiple della dimensione della
pagina;
le pagine di un singolo processo non devono essere allocate in spazi
contigui.
M. Malatesta 2-Organizzazione della memoria-07
22
04/05/2014
11
Allocazione della RAM
3. partizioni variabili
Come anticipato, se la frammentazione è entro i limiti accettabili,
possiamo progettare il gestore di memoria in modo che, quando un
processo P richiede una partizione di dimensione n, si comporti
secondo una delle seguenti strategie:
a. first fit
b. best fit
c. worst fit
Vediamo in cosa consistono.
M. Malatesta 2-Organizzazione della memoria-07
23
04/05/2014
Allocazione della RAM
3. partizioni variabili (first fit)
La strategia first fit consiste nell’allocare il processo nella prima
partizione libera di dimensione sufficiente a contenerlo.
In pratica:
il gestore di memoria scandisce la lista delle partizioni finché trova la
prima zona libera abbastanza grande:
la zona viene divisa in due parti, una per il processo e una per la
memoria non utilizzata.
Si tratta di una strategia che, limitando al massimo le operazioni di ricerca,
privilegia la velocità, ma non tiene conto della frammentazione, poichè
allocare il processo nella prima partizione trovata, potrebbe aggravare lo stato
di frammentazione esistente.
M. Malatesta 2-Organizzazione della memoria-07
24
04/05/2014
12
Allocazione della RAM
3. partizioni variabili (best fit)
La strategia best fit consiste nell’allocare il processo nella più piccola
partizione libera di dimensione sufficiente a contenerlo.
Si tratta di una strategia più lenta di first fit, che
non privilegia certo la velocità (a causa della
necessaria scansione di tutto il descrittore di
memoria per trovare la partizione di dimensione
adeguata), ma cerca di limitare il fenomeno della
frammentazione.
Tuttavia, se la partizione scelta è
sufficientemente piccola (ma sempre
abbastanza ampia da contenere il
processo), la parte non occupata diventa
spesso inutilizzabile..
M. Malatesta 2-Organizzazione della memoria-07
25
04/05/2014
Allocazione della RAM
3. partizioni variabili (worst fit)
La strategia worst fit consiste nell’allocare il processo nella più grande
partizione libera di dimensione sufficiente a contenerlo.
Si tratta di una strategia che, come la best fit, non privilegia la velocità, ma
limita il fenomeno della frammentazione.
Infatti, se la partizione scelta è sufficientemente grande (e comunque
sempre abbastanza ampia da contenere il processo), la parte inutilizzata è
ancora abbastanza grande da poter accogliere un altro processo.
M. Malatesta 2-Organizzazione della memoria-07
26
04/05/2014
13
Allocazione della RAM
3. partizioni variabili
Una necessaria operazione di recupero deve avvenire quando un processo
rilascia una partizione.In questo caso occorre, se possibile, fondere la
partizione rilasciata con quelle libere adiacenti.
Se nonostante questi accorgimenti, le prestazioni del sistema iniziano a
degradare (tempi di attesa troppo lunghi a causa dell’eccessiva
frammentazione), si rende necessario il compattamento
M. Malatesta 2-Organizzazione della memoria-07
27
04/05/2014
Allocazione della RAM
3. partizioni variabili
Il compattamento consiste nello spostare i programmi all’interno della
memoria, in modo da fondere gli spazi liberi, per creare nuove partizioni
abbastanza ampie da poter ospitare altri processi (v. figura in basso)
Ovviamente, ciò risulta possibile soltanto nel caso che il loader effettui una
rilocazione dinamica.
M. Malatesta 2-Organizzazione della memoria-07
28
04/05/2014
14
Argomenti
SO e memoria centrale
Allocazione della RAM
1.
2.
3.
allocazione singola
partizioni fisse
partizioni variabili
first fit
best fit
worst fit
M. Malatesta 2-Organizzazione della memoria-07
29
04/05/2014
Altre fonti di informazione
A. Lorenzi, D.Rossi – I fondamenti della programmazione-ATLAS
M. Malatesta 2-Organizzazione della memoria-07
30
04/05/2014
15