Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 7 problema 2 8 problema 2 5 problema 3 10 totale 30

Documenti analoghi
Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 10 problema 2 5 problema 3 5 problema 4 10 totale 30

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 10 problema 2 5 problema 3 5 problema 4 10 totale 30

Elementi di Architettura e Sistemi Operativi

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 7 problema 2 8 problema 3 5 problema 4 10 totale 30

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 9 problema 2 6 problema 3 5 problema 4 10 totale 30

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 7 problema 2 7 problema 3 6 problema 4 10 totale 30

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30

Lezione 2: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Marzo 2017

Sistemi Operativi e Laboratorio, Prova del 19/6/2014

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 9 problema 3 5 problema 4 10 totale 30

Lezione 2: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Marzo 2014

Sistemi operativi - Concetti ed esempi -Settima edizione

Espressioni con effetti collaterali

Sistemi Operativi e Laboratorio, Prova del 9/9/2016

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 8 problema 2 5 problema 3 7 problema 4 10 totale 30

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito A

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito B

Sistemi Operativi e Laboratorio, Prova del 5/4/2016

Sistemi Operativi e Laboratorio, Prova del 9/9/2014

Sistemi Operativi e Laboratorio, Prova del?/?/?

Soluzione Esercizio 1

Rappresentazione dell informazione

Sistemi Operativi (M. Cesati)

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Elementi di Architettura e Sistemi Operativi

Sistemi Operativi Appello del 10 luglio 2017 Versione Compito A Cognome e nome: Matricola: Posto:

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A

Circuiti digitali combinatori

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Cognome:, Nome: Matricola:

Istruzioni e linguaggio macchina

Introduzione al MATLAB c Parte 2

PROVA SCRITTA DEL CORSO DI. Corso di Laurea in Ingegneria Biomedica, Ingegneria Elettrica ed Elettronica 17 Luglio 2014

Architetture data-flow

Istruzioni, algoritmi, linguaggi

Corso di Laurea in Informatica Architetture degli Elaboratori

Sistemi Operativi Esercizi Sincronizzazione

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Sistemi Operativi e Laboratorio, Prova del 15/01/2014

1 Operatori matematici e costrutto if

Discussione della domanda 3 dell'esercitazione del 10 maggio 2019

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Sistemi Operativi. Lez. 6: Problemi classici della programmazione concorrente

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programmazione Procedurale in Linguaggio C++

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Circuiti Logici. Pagina web del corso:

Sviluppo di programmi

Architettura degli Elaboratori

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

anno scolastico 2009 / 2010 ELETTRONICA per Elettrotecnica ed Automazione

PROVA SCRITTA DEL CORSO DI C A L C O L A T O R I E L E T T R O N I C I NUOVO ORDINAMENTO DIDATTICO 18 Giugno 2009

Rappresentazione in virgola mobile (floating-point) Rappresentazione in virgola mobile (floating-point)

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione B

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Nota: lo studente si ricordi di inizializzare i valori delle variabili semaforo usate nella sua soluzione.

Università degli Studi di Padova - Facoltà di Scienze MM.FF.NN. - Corso di Laurea in Informatica

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 12 Gennaio Attenzione:

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

PROVA SCRITTA DEL MODULO DI. 13 giugno 2017 NOME: COGNOME: MATRICOLA:

Laboratorio di Programmazione

Lezione2: Circuiti Logici

Sviluppo di programmi

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

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Sistemi Operativi e Laboratorio, Prova del 25/5/2016

Costrutti di iterazione

Introduzione alla programmazione

Dal linguaggio macchina al linguaggio C

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Fondamenti di Informatica

Corso di Laurea in Informatica

Linguaggio C: Espressioni

PROVA SCRITTA DEL MODULO DI. CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA 14 febbraio 2017

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Sistemi Operativi - Teoria corso A

Michele Angelaccio / Berta Buttarazzi. Reti logiche. PARTE SECONDA Reti sequenziali

Elementi di informatica

