Sistemi Operativi

2020 / 2021

finito

Codce OPIS: 0Q8QZFBK

News

2021/09/27: Per esigenze di segreteria, domani 28 settembre verranno chiusi i verbali per l'appello di settembre. Tutti gli esami ancora pendenti in data 28 settembre verranno verbalizzati negli appelli successivi (a partire da quello straordinario di ottobre/novembre) non appena conclusi con la discussione del progetto ora mancante.

2021/09/08: Il 13 settembre p.v. ci sarà una sessione di discussione progetti. Per potervi prenotare inviate una mail con oggetto [SO][Discussione Progetto 13/09/2021] entro le ore 21 di sabato 11 settembre.

2021/07/20: Sono stati pubblicati i risultati dell'appello di luglio 2021-07-15 .

2021/06/07: Il 14 giugno p.v. ci sarà una sessione di esami orali e discussione progetti. Gli esami orali sono riservati per coloro che si sono prenotati per il 4 giugno.

Sia per quanto riguarda gli orali che per quanto riguarda i progetti, verrà accordata la precedenza agli studenti laureandi.

Per potervi prenotare, inviate una mail con soggetto [SO][VIVA-EXAM][2021-06-04].

2021/06/07: Sono stati pubblicati i risultati dell'appello di giugno 2021-06-04 .

2021/06/07: A breve comunicheremo i risultati dell'esame di venerdì scorso a coloro che avranno compilato il form con la scelta del progetto: https://docs.google.com/forms/d/e/1FAIpQLSfDjgF0EPGslSwo9F2JlRujhoxF6kNZc6-T7--Ge1QK6cywjA/viewform.

Vi invitiamo pertanto a inviarlo al più presto.

Non preoccupatevi se non avete ancora scelto il progetto in maniera definitiva, vi daremo la possibilità di cambiarlo: per ora abbiamo bisogno che lo facciate soltanto per agevolare la gestione dei dati.

2021/06/01: Come indicato sul sito dell'Ateneo https://www.uniroma1.it/it/notizia/covid-19-fase-3-lezioni-esami-e-lauree-presenza-e-distanza, utilizzate il sistema PRODIGIT per prenotare l'aula per l'esame in presenza

2021/04/25: PRODIGIT ha qualche problema, Da ora in poi glistudenti che intendono frequentare la lezione si devono prenotare sia su PRODIGIT che inviandomi una MAIL (a me E alla tutor)

2021/03/19: da oggi il venerdi' iniziamo alle 14:30 per nutrirci in modo adeguato tra una lezione e l'altra.

2021/03/10: alle 14.00 ci sarà lezione sul canale youtube del docente (click here).



Abstract

Questo corso ha lo scopo di fornire agli studenti le conoscenze necessarie sull'architettura di moderni sistemi operativi. Il corso copre sia aspetti teorici su problematiche quali architetture, scheduling, gestione della memoria e dei processi, sia aspetti pratici di programmazione e gestione del sistema operativo dal lato utente.

Ufficio

B115 - DIAG

B121 - DIAG

Ricevimento

Lunedi' 10.00 / 12.00 (concordato via mail)

Lunedi' 10.00 / 12.00 (concordato via mail)

IMPORTANTE: Per tutte le comunicazioni riguardanti il corso e l'esame usare sempre [SO] come primo elemento dell'oggetto. La mancata osservazione di questa regola riduce la priorita' di risposta alla mail inviata.

Registrazione al corso

È obbligatorio compilare il form di registrazione:

wide

Prerequisiti

E' opportuna una buona conoscenza del linguaggio C e dei contenuti del corso di Sistemi Di Calcolo.

E' consigliata una installaziona nativa di una distro Linux qualsiasi (recommended: Ubuntu 18.04 LTS).

Esame (6CFU)

Modalità di esame: ESAME SCRITTO + PROGETTO

La prova scritta puo' essere svolta prima della consegna del progetto. Il voto finale verra' assegnato alla consegna del progetto. La deadline del progetto e' Marzo 2022. Oltre tale data, lo studente dovra' risostenere la prova scritta - qualunque sia stata la votazione precedente.

In generale, il totale di punti ottenibili e' di 32 punti cosi' ripartiti:

    • Scritto: test_max_points = 24;

    • Progetto: proj_max_points = 8;

Maggiori informazioni nella sezione PROGETTO.


PROGETTO

Il progetto va sviluppato in team o anche individualmente.

L'assegnazione del progetto avvera' inviado una mail al docente ed al tutor con oggetto [SO][Assegnazione progetto] . Nella mail bisognera' specificare:

    • Il progetto scelto

    • I componenti del team (nome - cognome - matricola - email) - meglio se inclusi in CC nella mail :)

    • Il link alla repository contenente il progetto.

