Diario delle lezioni¶
Per ogni lezione vengono riportati riferimenti a paragrafi dei libri di testo.
Warning
L’unione dei paragrafi può non rappresentare la totalità degli argomenti trattati durante la lezione.
10/01/2022 - Esercitazione¶
Svolgimento in aula dei seguenti problemi:
Esercizi di preparazione: Esercizio di Teoria 3.1
21/12/2022 - Esercitazione¶
Svolgimento in aula dei seguenti problemi:
Esercizi di preparazione: Esercizi di teoria 1.1, 7.1
20/12/2022 - Esempi C, Aspetti di sicurezza¶
Esempi codice C aspetti di sicurezza:
layout di programma, permesso SUID e buffer overflow
accenni di return-oriented programming
address space randomization
canary tag
Riferimenti e libri di testo¶
Approfondimenti¶
14/12/2021 - Gestione delle memoria parte 6¶
- Esempi di codice
Flip vector basato su processi
Produttore consumatore
13/12/2021 - Gestione delle memoria parte 5¶
Sostituzione delle pagine: Ottimo, LRU, algoritmi a stack, clock
Resident set management: Working set, Page fault frequency
Thrashing
07/12/2022 - Gestione delle memoria parte 4¶
Mappatura dello spazio di indirizzamento e relativi system call Linux
Introduzione alla memoria virtuale
Memoria virtuale
Gestione di page fault
Performance della memoria virtuale
Aspetti generali per la gestione della memoria virtuale
Caricamento delle pagine
Posizionamento delle pagine
Sostituzione delle pagine: metodologia di valutazione, FIFO
Anomalia di Belady
06/12/2022 - Gestione delle memoria parte 3¶
Traslation Lookaside Buffer
Paginazione gerarchica
Segmentazione
Segmentazione paginata
Mappatura dello spazio di indirizzamento e relativi system call Linux
30/11/2022 - Gestione delle Memoria parte 2¶
Paginazione
Tabella delle pagine
29/11/2022 - File Management parte 4 - Gestione delle Memoria parte 1¶
- File management
File descriptor
Redirezionamento
Esempio di codice
- Gestione della memoria
Requisiti
- Partizionamento
Statico: taglia fissa, variabile
Dinamico
Buddy system
Frammentazione interna ed esterna
Assegnazione partizioni
Binding indirizzi
Rilocazione
23/11/2022 - File Management parte 3¶
Allocazione su hard disk
File system Unix:
inode
attributi
servizi per la manipolazione di file e directory
descrittore
in-memory file system
Recovery e file locking
Esempi codice C in Linux:
copia di file regolare in C
Riferimenti libro di testo¶
Approfondimenti¶
22/11/2022 - File Management parte 2¶
File Management:
Concetto di file
Operazioni su file
File pointer
Metodo di accesso
Directory
Protezione
Riferimenti libro di testo¶
[t1] Sezione 12.1, 12.2, 12.4, 12.5
[t2] Sezione 13.1, 13.1.1, 13.1.2, 13.1.5, 13.2, 13.2.1, 13.2.2, 13.2.3, 13.3, 13.3.1, 13.3.2, 13.3.3, 13.3.4, 13.4, 13.4.1, 13.4.2
16/11/2022 - I/O Managament parte 2 - File Management parte 1¶
I/O Management:
HDD e SSD scheduling
File Management:
Concetto di file
Operazioni su file
Riferimenti libro di testo¶
Riferimenti libro di testo¶
Approfondimenti¶
[t2] Capitolo 12
15/11/2022 - CPU scheduling parte 3 - I/O Managament parte 1¶
CPU scheduling
Load balancing
Affinity
Scheduler UNIX System V Release 4
Linux Complete Fair Scheduler
Introduzione alla sincronizzazione
I/O Management:
Caratteristiche dei dispositivi di I/O
Modello di organizzazione dei moduli di I/O
I/O Buffering
I/O Scheduling
Hard disk
Riferimenti libro di testo¶
Link di approfondimento¶
Approfondimenti¶
[t2] Capitolo 12
09/11/2022 - CPU scheduling parte 2¶
Round Robin
Priority Scheduling
Multi-level feedback queue
Fair-share scheduling
Multiprocessor scheduling
Load sharing
Load balancing
Affinity
Riferimenti libro di testo¶
08/11/2022 - Sincronizzazione parte 4 - CPU scheduling parte 1¶
Sincronizzaione
Spin lock, Mutex POSIX
Semafori POSIX
CPU scheduling
Metriche per cpu scheduling
Non-preemptive vs Preemtive
First Come First Serve
Shortest Job First
Riferimenti libro di testo¶
Link di approfondimento¶
02/11/2022 - Sincronizzazione parte 3¶
Algoritmo del panettiere (Lamport)
Read-Modify-Write
Algoritmi di mutua esclusione basati su RMW
Riferimenti libro di testo¶
Link di approfondimento¶
26/10/2022 - Sincronizzazione parte 2¶
Sincronizzazione
Errori Comuni: Deadlock e Livelock
Algoritmo di Peterson
Riferimenti libro di testo¶
25/10/2022 - Thread parte 2 - Sincronizzazione parte 1¶
Threads:
Esempio PFEW
Sincronizzazione
Introduzione alla sincronizzazione
Mutua Esclusione
Errori Comuni: Deadlock e Livelock
Riferimenti libro di testo¶
19/10/2022 - Processi parte 1 - Thread parte 1¶
Processi
Processi UNIX: stati, gerarchie e threads
Processi Linux: concetto di task, stati, accenni di task_struct
Thread
Concetto di thread
User-Level threads e Kernel-level threads
POSIX threads
Variabili per thread
Librerie thread-safe e non
pthread_create, pthread_join, pthread_exit
Riferimenti libro di testo¶
Link di approfondimento¶
Codice sorgente Linux Kernel: task_struct
18/10/2022 - Processi parte 3¶
Processi:
Famiglia di funzioni POSIX exec
Ambiente e variabili di ambiente
Famiglia di funzioni POSIX getenv, putenv, setenv, unsetenv
Shell Linux: ls, man, cd
Riferimenti libro di testo¶
Link di approfondimento¶
12/10/2022 - Processi parte 2¶
Processi:
Process switch
Cambio di modo e cambio di contesto
Servizi di sistema per la gestione di processi
POSIX fork, exit, wait
Gerarchie di processi
Utilizzo documentazione online e da riga di comando Linux (man)
[t1] Sezione 3.4,
[t2] Sezione 3.3, 3.3.1, 3.3.2
[t3] Sezione 1.2, 3.1
Link di approfondimento¶
11/10/2022 - Processi parte 1¶
Processi:
Process Control Block
Stato di un processo: 2 stati, 3 stati
Code di processi
Stato di un processo e code: 5 stati
Strutture di controllo di un Sistema Operativo
Long, mid, short term scheduling
Process switch
Riferimenti libro di testo¶
05/10/2022 - Richiami di programmazione C - parte 2¶
- Richiami C:
Preprocessore, Compilatore, Linker
Puntatori
printf, scanf
Codifica binaria, ottale, esadecimale
Layout di memoria
Esempi di codice¶
Riferimenti libro di testo¶
[t2] Sezione 3.1.1
Link di approfondimento¶
04/10/2022 - Introduzione parte 3 - Richiami di programmazione C parte 1¶
Introduzione:
System call
Librerie Standard
Architettura dei Sistemi Operativi
- Richiami C:
Preprocessore, Compilatore, Linker
Riferimenti libro di testo¶
[t2] Sezione 2.3.1, 2.3.2, 2.8
28/09/2022 - Introduzione parte 2¶
Evoluzione dei sistemi operativi: Sistemi time-sharing, Sistemi Real time, Multicore, Dark silicon
Sincronizzazione e Speedup: concetto di lock e legge di Amdahl
Sistemi operativi: elementi chiave
Interrupt: eventi, supporto hardware
Interrupt-driven os: protezione delle risorse (istruzioni privilegiate, protezione memoria, timer) e accesso a codice di sistema operativo (system call)
Riferimenti libro di testo¶
Link di approfondimento¶
27/09/2022 - Introduzione parte 1¶
Sistemi operativi: definizione ed obiettivi
Evoluzione dei sistemi operativi: Sistemi seriali, Sistemi batch