| DISI - Scuola di Ingegneria e Architettura - Universitą di Bologna
Sistemi Operativi T |
|
|
Presentazione del corso
Introduzione
- 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
Organizzazione di un Sistema Operativo
- 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
Processi e Thread
- 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
Scheduling della CPU
- 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
Interazione tra processi mediante memoria condivisa
- il problema della sincronizzazione tra processi
- sezione critica e mutua esclusione
- i semafori
- strumenti hardware per la sincronizzazione: test-and-set
Interazione tra processi mediante scambio di messaggi:
- comunicazione diretta/indiretta,simmetrica/asimmetrica, buffering
- interazione tra processi Unix:
- comunicazione mediante pipe e fifo, sincronizzazione tramite segnali
Gestione del File System
- 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
Gestione della Memoria
- spazi degli indirizzi e binding
- allocazione della memoria
- contigua:
- a partizione singola e partizioni multiple; frammentazione;
- non contigua:
- paginazione, segmentazione
- memoria virtuale
- gestione della memoria in UNIX
Programmazione shell
- Introduzione alla Linux bash shell
- Comandi come filtri
- Piping e ridirezione
- Espansione metacaratteri
- Strutture di controllo
- Sviluppo di file comandi
Programmazione Concorrente
- 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
Gestione dell'I/O
- architettura del sottosistema di I/O
- device driver
- Gestione dei dispositivi a controllo di programma, tramite interruzioni, con DMA.
- gestione di dischi.
Protezione
- Argomenti teorici
- Programmazione di sistema e applicativa: system call C/Linux, file comandi shell, Java thread
- Esercitazioni pratiche (attivitą in laboratorio)
Elementi di programmazione
- Algoritmi e linguaggi di programmazione
- Elementi di architettura dei calcolatori
- Linguaggio C
- Linguaggio Java