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

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 cinque approfondimenti facoltativi sulla utility awk e sulla scelta, installazione (su macchina reale o virtuale) e 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, C. Bresnahan, "Linux Bible 8th Edition", Wiley, 2012. Disponibile anche in italiano la versione precedente: C. Negus, "Linux Bible 2011", Hoepli, 2011.
  3. M. Helmke, A. Graner, K. Rankin, B. M. Hill, J. Bacon, "The Official Ubuntu Book, 7/E", Prentice Hall, 2012.
  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 in aula al completamento della relativa parte del corso e pubblicate su questa pagina a partire dall'11 ottobre 2012. I progetti svolti devono essere inviati via e-mail entro il 20 settembre 2013. Dopo tale data sarĂ  necessario svolgere i progetti che verranno assegnati l'anno successivo. Se si desidera registrare l'esame nella sessione di settembre, i progetti devono essere inviati entro il 31 agosto 2013, mentre per registrare l'esame in uno degli appelli precedenti, i progetti devono essere inviati almeno 15 giorni prima della data dell'orale.

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 in un gruppo di due o 3 persone, oppure individualmente.

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 2012, anche gli studenti che hanno seguito il corso negli anni precedenti devono svolgere i progetti assegnati durante l'anno accademico 2012/2013. I voti per le parti gia' consegnate negli anni precedenti rimaranno validi per tutto l'anno accademico 2012/2013, 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 degli anni accademici precedenti al 2011/2012, 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 giovedi' dalle 8.30 alle 10.15 e il venerdi' dalle 10.30 alle 12.15, a partire da giovedi' 27 settembre 2012.

Ricevimento studenti:

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

Avvisi:

Giovedi' 22 e giovedi' 29 novembre non ci sara' lezione. Ci sara', invece, regolarmente venerdi' 23 e venerdi' 30.

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

L'utility awk.

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.