Processi e thread
Processi
- Modello di processo e multiprogrammazione 🟡 🔴 🟢 🟢 🟢
- Creazione di un processo e meccanismi di creazione 🔴 🔴 🟡 🟢
- In quali condizioni un processo può terminare 🟢 🟢 🟢
- Gerarchie di processi 🟢 🟢 🟢 🟢
- Stati di un processo e transazioni tra stati 🟢 🟢
- Realizzazione dei processi (PCB) 🟢 🟢
Signal vs Interrupt
- Interrupts 🔴 🔴 🟡 🟢 🟡
- Signal, tipi e azioni 🟡 🟡
Threads
- Definizione e vantaggi + multithreading + es. web srv 🟢 🟡
- Processi vs Threads 🟡 🟡
- Elementi condivisi e non condivisi 🟢 🟡 🟢
- Pthread 🟢 🟢
Implementazione dei thread
-
A livello utente 🔴 🔴 🟡 🟢
-
A livello kernel 🔴 🟡 🟡
-
Ibrida 🟢 🟢 🟢
IPC
Mutua esclusione
Semafori e mutex
- Wakeup 🟢 🟢
- Consumer 🟢 🟢
- Semafori 🟡 🟡
- Mutex 🟡 🟡
- Semafori VS Mutex 🟢 🟢
Monitor
- Definizione e proprietà 🟢 🟢
- signal) 🟢 🟡
Barriere
- Barriere 🟢 🟢
Inversione di priorità
Read-Copy-Update
- Definizione della filosofia del RCU 🟡 🟢 🟢
- Inserimento di un nodo X 🟢 🟢
- Rimozione dei nodi B e D 🟡 🟢
- Grace period 🟡 🟡
- Utilizzo tecnica RCU? 🟡 🔴 🟢
Scheduling
Scheduling
- Definizione di scheduling 🔴 🟡
- O bound vs CPU bound 🟢
- Quando eseguire lo scheduling? 🟡
- Preemptive vs Non-Preemptive 🟡
- Categorie di algoritmi di scheduling 🟡 🟢
Batch
Interattivi
- Sistemi interattivi e algoritmi utilizzati 🔴
- Round-Robin 🔴
- A priorità 🔴
- SPN 🔴
- Garantito (promessa) 🔴
- Lotteria 🟡
- Fair-Share 🔴
Real time
Processi e scheduling
- Politica VS Meccanismo 🟡
- Scheduling a thread
Gestione memoria
Memoria
Si/No Astrazione memoria
Gestione sovraccarico
Gestione memoria libera
Paging
Algoritmi di sostituzione delle pagine
- Cosa è un algoritmo di sostituzione delle pagine
- Quali sono gli algoritmi di sostituzione dell pagine?
- NRU
- FIFO
- FIFO 2
- Clock
- LRU
- Concetto di working set
Problematiche progettazione dei sistemi di paging
- Quali sono gli aspetti da considerare nella progettazione dei sistemi di paging? 🔴
- Politiche di allocazione 🔴
- Allocazione equa e proporzionale🟡
- Politica di allocazione dinamica 🔴
- Controllo del carico 🔴
- Dimensione delle pagine 🔴
- Dati e istruzioni su dati separati 🟡
- Librerie condivise 🔴
- Memory mapped file 🟡
Dettagli implementativi del paging
Segmentazione
- Definizione
- Vantaggi della segmentazione
- Paginazione vs Segmentazione
- Realizzazione della segmentazione (problema frammentazione esterna)
- Segmentazione con paginazione (MULTICS)
- Segmentazione con paginazione in Intel x86
- Comando free
File system
Introduzione
File
Directory
Implementazione FS
Layout FS
Implementazione file - schemi di allocazione dei blocchi
- Quali sono i metodi per tenere traccia di quali blocchi disco sono associati ad un determinato file?
- Allocazione contigua
- Allocazione con liste collegate
- FAT
- I-node
Implementazione directory
- Quale è la funzione della directory?
- Come facciamo a salvare i nomi dei file all’interno di una directory?
- Ottimizzazione della ricerca (hash+cache)
File condivisi (link)
Gestione spazio su disco
- Allocazione contigua vs “casuale” e compromesso dimensione dei blocchi
- Come facciamo a tenere traccia dei blocchi liberi?
- Come è possibile modificare la tecnica della lista concatenata di blocchi liberi?
- Come vengono gestiti i blocchi liberi con la tecnica della lista concatenata (problema + soluzione)?
- Quota disco nei sistemi multiutente
Linux FS
- Come è il layout del disco del FS ext2?
- Come fa ext2 a garantire le prestazioni?
- Flusso di apertura file (o directory)
Performance FS
- Ragioni e ottimizzazioni per le prestazioni del FS
- buffer cache
- Comando free
- Deframmentazione del disco
Affidabilità FS
File system backup
Coerenza del file system
- Quando avvengono di solito i problemi di incoerenza dei dati e come fanno i OS a risolvere?
- FS Journaling
Sicurezza dati
Virtual File System
RAID
Principi I/O
Principi hardware
Vecchia porta parallela VS USB
Comunicazione CPU - controller
DMA
- Concetto DMA
- Come avviene la lettura dal disco senza DMA?
- Come avviene la lettura del disco con DMA?
