Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2015/2016
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
12
Anno di corso: 
2
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
96

Obiettivi

Fornire i concetti fondamentali di un SO e le differenze tra i moderni sistemi operativi esistenti. Lo studente comprenderà i problemi teorici e pratici della gestione concorrente di risorse multiple e acquisirà familiarità con le varie distribuzioni Linux e l’interprete dei comandi.

Conoscenza e capacità di comprensione: Lo studente deve dimostrare di conoscere e saper comprendere gli aspetti teorici e pratici alla base della realizzazione e dell’utilizzo dei sistemi operativi con particolare riferimento ai sistemi Unix-like.

Capacità di applicare conoscenza e comprensione: Lo studente deve dimostrare di saper utilizzare la propria conoscenza acquisita per sperimentare i diversi sistemi operativi moderni e le diversi distribuzioni al fine di saper implementare algoritmi ottimizzati per la gestione di risorse condivise di calcolo e memorizzazione.

Autonomia di giudizio: Lo studente deve essere in grado di valutare in maniera autonoma i pro e i contro di ciascuno dei sistemi operativi emergenti sapendo distinguere e bilanciare gli elementi del SO dal punto di vista dell’utente finale che dello sviluppatore e sistemista esperto.

Abilità comunicative: Lo studente deve essere in grado di argomentare con rigore scientifico e terminologia appropriata i concetti tecnici complessi dei sistemi operativi, da quelli inerenti la struttura del sistema e la sincronizzazione di processi concorrenti fino ai meccanismi di protezione e sicurezza.

Capacità di apprendimento: Lo studente deve essere in grado di aggiornarsi e approfondire in modo autonomo il funzionamento di un sistema operativo, sperimentandone funzionalità e limitazioni. Lo studente sarà in grado di reperire e comprendere le fonti di documentazione online riguardanti i sistemi operativi moderni.

Prerequisiti

E’ necessaria la conoscenza degli argomenti di Architettura degli elaboratori, Laboratorio di Architettura degli elaboratori, Programmazione I, Programmazione II.

Contenuti

Il corso mira ad illustrare struttura e funzioni di un moderno sistema operativo multiprogrammato, con riguardo allo scheduling dei processi, gestione della memoria, sincronizzazione dei processi, gestione del file system e tecniche di protezione e di sicurezza nei sistemi Unix-like e Windows.

Metodi didattici

L’insegnamento è costituito da un totale di 96 ore (12 CFU) di didattica frontale, ripartite in due moduli da 6CFU ciascuno, rispettivamente Sistemi Operativi e Laboratorio di Sistemi operativi. L’insegnamento si svolge in aula o in laboratorio ed è organizzato in lezioni da 2 ore scandite dal calendario accademico. La didattica frontale consiste in lezioni teoriche e pratiche nonché in esercitazioni tenute dal docente sugli argomenti previsti dal corso. Le lezioni teoriche hanno l’obiettivo di trasmettere allo studente la conoscenza dei meccanismi di funzionamento di un sistema operativo e degli strumenti in esso disponibili per la gestione dei processi, delle risorse di calcolo e di memorizzazione e degli strumenti di protezione e sicurezza dei dati. Le lezioni di laboratorio ripercorrono gli argomenti teorici visti a lezione proponendone una fattiva implementazione algoritmica ed evidenziandone potenzialità e le limitazioni nei sistemi operativi moderni. Durante l’insegnamento sono proposte agli studenti delle lezioni pratiche che si svolgono in modo collettivo in aula e che propongono dei quesiti ed esercizi volti a verificare la comprensione degli argomenti trattati. Lo svolgimento degli esercizi proposti dal docente permette di verificare l’applicazione pratica degli argomenti visti a livello teorico e la capacità degli studenti di proporre implementazioni alternative.
È consigliata la frequenza costante del corso che è tuttavia facoltativa. Le prove di esame saranno uguali per tutti gli studenti, frequentanti e non, ad eccezione delle prove intercorso che sono riservate ai soli studenti frequentanti.
Le prove intercorso previste sono due. Solo gli studenti che superano la prima prova possono sostenere la seconda prova. Gli studenti che superano la seconda prova sono esentati dal sostenere la prima prova scritta degli appelli regolari di Giugno, Luglio e Settembre.

Verifica dell'apprendimento

La prova d’esame per il corso di Sistemi Operativi è congiunta a quella prevista per il corso di Laboratorio di Sistemi Operativi. La modalità di esame prevede due prove scritte in aula organizzate come di seguito e un orale che verte sul commento della seconda prova scritta.

Prima prova scritta: inerente temi di natura pratica, il superamento della quale permette di sostenere la prova scritta successiva (i risultati saranno comunicati agli studenti entro 10 giorni dalla data di svolgimento della prova).
a) La prova consiste di 2 esercizi applicativi della parte di SO (uno obbligatorio per un punteggio massimo di 9 punti su un problema di sincronizzazione dei processi risolto mediante l'uso dei semafori ed un altro di punteggio massimo di 6 punti, inerente la gestione virtuale della memoria o la gestione del file system o la gestione dei deadlock) e 2 esercizi di Laboratorio (uno obbligatorio per un punteggio massimo di 9 punti su un problema di sincronizzazione da risolvere, alternativamente, con semafori o con variabili di condizione e mutex e implementare in ambiente Linux con la libreria pthread, ed un altro di punteggio massimo di 6 punti inerente l'implementazione in Linux di una pipeline di comandi o l'implementazione di un'operazione su filesystem di Linux) da svolgersi al PC.
b) Il punteggio massimo è di 30 punti. Il punteggio minimo necessario per superare la prova è 15.

Seconda prova scritta: inerente aspetti teorici di Sistemi Operativi e Laboratorio, il cui superamento corrisponde al superamento dell’esame (i risultati saranno comunicati entro 5 giorni dalla data di svolgimento della suddetta prova).
a. La prova consiste di 2 domande teoriche di SO (entrambe inerenti i processi e la loro sincronizzazione, la gestione della memoria centrale e secondaria, l’I/O, il file system, i deadlock, la sicurezza e la protezione) e 2 esercizi teorici di Laboratorio (esercizio su fork mediante la creazione di un albero dei processi a partire da un pezzo di codice e una domanda aperta relativa ad una delle system call previste dal programma di laboratorio).
b. Il punteggio massimo è di 30 punti. Il punteggio minimo necessario per superare la prova è 18.
c. Il punteggio complessivo terrà conto del punteggio raggiunto in ambo le prove.
d. Un’ammissione con riserva alla prima prova (punteggio tra 15 e 17) comporta un voto massimo complessivo raggiungibile pari a 25.

Superata la prima prova, gli studenti possono conservare il relativo punteggio per le seconde prove scritte relative ai tre appelli d’esame successivi (a partire dall’appello in cui si è superata la prima prova scritta), anche nel caso in cui la seconda prova scritta sia sostenuta e non superata.

Testi

Sistemi Operativi, Dhananjay M. Dhamdhere, Curatore edizione italiana: Alfredo Petrosino, ISBN: 9788838664878, McGrawHill, 2009.
Advanced Programming in the Unix Environment, W.R. Stevens, S.A. Rago, Addison Wesley, 3rd Ed., 2013

Altre informazioni

Il materiale didattico, in lingua inglese, è accessibile in modalità e-learning al link http://e-scienzeetecnologie.uniparthenope.it. Per fruire dei contenuti pubblicati sulla piattaforma, lo studente deve essere regolarmente registrato ed iscritto al corso.
I ricevimenti sono da concordare con il docente tramite email.