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

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 dei sistemi UNIX e GNU/Linux.

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. Shell UNIX e GNU/Linux: 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. Programmazione di sistema: controllo di processi, file system, comunicazione tra processi, threads e multithreading. Precede questa parte una breve introduzione al linguaggio C.

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:

Testo adottato per la prima parte del corso:

  1. R. Blum, C. Bresnahan, "Linux Command Line and Shell Scripting Bible, 2nd Edition", Wiley, 2011.

Testi adottati per la seconda parte del corso:

  1. B.W. Kernighan, D.M. Ritchie, "Il linguaggio C", 2a ed., Pearson Prentice Hall, 2004.
  2. K. Haviland, D. Gray, B. Salama, "UNIX System Programming", 2nd ed., Addison Wesley, 1998.

Altri testi suggeriti sugli 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 sulle parti facoltative:

  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 due 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 21 settembre 2012 (entro il 31 agosto 2012 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 - Shell Unix e GNU/Linux. Il voto di questa parte pesa 6/18 sul voto finale del laboratorio.

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

A partire dal 24 settembre 2011, anche gli studenti che hanno seguito il corso negli anni precedenti devono svolgere i progetti assegnati durante 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 dei precedenti anni accademici, dovra' svolgere per intero il progetto per la parte due di quest'anno.

Orario delle lezioni:

Le lezioni si svolgeranno nel primo periodo didattico il lunedi' dalle 14.30 alle 16.15 e il venerdi' dalle 8.30 alle 10.15, a partire da lunedi' 3 ottobre 2011.

Ricevimento studenti:

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

Avvisi:

Dalla Facolta' e' giunta la comunicazione che la lezione di venerdi' 14 ottobre e' sospesa.

La lezione di lunedi' 31 ottobre e' sospesa.

Venerdi' 11 novembre non ci sara' lezione.

Venerdi' 9 dicembre e lunedi' 12 dicembre non ci sara' lezione.

Venerdi' 16 dicembre il laboratorio e' occupato per i test d'ingresso, quindi non ci sara' lezione.

Le ultime due lezioni del corso sono previste per lunedi' 19 dicembre, come da orario, ed eccezionalmente martedi' 20 dicembre in prima fascia (8.30-10.15). In tale data e' prevista anche la consegna del secondo progetto.

Lucidi delle lezioni e soluzioni degli esercizi:

Parte 1: Shell Unix e GNU/Linux

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: Programmazione di sistema (con introduzione al 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.

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.