- Docente: Anna Ciampolini
- Crediti formativi: 9
- 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 in
Ingegneria elettronica e telecomunicazioni (cod. 0923)
Valido anche per Laurea in Ingegneria informatica (cod. 0926)
Laurea in Ingegneria informatica (cod. 0926)
Laurea in Ingegneria elettronica e telecomunicazioni (cod. 0923)
Conoscenze e abilità da conseguire
Conoscenza dei principi di organizzazione e di funzionamento dei moderni sistemi operativi. Conoscenza e capacità di applicazione degli strumenti per lo sviluppo di applicazioni di sistema.
Contenuti
Introduzione ai sistemi operativi:
- 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.
Metodi didattici
Durante le lezioni in aula verranno discussi sia gli aspetti teorici che progettuali/realizzativi dei sistemi operativi moderni.
ESERCITAZIONI (Modulo 2):
Parte integrante del corso è rappresentata dalle esercitazioni in laboratorio, svolte nel Modulo 2. Le esercitazioni sono 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 nella programmazione concorrente in Java.
Modalità di verifica e valutazione dell'apprendimento
Anno Accademico 2016/2017 Conoscenze e abilità da conseguire
Conoscenza dei principi di organizzazione e di funzionamento dei moderni sistemi operativi. Conoscenza e capacità di applicazione degli strumenti per lo sviluppo di applicazioni di sistema.
Programma/ContenutiIntroduzione ai sistemi operativi:
- 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.
P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi Operativi, seconda edizione, McGraw-Hill, 2008.
Metodi didatticiDurante le lezioni in aula verranno discussi sia gli aspetti teorici che progettuali/realizzativi dei sistemi operativi moderni.
Parte integrante del corso è rappresentata dalle esercitazioni in laboratorio. Le esercitazioni sono 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 nella programmazione concorrente in Java.
La verifica avviene mediante:
- Una prova progettuale, da svolgersi in laboratorio, per verificare
- Capacità di sviluppo di programmi di sistema e script 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
Le lezioni si svolgeranno anche con il supporto di un computer collegato ad un videoproiettore mediante il quale potranno essere esemplificati concretamente i concetti esposti.
Link ad altre eventuali informazioni
http://lia.deis.unibo.it/Courses/sot
Orario di ricevimento
Consulta il sito web di Anna Ciampolini