Dove siamo Gestione della Memoria (1) Dove siamo Dove siamo
Gestione della memoria (vista utente) exec() shmalloc() sbrk() getrlimit() File Mgr UNIX Device Mgr Mgr Mgr Application Program Hardware Alloc() VMQuery() Lock() Free() Zero() File Mgr Device Mgr Mgr Mgr Windows Gestione della memoria (vista Sistema Operativo) Absolute Program Address Space 3GB 4GB Address Space User Address Space Supervisor Address Space Primary 5 6 Gestione della memoria (vista Hardware) CPU Indirizzi virtuali Indirizzi fisici (bus e memoria) CPU chip MMU Disk controller Larger storage Secondary Primary (Execu) Gerarchia di memorie CPU Registers L1 Cache L2 Cache Main Rotating Magnetic Optical Sequentially Accessed 7 Faster access 8
Il principio della cache Gestione della memoria (vista astratta) Informazioni frequentemente utilizzate in alto, Informazioni meno utilizzate in basso virtual x B t! y = B t (x) 9 1 La memoria come meccanismo di protezione Hw e SO cooperano per proteggere gli spazi di indirizzamento dei processi HW: registri speciali leggibili in user mode, ma modificabili in supervisor mode Soluzione semplice: allocazione contigua del SO e uso di registri limite Soluzione complessa: allocazione non contigua con supporto hardware e uso di memoria virtuale () Frame & 11 12
Preparazione di un programma all esecuzione I programmi risiedono su disco sotto forma di file binari eseguibili L insieme dei programmi residenti su disco ed in attesa di essere trasferiti in memoria, per essere eseguiti, forma la input queue Si seleziona uno dei processi per il caricamento e l esecuzione Il processo, in fase di esecuzione, può accedere alle istruzioni ed ai dati residenti in memoria centrale Quando termina, rilascia lo spazio ad esso allocato Preparazione di un programma all esecuzione Caricamento dinamico: i sottoprogrammi vengono caricati in memoria quando vengono richiamati Collegamento dinamico: i sottoprogrammi vengono collegati quando vengono richiamati Indirizzi simbolici, ad esempio count Indirizzi rilocabili, ad esempio 4 byte a partire dall inizio di questo modulo Indirizzi assoluti, ad esempio 268 Compilazione: creazione del Reloca Object module Reloca Object module force = mass * acceleration; load R3, x794 ; Load acceleration in to register R3 load R6, x7a12 ; Load mass into register R6 mult R3, R6 ; Place the product of R3 and R5 in R3 store R3, x8c44 ; Save the result in the force variable Indirizzo= offset dall inizio del segmento
Linkage Editor Caricamento (load) Link Edit Secondary storage Execu memory Loader Load time: Allocazione memoria primaria Aggiustamento degli indirizzi nello spazio di indirizz. Copia spazio di indirizzamento da SS a RAM AUC () Frame & Allocazione contigua Un blocco di memoria per processo Una parte per il SO xffff partition 19 2
Allocazione contigua: Registri Base e limite registri speciali CPU: base & limit Accesso ai registri limitato a system mode Generazione indirizzi y = B t (x) Fisico y Logico x: B t (x) = base + x! : x> limit => errore xffff partition x2 Limit Base x9 Logical : x124 Physical : x124+x9 = xa24 () 21 Frame & 22 CPU Relative Address Relocation Register Allocazione contigua: Registri Base e limite Limit Register < " + xffff Allocazione contigua Un buco (hole) è un blocco di memoria disponibile; nella memoria sono sparsi buchi di varie i Quando viene caricato un nuovo processo, gli viene allocato un buco grande abbastanza da contenerlo Il SO conserva informazioni su: Partizioni allocate Partizioni libere Interrupt Bound checking come meccanismo di protezione hw della memoria MAR partition 23 SO processo 5 processo 8 processo 2 SO processo 5 processo 2 SO processo 5 processo 9 processo 2 SO processo 5 processo 9 processo 1 processo 2 24
() Frame & 25 (size) Partition Memoria divisa in partizioni fisse Massimo numero di processi e massima dim processo fissata Assegna un processo a uno spazio quando è libero Meccanismi Code separate Coda unica Partition 4 Partition 3 Partition 2 Partition 1 9K 7K 6K 5K Partition 4 Partition 3 Partition 2 Partition 1 9K 7K 6K 5K 1K 1K 26 Partition Frame Operating System Operating System Operating System Operating System () & 1 2 3 4 6 2 5 4 6 2 5 4 27 Loader aggiusta gli indirizzi Frammentazione Deframmentazione (muove i programmi) 28
() Frame & 29 Come allocare memoria dinamicamente? In ogni momento è presente un insieme di buchi di diverse i sparsi per la memoria Come soddisfare una richiesta di e n a partire da un insieme di buchi? First!fit: Viene allocato il primo buco grande abbastanza Best!fit: Viene allocato il buco più piccolo capace di contenere il processo; è necessario scandire tutta la lista dei buchi (se non è ordinata) Si produce il più piccolo buco residuo Worst!fit: Viene allocato il buco più grande; è ancora necessario ricercare in tutta la lista Si produce il più grande buco residuo First!fit e Best!fit sono migliori di Worst!fit, rispettivamente in termini di velocità e di impiego di memoria Occorre tener traccia dell occupazione di memoria Tracking dell utilizzo di memoria bitmaps Tracking dell utilizzo di memoria liste Efficiente per chunks grandi 1 bit = fixed-size region (chunk) della memoria Dimensione dei Chunk influenza l efficienza A B C D 111111 111 1111111 11111 8 16 24 32 regions Bitmap 31 A B C D 16 24 32 regions A 6-6 4 B 1 3-13 4 C 17 9 D 26 3 8-29 3 32
Frammentazione Frammentazione esterna! È disponibile lo spazio necessario a soddisfare una richiesta, ma non è contiguo Frammentazione interna! La memoria allocata può essere leggermente maggiore della memoria effettivamente richiesta (pochi byte di differenza); la differenza di i è memoria interna ad una partizione che non viene impiegata completamente Si può ridurre la frammentazione esterna con la compattazione Si spostano i contenuti della memoria per avere tutta la memoria libera contigua a formare un grande blocco La compattazione è possibile solo con la rilocazione dinamica e viene effettuata in fase d esecuzione Una diversa soluzione alla frammentazione esterna è ottenuta consentendo la non contiguità degli indirizzi fisici, permettendo così di allocare la memoria fisica ai processi ovunque essa sia disponibile () The big picture Frame & 34 The big picture Frame () & 35