- Docente: Anna Ciampolini
- Crediti formativi: 9
- Lingua di insegnamento: Italiano
- Moduli: Anna Ciampolini (Modulo 1) Daniela Loreti (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
-
Corso:
Laurea in
Ingegneria informatica (cod. 9254)
Valido anche per Laurea in Ingegneria elettronica e telecomunicazioni (cod. 9065)
Laurea in Ingegneria elettronica e telecomunicazioni (cod. 9065)
Laurea in Ingegneria informatica (cod. 9254)
-
Orario delle lezioni (Modulo 1)
dal 20/02/2024 al 29/05/2024
-
Orario delle lezioni (Modulo 2)
dal 04/03/2024 al 03/06/2024
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
LEZIONI (Modulo 1):
Durante le lezioni in aula verranno discussi sia gli aspetti teorici che progettuali/realizzativi dei sistemi operativi moderni. Gli argomenti trattati verranno esemplificati facendo principalmente riferimento al sistema GNU/Linux
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 GNU/Linux e nella programmazione concorrente in Java.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, in modalità e-learning.Modalità di verifica e valutazione dell'apprendimento
La valutazione avviene mediante:
1. una prova scritta TEORICA sui concetti trattati a lezione;
2. una prova PRATICA/PROGETTUALE, da svolgersi in laboratorio, per verificare:
- Capacità di sviluppo di programmi di sistema e script nell'ambiente GNU/linux
- Capacità di programmazione concorrente in Java
3. Una prova orale facoltativa.
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.
L'attività di laboratorio si svolgerà nei laboratori informatici della sede di Ingegneria, nei quali ci sarà un personal computer a disposizione di ogni studente.
Link ad altre eventuali informazioni
Orario di ricevimento
Consulta il sito web di Anna Ciampolini
Consulta il sito web di Daniela Loreti
SDGs
L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.