Costrutti di Programmazione Strutturata. Informatica 1 / 22

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 26 Novembre 2014 COGNOME E NOME RIGA COLONNA MATRICOLA

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 22 giugno Attenzione:

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Sistemi Operativi. Lez. 14 : il deadlock

SECONDA PROVA INTERMEDIA DEL MODULO DI. 1 giugno 2017 NOME: COGNOME: MATRICOLA:

Ciclo do while in FORTRAN

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Esame di Architetture Canale MZ Prof. Sterbini 21/7/14

Sistemi - Modulo di Sistemi a Eventi Discreti. problema punti massimi i tuoi punti problema 1 20 problema 2 10 totale 30

2 Operatori matematici e costrutto if

Transcript:

Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 16 Luglio 2018 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 7 problema 2 8 problema 2 5 problema 3 10 totale 30 1

1. Si consideri il problema di sincronizzazione cosiddetto degli n filosofi, dove n filosofi siedono attorno a una tavola con una bacchetta tra ogni coppia di filosofi vicini. I filosofi sono numerati da 0 a n 1 e ad essi corrispondono processi diversi, cioe ogni filosofo esegue P ranza(i), dove i e il numero del filosofo. Si assuma che ci sia un vettore di semafori, Bacchetta[i] che rappresenta la bacchetta alla sinistra del filosofo i. Tutti i semafori sono inizializzati a 1. Si consideri la seguente soluzione: void Pranza(int i) { Bacchetta[i].P(); /* prendi la bacchetta sinistra */ Bacchetta[(i+1)%n].P();/* prendi la bacchetta destra */ Mangia(); Bacchetta[i].V(); /* lascia la bacchetta sinistra */ Bacchetta[(i+1)%n].V();/* lascia la bacchetta destra */ } (a) Si spieghi come funziona questo codice di sincronizzazione. Traccia di soluzione. I semafori garantiscono la sincronizzazione nell accesso alle bacchette. Si veda il libro di testo. 2

(b) Questa soluzione soddisfa le condizioni necessarie per lo stallo? Si elenchino le condizioni di stallo, e per ogni condizione di stallo si verifichi se essa e soddisfatta oppure o no in questa soluzione. Traccia di soluzione. I semafori sono inizializzati a 1, percio ogni bacchetta puo essere detenuta da un solo processo per volta. Niente prelazione. Le bacchette non possono essere sottratte a chi le detiene senza violare la semantica dei semafori su cui si basa il codice precedente. Possesso e attesa. In uno stallo, la seconda P () nel codice proposto ha come effetto che il processo attenda mentre detiene la prima bacchetta ottenuta con la prima P (). Attesa circolare. Il filosofo i afferra la Bacchetta[i] e aspetta che il filosofo (i + 1)%n rilasci la Bacchetta[(i + 1)%n]. C e un ciclo chiuso dal filosofo n 1 quando afferra la Bacchetta[n 1] e aspetta che il filosofo 0 rilasci la Bacchetta[0]. 3

(c) Questa soluzione puo entrare in stallo? Se no, si argomenti perche no. Se si, si mostri una successione di chiamate del processo P ranza() (indicando il relativo argomento) che porta allo stallo. Traccia di soluzione. Si, puo entrare in stallo perche le condizioni necessarie sono soddisfatte, come visto al punto precedente. Si ha uno stallo quando si esegue P ranza(0) e tale chiamata e sospesa dopo la prima P (), poi si esegue P ranza(1) e tale chiamata e sospesa dopo la prima P (), poi si esegue P ranza(2) e tale chiamata e sospesa dopo la prima P (), poi si esegue P ranza(3) e tale chiamata e sospesa dopo la prima P (), poi si esegue P ranza(4) e tale chiamata e sospesa dopo la prima P (). A questo punto ogni filosofo ha afferrato la sua bacchetta sinistra, ma non ci sono altre bacchette libere, tutti i filosofi rimangono bloccati sulla seconda P () in attesa che un altro filosofo rilasci la sua bacchetta, senza che nessuno possa mangiare e quindi rilasciare le bacchette detenute. 4

