28020 - SISTEMI OPERATIVI T

Scheda insegnamento

  • Docente Anna Ciampolini

  • Crediti formativi 9

  • SSD ING-INF/05

  • Modalità didattica Convenzionale - Lezioni in presenza

  • Lingua di insegnamento Italiano

  • Materiale didattico

    AMS Campus

Anno Accademico 2016/2017

Conoscenze e abilità da conseguire

Conoscenza dei principi di organizzazione e di funzionamento dei moderni sistemi operativi. Conoscenza e capacità di applicazione degli strumenti per lo sviluppo di applicazioni di sistema.

Programma/Contenuti

Introduzione ai sistemi operativi:

  • Che cos'è un sistema operativo: ruolo, funzionalità e struttura
  • Evoluzione dei sistemi operativi: batch, multiprogrammazione, time-sharing
  • Richiami sul funzionamento di un elaboratore: interruzioni e loro gestione, I/O, modi di funzionamento single e dual, system call
Organizzazione di un Sistema Operativo
  • Funzionalità
  • Struttura: sistemi monolitici e modulari, sistemi stratificati, macchina virtuale
  • Organizzazione e funzionalità del sistema operativo UNIX/Linux
  • Organizzazione e funzionalità del sistema operativo MSWindowsXP
Processi e Thread
  • Il concetto di processo pesante/leggero e sua rappresentazione nel sistema operativo
  • Stati di un processo
  • Gestione dei processi leggeri/pesanti da parte del SO
  • Operazioni sui processi
  • Classificazione dei processi
  • La gestione dei processi in UNIX/Linux:
    • stati, rappresentazione, gestione (scheduling), operazioni e comandi relativi ai processi
Scheduling della CPU
  • Concetti generali: code, preemption, dispatcher
  • Criteri di scheduling
  • Algoritmi di scheduling: FCFS, SJF, con priorità, round-robin, con code multiple, …
  • Scheduling in UNIX, Linux e WinXP
Interazione tra processi mediante memoria condivisa
  • il problema della sincronizzazione tra processi
  • sezione critica e mutua esclusione
  • i semafori
  • strumenti hardware per la sincronizzazione: test-and-set
Interazione tra processi mediante scambio di messaggi:
  • comunicazione diretta/indiretta,simmetrica/asimmetrica, buffering
  • interazione tra processi Unix: pipe e fifo, sincronizzazione tramite segnali
Gestione del File System
  • file system e sua realizzazione
  • il file system di UNIX:
    • organizzazione logica e fisica, comandi e system call per la gestione e l'accesso a file/direttori
Gestione della Memoria
  • spazi degli indirizzi e binding
  • allocazione della memoria contigua:
    • a partizione singola e partizioni multiple; frammentazione;
  • allocazione non contigua:
    • paginazione, segmentazione
  • memoria virtuale
  • gestione della memoria in UNIX/Linux
Programmazione shell
  • Introduzione alla Linux bash shell
  • comandi come filtri
  • Piping e ridirezione
  • Espansione metacaratteri
  • Strutture di controllo
  • Sviluppo di file comandi
Programmazione Concorrente 
  • Il problema della mutua esclusione e possibili soluzioni.
  • strumenti di sincronizzazione nel modello a memoria comune:  il semaforo
  • costrutti linguistici per la sincronizzazione: il monitor
  • sincronizzazione tra thread java
Gestione dell'I/O
  • architettura del sottosistema di I/O
  • device driver
  • Gestione dei dispositivi a controllo di programma, tramite interruzioni, con DMA.

Testi/Bibliografia

P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi Operativi, seconda edizione, McGraw-Hill, 2008.

Metodi didattici

Durante le lezioni in aula verranno discussi sia gli aspetti teorici che progettuali/realizzativi dei sistemi operativi moderni.

Parte integrante del corso è rappresentata dalle esercitazioni in laboratorio. Le esercitazioni sono individuali e pratiche ed hanno lo scopo di fornire la possibilitá a ogni studente di potersi misurare nello sviluppo di applicazioni di sistema in ambiente Linux e  nella programmazione concorrente in Java.

Modalità di verifica dell'apprendimento

La verifica avviene mediante:

    Una prova  progettuale, da svolgersi in laboratorio, per verificare
    • Capacità di programmazione nell'ambiente Unix
    • Capacità di programmazione concorrente in Java
  • Una prova orale (facoltativa per chi consegue una valutazione nella prova progettuale superiore a 22/30).

Strumenti a supporto della didattica

In aula:

le lezioni avverranno anche con il supporto di un PC collegato ad un videoproiettore mediante il quale potranno essere esemplificate concretamente i concetti esposti.

In laboratorio:

ogni studente potra` disporre di un PC da utilizzare due ore alla settimana, durante le esercitazioni assistite.

Link ad altre eventuali informazioni

http://lia.deis.unibo.it/Courses/sot

Orario di ricevimento

Consulta il sito web di Anna Ciampolini