Il progetto verra' valutato secondo i seguenti indicatori:

    1. Qualita' del codice: memory leak, stabilita', robustezza saranno i parametri determinanti per il voto finale - ogni progetto verra' testato con valgrind.

    2. Utilizzo di software per version control (git): la valutazione di ogni componente del gruppo sara' pesata in base alle commit nella repository del progetto. Progetti la cui repository presenta una sola commit o in cui e' stato effettuato un rebase saranno gravemente penalizzate. Inoltre una volta comunicata la repository del progetto, sara' vietato cambiarla.

    3. Cross-check del codice: i progetti verranno controllati approfoniditamente per validarne l'unicita'. Progetti copiati verranno gravemente penalizzati o annullati.

    4. Dimensione del gruppo: la complessita' del progetto e' modulata sul numero di componenti del gruppo.

Tutti gli esempi di progetto sono contenuti nella cartella projects della repository di Sistemi Operativi [link].

Esposizione del progetto: Una volta completato il progetto, va consegnato via mail un breve report in PDF di carattere generale (non contenente codice e in cui si risponde alle domande what, how, how-to-run). Infine, gli studenti dovranno concordare con il docente (Giorgio Grisetti) ed la tutor (Barbara Bazzana) una data in cui esporre quanto fatto. La mail dovrà avere come oggetto "[SO] Discussione" e contenere anche la matricola dello studente.

ESAME SCRITTO

Svolgere un esame scritto.

Chiunque intenda rifiutare il voto dello scritto, dovrà comunicarlo via mail al tutor e al docente entro il prossimo appello.

Gli studenti che appartengono al vecchio ordinamento dell'esame (9CFU) dovranno sostenere un'orale. Nella repository di Sistemi Operativi sara' possibile trovare degli esercizi svolti dell'esame di TDP, i quali potranno essere usati come esercizi per tale prova orale. A titolo di riferimento gli studenti devono saper svolgere tutti gli esercizi che non comportano la ricorsione.

A seguito della valutazione del progetto, al voto dello scritto viene sommato il voto del progetto. I criteri di valutazione del progetto sono contenuti nella sezione "PROGETTO".

Prossimi Appelli (esame scritto)

Prenotatevi su infostud 15 giorni prima per esigenze di organizzazione

  • 4 Giugno 2021, 15:00-17:00, aula 108 Marco Polo.

  • 15 Luglio 2021, 15:00-17:30, aula 108 Marco Polo

  • 10 Settembre 2021, 11:00-13:00, aula 108 Marco Polo

  • 8 Ottobre 2021, 14:00-16:00, aula A2 via Ariosto.

  • 18 Gennaio 2021, 14:00-16:00, aula B2 via Ariosto

  • 3 Febbraio 2022, 14:00-16:00, aule A5-A6, via Ariosto

  • 19 Marzo 2022, 09:00-11:00 aula A4, Via Ariosto

Orario e Luogo delle Lezioni

Le lezioni sono fruibili oltre che in presenza, presso il canale youtube del docente (click here) e via zoom.

Secondo Semestre

Mercoledì 14:00-16:00

Venerdì 14:00-17:00

Luogo

Edificio Marco Polo (aka ex-Poste) Aula: 204

Edificio Marco Polo (aka ex-Poste) Aula: 204


Programma di Massima

Introduzione ai Sistemi Operativi

  • storia

  • servizi

  • funzionalita'


Complementi di programmazione in C per Sistemi Operativi

  • implementazione di concetti OOP

  • strutture dati polimorfiche

  • allocatori di memoria


Architetture hardware

  • cpu/memoria/bus dati e indirizzi

  • esempio di bare metal programming su microcontrollore


Interrupt

  • sviluppo in interrupt handler su microcontrollore


Stack e context switch

  • context switch su microcontrollore

  • context switch in user space


Processi e Strutture del Kernel

  • dual mode, meccanismo delle system call

  • implementazione di spawn, exec, wait

  • creazione di uno scheduler preemptive in user space


Thread

  • concetti in pthread

  • scheduling di thread


CPU Scheduling

  • metriche

  • FIFO, SJF, SRJF, Round Robin, Round Robin con Priorita'

  • controllare lo scheduler in PTHREAD


IPC

  • motivazioni

  • mutex

  • semafori

  • code

  • memoria condivisa


Memoria

  • protezione della memoria

  • metriche

  • segmentazione

  • paginazione

  • traduzione di indirizzi


Memoria Virtuale

  • metriche

  • analisi delle prestazioni

  • algoritmi di rimpiazzamento delle pagine

  • copy on write


File System

  • interfaccia al file system

  • controllo degli accessi

  • operazioni sui file


Implementazione del File System

  • virtual file system

  • Esempi: FAT, Inodes


The image on this page is by Cushing Memorial Library and Archives, (Flickr: IBM Processing Machine) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons