- Docente: Maurelio Boari
- Crediti formativi: 6
- Lingua di insegnamento: Italiano
- Modalità didattica: Lezioni in presenza (totalmente o parzialmente)
- Campus: Bologna
- Corso: Laurea Specialistica in Ingegneria informatica (cod. 0234)
Conoscenze e abilità da conseguire
Il corso si propone di introdurre gli allievi alle principali problematiche relative alla progettazione e realizzazione di applicazioni concorrenti. Tali applicazioni sono sempre più diffuse ed interessano vasti settori del mondo industriale e dei servizi. Il problema centrale è la suddivisione di un'applicazione concorrente in un insieme di processi sequenziali interagenti, nell'individuazione dei tipi di interazione e nell'utilizzazione degli strumenti messi a disposizione dai moderni linguaggi di programmazione per una corretta soluzione del problema. Verranno , a questo proposito, utilizzati il linguaggio Java e la libreria pthread con un linguaggio sequenziale (C).
Il corso affronta inoltre alcuni problemi avanzati nel settore dei sistemi operartivi quali la protezione, le tecniche per la realizzazione di macchine virtuali, la gestione dei dispositivi di I/O
.
Contenuti
1.Programmazione concorrente
1.1 Introduzione e definizioni
1.2 Processi non sequenziali. Decomposizione e
tipi di interazione
1.3 Architetture e linguaggi per la
programmazione concorrente
1.4 Introduzione ai thread
2. Modello a memoria comune.
2.1 Aspetti caratterizzanti
2.2 Mutua esclusione
2.3 Semafori
2.4 Semafori privati
2.5 Monitor
3. Nucleo di un sistema a processi
3.1 Strutture dati
3.2 Funzioni
3.3 Estensione al caso multiprocessore
4. Modello a scambio di messaggi
4.1 Aspetti caratterizzanti
4.2 Primitive send e receive
4.3 Comandi con guardia
4.4 Chiamata di procedure remote
5. Azioni atomiche
5.1 Proprietà
5.2 Azioni atomiche multiprocesso
5.3 Azioni atomiche innestate
5.4 Sistemi distribuiti
6. Protezione
6.1 Domini di protezione
6.2 Matrice degli accessi
6.3 Liste di controllo degli accessi e
capabilities
7. Sistemi Operativi per la Virtualizzazione
7.1 Virtualizzazione dell'hardware
7.2 Realizzazione di virtual machine monitor
: virtualizzazione e paravirtualizzazione
8 Gestione delle periferiche di I/0
8.1 Organizzazione logica del sottosistema di
I/0
8.2 Gestore di un dispositivo
8.3 Gestione ed organizzazione dei dischi
9. Protezione
9.1 Domini di protezione
9.2 Matrice degli accessi
9.3 Liste di controllo degli accessi e
capabilities
Testi/Bibliografia
P.Ancilotti, M.Boari: 'Principi e Tecniche di Programmazione
Concorrente' II edizione, UTETLibreria
- P.Ancilotti, M.Boari A.Ciampolini,G.Lipari: ' Sistemi Operativi'
McGraw-Hill -
- G.R.Andrews: "Foundations of Multithreaded, Parallel and
Distributed Programming", Addison-Wesley
- W.Stallings: 'Sistemi operativi', Jackson Libri
- S. Tanenbaum: 'I Moderni Sistemi Operarivi', Jackson Libri
- A.Silberschatz, P.Galvin, G.Gagne: 'Applied Operating System
Concepts' I edizione, John Wiley & Son, Inc.
Metodi didattici
Lezioni ed esercitazioni in aula
Esercitazioni in laboratorio
Modalità di verifica e valutazione dell'apprendimento
Prova di laboratorio sull'uso dei P-threads in Linux e con JAVA.
Prova orale sugli argomenti svolti a lezione
Strumenti a supporto della didattica
Diapositive proiettate a lezione consultabili sul sito Web del corso:
http://lia.deis.unibo.it/Courses/ModApplRetiCalc0607/
~http://lia.deis.unibo.it/Courses/SistOpLS0506
Link ad altre eventuali informazioni
http://lia.deis.unibo.it/Courses/SistOpLS0506/
Orario di ricevimento
Consulta il sito web di Maurelio Boari