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
2022/2023
Docente
CARLO GIANNELLI
Crediti formativi
10
Periodo didattico
Secondo Semestre
SSD
INF/01

Obiettivi formativi

L'obiettivo del corso è fornire allo studente le conoscenze fondamentali dei sistemi operativi, trattando sia gli aspetti teorici sia le tecniche di base e 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 realizzazione della memoria virtuale
- struttura dei dispositivi di IO

Le principali abilità acquisite saranno:
- capacità 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" è un prerequisito per il corso di Sistemi Operativi. Si consiglia inoltre di avere acquisito la capacita' di utilizzare i linguaggi di programmazione C e Java forniti dai corso di "Programmazione e laboratorio" e "Linguaggi di Programmazione e Laboratorio", 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.
- 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. Gestione di processi e thread in Unix e Linux.
- 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.
- 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 80 ore (10 CFU) di didattica divise in 50 ore di lezioni di teoria e 30 ore di lezioni di laboratorio.Il corso è organizzato mediante lezioni frontali ed esercitazioni in laboratorio assistite dal docente.

Modalità di verifica dell'apprendimento

L'esame è suddiviso in:
- prova in laboratorio, che prevede lo svolgimento di esercizi su programmazione di sistema Unix (linguaggio C con System Call), programmazione multi-thread in Java e programmazione in Shell di Bourne;
- prova orale su tutti gli argomenti del corso.

Le 3 parti della prova in laboratorio sono indipendenti e possono anche essere svolte in sessioni diverse. Il voto della parte di laboratorio è la media pesata delle 3 prove: 50% programmazione di sistema, 25% shell, 25% Java. Il superamento della parte di laboratorio prevede l'ottenimento di almeno 18/30 in ciascuna prova. E' consentito consultare libri e copie delle dispense (non si può consultare il codice di esercizi e prove di esame risolte) solo per la parte di programmazione di sistema in C, per la parte di shell è consentito accedere al solo man, per la parte di Java è consentito accedere al solo javadoc. Il tempo previsto per la prova è di circa 3 ore, suddiviso tra le tre prove di C, shell e Java in modo proporzionato alla difficoltà di ciascuna prova.

E' possibile sostenere la prova orale solo se si è superata la prova in laboratorio. Il voto finale è determinato a partire dal voto della prova in laboratorio, il quale però può essere sia aumentato che diminuito in sede di orale a seconda delle conoscenze dimostrate.

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