Sistemi operativi
Allocazione contigua dei processi in memoria centrale
La memoria centrale
- La memoria centrale è costituita da locazioni di memoria ad accesso casuale (RAM) individuate da indirizzi
- La CPU può accedere alla memoria centrale in un ordine qualunque
La memoria centrale
- La memoria centrale è il più basso livello di memoria accessibille direttamente dalla CPU
- Volatile: perde il contenuto in mancanza di tensione eletterica
- Il Bandwidth è la quantità di dati che possono essere trasferiti alla CPU per unità di tempo
Allocazione della memoria
- Nei primi calcolatori (anni ‘50), ma anche nei primi personal computer (anni ‘70), il calcolatore era in grado di eseguire un solo programma alla volta
- La memoria veniva condivisa tra Sistema Operativo e un programma utente -> Allocazione contigua per sistemi monoutente
Schema di allocazione della memoria (primi calcolatori)
Protezione del sistema operativo
La protezione del sistema operativo viene realizzata con un registro di limitazione (Boundary register)
Schema esplicativo (boundary register)
Protezione del sistema operativo
- Contiene l’indirizzo di inizio del programma utente
- Ogni riferimento oltre tale indirizzo è negato
- Può essere definito solo in system mode
- Si può accedere all’area del S.O. solo attraverso chiamate di sistema che pongono il sistema in system mode
Osservazione
- La memoria è un insieme sequenziale di locazioni con un proprio indirizzo.
- Ogni programma risiede in una porzione ben definita della memoria -> Ogni variabile del programma sarà individuata da un indirizzo
Generazione degli indirizzi: esempio 1
L’associazione (binding) di istruzioni e dati a indirizzi di memoria può avvenire durante la fase di…
- Compilazione e linking: se la posizione in memoria del processo è nota a priori, può essere generato un codice assoluto; se si volesse cambiare la locazione iniziale, è necessario ricompilare il codice
Generazione degli indirizzi
In figura lo schema relativo all’esempio 1: Indirizzamento assoluto.
Generazione degli indirizzi: esempio 2
L’associazione (binding) di istruzioni e dati a indirizzi di memoria può avvenire durante la fase di…
Esecuzione: se il processo può essere spostato a run–time da un segmento di memoria all’altro, il binding viene rimandato fino al momento dell’esecuzione. È necessario un opportuno supporto hardware per mappare gli indirizzi (registri di rilocazione).
Generazione degli indirizzi: esempio 2
In figura lo schema relativo all’esempio 2: Indirizzamento rilocabile.
Spazio di indirizzi logici e fisici
Il concetto di uno spazio di indirizzi logici nettamente distinto dallo spazio degli indirizzi fisici è centrale per la gestione della memoria.
- Indirizzi logici — generati dalla CPU; chiamati anche indirizzi virtuali.
- Indirizzi fisici — indirizzi utilizzati per accedere alla memoria.
Gli indirizzi logici corrispondono agli indirizzi fisici negli schemi di binding in fase di compilazione, mentre differiscono per il binding in fase di esecuzione.
Memory–Management Unit (MMU)
- L’operazione di far corrispondere indirizzi logici e fisici nel caso di indirizzamento rilocabile, e’ un’operazione frequentissima e viene affidata, per efficienza, ad uno specifico dispositivo hardware (MMU).
- Nello schema MMU, il valore contenuto nel registro di rilocazione viene sommato ad ogni indirizzo generato dai processi utente nel momento stesso in cui l’indirizzo viene inviato alla memoria.
- Il programma utente lavora in termini di indirizzi virtuali, e non è conscio della loro mappatura fisica.
Memory–Management Unit (MMU)
Rilocazione ottenuta tramite registro di rilocazione della MMU.
La multiprogrammazione
- A causa delle continue interruzioni dovute all I/O, un uso efficiente della CPU impone che non solo i programmi in esecuzione, ma anche quelli che stanno per essere eseguiti, devono risiedere in memoria centrale.
- Lo scheduler di medio livello (swapper) decide quale programma deve competere per l’uso della CPU, e quindi deve risiedere in memoria centrale.
La multiprogrammazione
In figura uno schema esplicativo dei rapporti tra CPU, memoria centrale e di massa in fase di multiprogrammazione.
Interazione tra CPU e memorie
Multiprogrammazione a partizioni fisse
- Ogni processo dispone di un blocco di memoria di dimensione fissata
- Differenti code di job per differenti tipi di programmi
- Piu’ registri di limitazione garantiscono la protezione del s.o. e degli altri programmi
- Facilmente realizzabile con l’indirizzamento assoluto
Multiprogrammazione a partizioni fisse
In figura uno schema esplicativo realtivo alle code delle diverse partizioni fisse in fase di multiprogrammazione.
Job queue e partizioni fisse
Problema
Spreco di risorse: molte partizioni inutilizzate mentre molti processi aspettano in coda
Es. 3 partizioni di cui 2 inutilizzate
Soluzione
- Multiprogrammazione con partizioni fisse e indirizzamento rilocabile
- Un job puo’ essere sistemato in una qualunque partizione libera di dimensione sufficiente
Protezione
- Si può impiegare uno schema basato su registri (es. registri base e limite).
- Il registro di rilocazione (base) contiene il valore del più piccolo indirizzo fisico di memoria allocata al processo.
- Il registro limite contiene l’intervallo degli indirizzi logici: ciascun indirizzo logico deve essere inferiore al valore del registro limite.
Protezione
Schema relativo al problema della protezione: a carico della Memory Management Unit.
Problema
Frammentazione interna
- I processi non fanno uso interamente della partizione a loro assegnata
Schema del problema (frammentazione interna)
Soluzione
Schema esplicativo e processi da seguire per la soluzione.
Multiprogrammazione a partizioni variabili
Frammentazione esterna
- Con la multiprogrammazione a partizioni variabili si alloca ad un processo uno spazio della dimensione del processo stesso
- Non c’è il problema della frammentazione interna, ma … quando i processi finiscono si creano dei buchi (holes) in memoria
Problema
In figura lo schema esplicativo del funzionamento della frammentazione esterna.
Schema del problema (frammentazione interna)
Riallocazione della memoria
First–fit: ai nuovi processi viene allocato il primo buco grande abbastanza
- Facile da implementare e con basso overhead
Schema esplicativo (riallocazione first-fit)
Riallocazione della memoria
Best–fit: ai nuovi processi viene allocato il buco più piccolo capace di contenere il processo
- È necessario ordinare tutta la lista dei buchi (maggiore overhead)
- Si produce il più piccolo buco residuo
Schema esplicativo (riallocazione best-fit)
Riallocazione della memoria
Worst–fit: ai nuovi processi viene allocato il buco più grande
- È ancora necessario ordinare tutta la lista.
- Si produce il più grande buco residuo (utile per successive allocazioni)
Schema esplicativo (riallocazione worst-fit)
Problema
I meccanismi di riallocazione
- First fit
- Best fit
- Worst fit
Non risolvono il problema della frammentazione esterna
Con l’andare del tempo producono buchi inutilizzati di dimensione sempre piu’ piccola -> Approcci alternativi
Prossima lezione
Allocazione non contigua dei processi in memoria centrale
- Paginazione
- Segmentazione