Programma

Home

 

Docenti
Programma
Testi Consigliati
Esercitazioni
Esami
Comunicazioni

Sistemi Operativi

Prof. Pietro Baroni

Scopo del corso. 

Il corso si propone di fornire all'allievo le nozioni fondamentali sul ruolo del Sistema Operativo nell'architettura di un sistema di elaborazione, sui principali compiti che esso svolge e su come essi sono realizzati, facendo principalmente riferimento a sistemi di elaborazione di uso comune (personal computer) ed ai sistemi operativi piu' diffusi in tale ambito (Microsoft Windows e Linux).

Contenuti del corso.  

Concetti introduttivi.
Il ruolo del Sistema Operativo (S.O.) nel funzionamento di un sistema di elaborazione. Servizi offerti dal S.O. Classificazione e architetture dei S.O.

Esecuzione di un programma
Dual mode. Mode switch e process switch. Classificazione e gestione degli interrupt. Input/Output: architettura e funzionamento.

Gestione dei processi.
Definizione di processo e thread. Ciclo di vita di un processo. Livelli di scheduling. Algoritmi di scheduling della CPU. Cenni allo scheduling realtime. Comunicazione e sincronizzazione tra processi. Race conditions. Costrutti per la sincronizzazione: algoritmi basati su busy waiting, semafori, monitor, scambio di messaggi. Deadlock.

Gestione della memoria centrale.
Binding degli indirizzi. Memoria virtuale. Paginazione e segmentazione. Allocazione locale e globale delle pagine. Algoritmi di sostituzione delle pagine. Modello basato su working set e thrashing.

Gestione della memoria secondaria e file system.
Il concetto di file e di directory. Il file system e la sua organizzazione a livelli. Metodi di allocazione dei file. Implementazione delle directory. Gestione dello spazio libero. Cache e problemi di consistenza. Algoritmi di scheduling per le richieste di accesso a disco.

Protezione e sicurezza.
Definizioni generali, principio del minimo privilegio. Matrice di protezione e meccanismi basati su Access Control List e Capability List. Covert channels. Modelli di protezione basati su sensitivity labels. Autenticazione e gestione delle password.

Programmazione di shell.
Introduzione alla shell di sistema in ambiente UNIX. Utilizzo di comandi ed opzioni. Gestione di processi. Redirezione di I/O e pipe. La shell come interprete. Variabili e strutture di controllo.