Informatica 2 Esame di lunedì 11 Luglio 2005

Размер: px
Начинать показ со страницы:

Download "Informatica 2 Esame di lunedì 11 Luglio 2005"

Транскрипт

1 Politecnico di Milano Dipartimento di Elettronica e Informazione prof. Cesare Alippi prof.ssa Anna Antola prof. Luciano Baresi prof. Luca Breveglieri prof. Luigi Lavazza prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof. Mario Verdicchio Informatica 2 Esame di lunedì 11 Luglio 2005 Matricola Cognome Nome Istruzioni Scrivere solo sui fogli distribuiti. Non separare questi fogli. È vietato portare all esame libri, eserciziari, appunti, calcolatrici e telefoni cellulari. Chiunque fosse trovato in possesso di documentazione relativa al corso anche se non strettamente attinente alle domande proposte vedrà annullata la propria prova. Non è possibile lasciare l aula conservando il tema della prova in corso. Tempo a disposizione: 1h:40m (una parte) 2h:30m (completo). I Parte II parte Completo Esercizio 1 (oreste) 3 4 Esercizio 2 (oreste) 4 5 Esercizio 3 (luca) 4 5 Esercizio 4 (luca) 3 Esercizio 5 (luca) 4 5 Esercizio 6 (matteo) 3 5 Esercizio 7 (matteo) 3 4 Esercizio 8 (luca) 4 Voto finale I NUMEI NELLE CELLE INDICANO I PUNTEGGI MASSIMI Con soluzioni

2 Esercizio n. 1 - Parallelismo Si consideri il programma seguente: 1. int main ( ) { 2. int i = 0, k = 0, pid, status; 3. while (k < 1) { 4. pid = fork ( ); 5. i++; 6. if (pid == 0) 7. k = k + i; /* end if */ 8. if (pid > 101) { 9. waitpid (pid, &status); 10. i++; 11. k = k + i; 12. } /* end if */ 13. } / end while / 14. if (k == 1){ 15. i++; 16. exit (0); 17. } / end if / 18. if (k == 2) 19. exit (0); /* end if */ 20. } / end main / Si chiede di completare le tabelle 1, 2 e 3 riportate sotto, indicando, negli istanti di tempo specificati, il valore delle variabili pid, i e k. Attenzione: nel caso in cui al momento indicato la variabile non esista (in quanto non esiste il processo), riportare NE; quando non si può dire con certezza se la variabile esista e/o quale ne sia il valore, riportare U; si suppone che tutte le chiamate ai servizi di sistema abbiano sempre successo, che il sistema operativo assegni ai processi creati dei pid consecutivi, e che il primo processo figlio abbia pid = 101; la frase prima dell istruzione X si riferisce all istante in cui si inizia l esecuzione dell istruzione X stessa Tabella 1. Valore delle variabili nel processo padre. pid i k Prima dell istruzione 10 Prima dell istruzione 16 Prima dell istruzione 19 Tabella 2. Valore delle variabili nel primo processo figlio. Prima dell istruzione 10 Prima dell istruzione 16 Prima dell istruzione 19 pid i k Tabella 3. Valore delle variabili nel secondo processo figlio. Prima dell istruzione 10 pid i k Prima dell istruzione 16 Prima dell istruzione 19 Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 2 di 19

3 Soluzione Tabella 1. Valore delle variabili nel processo padre. pid i k Prima dell istruzione Prima dell istruzione 16 U U U Prima dell istruzione U 0 Tabella 2. Valore delle variabili nel primo processo figlio. pid i k Prima dell istruzione 10 U U U Prima dell istruzione Prima dell istruzione 19 U U U Tabella 3. Valore delle variabili nel secondo processo figlio. pid i k Prima dell istruzione 10 NE NE NE Prima dell istruzione 16 U U U Prima dell istruzione Nota bene: La gerarchia dei processi è: il padre genera un primo figlio con pid = 101 al primo giro del ciclo, e poi genera un secondo figlio con pid = 102 al secondo giro del ciclo. Il primo figlio parte con i = 1 ed esce dal ciclo con k = 1, e il secondo figlio parte con i = 2 ed esce dal ciclo con k = 2. Il padre esce dal ciclo avendo k = 3. Pertanto: l istruzione 10 viene eseguita solo dal padre, al secondo giro del ciclo. il padre salta gli if alla riga 14 e 17 l istruzione 16 viene eseguita solo dal primo figlio l istruzione 19 viene eseguita solo dal secondo figlio Inoltre, il processo padre si sincronizza con la terminazione del secondo figlio, ma non con quella del primo. I due figli sono del tutto indipendenti tra sé. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 3 di 19

