1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it monoprogrammati multiprogrammati Lezione XXXIII: monoprogrammati multiprogrammati a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia License. http://creativecommons.org/licenses/by-sa/2.5/it/. Immagini tratte da [?] e da Wikipedia. 1 537 Memoria monoprogrammati La centrale è una risorsa fondamentale di un sistema di calcolo L accesso a centrale è una delle operazioni piú frequenti Accesso ai dati e al codice La tecnica usata per la gestione della ha un effetto determinante sulle prestazioni del sistema monoprogrammati multiprogrammati monoprogrammati multiprogrammati 538 539
Prestazioni dei sistemi multiprogrammati Efficienza dei sistemi multiprogrammati monoprogrammati multiprogrammati Se i programmi sono I/O bound, molti programmi devono essere in esecuzione per raggiungere un elevato utilizzo di CPU Aumentare la centrale di un sistema monoprogrammato non serve: per aumentare l utilizzo di CPU occorre incrementare il livello di multiprogrammazione L efficienza dipende dal livello corrente di I/O (Pendenza della curva di utilizzo) monoprogrammati multiprogrammati 540 541 Multiprogrammazione multiple fisse La gestione dell esecuzione di piú programmi può essere ottenuta in due modi 1 Mantenere la stessa politica di gestione della e ogni volta che un processo deve fare I/O effettuare uno swapping da centrale a disco 2 Modificare la politica di gestione della e consentire la presenza in di piú programmi sistemi multiprogrammati monoprogrammati multiprogrammati Questo schema di gestione della richiede alcuni accorgimenti nella fase di preparazione dei programmi e generazione del codice Traduttore Il compilatore traduce generalmente nel linguaggio assembly L assemblatore traduce poi in linguaggio macchina La traduzione produce anche: Symbol table Informazioni sulle dimensioni del modulo oggetto Informazioni per il debugging monoprogrammati multiprogrammati Linker Loader (statico o dinamico) 542 543
Linker Loader Collega i moduli oggetto compilati indipendentemente Statico Tutti i riferimenti sono risolti e tradotti in indirizzi logici dopo la compilazione, prima del caricamento Dinamico A tempo di caricamento Moduli esterni (target) sono aggiunti all applicazione dopo averla caricata in con il loader Dinamico A tempo di esecuzione I moduli target sono caricati e i riferimenti risolti solo durante l esecuzione al momento in cui vengono richiamati Il linking dinamico facilita l aggiornamento dei moduli target e la condivisione del codice monoprogrammati multiprogrammati Carica un programma in Usa le informazioni nella symbol table Caricamento assoluto Gli indirizzi usati dal programma sono fissati a tempo di compilazione Caricamento rilocabile Gli indirizzi generati dal compilatore sono tutti relativi ad un punto di inizio (indirizzi logici) e vengono tradotti in indirizzi fisici prima del caricamento del programma Caricamento dinamico a tempo di esecuzione I riferimenti alla sono mantenuti in formato relativo e tradotti in indirizzi assoluti solo nel momento in cui vengono utilizzati monoprogrammati multiprogrammati 544 545 Rilocazione nei sistemi multiprogrammati Rilocazione dinamica Il programmatore non sa a priori dove il programma verrà caricato in per essere eseguito Durante l esecuzione, il programma potrebbe essere scaricato sul disco e ricaricato successivamente in ad un indirizzo diverso Gli indirizzi di nel codice devono essere tradotti in indirizzi fisici di, questa funzione viene svolta da hw dedicato (Memory Management Unit) monoprogrammati multiprogrammati monoprogrammati multiprogrammati 546 547
Protezione nei sistemi multiprogrammati Protezione hw Example I processi non devono poter accedere ad aree di di altri processi senza permesso Poiché è impossibile controllare a priori quali indirizzi di un programma referenzierà i riferimenti alla devono essere verificati durante l esecuzione 1 mov eax,end 2 loop: mov [eax],0 3 add eax,4 4 jmp loop 5 end: ret monoprogrammati multiprogrammati monoprogrammati multiprogrammati 548 549 multiple fisse multiple Code separate per ogni partizione possibile sotto utilizzo del sistema Singola coda di incoming job 550 monoprogrammati multiprogrammati Numero, dimensione e posizione delle partizioni cambiano col variare dei processi in Lo stato della si modifica continuamente I processi accedono alla centrale Lasciano la per poi rientrarvi, non necessariamente nello stesso posto occupato in precedenza 551 monoprogrammati multiprogrammati
Espansione dinamica Gestione con bitmap monoprogrammati multiprogrammati Suddivisione della in unità minime allocabili Associazione a ciascuna unità di un bit (Libera/occupata) Dimensione della tabella 1 bit per ogni unità allocabile di k bit Ricerca di successioni di n bit a zero nella bitmap per trovare aree libere di dimensioni adeguate al programma da caricare Semplice ma inefficiente monoprogrammati multiprogrammati 552 553 Gestione con liste collegate Gestione con liste collegate monoprogrammati multiprogrammati monoprogrammati multiprogrammati Gli elementi della lista indicano le aree di contigue con base e dimensione. Generalmente le aree contigue vengono compattate. 554 555
Strategie di allocazione Il pericolo è il frazionamento della libera in piccoli pezzi inutilizzabili (frammentazione esterna). First Fit il primo buco sufficientemente grande per contenere il processo Next Fit si tiene traccia dell ultima allocazione e si ricerca il prossimo buco sufficientemente grande Best Fit il piú piccolo buco sufficientemente grande per contenere il processo Worst Fit il piú grande buco che possa contenere il processo Quick Fit mantenere delle liste separate per le richieste delle dimensioni piú frequenti Nessuna strategia è ottimale monoprogrammati multiprogrammati Con gli schemi a partizione è possibile caricare in un processo solo quando si trova una porzione di contigua, che possa contenere l intero processo è il processo di allocazione può richiedere parecchio tempo La fisica viene suddivisa in blocchi (page frame) di dimensioni costante (p.es. 4K). Porzioni di logica di uguale dimensione (pagine) vengono caricate nei frame: la di un processo è fisicamente contigua solo all interno di una stessa pagina. La paginazione soffre di frammentazione interna monoprogrammati multiprogrammati 556 557 monoprogrammati multiprogrammati In un sistema paginato gli indirizzi logici di sono espressi da una coppia (p,d), a cui va associato in fase di esecuzione un indirizzo fisico lineare, che esprime la locazione esatta del dato o istruzione in Example Pagine di 256 byte, indirizzo logico 26251 p = 26251/256 = 102 monoprogrammati multiprogrammati d = 26252%256 = 139 Per calcolare l indirizzo fisico i bisogna conoscere in quale frame f è stata caricata la pagina 102 558 i = f 256 + d 559
Tabella delle pagine Con pagine di dimensione 2 k, per il calcolo degli indirizzi fisici si sfrutta lindirizzo logico I k bit meno significativi dell indirizzo logico individuano lo spiazzamento all interno della pagina I restanti bit piú significativi individuano il numero della pagina Il numero di pagina si usa come indice nella tabella delle pagine Il valore trovato in corrispondenza è il numero di page frame associato alla pagina Se la pagina è presente in, il numero di page frame è copiato nei bit alti del registro di output e concatenato ai k bit bassi dell offset monoprogrammati multiprogrammati monoprogrammati multiprogrammati Example 26251: 000001100110 10001011 560 561