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.
12/01/2022 - Esercitazione 2¶
Svolgimento in aula dei seguenti problemi:
Esercizi di preparazione: Esercizi 8.1, 8.2
11/01/2022 - Esercitazione 1¶
Svolgimento in aula dei seguenti problemi:
Sfide: Challenge 1
Esercizi di preparazione: Esercizi 1.1, 5.1
22/12/2021 - Esempi C, Aspetti di sicurezza ed Introduzione a Linux¶
Esempi codice C aspetti di sicurezza:
layout di programma, permesso SUID e buffer overflow
accenni di return-oriented programming
address space randomization
canary tag
memorizzazione di password
Introduzione a Linux:
utente root
Filesystem Hierarchy Standard
terminale e shell
redirezionamento stdin e stdout (<,>,>>,|)
utenti e gruppi
/etc/passwd e /etc/groups
configurazione /etc/sudoers
Riferimenti e libri di testo¶
Approfondimenti¶
21/12/2021 - Esempi di programmazione C¶
Esempi codice C in Linux:
pattern produttore/consumatore
layout di programma, permesso SUID e buffer overflow
Riferimenti¶
15/12/2021 - File management parte 3¶
Esempi codice C in Linux:
copia di file regolare in C
redirezionamento I/O in C
memoria condivisa tramite shm_open e file su /dev/shm
Riferimenti¶
14/12/2021 - File management parte 2¶
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
Riferimenti libro di testo¶
Approfondimenti¶
07/12/2021 - File management parte 1¶
Concetto di file
Operazioni su file
File pointer
Metodo di accesso
Directory
Protezione
Riferimenti libro di testo¶
01/12/2021 - Gestione di I/O parte 2¶
Hard disk
HDD e SSD scheduling
Riferimenti libro di testo¶
Approfondimenti¶
30/11/2021 - Gestione di I/O parte 1¶
Caratteristiche dei dispositivi di I/O
Modello di organizzazione dei moduli di I/O
I/O Buffering
I/O Scheduling
Riferimenti libro di testo¶
Approfondimenti¶
[t2] Capitolo 12
24/11/2021 - Gestione della memoria parte 5¶
Caricamento delle pagine
Posizionamento delle pagine
Sostituzione delle pagine: metodologia di valutazione, FIFO, Ottimo, LRU, algoritmi a stack, clock
Anomalia di Belady
Resident set management: Working set, Page fault frequency
Thrashing
Riferimenti libro di testo¶
23/11/2021 - Gestione della memoria parte 4¶
Memoria virtuale
Gestione di page fault
Performance della memoria virtuale
Aspetti generali per la gestione della memoria virtuale
Riferimenti libro di testo¶
17/11/2021 - Gestione della memoria parte 3¶
Segmentazione
Segmentazione paginata
Mappatura dello spazio di indirizzamento e relativi system call Linux
Introduzione alla memoria virtuale
Riferimenti libro di testo¶
Link di approfondimento¶
16/11/2021 - Gestione della memoria parte 2¶
Binding di indirizzi
Concetto di rilocazione
Paginazione
Tabella delle pagine, Traslation Lookaside Buffer, Paginazione gerarchica
Riferimenti libro di testo¶
10/11/2021 - Sincronizzazione parte 4 - Gestione della memoria parte 1¶
Semafori POSIX
Introduzione a gestione della memoria
Partizioni fisse
Partizioni dinamiche
Politiche di placement: Best fit, Worst fit, First fit, Next fit
Buddy system
Frammentazione interna ed esterna
Riferimenti libro di testo¶
Link di approfondimento¶
09/11/2021 - Sincronizzazione parte 3¶
Read-Modify-Write
Algoritmi di mutua esclusione basati su RMW
Spin lock, Mutex POSIX
Riferimenti libro di testo¶
Link di approfondimento¶
03/11/2021 - Sincronizzazione parte 2¶
Mutua Esclusione
Errori Comuni: Deadlock e Livelock
Algoritmo di Peterson
Algoritmo del panettiere (Lamport)
Riferimenti libro di testo¶
Link di approfondimento¶
02/11/2021 - CPU scheduling parte 4 - Sincronizzazione parte 1¶
Scheduler UNIX System V Release 4
Linux Complete Fair Scheduler
Introduzione alla sincronizzazione
Riferimenti libro di testo¶
Link di approfondimento¶
27/10/2021 - CPU scheduling parte 3¶
Multi-level feedback queue
Fair-share scheduling
Multiprocessor scheduling
Load sharing
Load balancing
Affinity
Riferimenti libro di testo¶
Link di approfondimento¶
26/10/2021 - CPU scheduling parte 2¶
First Come First Serve
Shortest Job First
Round Robin
Priority Scheduling
Riferimenti libro di testo¶
20/10/2021 - Threads parte 2 - CPU scheduling parte 1¶
pthread_create, pthread_join, pthread_exit
Processi UNIX: stati, gerarchie e threads
Processi Linux: concetto di task, stati, accenni di task_struct
Introduzione al CPU scheduling: metriche di prestazionali e non per l’utente ed il sistema, preemtive e non-preemptive scheduling
Riferimenti libro di testo¶
Link di approfondimento¶
Codice sorgente Linux Kernel: task_struct
19/10/2021 - Processi parte 5 - Threads parte 1¶
Concetto di thread
User-Level threads e Kernel-level threads
POSIX threads
Variabili per thread
Librerie thread-safe e non
Riferimenti libro di testo¶
Link di approfondimento¶
13/10/2021 - Processi parte 4¶
Posix fork
Layout di programma C
Famiglia di funzioni POSIX exec
Ambiente e variabili di ambiente
Famiglia di funzioni POSIX getenv, putenv, setenv, unsetenv
Utilizzo documentazione online e da riga di comando Linux (man)
Shell Linux: ls, man, fg, bg, top e token !
Riferimenti libro di testo¶
Link di approfondimento¶
12/10/2021 - Processi parte 3¶
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)
Shell Linux: ls, man, fg, bg e token !
Riferimenti libro di testo¶
Link di approfondimento¶
06/10/2021 - Processi parte 2¶
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/2021 - Introduzione parte 3 - Processi parte 1¶
Introduzione:
System call
Librerie Standard
Architettura dei Sistemi Operativi
Processi:
Immagine
Process Control Block
Stato di un processo: 2 stati, 3 stati
Code di processi
Riferimenti libro di testo¶
29/09/2021 - Introduzione parte 2¶
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¶
Codice sorgente Linux Kernel: IDT
28/09/2021 - Introduzione parte 1¶
Sistemi operativi: definizione ed obiettivi
Evoluzione dei sistemi operativi: Sistemi seriali, Sistemi batch, Sistemi time-sharing, Sistemi Real time, Multicore, Dark silicon
Sincronizzazione e Speedup: concetto di lock e legge di Amdahl