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


21/12/2022 - Esercitazione

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

  • [t1] Sezione 12.7, 12.8, 12.9

  • [t2] Sezione 14.4, 14.4.1, 14.4.2, 14.4.3, 14.6, 14.7, 14.7.1, 14.7.2, 15.5

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

  • [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

Riferimenti libro di testo

  • [t1] Sezione 11.5, 12.1

  • [t2] Sezione 11.1, 11.1.1, 11.1.2, 11.1.2.1, 11.2, 11.3, 13.1

Approfondimenti

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

  • [t1] Sezione 10.3, 10.4, 5, 11, 11.1, 11.2, 11.3, 11.4, 11.5

  • [t2] Sezione 5.7.1, 6.1, 6.2, 12.2.2, 12.2.3, 12.3, 12.4, 12.4.1, 12.4.2, 12.4.7, 11.1, 11.1.1

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

  • [t1] Sezione 9.2, 10.1

  • [t2] Sezione 5.4, 5.5

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

  • [t1] Sezione 9.1, 9.2

  • [t2] Sezione 6.6, 7.3.1, 5.1, 5.2, 5.3

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

  • [t1] Sezione 5.1, 5.2, 5.3, 6.1

  • [t2] Sezione 6.3, 6.4, 6.5, 6.6, 6.8, 8.2, 8.3

Link di approfondimento


26/10/2022 - Sincronizzazione parte 2

  • Sincronizzazione

    • Errori Comuni: Deadlock e Livelock

    • Algoritmo di Peterson

Riferimenti libro di testo

  • [t1] Sezione 5, 5.1, 5.2, 6.1

  • [t2] Sezione 6.1, 6.2, 6.3

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

  • [t1] Sezione 5, 5.1, 5.2, 6.1

  • [t2] Sezione 6.1, 6.2, 6.8, 8.2, 8.3


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

  • [t1] Sezione 3.6, 4.1, 4.2

  • [t2] Sezione 3.2, 4.1, 4.2, 4.3, 4.4, 4.4.1, 4.6.4, 4.7.2

Link di approfondimento

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

  • [t1] Sezione 2.3

  • [t2] Sezione 3.1.2, 3.3.1

  • [t3] Sezione 3.2, 3.3

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

  • [t1] Sezione 3.1, 3.2, 3.3

  • [t2] Sezione 3.1.1, 3.1.2, 3.1.3, 3.2, 3.2.1, 3.2.2, 3.2.3


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

  • [t1] Sezione 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3, 4.3

  • [t2] Sezione 1.2, 1.4, 2.7, 2.3.1, 2.3.2

Link di approfondimento


27/09/2022 - Introduzione parte 1

  • Sistemi operativi: definizione ed obiettivi

  • Evoluzione dei sistemi operativi: Sistemi seriali, Sistemi batch

Riferimenti libro di testo

  • [t1] Sezione 2.1, 2.2

  • [t2] Sezione 1.1