UNIVERSITA` DI PALERMO FACOLTA` DI
Transcript
UNIVERSITA` DI PALERMO FACOLTA` DI
UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 11.07.2007 Tempo a disposizione: 2.30 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (15 punti) Si consideri un garage per auto e moto, organizzato su N livelli e con capacità massima pari a N*MAX. Ogni livello contiene posteggi numerati progressivamente da 1 a MAX. All'arrivo i conducenti richiedono il posteggio dei veicoli che devono essere parcheggiati nel primo spazio libero a partire dal primo livello. Successivamente i conducenti ottengono il ritiro del veicolo su presentazione del numero di posteggio occupato. Si consideri che il garage ha un solo punto di accesso in ingresso/uscita a senso unico alternato. Si realizzi una politica di gestione del garage in C, Java, o pseudocodice (SOLO per i non iscritti in Ingegneria Informatica) e si descriva la sincronizzazione tra i processi, tenendo conto dei seguenti vincoli: ● le auto hanno la precedenza sulle moto, ● i veicoli in uscita hanno sempre la precedenza su quelli in entrata. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock. ESERCIZIO N. 2 (4 punti) Si illustri la tecnica di paginazione che usa la tabella delle pagine invertite. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 3 (4 punti) Si descriva la schedulazione dei processi in ambiente Linux. ESERCIZIO N. 4 (7 punti) Si implementi uno script di shell che cancelli tutti i file con determinate estensioni a partire da una directory di ricerca. La sintassi è la seguente: del root_dir ext1 ext2 ..., dove ● ● root_dir è la directory da cui iniziare la ricerca (si noti che la ricerca riguarda anche le sottodirectory di root_dir); ext1, ext2, ... sono le estensioni dei file che vogliamo cancellare (in numero qualsiasi) Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 07/09/07 Tempo a disposizione: 2.30 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (15 punti) Si consideri un libretto di risparmio condiviso tra più intestatari abilitati sia in prelievo che in deposito. Le due operazioni non possono avvenire simultaneamente. Si realizzi una politica di gestione del libretto in C considerando i seguenti vincoli: ● il saldo del libretto NON deve essere mai negativo; ● le operazioni di deposito hanno sempre la precedenza rispetto a quelle di prelievo; ● il prelievo di somme più piccole ha la precedenza sul prelievo di somme più consistenti al fine di mantenere il libretto maggiormente in attivo. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock. ESERCIZIO N. 2 (4 punti) Si descriva il sistema di allocazione dei file utilizzato nei principali filesystem del sistema operativo Linux/Unix. ESERCIZIO N. 3 (4 punti) Sia dato un sistema con paginazione che usa due livelli di tabelle delle pagine e indirizzi a 64 bit. Ogni indirizzo virtuale è dato dalla tupla (p, m, d). Ogni elemento della tabella delle pagine è di 64 bit (8 byte). Siano np ed nm il numero dei bit di p ed m rispettivamente. Si calcolino la grandezza della tabella delle pagine ad ogni livello, e la dimensione di ogni pagina, se np = 24 ed nm = 22. ESERCIZIO N. 4 (7 punti) Creare uno script di shell column che permetta di visualizzare un dato campo dell'input. Ad esempio ls -l | column 3 mostra il proprietario di ogni file nella cartella corrente. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 14.11.2007 Tempo a disposizione: 2.00 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Il canale di Suez mette in collegamento il Mar Mediterraneo con il Mar Rosso e può essere utilizzato da imbarcazioni per il trasporto di passeggeri, navi merci e petroliere. Il canale può permettere il transito contemporaneo di qualsiasi tipo di nave, ma per ragioni di sicurezza, il transito delle petroliere è ammesso solo quando non ci sono imbarcazioni di tipo diverso all'interno del canale. Realizzare una politica di gestione del canale che tenga conto dei seguenti vincoli: ● nell'accesso al canale le imbarcazioni per il trasporto dei passeggeri hanno sempre la precedenza sulle altre navi; ● le petroliere hanno la precedenza sulle navi per il trasporto merci. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock. ESERCIZIO N. 2 (12 punti) Si implementi uno script di shell che permetta di rimuovere i commenti da uno o più file sorgente in C/C++. I file modificati vengono salvati nella stessa directory cambiando opportunamente il loro nome. La sintassi è la seguente: removec root_dir, dove ● root_dir è la directory di ricerca (la ricerca riguarda anche le sotto-directory di root_dir); ● si noti che i file sorgente C/C++ hanno solitamente l'estensione .c, .cc, e .cpp. Nota: Si trascurino i commenti su più righe che utilizzano i token /* e */. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 29/01/2008 Tempo a disposizione: 2.00 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Si hanno tre robot (R, G e B) che agiscono in un ambiente industriale. Ciascun robot è controllato dal suo thread. Secondo le specifiche della linea di produzione, occorre assicurare che i robot si muovano secondo l'ordine R G B R G B, ... Si supponga che ogni robot esegua un'operazione in un tempo non noto a priori e modellabile con un numero casuale. Scrivere una soluzione che garantisca la corretta sincronizzazione usando i semafori. Discutere inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock. ESERCIZIO N. 2 (12 punti) Sia dato un programma in grado di convertire un file dal formato odt nel formato html (odt2html). La sintassi è la seguente: odt2html input Lo script restituisce 0 in caso di successo (e il risultato viene salvato nella stessa directory del file input), e un numero diverso da 0 nel caso di errore. Si crei uno script batch_odt2html che, data una directory radice root (contenente soltanto i file di tipo odt), effettui la conversione di tutti i file. La ricerca riguarda anche le sotto-directory di root. Nel caso in cui un'operazione di conversione non dovesse riuscire, lo script deve provvedere a cancellare TUTTI i file precedentemente creati. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 05/02/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) (Formulato grazie ad una recente esperienza del vostro docente) Al pronto soccorso di un importante ospedale i pazienti in arrivo vengono raggruppati secondo codici di urgenza. I codici attualmente adoperati sono: rosso, giallo, verde e bianco (in ordine decrescente di priorità). Uno sportello apposito, chiamato triage, decide quali pazienti possono accedere alle sale d'intervento in un particolare momento. Nell'ospedale sono presenti N medici i quali assistono i pazienti a turno. I pazienti con priorità più elevata hanno la precedenza sui pazienti con priorità più bassa, mentre i pazienti a cui è stato assegnato lo stesso codice vengono fatti accomodare secondo la politica FCFS (first-comefirst-served). Per semplicità si supponga che gli interventi in atto non possano essere interrotti dall'arrivo di un paziente con il codice più urgente. Scrivere una soluzione che modelli le attività del pronto soccorso usando i SEMAFORI (non è possibile usare le variabili di condizione). Si ipotizzi che il costrutto semaforo effettui la politica FCFS di gestione delle proprie code di attesa (in altre parole: non è richiesta la gestione delle liste concatenate). Discutere inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 2 (12 punti) Si supponga l'esistenza del programma decypher in grado di decifrare le password criptate degli utenti. Il programma, data la password cifrata in input, stampa sullo stdout la password in chiaro. Nel caso di errore, decypher restituisce un codice numerico diverso da 0. Si scriva uno script di shell check_passwd in grado di controllare la 'forza' delle password degli utenti i cui nomi vengono passati in input allo script (si ricordi che le password degli utenti sono memorizzate nel file /etc/shadow). A tal fine bisogna controllare l'esistenza della password decifrata nel vocabolario standard di linux (/usr/share/dict/words). Nel caso di successo, lo script deve stampare le seguenti informazioni: -+nome: nome_utente passwd: password_in_chiaro forte: SI/NO -+Nel caso di errore (utente non esistente, password mancante, impossibile convertire la password, ...), lo script deve stampare le seguenti informazioni: -+nome: nome_utente ERRORE -+- Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 19/02/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Un ristorante dispone di P posti e si avvale della presenza di C camerieri. I clienti arrivano a gruppi composti da 1 a P/2 persone, e un gruppo entra nel locale solo se c’è un numero sufficiente di posti. I gruppi di clienti possono essere di due tipi: abituali e occasionali; i gruppi di clienti abituali hanno la priorità su quelli occasionali nell’ingresso al ristorante. Una volta seduti, i gruppi di clienti ordinano il pasto al primo cameriere libero, mangiano e poi escono dal ristorante. I camerieri attendono di essere chiamati dai gruppi di clienti, prendono l’ordinazione e poi portano i piatti al tavolo dei clienti. Si implementi una soluzione per modellare le attività del ristorante, e si descriva la sincronizzazione tra i vari processi. I clienti e i camerieri vanno modellati per mezzo dei thread. Discutere inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. Nota: Per semplicità non si è considerato il numero del tavolo a cui sono seduti i clienti. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 2 (12 punti) Creare uno script di shell my_print che permetta di visualizzare i campi dell'input passati come argomento (Si supponga per semplicità che il separatore dei campi da analizzare sia uno spazio vuoto). Ad esempio, ps -A | my_print 1 4 mostra tutti i processi del sistema e il programma associato (ovvero i campi 1 e 4 del proprio input). Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 11/04/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Una molecola di acqua, come è noto, è composta da un atomo di ossigeno e due atomi di idrogeno. Per comporre una molecola di H2O è necessario che i tre atomi siano presenti contemporaneamente. Ciascun atomo viene implementato per mezzo dei thread. Si implementi il processo d'acqua usando i semafori, zazione tra i vari thread. di creazione delle molecole e si descriva la sincroniz- Discutere inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 2 (12 punti) Si implementi uno script di shell (my_word_count) in grado di contare il numero di volte che una data parola passata come argomento compare all'interno dei file con una certa estensione in una data cartella di ricerca. Ad esempio, my_word_count LaTeX tex /home/user/latex_projects conta il numero di volte che la parola “LaTeX” compare nei file con l'estensione “.tex” all'interno della cartella “/home/user/latex_projects”. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 20/06/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Nella stazione di una cittadina di provincia, i pendolari aspettano il loro turno per salire sull'autobus che li porterà nel capoluogo. Il mezzo può trasportare al massimo PMAX passeggeri ed è inizialmente vuoto. All'arrivo del mezzo i passeggeri già presenti in stazione salgono (fino alla capacità massima del mezzo), mentre eventuali passeggeri che arrivano durante le procedure di imbarco dovranno attendere il prossimo autobus (indipendentemente dal numero di persone presenti all'interno). Una volta completato l'imbarco l'autobus può partire. L'autobus può partire immediatamente nel caso in cui nella stazione non vi fosse presente alcun passeggero in attesa. Si implementi il problema descritto usando i semafori, e si descriva la sincronizzazione tra i vari thread. Si supponga che la coda dei semafori in pthread sia gestita utilizzando una politica FIFO. Discutere inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 2 (12 punti) Si scriva uno script di shell che permetta di elencare tutti gli utenti del sistema il cui nome soddisfa un dato pattern passato come argomento. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 16/07/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Lo studio di un parrucchiere consiste di una sala d'attesa con un divano contenente al massimo quattro persone, e un'area dove i clienti possono attendere a piedi. Per motivi di sicurezza, all'interno dello studio del parrucchiere vi possono sostare al massimo N persone contemporaneamente. Nello studio lavorano tre parrucchieri, ciascuno con la propria poltrona dove tagliano i capelli ai clienti. Se non vi sono clienti da servire il parrucchiere si addormenta. Se un cliente entra nello studio quando è pieno va via senza attendere il proprio turno. Altrimenti, dapprima si accomoda nell'area di attesa, poi nel divano e infine viene chiamato dal parrucchiere. Il parrucchiere serve per primo il cliente in attesa da più tempo, gli taglia i capelli, e provvede al pagamento e al rilascio della ricevuta. Poiché vi è soltanto un registro di cassa, i clienti devono aspettare il proprio turno per pagare (per semplicità supponiamo che ciascun parrucchiere possa accettare il pagamento da ciascun cliente). Si implementi la sincronizzazione tra i clienti e i parrucchieri usando i semafori. Si supponga che la coda dei semafori in pthread sia gestita utilizzando una politica FIFO. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. ESERCIZIO N. 2 (12 punti) Si vuole creare uno script di shell, file_append, che dato un pattern di ricerca, prende il contenuto dei file che soddisfano il pattern e lo appende in un unico file il cui nome viene passato dalla riga di comando. La ricerca dei file deve essere effettuata a partire da una cartella radice (passata anch'essa come argomento allo script) e deve essere effettuata anche nelle sue eventuali sottocartelle. Ad esempio, file_append '.txt$' output/ all.txt crea il file all.txt nella cartella corrente dentro il quale concatena il contenuto di tutti i file txt trovati nella cartella ./output/, incluse le sottocartelle. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 18/09/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Lo stadio 'Renzo Barbera' ospita un torneo internazionale di calcio al quale partecipano diverse squadre italiane e straniere. L'orario delle partite del torneo prevede il continuo susseguirsi di incontri durante l'intero arco di ogni giornata. Si prevede quindi una continua affluenza di tifosi in ingresso e in uscita dallo stadio. Lo stadio e` accessibile attraverso due corridoi (Cancello Nord e Cancello Sud) utilizzabili sia per l'ingresso che per l'uscita. I tifosi accedono allo stadio in gruppi (ognuno dei quali deve essere considerato indivisibile nell'accesso e nell'uscita). A gruppi di consistenza numerica maggiore deve essere associata una maggiore priorità nell'accesso e nell'uscita dallo stadio. Per motivi di sicurezza si e` deciso di gestire ogni corridoio in modo tale che gruppi di tifosi di squadre italiane non possano incrociarsi, nello stesso corridoio, con gruppi di tifosi di squadre straniere: quindi, ogni corridoio può funzionare a doppio senso di percorrenza soltanto nel caso in cui gli utenti che lo attraversano siano tutti tifosi dello stesso tipo (cioè tutti italiani, oppure tutti stranieri). A questo proposito, si assuma che tutti i gruppi siano omogenei. Per ragioni di ospitalità, inoltre, si e` stabilito di favorire ragionevolmente (nell'accesso e nell'uscita dallo stadio) i gruppi di tifosi stranieri. Infine, nel tentativo di evitare situazioni di saturazione, tifosi che desiderano uscire dallo stadio devono avere la precedenza sui tifosi che intendono entrare. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. Lo stadio ha una capienza massima MAX_C (che esprime il numero massimo di persone consentito all'interno dello stadio) oltre la quale non è permesso l'accesso di ulteriori tifosi. Si implementi una soluzione che modelli l'attività dello stadio, e si descriva la sincronizzazione tra i thread. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. ESERCIZIO N. 2 (12 punti) Si vuole creare uno script di shell, format_filename, che permette di formattare opportunamente i nomi dei file presenti in una cartella di ricerca passata come argomento allo script. Le specifiche impongono che i file presenti nella cartella soddisfano il seguente pattern: 'part1'[token'part2'token'part3'...].ext Ad esempio, nella cartella /home/haris/work/ sono presenti i seguenti file: out_001_draft_print.pdf out_002_draft_print.pdf ... Lo script alternativo superflue. deve permettere di del file eliminando specificare un nome alcune parti ritenute A titolo di esempio, si desidera eliminare la parola draft dell'esempio precedente, ottenendo i seguenti nomi dei file: out_001_print.pdf out_002_print.pdf ... Quindi la sintassi dello script è la seguente: format_filename directory token field#1 [field#2 ...] Quindi per ottenere il risultato precedente invocare lo script con i seguenti parametri: format_filename /home/haris/work/ '_' 1 2 4 si dovrebbe Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata. UNIVERSITA’ DI PALERMO FACOLTA’ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA CORSO DI SISTEMI OPERATIVI Esame del 20/11/2008 Tempo a disposizione: 2 ore Cognome Nome X1 X2 N. Matricola X3 X4 X5 X6 X7 ESERCIZIO N. 1 (18 punti) Un palazzo di piani P ha un ascensore capace di accogliere un numero N di passeggeri. Ogni passeggero richiede di essere trasportato da un piano all'altro usufruendo dell'ascensore. I passeggeri specificano un piano di partenza e uno di arrivo, e scendono dall'ascensore quando questo arriva al piano di arrivo. Si implementi una soluzione che modelli l'attività dell'ascensore e dei passeggeri, e si descriva la sincronizzazione. Si discuta inoltre se la soluzione proposta può presentare rinvio indefinito e/o deadlock, e se sì, discutere eventuali modifiche per evitarli. FACOLTATIVO Implementare una politica di servizio che non penalizzi alcuni passeggeri usando metodi relativi allo scheduling visti a lezione. ESERCIZIO N. 2 (12 punti) Si crei uno script di shell, showmodfiles, che sia in grado di elencare tutti i file di una certa directory che sono stati modificati in una certa data passata per argomento. La sintassi è la seguente: showmodfiles dir day month Ad esempio, il comando showmodfiles /home/haris/docs 16 Nov mostra tutti i file della cartella /home/haris/docs/ che sono stati modificati in data 16 novembre. Nota: Per la valutazione del compito si terrà pesantemente conto della presentazione dell'elaborato e della professionalità dimostrata.