4 Esercizio n. 2 - Memoria Virtuale Un sistema dotato di memoria virtuale con paginazione e segmentazione tipo UNIX è caratterizzato dai seguenti parametri: la memoria centrale fisica è di 64kB, l indirizzo logico è di 16 bit, la dimensione delle pagine è di 4kB. (a) definire la struttura dell indirizzo fisico indicando la lunghezza dei campi che li costituiscono: NPF: 4 Spiazzamento fisico: 12 (b) Nel sistema all istante t 0 sono attivi i processi P, e, che eseguono i programmi PGP, PG e PG. PGP, PG e PG condividono un segmento dati. La dimensione iniziale dei segmenti dei tre programmi è la seguente: CP: 12K; DP: 4K; PP: 8K; COND: 4K; C: 8K; D: 8K; P: 4K; COND: 4K; C: 4K; D: 4K; P: 4K; COND: 4K; La dimensione complessiva di ogni processo è di 64K e quindi il segmento pila di ogni processo inizia all indirizzo corrispondente ai 64K; nel processo P il segmento COND è allocato lasciando 1 pagina libera dopo il segmento dati (per permettere una crescita dello Heap, servizio BK), nel processo COND è allocato lasciando 0 pagine libere dopo D e nel processo COND è allocato lasciando 2 pagine libere dopo D. Inserire in tabella 1a il significato delle varie pagine di memoria logica (notazione: CP0, CP1, DP0, PP0, C0,, COND0,...). Indirizzo di pagina virtuale Processo P Processo Processo Indirizzo fisico Pagine allocate t 0 Indirizzo fisico Pagine allocate t 1 0 CP0 C0 C0 0 Occupata 0 Occupata 1 CP1 C1 D0 1 CP0 1 (CP0) PP2 2 CP2 D0 2 CP1 2 CP1 3 DP0 D1 3 Occupata 3 PP3 4 COND0 COND0 4 CP2 4 CP2 5 COND0 5 DP0 5 DP0 C0 6 6 COND0 6 COND0 7 7 PP0 7 PP0 8 8 PP1 8 PP1 9 9 C0 9 D0 A A Occupata A C0 B B C1 B P0 C PP3 C D0 C C1 D PP2 D D1 D D0 E PP1 E P0 E D1 F PP0 P0 P0 F F P0 1A) Struttura della Memoria Logica 1B) Memoria Fisica agli istanti t 0 e t 1 (c) Indicare quanto spazio (in pagine) è disponibile per consentire la chiamata a funzione nei processi P: 8 : 10 (d) Ad un certo istante t 0 sono terminati i seguenti eventi: 1. lancio di processo diverso da P,, e occupazione delle pagine di indirizzo fisico 0,3,A 2. lancio di P (fork di P ed exec di PGP) 3. lancio di (fork di ed exec di PG) Sapendo che il numero di pagine residenti è 7, che viene utilizzato l algoritmo LU (ove richiesto prima si dealloca una pagina di processo e quindi si procede alla nuova assegnazione) e che le pagine meno utilizzate in ogni processo sono la prima pagina del segmento codice, quindi la prima pagina del segmento dati (le prime caricate sono le meno utilizzate) e ipotizzando che l allocazione delle pagine virtuali nelle pagine Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 4 di 19

