Sistemi Operativi
2023 / 2024
News
2024/07/16: link al form per la presentazione del progetto del 23/07/2024
2024/06/03: link al form per la scelta del progetto
2024/05/23: Aperto mega appellone magico su infostud. (19/05/2024). La prova scritta la faremo il 25/05, secondo la disponibilita' delle aule.
2024/05/21: Oggi niente lezione.
Le lezioni inizieranno alla fine di Febbraio 2024
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
B120 - DIAG
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: ENROLLMENT FORM
Orario e Luogo delle Lezioni
Le lezioni sono fruibili in presenza.
Secondo Semestre
Martedì 13:00-15:00
Mercoledì 16:00-20:00
Luogo
Edificio Marco Polo (aka ex-Poste) Aula: 105
Edificio Marco Polo (aka ex-Poste) Aula: 108
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 20.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.
In generale, il totale di punti ottenibili e' di 32 punti cosi' ripartiti:
Scritto: test_max_points = 24;
Progetto: proj_max_points = 8;
Progetti proposti: Progetti 22/23
Form di Registrazione
Prossimi Appelli (esame scritto)
25/06/2024, 9:00, Aula 105 Marco Polo
25/07/2024, 9:00, Aula 108 Marco Polo
02/09/2024, 9:00, Aula 105, Marco Polo
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