Il compito è costituito da domande chiuse, domande aperte ed es
Transcript
Il compito è costituito da domande chiuse, domande aperte ed es
Esame “Laboratorio di Sistemi Operativi” 13-09-2007 Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l’uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio di 1 punto in caso di risposta esatta, 0 in caso di risposta errata o in assenza di risposta. Solo una risposta è corretta. 1) La redirezione è un meccanismo che Consente di fornire i dati prodotti in output da un comando come input di un altro comando Consente di scrivere i dati prodotti in output da un comando su file Consente di eseguire un comando con nomi differenti Nessuna delle precedenti 2) Il comando kill Fa terminare sempre un processo Termina la shell Invia un segnale ad un processo Arresta il sistema operativo 3) La variabile $PATH Contiene l’exit status dell’ultimo comando eseguito Contiene il Pathname dell’eseguibile della shell Viene utilizzata per comunicare alla shell l’id dell’utente Viene utilizzata per comunicare alla shell in quali directory deve cercare i comandi da eseguire 4) Il comando VAR=1;echo $VAR Stampa a video la stringa VAR Stampa a video 1 Viene utilizzato per comunicare alla shell l’identificativo del processo Init Non stampa nulla 5) La shell è un processo utente è una routine del kernel rappresenta la componente “dati” del kernel è una tabella del sistema operativo 6) In un sistema UNIX un processo nello stato SLEEPING è: terminato in attesa di un evento in esecuzione 3 Esame “Laboratorio di Sistemi Operativi” 13-09-2007 Cognome Nome Mat. zombie 7) Quale delle seguenti informazioni non è contenuta in un i-node: La dimensione del file I permessi Il proprietario del file e gruppo Il nome del file 8) In un sistema UNIX la open() di un file Cancella il processo Rinomina il file Ricerca i-node corrispondente, controlla diritti di accesso e carica i-node su RAM Ricerca i-node corrispondente e carica i-node su RAM 9) La System Call “wait()” Pone il processo padre in attesa della terminazione del processo figlio Pone il processo padre in attesa della chiamata del processo figlio Pone il processo figlio in attesa della terminazione del processo padre Decrementa il parametro ricevuto 10) La system call “socket()” consente di: Definire il protocollo da utilizzare Definire il “port” dell’applicazione con la quale si intende comunicare Definire l’indirizzo IP della macchina con la quale si vuole comunicare Nessuna delle risposte precedenti 11) Il socket di tipo “SOCK_STREAM” della System Call “socket()” è: Basato sul protocollo TCP Basato sul protocollo UDP Basato su un protocollo differente dal TCP e UDP Nessuna delle risposte precedenti 12) Due thread possono condividere una risorsa tramite Due segnali Una variabile globale Una shared memory Una pipe 3 Esame “Laboratorio di Sistemi Operativi” 13-09-2007 Cognome Nome Mat. Domande aperte: ogni domanda corrisponde ad un punteggio variabile tra 0 e 3 punti a seconda della correttezza, completezza e sinteticità della risposta. A1 Illustrare con una figura e descrivere in maniera sintetica gli stati di un processo UNIX. A2 Indicare e spiegare sinteticamente le modalità con cui 2 processi possono scambiare informazioni sulla stessa macchina (segnali, memoria condivisa, pipe). 3 Esame “Laboratorio di Sistemi Operativi” 13-09-2007 Cognome Nome Mat. Esercizi: Ognuno dei successivi quesiti corrisponde ad un punteggio variabile tra 0 e 9 a seconda della correttezza, completezza e adeguatezza della soluzione proposta. Utilizzare un linguaggio Clike e le system call UNIX cercando di essere chiari e strutturati, indicare anche le variabili utilizzate e nel passaggio dei parametri specificare se per valore o indirizzo. E1 (9 punti) Scrivere un’applicazione che crea un anello di comunicazione tra 3 processi (un processo padre e 2 processi figli) su cui i processi scambiano una stringa. La stringa viene creata dal processo padre, il primo figlio effettua una prima trasformazione (Reverse) e la passa al secondo figlio che a sua volta la trasforma (UpperCase) e la restituisce al processo padre che la visualizza sul video. La figura illustra l’anello di comunicazione. Padre Create, Displa Figlio 1 (Reve Figlio 2 (Uppe E1.1 (6 punti) E’ richiesta l’implementazione solo della prima parte dell’anello (comunicazione tra il padre e il primo processo figlio). Il processo padre crea le pipe di comunicazione e il processo figlio, richiede la stringa a terminale, la invia al figlio, attende la risposta e visualizza la stringa risultante. Il processo figlio legge la stringa dalla pipe, la trasforma mediante la funzione Reverse() e la invia al processo padre. Padre Create, Displa Figlio 1 (Reve Note Le funzioni: Reverse (stringa_sorgente, stringa_destinazione) UpperCase (stringa_sorgente, stringa_destinazione) non vanno implementate ma sono già disponibili. Ciascuna freccia rappresenta un canale di comunicazione monodirezionale realizzabile tramite una system pipe. 3 Esame “Laboratorio di Sistemi Operativi” 13-09-2007 Cognome Nome Mat. E2 (9 punti) Scrivere un’applicazione che realizza un servizio centralizzato per il rilascio di identificativi unici sulla rete: • è necessario realizzare un server che generi numeri random, mantenendo traccia dei numeri via via assegnati • il server deve garantire l’unicità dei numeri assegnati • è necessario realizzare un processo client che invia richieste di rilascio E2.1 (6 punti) Scrivere una versione semplificata: • Il server si mette in attesa di ricevere una richiesta di connessione, per ogni richiesta ricevuta apre la connessione, legge nickname del client, genera numero random e lo invia al client. Ripete le operazioni con un ciclo infinito. • Il client riceve sulla stringa di comando “nome_server” e “nickname_client”, si connette con il server, invia nickname sulla connessione e riceve identificativo numerico Viene fornita la funzione per generare i numeri random: i = random(N) che restituisce un intero casuale compreso tra 0 e N-1. 3