(d) Si consideri la seguente variante della soluzione iniziale (dove lucchetto e una variabile globale condivisa da tutti i processi). Lucchetto lucchetto; void Pranza(int i) { lucchetto.acquisisci(); Bacchetta[i].P();/* prendi la bacchetta sin. */ Bacchetta[(i+1)%n].P();/* prendi la bacchetta des. */ lucchetto.rilascia(); Mangia(); Bacchetta[i].V(); /* lascia la bacchetta sin. */ Bacchetta[(i+1)%n].V();/* lascia la bacchetta des. */ } Con questa soluzione puo darsi uno stallo? Se si, si mostri una successione di chiamate che porta allo stallo. Se no, si discuta quale condizione necessaria di stallo e invalidata. Si spieghi come funziona questa soluzione. Traccia di soluzione Questa soluzione usa un lucchetto per assicurarsi che ad un filosofo siano assegnate entrambe le bacchette, percio non piu di un filosofo puo essere bloccato nella sezione critica in attesa di prendere entrambe le bacchette. I filosofi rimanenti o avranno due bacchette (e potranno mangiare) o non avranno alcuna bacchetta e saranno in attesa che l attuale detentore del lucchetto lo rilasci. Quindi s invalida la condizione necessaria di attesa circolare, perche il grafo risultante e aciclico. 5

(e) Si consideri la seguente variante della soluzione iniziale (dove lucchetto e InUso sono variabili globali condivise da tutti i processi). Lucchetto lucchetto; Boolean[n] InUso; void Pranza(int i) { Boolean successo = falso; while (!successo) { lucchetto.acquisisci(); if (!InUso[i] && (!InUso[(i*1)%n])) { Bacchetta[i].P();/* prendi la bacchetta sin. */ Bacchetta[(i+1)%n].P();/* prendi la bacchetta des. */ InUso[i] = vero; InUso[(i+1)%n] = vero; successo = vero; } else { Cedi_Processore(); } lucchetto.rilascia(); } Mangia(); Bacchetta[i].V(); /* lascia la bacchetta sin. */ Bacchetta[(i+1)%n].V();/* lascia la bacchetta des. */ InUso[i] = falso; InUso[(i+1)%n] = falso; } Con questa soluzione puo darsi uno stallo? Se si, si mostri una successione di chiamate che porta allo stallo. Se no, si discuta quale condizione necessaria di stallo e invalidata. Si spieghi come funziona questa soluzione. [Non si discuta la semantica della cessione volontaria del processore rispetto al possesso del lucchetto] Traccia di soluzione. Si noti che il vettore InUse e inizializzato a falso (0) dal compilatore (se ci sono dubbi al riguardo, meglio inizializzarlo esplicitamente a falso). Questa soluzione invalida la condizione necessaria di possesso e attesa 6

perche o un filosofo prende entrambe le bacchette se sono libere oppure cede volontariamente il processore (per ritornare a richiedere le bacchette quando riattivato). Si rifletta sulla diversita delle due soluzioni proposte. Nel punto precedente un solo filosofo puo possedere una bacchetta ed essere in attesa di un altra (quindi s invalida l attesa circolare, ma resta il possesso ed attesa), in questa soluzione un filosofo o prende due bacchette o nessuna.(quindi s invalida il possesso e attesa, e ovviamente anche l attesa circolare come conseguenza del non esserci piu possesso e attesa). [Si puo pensare che all atto della cessione volontario si rilasci il lucchetto e lo si riacquisisca all atto della riattivazione, ma questa parte e stata volutamente esclusa dalla discussione della presente domanda] 7

