72947 - SISTEMI OPERATIVI M

Anno Accademico 2021/2022

  • Docente: Anna Ciampolini
  • Crediti formativi: 8
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Ingegneria informatica (cod. 5826)

Conoscenze e abilità da conseguire

Conoscenza delle problematiche di progetto relative all'organizzazione di sistemi concorrenti. Modelli di riferimento per la sincronizzazione e comunicazione tra processi. Metodologie di analisi e sintesi di sistemi concorrenti.

Contenuti

1.Protezione e sicurezza

  • Richiami sulla protezione: modelli, politiche e meccanismi
  • Sicurezza multilivello
  • Reference Monitor e sistemi fidati

2. Virtualizzazione

  • Virtualizzazione dell'hardware: finalità e soluzioni
  • Realizzazione di virtual machine monitor: virtualizzazione e paravirtualizzazione
  • Analisi e sperimentazione di tecnologie: il caso di xen
  • Virtualizzazione come supporto al cloud computing

3. Programmazione concorrente

  • Introduzione e definizioni
  • Processi non sequenziali.
  • Tipi di interazione
  • Architetture e linguaggi per la programmazione concorrente

4. Modello a memoria comune

Richiami su:

  • Mutua esclusione
  • Semafori
  • Monitor
  • Variabili condizione

Uso di linguaggi concorrenti nel modello a memoria comune. La libreria pthreads.

5. Modello a scambio di messaggi

  • Aspetti caratterizzanti
  • Richiami su canali e primitive
  • Primitive send e receive
  • Comandi con guardia
  • Rendez-vous e chiamata di procedura remota

Uso di Linguaggi concorrenti nel modello a scambio di messaggi: go, ada.

6. Nucleo di un sistema a processi basato sul modello a memoria comune:

  • Realizzazione dei meccanismi di gestione dei thread e di sincronizzazione all’interno del kernel di un sistema monoprocessore
  • Estensione al caso multiprocessore: Modello a nucleo condiviso SMP, Modello loosely-coupled.

7. Sistemi distribuiti

  • applicazioni distribuite: approccio centralizzato e decentralizzato. Scalabilità e tolleranza ai guasti.
  • algoritmi per la sincronizzazione i sistemi distribuiti: orologi logici, mutua esclusione distribuita, algoritmi di elezione.

8. Programmazione parallela

  • Architetture per il calcolo parallelo. Sistemi HPC.
  • modelli di programmazione parallela: memoria comune e memoria distribuita
  • Sviluppo di applicazioni parallele: le libreria MPI e open MP
  • Cenni a GPGPU e alla libreria CUDA.

Testi/Bibliografia

  • P.Ancilotti, M.Boari: 'Programmazione concorrente e distribuita', McGraw-Hill.
  • G.R.Andrews: "Foundations of Multithreaded, Parallel and Distributed Programming", Addison-Wesley
  • Peter Pacheco, An Introduction to Parallel Programming, Morgan Kauffmann, 2011
  • P.Ancilotti, M.Boari A.Ciampolini,G.Lipari: ' Sistemi Operativi', seconda edizione, McGraw-Hill
  • W.Stallings: 'Sistemi operativi', Jackson Libri
  • S. Tanenbaum: 'I Moderni Sistemi Operarivi', Jackson Libri
  • A.Silberschatz, P.Galvin, G.Gagne: 'Applied Operating System Concepts' I edizione, John Wiley & Son, Inc.

Metodi didattici

Lezioni ed esercitazioni  si terranno in conformità con le linee guida di Ateneo anti COVID-19.

Modalità di verifica e valutazione dell'apprendimento

Prova di laboratorio: sviluppo di applicazioni concorrenti nel modello a memoria comune e nel modello a scambio di messaggi.
Prova orale.

Strumenti a supporto della didattica

Le lezioni in aula vengono svolte anche con l'ausilio di slides e videoproiettore.
Le slides vengono rese disponibili a tutti gli studenti tramite il sito web del corso.
Assegnazione di una macchina virtuale ad ogni studente del corso.


Orario di ricevimento

Consulta il sito web di Anna Ciampolini

SDGs

Istruzione di qualità Parità di genere Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.