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