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 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 JULINDA STEFA   Scheda docente

Scheda insegnamento
  • Anno accademico: 2018/2019
  • Curriculum: Metodologico
  • Anno: Secondo anno
  • Semestre: Primo semestre
  • Insegnamento:
    1020422 - SISTEMI OPERATIVI
  • SSD: INF/01
  • CFU: 6
Caratteristiche
  • Attività formative caratterizzanti
  • Ambito disciplinare: Discipline Informatiche
  • Ore esercitazioni: 36
  • Ore Aula: 24
  • CFU: 6.00
  • SSD: INF/01