- Docente: Anna Ciampolini
- Crediti formativi: 9
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Anna Ciampolini (Modulo 1) Anna Ciampolini (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea Magistrale in Ingegneria dell'automazione (cod. 0931)
Conoscenze e abilità da conseguire
Conoscenza dei principi, delle problematiche di progetto e degli strumenti di supporto alla strutturazione di applicazioni in termini di processi concorrenti. Modelli di riferimento e meccanismi per la comunicazione e la sincronizzazione tra processi. Metodologie di sintesi e di valutazione delle prestazioni di sistemi concorrenti.
Contenuti
Introduzione
- Che cos'è un sistema operativo: ruolo, funzionalità e struttura
- Evoluzione dei sistemi operativi: batch, multiprogrammazione, time-sharing
- Richiami sul funzionamento di un elaboratore: interruzioni e loro gestione, I/O, modi di funzionamento single e dual, system call
- Funzionalità
- Struttura: sistemi monolitici e modulari, sistemi stratificati, macchina virtuale
- Organizzazione e funzionalità del sistema operativo UNIX/Linux
- Organizzazione e funzionalità del sistema operativo MSWindowsXP
- Il concetto di processo pesante/leggero e sua rappresentazione nel sistema operativo
- Stati di un processo
- Gestione dei processi leggeri/pesanti da parte del SO
- Operazioni sui processi
- Classificazione dei processi
- La gestione dei processi in UNIX/Linux:
- stati, rappresentazione, gestione (scheduling), operazioni e
comandi relativi ai processi
- Concetti generali: code, preemption, dispatcher
- Criteri di scheduling
- Algoritmi di scheduling: FCFS, SJF, con priorità, round-robin, con code multiple, …
- Scheduling in UNIX, Linux e WinXP
- il problema della sincronizzazione tra processi
- sezione critica e mutua esclusione
- i semafori
- strumenti hardware per la sincronizzazione: test-and-set
- comunicazione diretta/indiretta,simmetrica/asimmetrica, buffering
- interazione tra processi Unix: pipe e fifo, sincronizzazione
tramite segnali
- file system e sua realizzazione
- il file system di UNIX:
- organizzazione logica e fisica, comandi e system call per la gestione e l'accesso a file/direttori
- spazi degli indirizzi e binding
- allocazione della memoria contigua:
- a partizione singola e partizioni multiple; frammentazione;
- allocazione non contigua:
- paginazione, segmentazione
- memoria virtuale
- gestione della memoria in UNIX/Linux
- Introduzione alla Linux bash shell
- comandi come filtri
- Piping e ridirezione
- Espansione metacaratteri
- Strutture di controllo
- Sviluppo di file comandi
- Il problema della mutua esclusione e possibili soluzioni.
- strumenti di sincronizzazione nel modello a memoria comune: il semaforo
- costrutti linguistici per la sincronizzazione: il monitor
- sincronizzazione tra thread java
- architettura del sottosistema di I/O
- device driver
- Gestione dei dispositivi a controllo di programma, tramite
interruzioni, con DMA.
Testi/Bibliografia
P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi
Operativi, seconda edizione, McGraw-Hill, 2008.
P.Ancilotti, M.Boari: "Programmazione Concorrente e Distribuita",
McGraw-Hill, 2006.
Metodi didattici
Durante le lezioni in aula verranno discussi sia gli aspetti
teorici che progettuali/realizzativi dei sistemi operativi moderni.
Il corso sará affiancato da esercitazioni di laboratorio. Le
esercitazioni saranno individuali e pratiche ed hanno lo scopo di
fornire la possibilitá a ogni studente di potersi misurare nello
sviluppo di applicazioni di sistema in ambiente Linux e Java.
Modalità di verifica e valutazione dell'apprendimento
La verifica avverra` mediante:
-
Una prova progettuale, da
svolgersi in laboratorio, per verificare
- Capacità di programmazione nell'ambiente Unix
- Capacità di programmazione concorrente in Java
- Una prova orale (facoltativa per chi consegue una valutazione nella prova progettuale superiore a 22/30).
Strumenti a supporto della didattica
In aula:
le lezioni avverranno anche con il supporto di un PC
collegato ad un videoproiettore mediante il quale potranno essere
esemplificate concretamente i concetti esposti.
In laboratorio:
ogni studente potra` disporre di un PC da utilizzare due ore alla
settimana, durante le esercitazioni assistite.
Link ad altre eventuali informazioni
http://lia.deis.unibo.it/Courses/sot1011/
Orario di ricevimento
Consulta il sito web di Anna Ciampolini