5 fisiche avvenga sempre in sequenza, senza buchi, a partire dalla pagina fisica 0, indicare, completando tabella 1B (sinistra), l allocazione fisica delle pagine dei tre processi all istante t 0. Con la notazione occupata si fa riferimento a pagina occupata da altro processo. (e) Ad un certo istante t 1 > t 0 sono terminati i seguenti eventi: 4. terminazione del processo 5. deallocazione della pagina di indirizzo fisico 3 6. allocazione di due nuove pagine di Pila per il processo P 7. lancio di (fork di ed exec di PG) 8. deallocazione della pagina di indirizzo fisico A 9. lancio di (fork di ed exec di PG) Completare la tabella 1B (destra) nelle medesime ipotesi delineate nel precedente punto (d) e assumendo che, dovendo utilizzare una pagina fisica libera, venga sempre utilizzata la pagina fisica libera avente indirizzo di pagina minore. (f) Indicare il contenuto della tabella delle pagine della MMU all'istante t 1 completando la seguente tabella (usare P, e come pid dei corrispondenti processi, oppure NS se nella corrispondente riga della tabella non è allocato alcun processo e quindi è non significativa, - se la pagina è occupata da un processo diverso da P, e )); ipotizzare che le righe della tabella siano state allocate ordinatamente man mano che venivano allocate le pagine di memoria virtuale e che gli eventi di cui ai punti (d,e) influenzanti la MMU partano da una situazione di tabella vergine, abbiano utilizzato le righe lasciate libere e che se richiesta una nuova riga si utilizzi sempre la prima riga libera. Indicare anche il valore assunto dal bit di validità di pagina (1 significa che la pagina è caricata). PID Num. Pag. Virt. Num. Pag. Fis. Bit Validità P D (PP2) (C0) A 1 P 0 (CP0) C (PP3) 3 1 P 1 (CP1) 2 1 P 2 (CP2) 4 1 P 3 (DP0) 0 (C0)) 5 1 P 5 ( COND) 6 1 P F (PP0) 7 1 P E (PP1) (C0) 1 (D0)) (C1) 4 (COND) B (D0) F (P0) C B 1 3 (D1) 1 (C1) D C 1 4 (COND) 2 (D0) 6 D 1 F (P0) 3 (D1) E E 1 4 (COND) 6 1 F (P0) F 1 Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 5 di 19

6 Esercizio n. 3 Commutazioni tra processi Si consideri il seguente frammento di programma: /* programma main1.c */ main ( ) { int pid, pid1, pid2; int fd1, fd2; char c[40960];... pid = fork ( ); if (pid == 0) { /* codice eseguito da figlio di P */ for (i = 0; i < 2; i++) { if (i == 0) { pid1 = fork ( ); if (pid1 == 0) { /* codice eseguito da figlio di */ fd1 = open ( /etc/testo1, O_DW); write (fd1, c, 4096); /*scrive su file 4 blocchi*/ exit (1); } /* fine if (pid1 == 0) */ } else { /* codice eseguito da */ pid2 = fork ( ); if (pid2 == 0) { /* codice eseguito da S figlio di */ fd2 = open ( /etc/testo2, O_DW); read (fd2, c, 2048); /*legge da file 2 blocchi*/ exit (2); } else { /* */ pid2 = waitpid (pid2, &status, 0); exit (0); } /* fine if (pid2 == 0) */ } /* fine if (i == 0) */ } /* fine for */ } else { /* padre P */ exit (0); } /* fine if (pid == 0) */ } /* fine main1.c */ Un processo P esegue il programma main1, creando un processo figlio che, a sue volta, crea due figli e S. Dopo avere analizzato il codice, rispondere alle seguenti domande: 1. qual è il numero massimo di processi che possono esistere contemporaneamente? 4 (P,,, S) 2. motivare in modo esaustivo ma sintetico la risposta al punto precedente. viene creato prima di S, e S sono sincronizzati ma indipendenti da P e. Nella tabella a pagina seguente sono indicati (nella prima colonna) alcuni eventi che si sono verificati durante l esecuzione dei programmi da parte di P,, e S; nella seconda colonna è aggiunta un indicazione supplementare relativa a tali eventi. Si deve completare tale tabella indicando ordinatamente nella terza colonna tutti i moduli del S.O. che vengono eseguiti (completamente o in parte) in seguito all evento, nella quarta colonna il contesto nel quale ciascun modulo è eseguito e, nelle ultime tre colonne, lo stato dei processi P,, e S dopo che tutti i moduli hanno svolto la funzione e si ritorna al funzionamento in modo U. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 6 di 19

