Salta ai contenuti. | Salta alla navigazione

Strumenti personali

SISTEMI OPERATIVI E LABORATORIO

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2016/2017
Docente
SEBASTIANO FABIO SCHIFANO
Crediti formativi
12
Periodo didattico
Secondo Semestre
SSD
INF/01

Obiettivi formativi

L'obiettivo del corso e' quello di fornire allo studente le conoscenze fondamentali dei sistemi operativi, trattando sia gli aspetti teorici sia le tecniche di base ed avanzate di programmazione di un sistema operativo.

Le principali conoscenze acquisite saranno:
- struttura di un sistema operativo
- organizzazione di un sistema operativi multi processo
- concetto di processo e di processore virtuale e il cambio di contesto
- concetto e la realizzaione della memoria virtuale
- struttura dei dispositivi di IO

Le principali abilita' acquisite saranno:
- capacita' di programmare sistemi concorrenti e multi-tasking
- analisi delle prestazioni dei sistemi operativi
- uso del sistema operativo Linux
- programmazione multi-thread e multi-processo

Prerequisiti

Il corso di "Architettura degli Elaboratori" e' un prerequisito per il corso di Sitemi Operativi. Si consiglia inoltre di avere acquisito la capacita' di utilizzare il Linguaggio di programmazione C fornita dal corso di "Programmazione", e le conoscenze di base del corso di "Algoritmi e Strutture Dati".

Contenuti del corso

- Introduzione ai sistemi operativi: organizzazione, evoluzione e funzioni principali di un sistema operativo. Organizzazione di sistemi paralleli multi-core e multi-processore.

- Processi, Thread and Scheduling: concetto di processo e di thread, gestione dei processi, context switch, algoritmi di scheduling, sincronizzazione di processi, creazione e terminazione di processi, comunicazione tra processi. Concorrenza e Parallelismo. Problemi classici di programmazione concorrente. Gestione di processi e thread in Unix e Linux. Programmazione concorrente. Fondamenti di parallelismo e decomposizione pipeline e farm.

- Gestione della memoria: tecniche di gestione della memoria (a partizioni fissi e variabili, pagina, segmentata) gestione degli spazi virtuali, indirizzamento multi-livello, gestione della memoria in Unix/Linux. Algoritmi di rimpiazzamento.

- Gestione delle periferiche: struttura del sistema di IO, controllo di programma e mediante interrupt, buffering, operazioni blocking and non-blocking, organizzazione dei dischi, sistemi RAID.

- Organizzazione del file-system: concetto di file e directory, organizzazione di file e directory, operazioni sui file, controllo degli accessi, organizzazione del file-system in Unix e Linux.

Metodi didattici

Il corso prevede 96 ore (12 CFU) di didattica divise in 72 ore di lezioni di teoria e 24 ore di lezioni di laboratorio.Il corso e' organizzato mediante lezioni frontali, di laboratorio, esercitazioni alla lavagna e al calcolatore su tutti gli argomenti trattati.

Modalità di verifica dell'apprendimento

L'esame e' diviso in tre parti che si svolgono nello stesso giorno:

- prova scritta che prevede lo svolgimento di 4 esercizi su tutti gli argomenti del corso;
- prova pratica che prevede la discussione di un progetto assegnato dal docente e implementato dallo studente;
- prova orale opzionale su tutti gli argomenti del corso.

Il voto massimo di ciascuna prova e' di 30/30. Il voto finale e' determinato dalla media dei voti conseguiti nelle tre parti arrotondata per eccesso.

Testi di riferimento

1. Sistemi operativi 2/ed - Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari - McGraw-Hill
2. I moderni Sistemi Operativi 3/ed - Andrew S. Tanenbaum - Pearson Prentice Hall