Obiettivi
Obiettivi generali:
Il corso ha come obiettivi i concetti, la struttura, e i meccanismi dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia.
Obiettivi specifici:
Il corso coprirà le caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi Unix e Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con concetti fondamentali come i processi, lo stallo, e relativi meccanismi di prevenzione, la concorrenza tra processi, la gestione della memoria, processore e I/O, i file system e la sicurezza.
Conoscenza e comprensione:
Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Capacità critiche e di giudizio:
Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Capacità di apprendimento:
Saper sfruttare la conoscenza acquisita nella progettazione di sistemi e di programmi utente nel modulo successivo del corso. Essere in grado di usare questa conoscenza nell’apprendimento di proprietà di sistemi più complessi come quelli distribuiti e cloud.
Canali
1
IGOR MELATTI Scheda docente
Programma
1. Struttura di un elaboratore
CPU, memoria, dispositivi di I/O; registri dati e di stato del processore, memoria, cache. Ciclo di esecuzione delle istruzioni, gestione delle interruzioni e loro elaborazione. Tecniche di I/O: programmato, interrupt-based, DMA.
2. Concetti generali sui sistemi operativi
Cenni sull'evoluzione storica dei sistemi operativi: monoprogrammazione batch, multiprogrammazione batch, time sharing. Servizi e funzioni di un OS: gestione risorse, interfaccia utente, astrazione dei dispositivi hardware. Architettura del sistema operativo UNIX.
3. I processi
Concetto di processo. Modello di processo a 2, 5 e 7 stati. Strutture dati di descrizione e gestione dei processi, Process Control Block, immagine in memoria. Chiamate di sistema, modalità di esecuzione, alternanza tra processi, esecuzione del sistema operativo. Creazione e terminazione di processi in UNIX.
4. Scheduling dei processi
Velocità relativa di esecuzione dei processi, scheduling a breve, medio e lungo termine. Priorità; prerilascio; valutazione quantitativa degli scheduler; algoritmi di scheduling: FCFS, RR, SPN, SRT, HRRn. Scheduler di UNIX. Scheduler di Windows.
5. Gestione della memoria
Linking e caricamento di programmi. Protezione e condivisione di memoria. Partizionamento fisso e dinamico, buddy system, segmentazione, paginazione. Traduzione degli indirizzi, page table, TLB. Swapping e algoritmi di sostituzione: LRU, Clock, page buffering.
6. Gestione dell'I/O
Dispositivi di I/O. Organizzazione della funzione di I/O. Buffering. Struttura e prestazioni dei dischi; scheduling dell'I/O su disco. Cache di disco.
7. Protezione
Concetti di sicurezza, minacce, attacchi. Autenticazione e controllo di accesso. Funzionamento del processo di login in UNIX. SETUID e SETGID su eseguibili in UNIX.
8. File system
File system e gestione dell'I/O su file. Directory e file speciali. Gestione dello spazio libero e allocazione ai file. FAT e i-node. Ripristino della consistenza. Cenni su NTFS.
9. Concorrenza
Interazioni dirette e indirette tra processi; condivisione di risorse. Mutua esclusione: protocollo, implementazioni software ed hardware. Sincronizzazione ed ordinamento dell'esecuzione; semafori. Problemi-tipo: produttore-consumatore, lettori-scrittori, problema del barbiere. Comunicazione tra processi; scambio di messaggi. Equivalenza tra condivisione+mutua esclusione, sincronizzazione, comunicazione.
10. Lo stallo
Attesa indefinita (starvation), livelock, stallo (deadlock); possibilità ed effettiva realizzazione dello stallo; condizioni dello stallo. Prevenzione dello stallo. Esclusione dello stallo, concetto di stato sicuro, cenni sull'algoritmo del banchiere. Identificazione e rimozione dello stallo. Problema dei filosofi a cena.
Testi adottati
Il testo di riferimento è W. Stallings, "Operating Systems", 8th ed., Prentice-Hall, 2015.
E' consigliato anche il libro D. P. Bovet, M. Cesati, "Understanding the Linux Kernel", 3rd edition, O'Reilly, 2006.
Le slide del docente si trovano sul sito del corso: http://twiki.di.uniroma1.it/twiki/view/SO/SO1213AL/SistemiOperativi12CFU.
Bibliografia di riferimento
Vedere il libro di testo
Modalità di frequenza
La frequenza delle lezioni è fortemente consigliata
Modalità di valutazione
La modalità di valutazione per questo esame è divisa in 2 parti, ciascuna corrispondente ad uno dei 2 diversi moduli. Ciascun modulo ha i suoi specifici sistemi di verifica. Per ogni appello, i docenti dei 2 moduli, in sessione congiunta, esaminano i risultati di tutti gli studenti che hanno superato con successo entrambi i moduli, e determinano il voto finale.
Per quanto riguarda la prova specifica per il modulo 1, è obbligatorio superare un test di sbarramento a risposta multipla da svolgere in laboratorio. Ogni studente che abbia superato tale test ha facoltà di chiedere un orale per integrare il voto dello scritto.
2
JULINDA STEFA Scheda docente
- Anno accademico: 2018/2019
- Curriculum: Metodologico
- Anno: Secondo anno
- Semestre: Primo semestre
- Insegnamento:
1020422 - SISTEMI OPERATIVI - SSD: INF/01
- CFU: 6
- Attività formative caratterizzanti
- Ambito disciplinare: Discipline Informatiche
- Ore esercitazioni: 36
- Ore Aula: 24
- CFU: 6.00
- SSD: INF/01