7 Avvertenze per il riempimento della tabella: 1. non esistono altri processi nel sistema 2. per la lettura e scrittura su file: a) la dimensione di un blocco trasferito in DMA da o su file è di 1kbyte b) le operazioni di lettura e scrittura su file accedono sempre a disco, cioè è sempre necessario eseguire trasferimenti in DMA c) l interrupt di fine DMA è associato al trasferimento di un singolo blocco del file (evento DMAin per lettura di un blocco e evento DMAout per scrittura di un blocco su file) 3. la notazione 1 interrupt (2, 3 interrupt) indica che si sono verificati 1 (2 o 3) interrupt; nella risposta fare riferimento all'ultimo di tali interrupt 4. la chiamata di sistema wait invoca sleep_on su un evento opportuno 5. la terminazione di un processo (exit) invoca wakeup per risvegliare il processo padre eventualmente in attesa 6. se un processo viene risvegliato da wakeup e non ci sono altri processi pronti o in esecuzione, il processo viene immediatamente lanciato in esecuzione (in questo caso wakeup invoca change) 7. se viene invocata change e nessun processo è pronto, change non lancia in esecuzione alcun processo e il contesto è non specificato n.s. 8. se, al momento di un cambiamento di contesto, più di un processo è pronto all esecuzione viene scelto quello di maggior priorità. I processi considerati hanno priorità: P<<<S 9. indicare i moduli utilizzando la notazione seguente: Notazione abbreviata _Int(Disp) Modulo (o frammento di modulo) di sistema Gestore SVC outine di interrupt; Disp può valere CK=orologio, Sout=Standard output, Sin=Standard input, DMAin=disco_in_lettura, DMAout=disco_in_scrittura <nome routine di sistema> puo essere: fork, write, read, wait, exit, open, sleep, Preempt, Change Sleep_on(E n ) Wakeup(E n ) Codice Utente Sleep_on. Per indicare l evento su cui viene sospeso il processo usare convenzionalmente E 1, E 2, E 3, Wakeup. E n indica l evento, come in Sleep_on nessun modulo di sistema, il processo esegue codice utente Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 7 di 19

8 Evento (preceduto dal processo nel cui contesto l evento si verifica) Informazioni aggiuntive Moduli eseguiti per gestire l evento Processo/i nel cui contesto è eseguito ogni modulo Stato dei processi dopo la gestione dell evento P S P: fork P non ha esaurito il suo quanto di tempo fork P P esecu pronto non esiste non esiste P: exit exit change fork P P P- non esiste esecu non esiste non esiste : pid1=fork non ha esaurito il suo quanto di tempo fork non esiste esecu pronto non esiste : pid2=fork ha esaurito il suo quanto di tempo (n.b. la fork è stata eseguita) fork preempt change fork -S S non esiste pronto pronto esecu S: read ead ha inizializzato il DMA in lettura read sleep_on (E1) change fork S S S S- non esiste pronto esecu attesa : 1 interrupt da disco (lettura) _int (DMAin) non esiste pronto esecu attesa : write Write ha inizializzato il DMA in scrittura write sleep_on (E2) change preempt fork - non esiste esecu attesa attesa : 2 interrupt da disco (scrittura) _int (DMAout) non esiste esecu attesa attesa Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 8 di 19

9 : waitpid waitpid sleep_on (E3) change -ns non esiste attesa attesa attesa ns: 1 interrupt da disco (lettura) È relativo all ultimo blocco da trasferire _int (DMAin) wake-up (E1) change sleep-on (E1) read Ns Ns Ns-S S S non esiste attesa attesa esecu S: exit exit change S S S-n.s. non esiste attesa attesa non esiste ns: 2 interrupt da disco (scrittura) L ultimo è relativo all ultimo blocco da trasferire _int (DMAout) wake-up (E2) change sleep-on (E2) write Ns Ns Ns- non esiste attesa esecu non esiste : exit exit wake-up (E3) change sleep-on (E3) waitpid - non esiste esecu non esiste non esiste : exit exit non esiste non esiste non esiste non esiste In rosso sono indicate le riprese dei servizi dopo la change. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 9 di 19

