Corso di Laboratorio di Sistemi Operativi
(Corso di Laurea in Informatica - A.A. 2010/2011).

In questa pagina gli studenti troveranno le informazioni sull'obbiettivo, il metodo, il programma, la bibliografia e la modalita' di superamento del corso di Laboratorio di Sistemi Operativi, assieme agli orari di lezione e di ricevimento, agli avvisi ed ai lucidi delle lezioni.

Obiettivo:

Il corso ha l'obiettivo di fornire allo studente di Sistemi Operativi strumenti pratici per giungere ad una migliore comprensione del materiale proposto in tale corso, in particolare per quanto riguarda l'utilizzo da amministratore e programmatore del sistema UNIX.

Metodo:

Le lezioni del corso sono costituite in prevalenza da esercitazioni guidate dal docente sui sistemi di calcolo del Laboratorio 2. Ogni esercitazione sara' introdotta dalla spiegazione dei concetti, dei comandi e dei costrutti necessari.

Programma:

  1. La shell UNIX: ruolo e varianti, gestione di file, ridirezione del I/O, pipe, history, editing e autocompletamento della linea di comando, editor testuali, gestione di processi e job, monitoraggio della memoria, comandi di filtro, ricerca, ordinamento ed editing, shell script.
  2. Introduzione al linguaggio C.
  3. Programmazione di sistema: controllo di processi, file system, comunicazione tra processi, threads e multithreading.

Sono disponibili online anche quattro approfondimenti facoltativi sulla scelta, l'installazione (su macchina reale o virtuale) e la configurazione di un sistema GNU/Linux.

Bibliografia:

Testi adottati (un testo di riferimento per ciascuna parte del corso):

  1. R. Blum, C. Bresnahan, "Linux Command Line and Shell Scripting Bible, 2nd Edition", Wiley, 2011.
  2. B.W. Kernighan, D.M. Ritchie, "Il linguaggio C", 2a ed., Pearson Prentice Hall, 2004.
  3. K. Haviland, D. Gray, B. Salama, "UNIX System Programming", 2nd ed., Addison Wesley, 1998.

Testi suggeriti (altri testi validi relativi agli argomenti in programma):

  1. G. Glass, K. Ables, "Linux for Programmers and Users", Prentice Hall, 2006.
  2. R. Love, "Linux System Programming", O'Reilly Media, 2007.
  3. A. Hoover, "System Programming with C and Unix: International Version", Pearson Higher Education, 2009.
  4. D. Buttlar, J. Farrell, B. Nichols, "PThreads Programming", O'Reilly Media, 1996.
  5. P. Deitel, H. Deitel, "C Corso Completo di Programmazione - 4a Ed.", Apogeo, 2010.

Testi di approfondimento (altri testi validi relativi agli approfondimenti facoltativi):

  1. E. Nemeth, G. Snyder, T. R. Hein, B. Whaley, "UNIX and Linux System Administration Handbook, 4/E", Prentice Hall, 2010. Due vecchie versioni di questo testo sono disponibili anche in italiano: E. Nemeth, G. Snyder, S. Seebass, T. R. Hein, "Unix Manuale per l'amministratore di sistema - 3a ed.", Pearson Education Italia, 2002 e E. Nemeth, G. Snyder, S. Seebass, T. R. Hein, "Linux Il manuale per l'amministratore di sistema", Pearson Education Italia, 2008.
  2. C. Negus, "Linux Bible 2011 Edition: Boot up to Ubuntu, Fedora, KNOPPIX, Debian, openSUSE, and 13 Other Distributions", Wiley, 2010. Disponibile anche in italiano: C. Negus, "Linux Bible 2011", Hoepli, 2011.
  3. B. Hill, M. Helmke, A. Graner, C. Burger, "The Official Ubuntu Book, 6/E", Prentice Hall, 2011.
  4. K. Rankin, B. Hill, "The Official Ubuntu Server Book, 2/E", Prentice Hall, 2010.

Modalita' di superamento:

