Anno accademico 2022-2023

SISTEMI OPERATIVI E LABORATORIO

Docenti

Marina Lenisa
Ivan Scagnetto
Anno di corso
2
Totale crediti
12
Periodo didattico
Annualità Singola
Tipologia
Caratterizzante
Prerequisiti. Architettura degli elaboratori

Programmazione e laboratorio

Metodi didattici. Le lezioni di teoria sono frontali, mentre

quelle di laboratorio sono tenute in laboratorio in modo da permettere agli studenti di sperimentare direttamente e di mettere in pratica le nozioni introdotte dal docente.

Modalità di verifica. Prova scritta + prova di laboratorio (scritta) + prova orale facoltativa.
Obiettivi formativi
Capacità relative alla disciplina

Conoscenza e capacità di comprensione: lo studente acquisisce conoscenze specifiche sull’architettura, il funzionamento e sui principi di progettazione di un moderno sistema operativo. Egli inoltre impara a valutare ed a scegliere l’adozione di un sistema operativo a seconda dell’ambito di utilizzo e delle caratteristiche dell’hardware.

Conoscenza e capacità di comprensione applicate: grazie all’attività di laboratorio, lo studente acquisisce specifiche capacità di applicare a casi reali le conoscenze maturate sui sistemi operativi.

Capacità trasversali/soft skills

Autonomia di giudizio: lo studente acquisisce una capacità di valutazione critica sulle tecnologie, gli algoritmi e le soluzioni che possono influire positivamente o negativamente sulle prestazioni e sul corretto funzionamento di un sistema operativo in diversi contesti applicativi.

Abilità comunicative: lo studente impara a descrivere in modo tecnicamente corretto ed usando la terminologia appropriata un sistema operativo.

Capacità di apprendimento: lo studente impara ad essere autonomo nell’espandere le proprie conoscenze sui sistemi operativi oltre le nozioni e gli esempi appresi ed analizzati durante il corso, scoprendo e sfruttando anche le connessioni con altri corsi riguardanti l’architettura dei calcolatori, le reti ed i sistemi distribuiti.

Contenuti
Teoria: 1. Aspetti generali 2. Processi e Thread 3. Programmazione concorrente 4. Gestione della memoria 5. Input/Output 6. Il file system

Laboratorio: il sistema Operativo UNIX: struttura, interfaccia utente, varianti (Solaris, Linux). La shell UNIX: – ruolo e varianti, – procedura di login, – organizzazione del file system, – manuale online, – la shell bash: espansione del pathname, ridirezione del I/O, pipe, job in background, il comando history, editing della linea di comando, completamento di comandi, – gli editor vi e (X)Emacs, – il comando make. Comandi principali della shell: – gestione di file, – gestione di processi, – monitoraggio della memoria, – comandi filtro: ricerca, ordinamento, editing. Shell script: – variabili, – passaggio dei parametri, – strutture di controllo, – login script. Basi di Linguaggio C. Programmazione di sistema: – controllo di processi, – file system, – comunicazione tra processi, – threads e multithreading.

Testi di riferimento
Teoria:

Trasparenze usate in aula dal docente

A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi (ottava ed.). Pearson, 2009.

A. Tanenbaum, I moderni sistemi operativi (quarta ed.). Pearson (Prentice Hall), 2016.

Laboratorio:

R. Blum, C. Bresnahan. Linux Command Line and Shell Scripting Bible, 2nd Edition, Wiley, 2011.

I G. Glass, K. Ables. UNIX for Programmers and Users, Prentice Hall, 2a edizione, 1999.

I B.W. Kernighan, D.M. Ritchie. Linguaggio C, seconda edizione, 1989.

I K. Haviland, D. Gray, B. Salama. UNIX System Programming, Addison Wesley, seconda edizione, 1989.