10 Esercizio n. 4 Programmazione di rete Due processi, Client e Server, eseguono i due programmi listati sotto. Il servizio sleep(n) significa che il processo si pone in attesa per n secondi. Si ipotizzi che l esecuzione di tutte le istruzioni e la trasmissione dei dati impieghino un tempo trascurabile e quindi il tempo di esecuzione dei programmi dipenda solamente dal tempo passato in attesa dai processi a causa delle sleep. Completare la tabella seguente indicando, per ognuno degli istanti di tempo indicati nella colonna 1 con riferimento al numero di secondi trascorsi dall istante in cui è avvenuta la connessione: - lo stato dei buffer di rete (Nota: dato che il tempo di trasmissione è trascurabile, subito dopo una send del Client si può assumere che i caratteri trasmessi si trovino immediatamente nel buffer di rete del server, gestito dal TCP/IP; analogamente, subito dopo una send del Server si può assumere che i caratteri trasmessi si trovino immediatamente nel buffer di rete del client) - lo stato della variabile daticl del processo Client - lo stato della variabile SVin del processo server padre - lo stato della variabile Svin del processo server figlio Indicare u se il valore di una variabile non esiste oppure non è determinabile, v se un buffer è vuoto, = se il valore è rimasto quello della riga superiore //programma Client... char daticl[ ] = ABCDEF ; connect (sd...); send (sd, daticl,3); sleep (2); send (sd, daticl, 2); sleep (10); recv (sd,daticl, 4); sleep (5); send (sd,daticl, 6); sleep (10); exit; //programma Server... char SVout[ ] = STUVZ ; char SVin[5] = ; sd = accept (...); send (sd, SVout, 3); sleep (4); n = recv (sd, SVin, 4); pid = fork ( ); if (pid == 0) { sleep (2) n = send (sd, SVout, 4) n = recv (sd,svin, 3) sleep (8); send (sd, SVout, 2); sleep (10); exit; } else { waitpid (pid,..) n = recv (sd, SVin, 5); sleep (10); exit; } tempo (secondi) buffer di rete (sul server) buffer di rete (sul client) daticl SVin (padre) SVin (figlio) Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 10 di 19

11 Soluzione tempo (secondi) buffer di rete (sul server) buffer di rete (sul client) daticl SVin (padre) SVin (figlio) 0 (conness.) v v ABCDEF u 1 ABC ST = = = 3 ABCAB = = = = 5 B = = ABCA0 ABCA0 7 v STSTU = = BBCA0 13 = STU STEF = = 15 = STUS = = = 21 STEF = = = = 25 F = = STE = Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 11 di 19

12 Esercizio n. 5 Logica digitale La figura rappresenta un circuito sequenziale costituito da due bistabili Master/Slave. Le funzioni di assegnamento di un nuovo valore ai bistabili sono: D1 = not (S1 xor S2), dove S2 è un segnale tale che S2 = 1 and not(2); D2 = 1. Si ricorda che la funzione xor vale 1 solamente quando i due ingressi valgono 01 oppure 10. Completare il diagramma temporale riportato qui sotto. Si noti che: si devono trascurare completamente il ritardo delle porte e il ritardo di commutazione dei bistabili; i bistabili sono di tipo master-slave, in cui l uscita commuta sul fronte di discesa del clock. 2 1=D2 S2 D1 S1 Clock Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 12 di 19

13 Soluzione: 2 1=D2 S2 D1 S1 Clock Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 13 di 19

14 Esercizio n. 6 Assembler Si chiede di codificare in assembler M68000 il programma C riportato qui sotto. Non è richiesta alcuna ottimizzazione del codice prodotto. Gli interi sono da 32 bit. Funzione C char *V = parola_lunga ; int DIM_V = 12; int N = 0; int I; char C = a ; main ( ) { I = 0; while (I < DIM_V) { if (V[I] == C) { N++; } /* if */ I++ ; } /* while */ } /* main */ Codifica M68000 * segmento unico dati e codice OG $1000 * inzio dati * dati preinizializzati (var. globali) V DC.B parola_lunga, 0 DIM_V DC.L 12 N DC.L 0 C DC.B a * dati non preinizializzati (idem) I DS.L 1 * inzio codice MAIN CL.L I MOVEA.L #V, A0 MOVE.L DIM_V, D0 WHILE CMP.L I, D0 BLE DOPO_WHILE MOVE.L I, D1 MOVE.B 0(A0, D1), D2 CMP.B C, D2 BNE FINE_IF ADDI.L #1, N FINE_IF ADDI.L #1, I BA WHILE DOPO_WHILE TS * torna al S.O. END MAIN * ind. iniziale La soluzione non cambierebbe granché anche se le variabili fossero locali al modulo main, basterebbe supporle contenute nell area di attivazione di main. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 14 di 19

