Politecnico di Torino | |||||||||||||||||
Anno Accademico 2014/15 | |||||||||||||||||
05CJCOA Sistemi operativi |
|||||||||||||||||
Corso di Laurea in Ingegneria Informatica - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Esclusioni: 04JEZ |
Presentazione
L’insegnamento, presente nella Laurea in Ingegneria Informatica, è obbligatorio ed è collocato al primo periodo didattico del terzo anno. Il modulo ha lo scopo di introdurre gli elementi di base dell'architettura dei sistemi operativi e di approfondire i concetti e le tecniche di programmazione concorrente. Il modulo permette di acquisire conoscenze specifiche ai sistemi operativi UNIX-like, con particolare riferimento ai sistemi Linux, approfondendone la programmazione di sistema e l'utilizzo di comandi di amministrazione e di utente.
|
Risultati di apprendimento attesi
Le conoscenze e le abilità acquisite al termine del corso sono le seguenti:
- Classificazione e caratteristiche principali dei sistemi operativi moderni - Architettura base dei sistemi operativi come gestore di risorse e organizzazione del kernel - Gestione di processi e di thread, ovvero capacità di utilizzare le system call principali per la creazione, la sincronizzazione e la terminazione di processi e di thread d'esecuzione - Utilizzo della programmazione concorrente per la risoluzione di problemi elementari. Analisi dei problemi standard di sincronizzazione. - Amministrazione di sistemi UNIX-Linux mediante utilizzo di comandi, shell, filtri e linguaggi di script. |
Prerequisiti / Conoscenze pregresse
Le conoscenze propedeutiche al corso sono le seguenti
- Conoscenza di tecniche base e avanzate di programmazione - Capacità di sviluppare programmi in linguaggio C per la risoluzione di problemi di media complessità - Conoscenza dell'architettura di un sistema di elaborazione, con particolare riferimento alla struttura di un processore e all’organizzazione della memoria - Conoscenza del meccanismo di interruzione e dei fondamenti di un linguaggio assembler. |
Programma
- Architettura di un sistema operativo
o Introduzione e classificazione dei sistemi operativi o Struttura di un sistema operativo, risorse gestite e moduli principali o Possibili organizzazioni di un kernel - Il sistema operativo Linux o Comandi utente e per la gestione del sistema o Shell e linguaggi di shell o Linguaggi di script - Processi o Introduzione ai processi e alla programmazione concorrente o Gestione e comunicazione tra processi - Thread o Concetti principali e differenze dai processi - Sincronizzazione di processi e thread o Segnali o Soluzioni software e hardware al problema della sincronizzazione o Variabili e primitive semaforiche o Problemi di sincronizzazione classici (produttore e consumatore, lettori e scrittori, filosofi, etc.) - Scheduling della CPU - Il problema dello stallo. |
Organizzazione dell'insegnamento
Non vi è alcuna distinzione formale tra ore di lezione e quelle di esercitazione. Le esercitazioni tenute in aula sono relative ai vari argomenti teorici e sono svolte contestualmente alla trattazione della parte teorica stessa.
L’attività di laboratorio comprende esercitazioni su quasi tutti gli argomenti trattati in aula. Tali esercitazioni sono svolte nel sistema operativo Linux e prevedono l’utilizzo dei comandi e dei linguaggi di shell, la scrittura di script e quella di programmi concorrenti in linguaggio C. |
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
- Materiale fornito dal docente, comprendente
o Trasparenze proiettate in aula o Esercizi e relative soluzioni, con particolare riferimento al materiale utilizzato in laboratorio - Materiale (didattico e non) a disposizione sul World Wide Web - Testi in forma cartacea o A. Silbershatz, P. Galvin, G. Gagne, " Sistemi Operativi. Concetti ed Esempi ", Pearson Education Italia oppure in alternativa o A. S. Tanenbaum, "I moderni sistemi operativi", Pearson Education Italia. o W.R. Stevens, S. A. Rago, "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company |
Criteri, regole e procedure per l'esame
Non è previsto alcun esonero durante il corso. Le regole di accesso agli esami sono definite e descritte sul "Manifesto agli Studi" dell’anno accademico corrente e sugli eventuali successivi emendamenti dello stesso.
È indispensabile prenotarsi per ogni appello che si intende sostenere. L’esame del corso è costituito da una prova scritta della durata di circa 100 minuti. Durante la prova non è ammesso l’utilizzo di alcun tipo di appunti, libri di testo, né altro materiale (e.g., calcolatrice tascabile, cellulare, etc.). La prova comprende 6 domande: 3-4 domande di teoria e 2-3 esercizi di programmazione (comandi, shell e linguaggi di script). È possibile ritirarsi durante la prova scritta avvertendo il docente e non consegnando l’elaborato finale. L’elaborato viene valutato come segue: - ciascun esercizio ha un peso uguale a 6 punti (6x6=36) - tanto la parte di teoria quanto la parte di programmazione hanno una soglia minima equivalente a circa il 50% del voto relativo a quella parte. La prova risulta superata se lo è tanto la parte di teoria quanto la parte di programmazione - il punteggio finale è pari alla somma dei punti acquisiti su ciascun esercizio. |
Orario delle lezioni |
Statistiche superamento esami |
|