Insegnamento
SISTEMI OPERATIVI
IN06107631, A.A. 2014/15

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea magistrale in
INGEGNERIA DELLE TELECOMUNICAZIONI
IN0524, ordinamento 2008/09, A.A. 2014/15
1095570
Crediti formativi 9.0
Denominazione inglese OPERATIVE SYSTEMS
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA

Docenti
Responsabile MICHELE MORO ING-INF/05

Mutuante
Codice Insegnamento Responsabile Corso
IN06107631 SISTEMI OPERATIVI MICHELE MORO IN0521

Dettaglio crediti formativi
Tipologia Ambito Disciplinare Settore Scientifico-Disciplinare Crediti
AFFINE/INTEGRATIVA Attività formative affini o integrative ING-INF/05 9.0

Modalità di erogazione
Periodo di erogazione Secondo semestre
Anno di corso II Anno
Modalità di erogazione frontale

Organizzazione della didattica
Tipo ore Crediti Ore di
Corso
Ore Studio
Individuale
Turni
LEZIONE 9.0 72 153.0 Nessun turno

Calendario
Inizio attività didattiche 02/03/2015
Fine attività didattiche 12/06/2015

Commissioni d'esame
Commissione Dal Al Membri
6 A.A. 2016/2017 01/10/2016 15/03/2018 MORO MICHELE (Presidente)
FERRARI CARLO (Membro Effettivo)
AVANZINI FEDERICO (Supplente)
FANTOZZI CARLO (Supplente)
GHIDONI STEFANO (Supplente)
MENEGATTI EMANUELE (Supplente)
5 A.A. 2015/2016 01/10/2015 15/03/2017 MORO MICHELE (Presidente)
FERRARI CARLO (Membro Effettivo)
MENEGATTI EMANUELE (Supplente)
4 A.A. 2014/2015 01/10/2014 15/03/2016 MORO MICHELE (Presidente)
FERRARI CARLO (Membro Effettivo)
CLEMENTE GIORGIO (Supplente)
DE POLI GIOVANNI (Supplente)
MENEGATTI EMANUELE (Supplente)
MIGLIARDI MAURO (Supplente)
ZINGIRIAN NICOLA (Supplente)

Syllabus
Prerequisiti: Per poter seguire il corso con profitto è comunque necessario avere assimilato i seguenti argomenti derivanti dai corsi di Architettura degli Elaboratori e Dati ed Algoritmi 1

Architettura degli Elaboratori
- Architettura dei Calcolatori (CPU, ALU, Registri, Bus, Memoria,Dispositivi I/O)
- Sistemi di interruzione (ad uno e più livelli, vettorizzato), routine di servizio interruzioni, salvataggio del contesto, rientranza
- Gestione dei dispositivi di I/O (busy-waiting, ad interrupt, bufferizzazione con coda di messaggi e coda di caratteri) MMU, memoria paginata
- Memoria cache, schemi a mappatura diretta e fully associative,cache TLB per MMU
- Cenni su sistemi multiprocessore
- Architettura di un microprocessore moderno: modalità operative (utente/supervisore, istruzioni privilegiate), istruzioni speciali, eccezioni (vettorizzazione, interrupt hardware e software, trap block, salvataggio del contesto, chiamate a sistema)
- Realizzazione di linguaggi ad alto livello (allocazione statica/dinamica delle variabili, stack frame per chiamate a procedura con parametri)
- Cenni su organizzazione di un sistema operativo, scheduler