15 Esercizio n. 7 - Microcodice Lo schema riportato qui di fianco illustra l architettura di processore a bus singolo di riferimento. Si scriva il microcodice capace di eseguire la coppia di istruzioni seguenti: ADD (x), (y) ADD ((x)), (y) che si vogliono aggiungere all Instruction Set Architecture del processore. Esse calcolano la somma di due addendi interi da 32 bit, con prodotto da 32 bit. Le interpretazioni TL sono le seguenti: linee di indirizzo bus di memoria linee di dato costante 4 32 bit PC MA MD V bus interno del processore 32 bit ordini decodificatore di istruzioni e circuito di controllo I 0 [y] [[x]] + [[y]] select MUX [y] [[[x]]] + [[y]] Ciascuna istruzione ingombra esattamente una parola da 32 bit. Si supponga che l unità di controllo sia di tipo microprogrammato. Si devono pertanto prevedere la fase di prelievo comune, i microsalti (denotati simbolicamente) necessari per analizzare ciascuna istruzione e le fasi di esecuzione; se queste hanno microcodice in comune, si cerchi di unificarle per quanto possibile. linee di comando della ALU add sub and A ALU Z B riporto in ingresso n 1 SP TEMP 32 bit SI COMPILINO LE DUE TABELLE IPOTATE A PAGINA SUCCESSIVA. SI BADI BENE CHE IL NUMEO DI IGHE NON È SIGNIFICATIVO. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 15 di 19

16 µ ind. Operazione (in TL) SOLUZIONE PIÙ OVVIA 0 MA [PC], Z [PC] + 4, preleva 1 PC [Z], V [Z], attendi 2 I [MD] 3 decodifica codice operativo, se (modo = (x), ((x)).) và a µ ind. a, b a a + 1 a + 2 a + 3 (altro microcodice) MA [x], leggi, attendi V [MD] MA [y], leggi, attendi Z [MD] + [V] a + 4 MD [Z], scrivi, attendi, finisci (o và a µ ind. 0) b (altro microcodice) MA [x], leggi, attendi b + 1 MA [MD], leggi, attendi, và a µ ind. a + 1 µ ind. Ordini 0 PC out, MA in, select 4, Z in, read, add 1 Z out, PC in, V in, WMFC 2 MD out, I in 3 decode opcode field of I, if (mode = (x), ((x))) goto µ addr. a, b a a + 1 a + 2 a + 3 (altri microordini) x out, MA in, read, WMFC MD out, V in y out, MA in, read, WMFC MD out, select V, Z in, add a + 4 Z out, MD in, write, WMFC, end (or goto µ addr. 0) b (altri microordini) x out, MA in, read, WMFC b + 1 MD out, MA in, read, WMFC, goto µ addr. a + 1 Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 16 di 19

17 C è un altra soluzione praticabile, di cui do solo la formualzione TL µ ind. Operazione (in TL) SOLUZIONE MENO OVVIA 0 MA [PC], Z [PC] + 4, preleva 1 PC [Z], V [Z], attendi 2 I [MD] 3 decodifica codice operativo, và a µ ind. a (serve solo per integrare nel microprog. completo) (altro microcodice) a MA [x], leggi, attendi, se (modo = (x), ((x)).) và a µ ind. a + 2, a + 1 a + 1 a + 2 a + 3 a + 4 MA [MD], leggi, attendi V [MD] MA [y], leggi, attendi Z [MD] + [V] a + 5 MD [Z], scrivi, attendi, finisci (o và a µ ind. 0) (altro microcodice) Si sfrutta il fatto che, comunque, il codice operativo dell istruzione è sempre in I, e quindi lo si può rianalizzare ogniqualvolta serva per decidere come condizionare l esecuzione del microcodice, saltando parti o inserendo aggiunte. uesta seconda versione una microistruzione in meno della prima. Lista microordini, ovvia Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 17 di 19

