SISTEMI OPERATIVI
Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente?
Ecco come fare >>
- English course description
- Anno accademico
- 2018/2019
- Docente
- CESARE STEFANELLI
- Crediti formativi
- 6
- Periodo didattico
- Secondo Semestre
- SSD
- ING-INF/05
Obiettivi formativi
- Obiettivi del corso sono descrivere le funzioni e l'architettura del sistema operativo e introdurre quindi la programmazione di Shell e la programmazione di sistema nel linguaggio C.
Le principali conoscenze acquisite saranno:
le funzioni di base di un sistema operativo;
l'architettura di un sistema operativo;
i componenti fondamentali di un sistema operativo;
i principali sistemi operativi (Unix e Windows);
shell come strumento di rapid application development;
le system call del sistema operativo Unix.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
identificare i vincoli di progetto alla base della realizzazione dei principali sistemi operativi;
saper utilizzare la Shell di Bourne come linguaggio di programmazione;
saper realizzare applicazioni concorrenti multi processo in Unix. Prerequisiti
- Si deve avere un'ottima padronanza del linguaggio di programmazione C e una buona conoscenza del linguaggio Java, acquisite nei corsi di Fondamenti di Informatica.
Contenuti del corso
- Il corso prevede 60 ore di didattica tra lezioni ed esercitazioni. In particolare sono previste 46 ore di lezione in aula e 14 ore di esercitazioni guidate in laboratorio.
La Shell di Bourne come linguaggio di programmazione (8 ore + 6 ore di laboratorio): i principali comandi Unix; la ridirezione di ingresso e uscita, il piping dei comandi, le strutture di controllo della Shell, i file comandi.
La programmazione di sistema Unix (8 ore + 8 ore di laboratorio): le system call del sistema operativo Unix per la gestione dei file, dei segnali, per la gestione dei processi e la loro comunicazione con le pipe.
L'architettura e i componenti del Sistema Operativo (20 ore): la memoria virtuale, lo scheduling, la gestione dell'I/O, il file system, la protezione.
Casi di studio (10 ore): i principali sistemi operativi (Unix, Windows, Linux). Metodi didattici
- Il corso è organizzato nel seguente modo:
lezioni in aula su tutti gli argomenti del corso;
esercitazioni nel laboratorio di informatica per la programmazione in shell e per la programmazione di sistema. Ogni studente avrà a disposizione una macchina per svolgere singolarmente le esercitazioni assegnate, sotto la supervisione del docente o del tutor. Al termine delle esercitazioni guidate gli studenti potranno svolgere ulteriori esercitazioni sui laboratori del Dipartimento. Modalità di verifica dell'apprendimento
- L’obiettivo della prova d’esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.
L’esame è diviso in 2 parti, una prova scritta e una prova orale.
Prova scritta. Si richiede la soluzione di due esercizi, uno di programmazione di sistema Unix (linguaggio C con System Call) e uno di programmazione in Shell di Bourne. Il voto della prova scritta sarà calcolato a partire da quanto ottenuto nella prova di programmazione di sistema (voto da Insufficiente a 30), con la prova in Shell che servirà ad arrotondare tale punteggio (influendo all'incirca più o meno 2 punti). Il servizio Web di pubblicazione degli esiti degli esami ci vincola a esprimere il risultato dell'esercizio di Shell in giudizi. La corrispondenza voto-giudizi è la seguente:
Ins. --> Ins.
-2 --> Suff.
-1 --> Discreto
- --> Buono
+1 --> Distinto
+2 --> Ottimo
Le 2 prove scritte sono indipendenti e possono anche essere svolte in sessioni diverse. Le prove scritte verranno svolte nel laboratorio di informatica, direttamente e obbligatoriamente all'elaboratore, su sistema operativo Linux. La prova scritta ha lo scopo di valutare la capacità di programmazione e ha carattere di selezione (lo studente che non ottiene la sufficienza non è ammesso alla prova orale). Per superare la prova è necessario acquisire almeno 18 punti su 30. Il tempo previsto per la prova è di circa 3 ore. E' consentito consultare testi o appunti solo per la parte di programmazione di sistema, non è consentito consultare nulla per la parte di shell;
La prova orale, che potrà essere sostenuta SOLO DOPO il superamento delle 2 prove scritte, verifica la preparazione sulle restanti parti del programma del corso e servirà per definire il punteggio finale (incidendo circa 3 punti in più o in meno). Se non si supera la prova orale, la si potrà sostenere nuovamente senza bisogno di sostenere nuovamente gli scritti. Gli scritti non "scadono", quindi l'orale può essere sostenuto anche (molto) tempo dopo aver superato lo scritto, anche se si suggerisce agli studenti di non lasciar passare troppo tempo tra scritti e orale.
L'esame può anche essere sostenuto in lingua inglese. Testi di riferimento
- Attenzione: la copia di tutti i lucidi presentati a lezione è disponibile in copisteria, ed è anche presente su questo sito (sezione "materiale didattico").
Per la parte sull'architettura e i principali componenti dei sistemi operativi:
Ancilotti, Boari, Ciampolini, Lipari, "Sistemi operativi", seconda edizione, McGraw-Hill, 2008
Oppure i libri di Tanenbaum o di Silberschatz, come:
A. Silberschatz, P.Galvin, G. Gagne, “Sistemi Operativi, Concetti ed esempi”, Pearson, 2009.
Sulla programmazione di sistema UNIX un libro di testo molto dettagliato è:
W.R. Stevens, "Advanced Programming in the UNIX Environment, 3rd Edition", Addison-Wesley, 2013
Non dimenticate di utilizzare il man sulle macchine Unix e la documentazione texinfo, accessibile tramite terminale digitando il comando info (esempio, "info ps" per avere informazioni sul ps).