ID:
006211
Tipo Insegnamento:
Obbligatorio
Durata (ore):
60
CFU:
6
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Url:
INGEGNERIA ELETTRONICA E INFORMATICA/Percorso Comune Anno: 2
Anno:
2024
Dati Generali
Periodo di attività
Secondo Semestre (24/02/2025 - 05/06/2025)
Syllabus
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.
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 e di Object Oriented Programming.
Metodi didattici
Il corso è organizzato nel seguente modo:
- Lezioni in aula su tutti gli argomenti del corso. Le lezioni saranno anche registrate e i video caricati sul Classroom 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.
- Ricevimento studenti su appuntamento, inviare richiesta al docente via mail. L'ufficio del prof. Stefanelli si trova in fondo al corridoio di sinistra del primo piano (piano giallo) del Dipartimento di Ingegneria.
- Lezioni in aula su tutti gli argomenti del corso. Le lezioni saranno anche registrate e i video caricati sul Classroom 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.
- Ricevimento studenti su appuntamento, inviare richiesta al docente via mail. L'ufficio del prof. Stefanelli si trova in fondo al corridoio di sinistra del primo piano (piano giallo) del Dipartimento di Ingegneria.
Verifica Apprendimento
L’obiettivo della prova d’esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati. Gli obiettivi formativi saranno verificati mediante due prove d'esame scritte e una prova orale (che si può dare solo dopo aver superato entrambe le prove scritte).
Le prove scritte sono svolte all'elaboratore (i PC del laboratorio). Una prova scritta richiede di risolvere un esercizio programmazione di sistema Unix (linguaggio C con System Call) e la seconda prova un esercizio 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.
Il tempo previsto per le prove scritte è circa 1,5 ore per la parte di programmazione di sistema e circa 1 ora per la parte di Shell.
Nella prova scritta di Shell NON si può consultare alcun materiale, né appunti, né libri, né altro.
Nella prova scritta di Programmazione di Sistema in C si possono consultare solo libri e copie delle dispense (NON si può consultare il codice di esercizi e prove di esame risolte).
Si può decidere di sostenere nuovamente una qualunque delle due prove scritte per migliorare il voto. In caso di consegna di una prova verrà automaticamente cancellato il voto di quella svolta in una precedente sessione di esame.
La prova orale potrà essere sostenuta SOLO DOPO il superamento di entrambe le 2 prove scritte. Nella prova orale si andrà a verificare la conoscenza dei componenti e architetture dei sistemi operativi 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 in un altro appello 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.
Le prove scritte sono svolte all'elaboratore (i PC del laboratorio). Una prova scritta richiede di risolvere un esercizio programmazione di sistema Unix (linguaggio C con System Call) e la seconda prova un esercizio 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.
Il tempo previsto per le prove scritte è circa 1,5 ore per la parte di programmazione di sistema e circa 1 ora per la parte di Shell.
Nella prova scritta di Shell NON si può consultare alcun materiale, né appunti, né libri, né altro.
Nella prova scritta di Programmazione di Sistema in C si possono consultare solo libri e copie delle dispense (NON si può consultare il codice di esercizi e prove di esame risolte).
Si può decidere di sostenere nuovamente una qualunque delle due prove scritte per migliorare il voto. In caso di consegna di una prova verrà automaticamente cancellato il voto di quella svolta in una precedente sessione di esame.
La prova orale potrà essere sostenuta SOLO DOPO il superamento di entrambe le 2 prove scritte. Nella prova orale si andrà a verificare la conoscenza dei componenti e architetture dei sistemi operativi 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 in un altro appello 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
Tutto il materiale didattico (Slides presentate a lezione ed esercizi) è presente sul sito Classroom il cui link è indicato su questo sito, nella sezione "materiale didattico".
Testi suggeriti per la parte sull'architettura e i principali componenti dei sistemi operativi:
A. Silberschatz, P.Galvin, G. Gagne, “Sistemi Operativi, Concetti ed esempi”, Pearson, 10a edizione.
A. Tanenbaum, H. Bos, "I Moderni Sistemi Operativi". Pearson, 2019.
Ancilotti, Boari, Ciampolini, Lipari, "Sistemi operativi", seconda edizione, McGraw-Hill, 2008
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).
Testi suggeriti per la parte sull'architettura e i principali componenti dei sistemi operativi:
A. Silberschatz, P.Galvin, G. Gagne, “Sistemi Operativi, Concetti ed esempi”, Pearson, 10a edizione.
A. Tanenbaum, H. Bos, "I Moderni Sistemi Operativi". Pearson, 2019.
Ancilotti, Boari, Ciampolini, Lipari, "Sistemi operativi", seconda edizione, McGraw-Hill, 2008
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).
Contenuti
Il corso prevede 60 ore di didattica tra lezioni ed esercitazioni. In particolare sono previste 42 ore di lezione in aula e 18 ore di esercitazioni guidate in laboratorio.
La Shell di Bourne come linguaggio di programmazione (8 ore + 8 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 + 10 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 (6 ore): i principali sistemi operativi (Unix, Windows, Linux).
La Shell di Bourne come linguaggio di programmazione (8 ore + 8 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 + 10 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 (6 ore): i principali sistemi operativi (Unix, Windows, Linux).
Lingua Insegnamento
ITALIANO
Corsi
Corsi
3 anni
No Results Found