18 Esercizio n. 8 Memoria cache Prima parte Si consideri un sistema di memoria (memoria + cache) caratterizzato dalle dimensioni seguenti: memoria di 1 GigaByte (indirizzata a livello di byte); cache di 1 MByte; ogni blocco della cache contiene 256 Byte. Si chiede di indicare la struttura degli indirizzi per la memoria cache nelle situazioni seguenti: (a) cache a indirizzamento diretto (direct mapped) (b) cache completamente associativa (c) cache set-associativa a 4 vie Soluzione Memoria di lavoro: indirizzo di 30 bit Memoria cache: indirizzo di 20 bit Blocchi: indirizzo di 8 bit (a) Cache a indirizzamento diretto 8 bit per il byte nel blocco 12 bit per l indice del blocco nella cache 10 bit di etichetta (b) Cache completamente associativa 8 bit per il byte nel blocco 22 bit di etichetta (c) Cache set-associativa a 4 vie 8 bit per il byte nel blocco 10 bit per l indice del gruppo nella cache 12 bit di etichetta Seconda parte Si consideri un sistema di memoria (memoria + cache) caratterizzato dalle dimensioni seguenti: memoria di lavoro di 4 KByte, indirizzata a livello di singolo byte; cache di 256 Byte; ogni blocco della cache contiene 64 Byte. Considerando la sequenza di richieste alla memoria riportata qui sotto, si chiede di completare la tabella che illustra il comportamento di una cache set-associativa a 2 vie nel rispetto delle indicazioni seguenti: Nella colonna esito riportare H (hit) se il blocco richiesto si trova nella cache, M (miss) se invece il blocco deve essere caricato dalla memoria. Nelle colonne dati deve essere riportato il numero del blocco della memoria che si trova nel corrispondente blocco della cache. Si noti che questi valori sono riportati come numeri decimali (base dieci), mentre le etichette sono scritte in binario. Per questo motivo l indirizzo individua un byte compreso nel blocco due = 0 dieci (che quindi ha come etichetta il valore binario 00000). Nella colonna azione deve essere indicato il blocco cui si accede (in caso di successo, H) o il blocco in cui vengono caricati i dati della memoria (in caso di fallimento, M). Nella cache ci sono quattro blocchi denotati dalle lettere A, B, C e D, che sono organizzati in due insiemi: si ipotizzi che i blocchi A e B siano compresi nell insieme 0 e che i blocchi C e D facciano invece parte dell insieme 1. La politica di sostituzione adottata nella cache è quella LU (Least ecently Used). Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 18 di 19

19 Note: dei 12 bit di indirizzo, 6 servono per individuare il byte nel blocco. Nella cache ci sono quattro blocchi organizzati in due gruppi, quindi il 7 bit (da destra) indica l insieme, mentre i restanti 5 bit formano l etichetta. Blocco A Blocco B Blocco C Blocco D Passo Indirizzo richiesto Esito Valido Etichetta Dati Valido Etichetta Dati Valido Etichetta Dati Valido Etichetta Dati Azione Situazione iniziale M Carica blocco 16 in A H Accesso a C M Carica blocco 63 in D M Carica blocco 32 in B H Accesso a D M Carica blocco 14 in A Terza parte Calcolare il numero totale di bit di cache necessari, considerando oltre allo spazio occupato dai dati anche i bit aggiuntivi necessari per il funzionamento della cache, considerando che per la scrittura la cache utilizza la politica di write back e che è necessario un bit per gestire la sostituzione con la politica di LU. uanto è in percentuale il numero di bit aggiuntivo rispetto ai bit di soli dati? Ogni blocco contiene: 64 Byte + 5 bit di etichetta + 1 bit di valido + 1 bit per indicare la scrittura + 1 bit per indicare LU. 4 posizioni di cache * (64 byte per blocco * 8 bit per byte + 5 bit etichetta + 1 bit valido + 1 bit di modifica + 1 bit di supporto a LU) = 2080 bit % = / 2080 = 0,02 Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n pagina 19 di 19

