Laboratorio di Informatica: Sistemi Operativi (LISO)
Laurea e Diploma in Informatica (A.A. 2002-2003, Secondo Semestre)
Approfondire alcuni argomenti che vengono presentati nel corso di Sistemi Operativi I (Prof. Cesarini) tramite attività, anche di carattere pratico, sia di programmazione che di utilizzazione di tool software esistenti.
Più specificamente: fornire le conoscenze necessarie per realizzare programmi "di sistema'' che facciano uso delle primitive di comunicazione tra processo tipiche in ambiente UNIX.
Per sostenere l'esame bisogna realizzare (correttamente) 1 progetto (in gruppi di 2-4 componenti) e quindi sostenere un orale. Per sostenere l'orale bisogna prenotarsi.
Modalità di consegna del progetto:
Nei dischetti/documenti consegnati, bisogna indicare chiaramente il numero del gruppo, l'anno accademico, i nomi dei componenti con i relativi numeri di matricola, ed un indirizzo e-mail di riferimento.
I progetti saranno controllati utilizzando il sistema presente nel laboratorio di Via Cesalpino, quindi eventuali discrepanze tra i sistemi UNIX/Linux riscontrate nella realizzazione dei progetti dovranno sempre essere risolte privilegiando la versione del sistema presente in laboratorio.
Validità dei progetti
I progetti consegnati nell'anno accademico 2002/2003 sono validi fino all'ultimo appello d'esame dello stesso anno accademico (compreso).
Consegna dei progetti
I progetti dovranno essere consegnati almeno 7 giorni prima della data prevista per l'orale.
18/2/2003 (2 ore) Introduzione al corso. Concetti di sistema operativo, multiprogrammazione e time-sharing. UNIX: cenni storici, filosofia di base, caratteristiche, architettura e sintassi dei comandi. Il concetto di home directory. Collegarsi al sistema.
25/2/2003 (2 ore) Cambiare la password ed uscire dal sistema. Caratteri di controllo. Chiedere informazioni. Organizzare e navigare nel file system. Directory di lavoro.
4/3/2003 (2 ore) Creare e copiare file. Muovere e rimuovere file. Pathname e nomi di file. Informazioni sui file. Diritti di accesso e loro gestione. Cercare informazioni. Espressioni regolari.
11/3/2003 (2 ore) Grep e awk. Creare archivi. Risparmiare spazio. Caratteristiche di bash shell. Shell interattiva e non. Quoting. Parametri e variabili. Esportazione. Subshell. Fasi di espansione.
18/3/2003 (2 ore) Esercitazione in Laboratorio.
25/3/2003 (2 ore) Esercitazione in Laboratorio.
1/4/2003 (2 ore) Esercitazione in Laboratorio. Exit status dei comandi. Pipeline. Liste di comandi.
8/4/2003 (2 ore) Esercitazione in Laboratorio. Alias. Ridirezione.
29/4/2003 (2 ore) Controllo dei processi. Controllo dei job. Esempi. History. Esecuzione dei comandi. Configurazione di ambiente. Script di shell. Bash: comandi interni. UNIX: programmazione di sistema. Descrittore dei file. Gestione dei file: open(), read(), write(), lseek(), close().
6/5/2003 (2 ore) Gestione degli errori: errno e perror(). Link hard e soft. Ottenere informazioni su file e directory. Cambiare permessi, possessore e gruppo di un file. Duplicare descrittori. Operare su descrittori. Controllare i dispositivi. Gestire i processi. Cambiare directory e priorità. Gestire i processi: esempi di programmazione. Thread.
9/5/2003 (2 ore) Segnali. Richiedere, gestire e inviare segnali. Segnali: esempi di programmazione. Gruppi di processi e terminali di controllo. IPC. Pipe anonimi: creazione ed uso. Pipe con nome (FIFO). Creazione: mknod e mknod(). Apertura, lettura, scrittura, chiusura e rimozione di FIFO.
16/5/2003 (2 ore) Socket. Attributi dei socket. Uso dei socket SOCK_STREAM. Creazione dei socket, assegnazione di indirizzi, accettazione di connessioni. Operazioni di lettura scrittura su socket. Esempi di socket AF_UNIX. Indirizzi Internet e host name. Numeri di porta. Network byte order. Esempi di socket AF_INET. Programmazione di sistema: illustrazione del progetto.