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
Definizione delle principali problematiche di protezione e sicurezza. Classificazione dei tipi di attacco e delle vulnerabilita' dei sistemi. Meccanismi di protezione basati su Access Control List e Capability List. Politiche di sicurezza. Gestione delle password. Modelli evoluti di protezione e sicurezza.
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.