Università degli Studi di Perugia

Navigazione

Contenuto principale

Insegnamento: Sistemi operativi con laboratorio

Corso di laureaCorso di laurea in Informatica [L-31] D. M. 270/2004
SedePerugia
CurriculumGenerale - Regolamento 2012
Modalità di valutazione

Prova scritta, pratica, orale.

Statistiche voti esami

.

Calendario prove esame

.

Unità formative opzionali consigliate

Architettura degli elaboratori, Programmazione (è richiesta conoscenza del linguaggio C), Matematica discreta.

DocenteAndrea FORMISANO
TipologiaAttività formative caratterizzanti
AmbitoDISCIPLINE INFORMATICHE
SettoreINF/01
CFU9
Modalità di svolgimentoConvenzionale
Programma

Lezioni teoriche:
---------------------
Generalità sui sistemi operativi:
Cosa è un Sistema Operativo. Organizzazione di un sistema di calcolo. Architettura degli elaboratori.
Struttura del sistema operativo. Attività del sistema operativo. Gestione dei processi. Gestione della memoria.
Gestione della memoria di massa. Protezione e sicurezza..

Struttura e Servizi dei Sistemi Operativi: Servizi di un sistema operativo. Interfaccia con l'utente del sistema operativo.
Le system call. Categorie di system call. Programmi di sistema. Progettazione e realizzazione di un sistema operativo.
Struttura del sistema operativo. Macchine virtuali. Generazione di sistemi operativi. Avvio del sistema.

Processi: Concetto di processo. Stato di un processo. Il PCB. Code di processi. Scheduling dei processi.
Short/mid/long term scheduler. Il caso di UNIX. Operazioni sui processi. Il meccanismo exit/wait in UNIX.

Cooperazione tra processi. Comunicazione tra processi. Memoria condivisa. Scambio messaggi.
Comunicazione diretta/indiretta e sincrona/asincrona. Comunicazione nei sistemi client-server.

Scheduling della CPU: Concetti fontamentali sullo scheduling.
Ciclicità delle fasi di elaborazione: CPU-burst e I/O-burst. Scheduler e dispatcher.
Criteri e obiettivi di scheduling. Scheduling con o senza prelazione.
Algoritmi di scheduling. Algoritmo FCFS. Algoritmo SJF. Algoritmo SRTF. Stima delle durate dei CPU-burst.
Algoritmo HRRF. Uso di priorità. Tecnica di aging. Round robin (RR).
Scheduling con code multiple e con retroazione.
Comparazione vantaggi e svantaggi dei vari algoritmi.
Cenni allo scheduling in UNIX e Linux. Scheduling di thread.

Sincronizzazione: Introduzione. Concorrenza e problematiche connesse.
Nozioni di sezione critica, race condition, mutua esclusione, deadlock, starvation.
Esempio: produttore/consumatore con buffer limitato. Problema della sezione critica e sua soluzione.
Semplici tentativi di soluzione e soluzione di Peterson. Hardware per la sincronizzazione.
I semafori (Semafori Mutex e gestione della sezione critica. Semafori di sincronizzazione. Spin-lock. Semafori senza busy-waiting.)
Problemi: deadlock e starvation.

Problemi tipici di sincronizzazione: Produttori e consumatori con buffer limitato;
Lettori e scrittori (con priorità a lettori o a scrittori); I cinque filosofi.
Soluzioni di questi problemi tramite l'uso dei semafori. Soluzioni che evitano deadlock e starvation.
Motivazioni per l'introduzione dei monitor. Il costrutto di monitor.
Soluzione di problemi tipici di sincronizzazione con l'uso di monitor.

Cenni ai thread: motivazioni, vantaggi e svantaggi. Modelli di programmazione multithread.

Deadlock: Introduzione: Il problema del deadlock. Modello del sistema. Caratterizzazione delle situazioni di stallo.
Metodi per la gestione del deadlock. Algoritmo "dello struzzo". Deadlock prevention. Deadlock avoidance.
Deadlock detection&recovery. Approccio combinato. Esercizi ed esempi.