Dati ed Algoritmi 1
- Gestione di strutture di dati fondamentali (liste, code, stack, realizzazione mediante vettori e mediante liste concatenate, alberi, heap)
- Ordinamento e ricerca su liste (ordinate)
- Programmazione in linguaggio ad alto livello (linguaggio C o C++ o Java, visibilità e vitalità delle variabili, costrutti base per il controllo del flusso, parametri di ingresso e uscita delle procedure, programmazione per tipi di dati astratti o classi, cenni al multithreading)
- Cenni sull'uso del SO UNIX
Conoscenze e abilita' da acquisire: Comprendere il concetto di processo e la distinzione tra processo e programma
Saper descrivere l'evoluzione dei processi
Conoscere le problematiche relative alla gestione delle risorse e allo stallo
Conoscere gli elementi e la semantica/evoluzione delle reti di Petri
Comprendere le motivazioni delle necessità di sincronizzazione tra processi e i relativi strumenti
Conoscere i costrutti base del linguaggio ADA relativi alla richiesta di servizi e le relative opzioni
Conoscere il ruolo del nucleo di un sistema operativo e delle risorse HW da esso utilizzate
Comprendere la funzione di uno scheduler e le diverse tipologie di algoritmi utilizzati per lo scheduling con le loro caratteristiche distintive
Comprendere la distinzione tra organizzazione logica e fisica della memoria
Comprendere funzioni e vantaggi della virtualizzazione della memoria
Comprendere motivazioni e vantaggi nella gestione dello I/O
Comprendere l'organizzazione di un file system
Conoscere l'organizzazione complessiva interna di UNIX
Comprendere le problematiche di scheduling nei RTOS
Modalita' di esame: Lezioni frontali con ausilio di diapositive proiettate;
esercitazioni di programmazione concorrente;
distribuzione di una libreria per programmazione concorrente
in Java finalizzata alle esercitazioni individuali.
Criteri di valutazione: Prova scritta di programmazione concorrente +
Prova orale
Contenuti: Cenni storici e teoria dei sistemi operativi
Ruolo di un SO e organizzazione interna
Esemplificazione di sistemi in uso
Programmazione concorrente e costrutti di sincronizzazione
Cenni ai sistemi real-time
---------------
In maggior dettaglio:

Concetti generali. Le funzionalità di un sistema operativo. Evoluzione delle architetture. Concorrenza e parallelismo. Modelli di sistemi concorrenti. Processi, risorse, interferenza e cooperazione. Vincoli nella evoluzione dei processi, Grafi di precedenza. Stallo: definizione, riconoscimento e prevenzione. Reti di Petri. Sincronizzazione e comunicazione tra processi. Semafori, mailbox e messaggi. Realizzazione di protocolli di sincronizzazione.

Layout di un sistema operativo: organizzazione, gestione delle risorse, strutture di dati ed algoritmi. I sottosistemi principali: Nucleo: protezione, sincronizzazione, schedulazione del processore; gestione della memoria principale; gestione dei dispositivi di ingresso-uscita, periferiche e driver; organizzazione e gestione della memoria secondaria, memoria virtuale. Sistemi Raid. Funzionalità ad alto livello di un sistema operativo: File system, shell, interfaccia grafica. Sistemi multiprocessori, schedulazione. Cenni su: sistemi embedded, sistemi distribuiti, sistemi Real Time, virtualizzazione di un SO. Autenticazione e sicurezza.
Organizzazione ed uso del sistema Linux.
Processi, thread e programmazione concorrente. I paradigmi per la programmazione concorrente. Tecniche di base per la sincronizzazione: Mutex, Semafori privati, Regioni. Costrutti ad alto livello: Monitor, Rendez-vous. Linguaggi per la programmazione concorrente: Concurrent Pascal, CSP, ADA. La concorrenza in Java, realizzazione dei protocolli di sincronizzazione. Esempi di programmi concorrenti ed esercitazioni.
Attivita' di apprendimento previste e metodologie di insegnamento: Lezioni frontali con l'uso di slide videoproiettate.
Svolgimento di esercitazioni guidate in aula.
Svolgimento di alcuni homework.
Uso di una libreria di supporto in Java.
Materiale aggiuntivo disponibile su piattaforma moodle.
Eventuali indicazioni sui materiali di studio: Altro materiale didattico: https://moodle.dei.unipd.it/
Testi di riferimento:
  • G.Clemente, F.Filira, M.Moro, Sistemi Operativi: Architettura e Programmazione concorrente, 3/e. Padova: Libreria Progetto, 2011. Cerca nel catalogo