Il memory manager Gestione della memoria centrale
La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda della architettura del calcolatore. Il vettore in figura è fatto di word a 16 bit (le righe). Ogni cella (ogni riga) memorizza quindi un dato non maggiore di 16 bit. CELLA 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
La memoria La CPU preleva le istruzioni da eseguire in questa memoria, e le trova attraverso l indirizzo di memoria Nella CPU c è il registro PI (registro prossima istruzione) Ogni programma per essere eseguito deve passare in memoria centrale e deve aver assegnato Uno spazio di memoria per i dati che elabora (zona dati) Uno spazio di memoria per le istruzioni (zona istruzioni) Spazio indirizzi = zona dati + zona istruzioni
Spazio degli indirizzi Tipo di memoria : 8 bit memory Capacità della memoria : 48 byte capacity Spazio occupato dal S.O. : 8 Byte Zona istruzioni del progr.: 8 Byte Zona dati del progr.: 4 Byte Spazio libero: 28 Byte. CELLA 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Spazio degli indirizzi Spazio degli indirizzi 12 Byte. CELLA 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Gestione dei programmi in memoria Di solito i PROGRAMMI sono su memoria di massa ed in formato binario. Per essere eseguito deve passare in RAM e diventare PROCESSO Durante la sua esecuzione, un programma, può ripetutamente ritornare su HDD e poi di nuovo in RAM e viceversa, ogni volta che viene «sospeso». Quando ritorna in RAM, il programma può ritornare in qualunque altro punto della memoria.
Gestione dei programmi in memoria Gli indirizzi «relativi» del programma possono restare gli stessi, cioè la 3 istruzione è sempre memorizzata due celle dopo la prima istruzione. Gli indirizzi assoluti possono cambiare durante l esecuzione: 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5
4 categorie di indirizzi di memoria Programma sorgente su HDD Programma eseguibile Programma Ready in RAM 1. Simbolici 2. Logici 3. Virtuali 4. Fisici Espressi senza sapere quale sarà l indirizzo reale in RAM è in forma di ETICHETTA: lo sviluppatore non deve mai curarsi degli indirizzi reali, questo è il compito del compilatore. Nella fase di assemblaggio gli indirizzi diventano «logici» cioè espressi in forma numerica (binaria) relativa ma comunque non indicano la posizione reale in memoria Sono in forma binaria relativa in uno stadio intermedio; ancora non indicano la locazione fisica definitiva. Indirizzo effettivo della posizione del programma/dato in memoria, in forma binaria assoluta. È il MMU che effettua l ultimo passaggio.
Il MMU memory manager unit Il MMU è un modulo del sistema operativo ma spesso i sistemi dispongono di una unità MMU hardware posizionata nei pressi della CPU. In sostanza il gestore della memoria è un microchip che controlla continuamente ed esegue gli accessi in memoria di dati e programmi. CPU MMU MEMORIA RAM MEMORIA RAM MEMORIA RAM MEMORIA RAM
Lezione 2 Allocazione dei programmi in memoria Sistema Operativo Progr. 1 Progr. 2 Pg 3 In una memoria ci sono sempre il Sistema Operativo (almeno il suo Kernel), uno o più programmi e degli spazi vuoti (zona scura).
Rilocazione della memoria come si calcolano gli indirizzi effettivi
Rilocazione è il procedimento di ricalcolo degli indirizzi virtuali per ottenere indirizzi fisici. I Codici eseguibili usano indirizzi di memoria virtuale. Più programmi sorgente usano gli stessi indirizzi di memoria virtuale (Potrebbero tutti partire da 0) Vanno allora RICOLLOCATI negli spazi opportuni, ogni programma non deve VIOLARE lo spazio di un altro. La MMU ricalcola gli indirizzi virtuali ottenendo indirizzi fisici
Due tecniche di rilocazione Rilocazione statica Rilocazione dinamica STATICA = Durante il caricamento del programma DINAMICA = Durante l esecuzione del programma (run-time) indirizzo fisico = indirizzo virtuale + K
Due tecniche di rilocazione Rilocazione statica Il «caricatore» del S.O. dopo aver letto tutto il programma e prima di eseguirlo, rialloca in memoria tutto il codice adattando gli indirizzi virtuali alle posizioni effettivamente presenti in memoria fisica in quel momento. Richiede un elevato tempo iniziale ma poi i programmi girano veloci.
Due tecniche di rilocazione Il S.O. rialloca il programma mentre lo manda in esecuzione. Quindi solo «running» ogni indirizzo generato dal programma (virtuale) viene ricalcolato in indirizzo fisico effettivo. Il codice è caricato in memoria dal LOADER in forma rilocabile (le posizioni in RAM non sono definitive) Durante l esecuzione ad ogni accesso, si calcola l indirizzo assoluto. I programmi rallentano run-time Rilocazione dinamica
Cosa fa il MMU È aggiornato sullo stato di ogni cella di memoria ram Assegna gli spazi ai processi Fa lo swapping (in e out) Applica politiche di swapping Recupera, al termine, la memoria libera.
Fattore di rilocazione K 0 200 Programma 1 0.. 300 programma 2 K=400 K=800 0 200 400 600.. 800 1200 Memoria RAM completa
Rilocazione degli indirizzi in memoria 0 200 400 600.. 800 12000 0.. 300 K=400 K=800
Ripeto: Rilocazione statica Statica al caricamento, prima della esecuzione Usata nei S.O. monotasking Il «Caricatore» o Loader (procedura che fa parte del S.O.) 1. legge il programma 2. ricalcola gli indirizzi di tutto il codice 3. pone in esecuzione il programma. Metodo molto lento
Ripeto: Rilocazione dinamica Dinamica runtime Il Loader agisce durante l esecuzione del programma Ad ogni accesso si calcola l indirizzo assoluto Un registro contiene l indirizzo effettivo della 1ma istruzione.
Ripeto: Compiti del MMU 1. Controlla lo stato della memoria 2. Conosce lo stato di ogni cella (libera/occupata) 3. Alloca i processi 4. Gestisce le politiche di swapping 5. Effettua lo swap-in e swap-out dei processi 6. Recupera la memoria liberata
Parte II Allocazione della memoria come si gestiscono più programmi in memoria
Allocazione della memoria significa Allocazione statica Allocazione dinamica Allocazione statica i programmi allocati non si spostano più. Allocazione dinamica i programmi allocati sono spostati più volte.
Allocazione della memoria Allocazione Statica I programmi allocati non si spostano fino al termine Dinamica I programmi allocati si spostano più volte Swap in-out
Sistemi monoprogrammati Allocazione a singola partizione Tipo PC con MS-DOS 1 processo + sistema operativo Spazio riservato al Sistema operativo Spazio di memoria libero, riservato all applicativo
Sistemi monoprogrammati Allocazione a singola partizione Si usa il REGISTRO LIMITE INFERIORE Impedisce che l unico processo vada a sovrascrivere il SO Registro limite inferiore 1mo indirizzo libero dopo il SO Spazio riservato al Sistema operativo Spazio di memoria libero, riservato all applicativo
Allocazione nei sistemi monoprogrammati Svantaggi : Con unico programma la memoria può restare sprecata La cpu è inattiva durante un i/o Problemi con programmi grandi che devono usare l overlay: si carica un pezzo alla volta (come i videogame di avventura)
Allocazione a partizioni multiple Sistemi multiprogrammati Se vogliamo più programmi assieme in memoria dobbiamo: Dividere la ram in «partizioni» Eseguire tanti processi per quante sono le partizioni Memoria centrale Partizione 0 Operative System Partizione 1 Partizione 2 Partizione 3 Partizione 4 Partizione 5 Partizione 6
Allocazione a partizioni multiple Il MMU 1. Deve conoscere le partizioni 2. Lo stato di ognuna (occupata/libera) 3. Liberare le partizioni al termine del processo Memoria centrale Partizione 0 Operative System Partizione 1 Partizione 2 Partizione 3 Partizione 4 Partizione 5 Partizione 6
Allocazione a partizioni multiple GRANDEZZA PARTIZIONI Partizioni troppo grandi spreco di memoria Partizioni troppo piccole non entrano programmi grossi Memoria centrale Partizione 0 Operative System Partizione 1 Partizione 2 Partizione 3 Partizione 4 Partizione 5 Partizione 6
Partizioni statiche = fisse Le dimensioni sono stabilite dal SISTEMISTA Per fare modifiche bisogna riconfigurare il sistema Si usano partizioni di diverse categorie : 1. piccole 2. medie 3. grosse Memoria centrale Partizione 0 Operative System Partizione 1 Partizione 2 Partizione 3 Partizione 4 Partiz 5 Partiz 6
Tabella delle partizioni Il MMU usa una tabella per conoscere stato, dimensione e posizione delle partizioni Tabella delle partizioni Numero - id dimensione indirizzo Stato 1=occupato 0000 256 KB 00000000 1 0001 128 KB 0000e440 1 0010 128 KB 000fe340 1 0011 64 KB 00fe3400 0 0100 64 KB 0101 32 KB
Tabella delle partizioni altro esempio 0 100k 150k 180k 210k 220k 270k Sistema Operativo Progr. 1 Progr. 2 Pg 3 id dimensioni indirizzo Stato 0001 50 100 Prog.1 0010 30 150 Free 0011 30 180 Progr.2 0100 10 210 Progr.3 0101 50 220 Free
Partizioni statiche - svantaggi Un caso limite è quello in cui non esiste spazio contiguo sufficiente per i programmi per cui, pur essendo: dim (free) > dim (progr) non posso caricare il programma. Questo problema è detto frammentazione dello spazio libero in memoria. Frammentazione dello spazio libero Sistema Operativo Progr. 1 Progr. 2 Pg 3
Tabella delle partizioni 0 100k 150k 200k 230k 250k 270K 330k Sistema Operativo Progr. 1 Progr. 2 Pg 3 Spreco di memoria!!! Programma 4
Partizionamento «dinamico» Dimensione partizioni variabile (nel tempo) Numero partizioni variabile (nel tempo) s.o. Spazio libero Spazio libero programma
Tabella delle partizioni Il MMU usa una tabella delle partizioni Id partizione Tabella delle partizioni dimensione indirizzo Id programma 0000 256 KB 00000000 0f1 0001 128 KB 0000e440 00e 0010 128 KB 000fe340 010 0011 64 KB 00fe3400 001
Tabella delle aree libere Il MMU usa una tabella degli spazi liberi Tabella delle aree libere Id partizione dimensione indirizzo 0000 256 KB 00000000 0001 128 KB 0000e440 0010 128 KB 000fe340
Politiche di occupazione First fit = si occupala prima sufficientemente grande Best fit = si occupa la più piccola tra le sufficientemente grandi s.o. free free free First fit Best fit program ma
Frammentazione delle aree libere Anche qui c è questo problema detto frammentazione esterna alle partizioni Soluzioni: compattare gli spazi liberi (garbage collection)
Garbage collection s.o. free PRG 1 free PRG 2 free s.o. PRG 1 PRG 2 free free free