Gestione della Memoria Principale: Nozioni generali. Spazio degli indirizzi. Binding.
Collegamento statico e dinamico. Caricamento statico e dinamico. Swapping. Rilocazione.
Tecniche di allocazione contigua della memoria. Problema della frammentazione.
Il "buddy system". Paginazione. Tecniche di implementazione per la tabella delle pagine.
Condivisione di pagine. Segmentazione. Confronto tra paginazione e segmentazione.
Segmentazione paginata. Cenni al caso di Linux/Pentium.

Memoria Virtuale: Concetti generali e motivazioni. Paginazione su richiesta. Sostituzione delle pagine.
Anomalia di Belady. Allocazione dei frame. Paginazione degenere. Working-set e page-fault frequency.

Cenni al File System: Concetto di file e sue caratteristiche. Directory.
Strutturazione e realizzazione del file system, Metodi di allocazione. Spazio libero.

Laboratorio:
-------------------
La bash di Unix:
Concetti fondamentali: la shell, struttura del file system unix, i principali comandi.
La shell e le modalità di esecuzione dei comandi (job control, redirezione,
variabili di shell, espansioni dei comandi, ...). Scripting di shell.
File di configurazione/inizializzazione.

Programmazione di sistema in linguaggio C:
Il comando make. Le system call di Unix, concetti introduttivi.
I processi e la loro creazione.
L'ambiente di un processo.
Accesso a file e directory.
Memory-mapped I/O e gestione della memoria allocata ad un processo.
Comunicazione e sincronizzazione tra processi (segnali; semafori;
shared memory; code di messaggi; socket).

Supplement

Generalità sui sistemi operativi. Processi e thread. Scheduling della CPU. Sincronizzazione dei processi. Blocco critico. Gestione della memoria centrale. Memoria virtuale. File system. Nozioni base sul sistema di I/O. La bash di Unix. Programmazione di sistema in C/UNIX: le system call e il loro impiego.

Metodi didattici

Lezioni frontali in aula e in laboratorio.

Testi consigliati

Sistemi Operativi. A.Silberschatz, P.Galvin, G.Gagne. Addison-Wesley.
Operating Systems. Internals and design Principles. W.Stallings. Quinta edizione (anche in italiano). 2005.
Manuale on-line del sistema operativo unix/linux (man).
Unix for Programmers and Users. Graham Glass e King Ables, terza edizione, Pearson-PrenticeHall, 2003.
Unix systems programming. K.A.Robbins e S.Robbins, PrenticeHall, 2003.
System programming with C and UNIX. A. Hoover, Pearson, 2010.

Risultati apprendimento

Il corso si propone di fornire competenze relative ai concetti di base comuni ai sistemi operativi, alla loro architettura e loro principali funzionalità. Parimenti si vuole fornire nozioni e competenze relative alle tecnologie e tecniche HW e SW sviluppate per la soluzione delle principali problematiche insite nel processo di progetto, realizzazione ed utilizzo di un sistema operativo.
Attraverso la attività pratiche in laboratorio lo studente acquisirà capacità nell'analizzare e risolvere i problemi tipici relativi alla gestione, sincronizzazione e comunicazione tra processi.

Periodo della didattica

primo semestre 2013-14

Calendario della didattica

.

Attività supporto alla didattica

.

Lingua di insegnamentoItaliano
Frequenza

Non obbligatoria, ma fortemente consigliata, specialmente per la parte di laboratorio.

Sede

Dip. di Matematica e Informatica

Ore
Teoriche42
Pratiche36
Studio individuale147
Didattica Integrativa0
Totale225
Anno2
PeriodoI semestre
Note

.

Orario di ricevimentoLunedì dalle 17:00, Martedì dalle 17:00, o su appuntamento contattando il docente (tel. o email)
Sede di ricevimentoDipartimento di Matematica e Informatica
Codice ECTS2013 - 5210

Inizio pagina

Approfondimenti