2. Si consideri un sistema di paginazione su richiesta con un disco di paginazione che abbia un tempo medio di accesso e trasferimento di 20 millisecondi. Gl indirizzi siano tradotti per mezzo di una tabella delle pagine che si trova in memoria centrale con un tempo di accesso di un microsecondo per ogni accesso alla memoria, per cui ogni riferimento alla memoria per mezzo della tavola delle pagine richiede due accessi alla memoria (uno per l indirizzo e uno per il dato). Per migliorare questo tempo s introduce una memoria associativa delle traduzione degl indirizzi (TLB) che riduce il tempo di accesso a un solo riferimento alla memoria, se l elemento della tabella delle pagine si trova nella memoria associativa (se l indirizzo si trova nella memoria associativa serve un solo accesso alla memoria centrale per il dato). Supponendo che per l 80% degli accessi l elemento della tabella delle pagine corrispondente (la traduzione dell indirizzo) si trovi nella memoria associativa, e che il 10% dei restanti (cioe il 2% del totale) causi un assenza di pagina, si calcoli il tempo effettivo (medio) di accesso alla memoria in µs. Traccia di soluzione. TEA = (0, 8 1µs) + (0, 18 2µs) + (0, 02 (20.000µs + 2µs)) = 0, 8µs + 0, 36µs + 400, 04µs = 401, 2µs. (a) Il primo contributo e un riferimento al dato nella memoria centrale quando la traduzione dell indirizzo si trova nella memoria associativa (b) Il secondo contributo sono due riferimenti alla memoria centrale, uno per trovare l indirizzo che non e presente nella memoria associativa ma si ottiene dalla tabella nella memoria centrale, l altro per il dato nella memoria centrale (c) Il terzo contributo e per portare una nuova pagina dal disco alla memoria centrale, piu l indirizzo che si trova nella tavola delle pagine nella memoria centrale, piu il dato (adesso portato nella memoria centrale) (d) Il tempo della memoria associativa e trascurato 8

3. Dato il seguente frammento di programma nel linguaggio di LC-3 START LDI R1, A BRzp START STI R0, B BRnzp PROX A.FILL xfe04 B.FILL xfe06 si spieghi che cosa fa e si commenti ogni singola istruzione. Traccia di soluzione Nelle prime due righe s interroga ciclicamente DSR[15] per vedere se si e finito con l ultimo carattere inviato dal processore. Se DSR[15] = 0 si sta ancora processando il carattere e si ripete un ciclo saltando a ST ART. Quando il circuito dello schermo ha processato il carattere, automaticamente assegna DSR[15] = 1, per cui si procede all istruzione ST I che memorizza il contenuto di R0 all indirizzo xf E06, l indirizzo mappato sulla memoria del registro DDR. La scrittura di DDR azzera anche DSR[15] disabilitando per il momento il registro DDR dalla gestione di un altro carattere in uscita. Il carattere in DDR e reso visibile sullo schermo dal circuito dello schermo stesso. Infine si salta incondizionatamente a P ROX. Si notino la lettura indiretta LDI a xf E04 (indirizzo mappato sulla memoria del registro DSR) e la scrittura indiretta ST I a xf E06 (indirizzo mappato sulla memoria del registro DDR). Si veda il materiale sulla gestione dell uscita nell architettura LC-3. 9

4. Si progetti un sommatore binario combinatorio per due operandi con 4 cifre binarie, ottenuto combinando moduli sommatori per due operandi con una cifra binaria. Siano A e B gl ingressi, S = A + B il risultato, RI il riporto in ingresso, RU il riporto in uscita. Si proceda come segue: (a) Si mostri la tavola di verita del semi-addizionatore binario a una cifra avente in ingresso due operandi A e B e in uscita la somma S = A + B e il riporto in uscita. (b) Si mostri la tavola di verita del sommatore completo che in ingresso ha anche RI il riporto in ingresso. (c) Si minimizzi la logica risultante a due livelli. (d) Si mostri una realizzazione circuitale della logica ottenuta al punto precedente. (e) Si mostri come combinare piu unita del precedente sommatore a una cifra binaria per ottenere un sommatore su quattro cifre binarie. Traccia di soluzione Si consultino il libro di testo e/o le disponse. 10