Per superare la parte di laboratorio dell'esame di Sistemi Operativi e Laboratorio e' necessario svolgere tre progetti, uno per ciascuna parte del corso, e stendere per ciascuno una breve relazione. Le consegne dei progetti sono comunicate al completamento della relativa parte del corso e poi pubblicate su questa pagina. I progetti svolti devono essere inviati via e-mail entro il 23 settembre 2011 (entro il 31 agosto 2011 se si desidera registrare l'esame nella sessione di settembre).

La votazione riportata per ogni progetto sara' espressa in trentesimi e concorrera' alla formulazione del voto finale di laboratorio in base al numero delle lezioni dedicate alla relativa parte del corso. Il voto finale di laboratorio concorrera' poi alla formulazione del voto finale dell'esame di Sistemi Operativi e Laboratorio con un peso proporzionale al numero dei crediti. I progetti devono essere svolti individualmente o in un gruppo di due persone.

Progetto I - La shell Unix. Il voto di questa parte pesa 6/18 sul voto finale del laboratorio.

Progetto II - Introduzione al linguaggio C. Il voto di questa parte pesa 4/18 sul voto finale del laboratorio.

Progetto III - Programmazione di sistema. Il voto di questa parte pesa 8/18 sul voto finale del laboratorio.

Attenzione: a partire dal 24 settembre 2011, gli studenti che hanno seguito il corso nell'anno accademico 2010/2011 (o precedenti) e che non hanno ancora consegnato i progetti dovranno svolgere i progetti per l'anno accademico 2011/2012. I voti per le parti gia' consegnate negli anni precedenti rimaranno validi per tutto l'anno accademico 2011/2012, quindi sara' sufficiente svolgere solo i progetti per le parti non consegnate. Va pero' ricordato che chi non ha ancora fatto almeno uno dei progetti relativi alle parti due e tre di quest'anno accademico (o precedente), dovra' svolgere per intero il progetto per la parte due del nuovo anno accademico.

Orario delle lezioni:

Le lezioni si svolgeranno nel primo periodo didattico il martedi' dalle 10.30 alle 12.15 e il giovedi' dalle 14.30 alle 16.15, a partire da martedi' 28 settembre 2010.

Ricevimento studenti:

Su appuntamento. Contattare fabio.buttussi@uniud.it.

Avvisi:

I lucidi delle lezioni di ciascuna settimana saranno disponibili, salvo imprevisti, entro il lunedi' della stessa.

La lezione di martedi' 5 ottobre e' sospesa per consentire ai docenti e agli studenti di partecipare all'incontro sui cambiamenti che investono l'Universita' Italiana che si terra' dalle 11 alle 13 in Aula A (con l'aula B collegata in video conferenza).

E' stata aggiornata la sezione "Modalita' di superamento": la consegna di ciascun progetto sara' comunicata alla fine dell'ultima lezione sulla relativa parte del corso.

La sezione "Modalita' di superamento" e' stata aggiornata con le date di consegna dei progetti ed il progetto relativo alla prima parte del corso.

La bibliografia e' in corso di aggiornamento: controllare regolarmente la relativa sezione.

E' stata leggermente modificata la consegna del primo progetto relativamente all'esercizio filesaver. E' possibile scaricare il PDF aggiornato nella relativa sezione. Nelle stessa sezione e' possibile trovare anche il progetto relativo alla seconda parte del corso.

Giovedi' 11 novembre non ci sara' lezione.

Nella sezione "Modalita' di superamento" e' gia' disponibile la consegna del terzo progetto.

Sono state migliorate le "Soluzioni degli esercizi" della Lezione 16.

L'aggiornamento della bibliografia e' stato completato: controllare la relativa sezione.

Lucidi delle lezioni e soluzioni degli esercizi:

Parte 1: la shell Unix

Lezione 1

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 2

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 3

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 4

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 5

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 6

Lucidi della lezione. Soluzioni degli esercizi.

Parte 2: introduzione al linguaggio C

Lezione 7

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 8

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 9

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 10

Lucidi della lezione. Soluzioni degli esercizi.

Parte 3: la programmazione di sistema

Lezione 11

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 12

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 13

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 14

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 15

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 16

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 17

Lucidi della lezione. Soluzioni degli esercizi.

Lezione 18

Lucidi della lezione. Soluzioni degli esercizi.

Approfondimenti facoltativi

Panoramica sulle distribuzioni GNU/Linux.

Installazione di un sistema GNU/Linux.

Installazione e gestione di macchine virtuali.

Modifica dei file di configurazione: filesystem, grub e Xorg.

L'utility awk.