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
2020/2021
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 la realizzaione 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 Sitemi 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 60 ore di lezioni di teoria e 20 ore di lezioni di laboratorio.Il corso è organizzato mediante lezioni frontali, di laboratorio, esercitazioni alla lavagna e al calcolatore su tutti gli argomenti trattati.

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 testi o appunti solo per la parte di programmazione di sistema in C (e solo se in modalità d'esame in laboratorio, nessun appunto in caso di modalità d'esame da remoto, vedi "Note specifiche su modalità d’esame scritto da remoto"), non è consentito consultare nulla per la parte di shell e di Java. Il tempo previsto per la prova è di circa 3 ore, suddiviso tra le tre prove di C, Java e shell 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.


==> Note specifiche su modalità d’esame scritto da remoto <==

Durante la fase di emergenza sanitaria le prove di programmazione avverranno tramite l’uso di Google Meet e verranno svolte su foglio di carta. Durante l’intera prova dovrete tenere attivi microfono e webcam del vostro tablet/smartphone (no computer). La webcam dovrà riprendervi da media distanza, per mostrare la vostra postazione di lavoro per intero (non solo il foglio ma anche l’intero tavolo o scrivania).

Attenzione! Durante la prova d’esame non sarà possibile utilizzare alcun appunto personale o slide, per nessuna delle prove di programmazione.

1) Fase preparatoria.
Prima dell’esame riceverete un’email con un link a Google Meet a cui collegarsi usando la webcam e il microfono per effettuare il riconoscimento personale durante il quale uno alla volta dovrete mostrare la carta di identità (o altro documento di riconoscimento con nome, cognome e foto).
Attenzione! Accedere con le proprie credenziali nome.cognome@student.unife.it !

2) Svolgimento della prova d’esame.
Terminata la fase di riconoscimento verrà dettato il testo dell’esame e la prova avrà inizio.
Durante l’intera prova d’esame dovrete tenere attivi microfono e webcam del vostro tablet/smartphone (no computer) e potrà esservi chiesto di ruotare la webcam per mostrare la stanza in cui vi trovate. Si suggerisce di utilizzare la telecamera frontale in modo che lo studente possa vedere il Google Meet e accorgersi di eventuali problemi di connessione. Per aiutare gli studenti ad accorgersi di eventuali cadute di connessione, verrà predisposto un Google Form (o altro strumento) per raccogliere il numero di cellulare dei partecipanti, che così potranno essere immediatamente contattati nel caso si perda la connessione.

3) Consegna della prova d’esame.
Terminata la prova dovrete fare una foto al vostro elaborato e inviarla via email a carlo.giannelli@unife.it

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