Esercizio n. 7 - Microcodice

Esercizio n. 7 - Microcodice Esercizio n. 7 - Microcodice Lo schema riportato qui di fianco illustra l architettura di processore a bus singolo di riferimento. Si scriva il microcodice capace di eseguire la coppia di istruzioni seguenti:

Подробнее

AXO Architettura dei Calcolatori e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano AXO Architettura

Подробнее

Architettura degli elaboratori Tema d esame del 20/01/2016

Architettura degli elaboratori Tema d esame del 20/01/2016 Architettura degli elaboratori - Luigi Lavazza A.A. 5/6 Università degli Studi dell Insubria Dipartimento di Informatica e Comunicazione Architettura degli elaboratori Tema d esame del //6 Luigi Lavazza

Подробнее

AXO Architettura dei Calcolatori e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Roberto Negrini prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano

Подробнее

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET: Università degli Studi di Milano Corso Architettura degli elaboratori e delle reti Prof. Cristina Silvano A.A. 2004/2005 Esame scritto del 15 luglio 2005 Cognome: Matricola: Nome: Istruzioni Scrivere solo

Подробнее

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/[email protected] -versione del 30 marzo 2004-1-04.-04

Подробнее

Architettura degli elaboratori

Architettura degli elaboratori Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori Tema d esame del /9/24 Dipartimento di Scienze Teoriche e Applicate [email protected]

Подробнее

AXO Architettura dei Calcolatori e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano AXO Architettura

Подробнее

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Politecnico di Milano COGNOME E NOME Facoltà di Ingegneria Industriale FONDAMENTI DI INFORMATICA Seconda prova in itinere 13 Febbraio 2017 Primo Appello (Laureandi) 13 Febbraio 2017 RIGA COLONNA MATRICOLA

Подробнее

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1 Esercizio 1 Sia data una memoria cache di tipo a indirizzamento diretto (direct-mapped), con blocchi di dimensioni pari a una sola parola per blocco, e contenente. La parola è lunga 16 bit, e la memoria

Подробнее

2. Nucleo del sistema operativo (la gestione dei processi)

2. Nucleo del sistema operativo (la gestione dei processi) Struttura interna del sistema operativo Linux 2. Nucleo del sistema operativo (la gestione dei processi) Architettura (struttura) del sistema operativo shell Programmi utente Modo utente Interfaccia delle

Подробнее

Architettura del calcolatore (Seconda parte)

Architettura del calcolatore (Seconda parte) Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly

Подробнее

Prova in itinere 7 Giugno 2016 Università di Salerno

Prova in itinere 7 Giugno 2016 Università di Salerno Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2015-2016 Prova in itinere 7 Giugno 2016 Università di Salerno 1. Codice comportamentale. Durante questo esame si deve lavorare da soli. Non si puó consultare

Подробнее

Corso di Laurea in Informatica Architetture degli Elaboratori

Corso di Laurea in Informatica Architetture degli Elaboratori Corso di Laurea in Informatica Architetture degli Elaboratori Corsi A e B Scritto del 12 settembre 2005 Esercizio 1 (punti -1, 4) Considerare la rappresentazione in complemento a due del numero decimale

Подробнее

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione: Cognome.. Nome.... Architettura degli Elaboratori Classe 3 Prof.ssa Anselmo Appello del 18 Febbraio 2015 Attenzione: Inserire i propri dati nell apposito spazio sottostante e in testa a questa pagina.

Подробнее

2. Nucleo del sistema operativo (la gestione dei processi)

2. Nucleo del sistema operativo (la gestione dei processi) Architettura del sistema operativo Struttura interna del sistema operativo Linux shell Programmi utente Modo utente 2. Nucleo del sistema operativo (la gestione dei processi) - 31 marzo 2008 - Interfaccia

Подробнее

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006 SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 26 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (8 punti)

Подробнее

Corso di Laurea in Informatica

Corso di Laurea in Informatica Corso di Laurea in Informatica Architetture degli Elaboratori Corsi A e B Scritto del 13 Dicembre 2004 Esercizio 1 (punti -1, 3) Si consideri l architettura nota come macchina di von Neumann (a) Come le

Подробнее