Università di Bologna Corso di Laurea Specialistica in
Ingegneria dell'Automazione e Ingegneria Elettronica
A.A. 2007-2008
Sistemi Operativi L-A
Prof. Anna Ciampolini
http://lia.deis.unibo.it/Courses/sola0708-auto/
Sistemi Operativi L-A 2
Obiettivi del Corso
Parte teorica:
Fornire alcuni concetti fondamentali relativi alla teoria dei Sistemi Operativi.
Illustrare le caratteristiche di un sistema operativo reale (Linux), e gli strumenti a disposizione di utenti e programmatori per il suo utilizzo
Parte pratica
Sperimentare i concetti trattati nella parte teorica
mediante lo sviluppo di programmi e script in ambiente
Linux, utilizzando il linguaggio comandi di Unix/Linux, il
C ed il Java.
Sistemi Operativi L-A 3
Capaci
Capacità tà richieste in ingresso: richieste in ingresso:
conoscenza del linguaggio C (Fond.Info LA)
conoscenza del linguaggio Java (Fond.Info LB)
fondamenti di architettura degli elaboratori (Calc. Elettr. LA)
Capacit
Capacità à ottenute in uscita: ottenute in uscita:
conoscenza dei concetti alla base dei sistemi operativi moderni
capacità di sviluppare applicazioni di sistema nell’ambiente UNIX/Linux
sviluppo di applicazioni multithreaded in Java e in ambiente Linux (pthread)
Argomenti trattati
Introduzione ai sistemi operativi.
Processi e threads
Sincronizzazione tra processi
Gestione della memoria
Gestione dei dispositivi di I/O
Sistemi Operativi L-A 5
Panoramica sul Corso
Introduzione:
Introduzione:
• Che cos’è un sistema operativo: ruolo, funzionalità e struttura
• Evoluzione storica dei sistemi operativi
• Architettura di un S.O.: sistemi monolitici e modulari; sistemi stratificati; macchine virtuali, microkernel
• Organizzazione e funzionalita` del sistema operativo Unix.
Sistemi Operativi L-A 6
Panoramica sul Corso
Processi e
Processi e Thread Thread
• Il concetto di processo.
• Ruolo del Sistema Operativo nella gestione dei processi.
• Processi e threads: rappresentazione, gestione e interazione.
• Scheduling della CPU.
• La gestione dei processi in Unix: stati, rappresentazione, gestione, operazioni e comandi relativi ai processi.
• La gestione dei thread in Linux e Java.
Sistemi Operativi L-A 7
Panoramica sul Corso
Sincronizzazione tra processi Sincronizzazione tra processi
• Applicazioni concorrenti e loro
rappresentazione: grafi di precedenza.
Processi e risorse. Deadlock.
• Modello a memoria comune:
Il problema della mutua esclusione.
Il semaforo e sua realizzazione in ambiente mono e multiprocessore.
Costrutti linguistici di alto livello per la sincronizzazione: il monitor.
Realizzazione del costrutto monitor.
Sincronizzazione tra thread nel sistema Linux e nel linguaggio Java.
Panoramica sul Corso
Sincronizzazione tra processi [continua]:
Sincronizzazione tra processi [continua]:
• Modello a scambio di messaggi:
Comunicazione mediante scambio di messaggi:
classificazione
Send asincrone e sincrone; sincronizzazione estesa.
Sincronizzazione mediante segnali.
Interazione tra processi Linux:
comunicazione mediante pipe e fifo; segnali.
Sistemi Operativi L-A 9
Panoramica sul Corso
Gestione della Memoria Gestione della Memoria
• Ruolo del gestore della memoria.
• Allocazione della memoria contigua e non contigua. Paginazione e segmentazione
• Memoria virtuale.
• Gestione della memoria in Unix e Linux.
Sistemi Operativi L-A 10
Percorso didattico
• Argomenti teorici
• Esemplificazioni: i sistemi operativi Unix e GNU/Linux; il linguaggio Java
• Esercitazioni Pratiche:
• Attività in laboratorio Attività in laboratorio
Sistemi Operativi L-A 11
Attività in laboratorio
• Non è obbligatoria, ma è parte parte integrante dell
integrante dell’ ’attività didattica attività didattica! !
• Settimanalmente, verranno distribuite schede di esercitazioni da svolgere in laboratorio
• L’attività si svolgera` nel Lab2
Attività in laboratorio
• Programma:
• La shell di Linux: comandi per la gestione del file system, dei processi e sincronizzazione; comandi di sistema. Cenni di amministrazione di sistema.
• Programmazione shell.
• Le system call di Unix/Linux: gestione dei processi, sincronizzazione, file system, comunicazione.
• La libreria pthread: suo utilizzo nel sistema operativo Linux per lo sviluppo di applicazioni concorrenti.
• Programmazione concorrente in Java: gestione dei
thread e sincronizzazione.
Sistemi Operativi L-A 13
Accesso al Laboratorio
L’attività si svolgerà in lab 2
( http://lab2.deis.unibo.it/) su sistemi Linux
Orario: mercoledi mercoledi ore ore 9:00-11: 9:00-11:00 00
Account: sono già attivi per tutti gli studenti
• Username determinato in base a matricola e cognome
• Password: è il pin associato al vostro badge
Sistemi Operativi L-A 14
• Una prova scritta:
programmazione concorrente
programmazione linux
• Una prova orale obbligatoria. orale obbligatoria.
Esame
Sistemi Operativi L-A 15
Materiale Didattico
• • Copia delle diapositive mostrate a lezione Copia
(scaricabili dalla pagina Web del corso)
• • Libro adottato: Libro adottato:
• P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi Operativi, McGraw-Hill, Seconda Edizione, 2008.
•
• Libri Consigliati: Libri Consigliati
• Teoria
A. Silbershatz, P. Galvin: Sistemi Operativi (6^
edizione), Addison Wesley.
• P.Ancilotti, M.Boari: Programmazione Concorrente e Disytribuita, McGraw-Hill, 2006.
• A.S. Tanenbaum, I Moderni Sistemi Operativi, Jackson Libri.
• Programmazione di sistema UNIX/Linux
W.R. Stevens: Advanced Programming in the UNIX Environment, Addison Wesley
Ricevimento Studenti
Martedì ore 10-12
c/o Nuovi studi – Edificio aule nuove (di fianco aula 5.7) - piano 1.
E-mail: aciampolini@deis.unibo.it
Sistemi Operativi L-A 17
Interazione docente-studenti
• Ricevimento (martedi` 10-12)
• E-mail: aciampolini@deis.unibo.it
• Lista di distribuzione del corso: è un servizio del portale di ateneo che consente di inviare, via e-mail, comunicazioni, messaggi e materiali di approfondimento agli studenti