SEZIONE 1: domande piu' frequenti: (da https://www.notion.so/Sistemi-Operativi-parte-generale-f0d316b793d84a5bbb83874f2361faef )

Q: Dimostrare che se un algoritmo di rimpiazzamento è a stack allora non può soffrire dell’anomalia di Belady. R: in slide 5: memoria

Q: Come si calcola la lunghezza massima di un file in un file system di tipo UNIX? R: in slide 7: filesystem

Q: Nello scheduler di tipo Shortest Remaining TIme First (versione preemptive di STF: Shortest time first), il tempo residuo può diventare negativo. Perché? R: in slide 3: scheduling. la formula (addizione) nelle slide e' usata per stimare il tempo, ma la formula {tempo rimanente = tempo previsto meno tempo rilevato} e' quella per ordinare i processi (diversa da quella per stimare i tempi). quest'ultima puo' ritornare un numero negativo

Q: L'algoritmo del banchiere dato uno stato di allocazione delle risorse restituisce un valore binario: safe o non safe. In quali casi il sistema operativo esegue l'algoritmo del banchiere? Cosa succede se il risultato è safe e cosa se il risultato è non-safe? R: in slide 4: risorse

Q: perché l'invenzione degli interrupt ha reso i sistemi operativi più efficienti? R: ha eliminato il polling (controllare continuamente le periferiche). ha reso possibile il multitasking grazie alla preemption: la fine del time slice e' dato da un interrupt, che causa il OS di prendere il controllo della CPU e spostare il processo in attesa di I/O nello stato "ready" che, appena la CPU si libera, puo' riprendere.

Q: Quali eventi causano la valutazione dell'algoritmo del banchiere? Cosa si fa se lo stato risulta unsafe e cosa invece se è safe?* R: quando un processo chiede risorse, quando inizia e, eventualmente, anche quando finisce, per valutare se un altro puo' iniziare

Q: L'algoritmo di rimpiazzamento second chance (detto anche dell'orologio) è a stack? Perché viene preferito a LRU? R: non e' a stack poiche' e' basato su quello fifo. viene preferito in quanto piu' facile da implementare: richiede solo un reference bit per pagina, che puo' essere implementata via hardware

Q: per risolvere un problema di trashing è necessario terminare forzatamente dei processi o è sufficiente bloccare l'esecuzione di qualche processo e riattivarli successivamente? Perché? R: e' necessario terminarli perche' i processi sospesi non liberano la memoria principale, quindi continueranno ad esserci page faults

Q: in quali casi entra in funzione il paginatore in un sistema di memoria virtuale e quando viene richiamato l'algoritmo di rimpiazzamento? R: l'MMU viene chiamato quando ci sono page faults e quando bisogna tradurre indirizzi virtuali in indirizzi fisici. l'algoritmo di rimpiazzamento viene chiamato quando c'e' un page fault ma non c'e' nessun frame libero

Q: Il calcolo del working set dipende dall'algoritmo di rimpiazzamento utilizzato? Perché? R: no: il working set consiste delle pagine utilizzate durante la finestra di tempo. alcuni algoritmi usano il working set, sostituendo le pagine che non vi appartengono, gli altri non lo usano

Q: perché per realizzare un servizio di memoria virtuale l'algoritmo di rimpiazzamento LRU è difficile da implementare? R: il tracking dell'uso delle pagine comporta overhead (ogni accesso in memoria richiede l'update di una data structure), bisogna gestire l'overflow dei contatori (wraparound), la tabella deve essere scandita totalmente per trovare la pagina LRU. tutto questo comporta accessi addizionali in memoria.

Q: Come si calcola la lunghezza massima di un file che si può memorizzare su un file system di tipo ext2? R: Max File Size=(Numero di puntatori diretti+Numero di puntatori indiretti singoli+Numero di puntatori indiretti doppi+Numero di puntatori indiretti tripli)×Dimensione del blocco

Q: Fornire un elenco di incongruenze che possono venir rilevate dal fsck (file system check) applicato a file system di tipo UNIX (e.g. ext2, bffs). Per ogni tipo di incongruenza indicare come viene riscontrata e con quali operazioni il fsck può ripristinare la coerenza. R: - Blocchi Liberi Contati in Modo Errato (Corrupted Free Block Count): fsck calcola il numero effettivo di blocchi liberi nel file system sommando tutti i blocchi non allocati. Questo valore viene poi confrontato con il contatore dei blocchi liberi memorizzato nel superblocco del file system. Se i due valori non corrispondono, c'è un'incongruenza. ripristino: fsck corregge il contatore dei blocchi liberi nel superblocco, impostandolo sul valore calcolato. - Inconsistenze negli Inode come il caso di Inode con Conteggio dei Link Errato (Bad Link Count in Inode). Ogni inode contiene un contatore del numero di hard link che puntano ad esso. fsck scandisce tutte le directory per contare quanti riferimenti (link) effettivi esistono per ciascun inode e confronta questo conteggio con il valore memorizzato nell'inode. ripristino: aggiorna il contatore al numero effettivo di riferimenti. - Blocchi Duplicati. Due o più inode puntano allo stesso blocco di dati. Questo significa che una modifica a un "file" influenzerà anche un altro "file" inaspettatamente, o che i dati di un blocco sono logicamente parte di più file. fsck rileva che un blocco è referenziato da più inode. Chiederà all'utente come procedere: Copiare il blocco duplicato in una nuova posizione o svuotare uno degli inode coinvolti, rendendo il file di fatto "vuoto" o troncato o rimuovere uno degli inode coinvolti. - Blocchi Invalidi o Fuori Limite (Invalid Blocks or Out-of-Bounds Blocks). Un inode punta a un blocco di dati che è fuori dai limiti del file system (ad esempio, un blocco con un numero maggiore della dimensione totale del file system) o a un blocco che non dovrebbe essere allocato (es. blocco 0). ripristino: fsck contrassegna l'inode come danneggiato e tenta di rimuovere il riferimento al blocco invalido. Questo può portare alla troncamento del file o alla sua eliminazione se il blocco invalido era critico. - Inconsistenze nelle Bitmap. I file system UNIX utilizzano bitmap per tenere traccia dei blocchi liberi (bitmap dei blocchi) e degli inode liberi (bitmap degli inode): Blocco Marcato come Libero ma in Uso: fsck rileva che un blocco è referenziato da un inode (quindi è in uso), ma la bitmap dei blocchi liberi lo indica come libero. ripristino: fsck aggiorna la bitmap dei blocchi, marcando il blocco come in uso; Blocco Marcato come in Uso ma Libero: fsck rileva che un blocco non è referenziato da alcun inode (quindi è libero), ma la bitmap dei blocchi liberi lo indica come in uso. ripristino: fsck aggiorna la bitmap dei blocchi, marcando il blocco come libero. Questo può recuperare spazio su disco; Inode Marcato come Libero ma in Uso; Inode Marcato come in Uso ma Libero


SEZIONE 2: argomenti che si prestano a esercizi (algoritmi…):

  • algoritmi di scheduling, 3 - scheduling, p. 45, TDM
  • condizioni di deadlock e grafo di Holt, 4 - risorse, p. 14
  • algoritmo del banchiere, 4 - risorse, p. 44
  • paginazione, segmentazione e frammentazione, 5 - memoria, p. 23
  • allocazione dinamica di memoria, 5 - memoria, p. 23, TDM
  • algoritmi di rimpiazzamento, 5 - memoria, p. 69, TDM
  • disk scheduling, 6 - secondaria, p. 15, TDM
  • raid, 6 - secondaria, p. 25
  • allocazione, 7 - filesystem, p. 29, TDM
  • gestione spazio libero, 7 - filesystem, p. 43, TDM ___

SEZIONE 3: TDM

  • algoritmi di scheduling First Come, First Served -> Shortest Job First/Shortest Next CPU Burst First -> SJF approssimato non preemptive/preemptive -> Round Robin -> Round Robin (altre implementazioni) -> con priorita' statica/dinamica -> con aging -> con classi di priorita' -> Multilivello -> Real-Time hard/soft

  • algoritmi di rimpiazzamento Fifo -> MIN -> Least Recently Used -> a Stack -> Reference bit -> Additional Reference Bit Algorithm -> Second-chance (dell'orologio) -> Least Frequently Used

  • disk scheduling First Come, First Served -> Shortest Seek Time First -> LOOK (dell'ascensore) -> C-LOOK -> LOOK con sottocode

  • allocazione contigua -> concatenata -> FAT -> -> indicizzata -> i. (altre implementazioni) -> con concatenazione di blocchi indice -> con indice multilivello -> Unix -> miglioramenti -> pre-caricamento -> combinazione contigua (file piccoli) e indicizzata (grandi) (real world example: ext4)

  • gestione spazio libero Mappa di bit -> Lista concatenata -> Lista concatenata di blocchi


SEZIONE 4: domande per ripassare tutta la teoria:

in slide 1: arch-hw Q: cos'e' il DMA? Q: in che modo si possono gestire interrupt multipli? Q: perche' esiste la modalita' kernel e quella utente? cosa sono le syscall?

in slide 2: arch-sw Q: di cosa e' responsabile l'OS nei confronti della memoria principale? Q: di cosa e' responsabile l'OS nei confronti della memoria secondaria? Q: di cosa e' responsabile l'OS nei confronti del filesystem? Q: come possono essere suddivisi gli os in base alla loro struttura? perche' gli os hanno strutture diverse? quali sono i vantaggi dei diversi approcci? quale modello segue UNIX? Q: quali sono i tipi di kernel? quale problema risolvono i microkernel? Q: quali funzionalita' offre un microkernel? su cosa e' basata la comunicazione?

in slide 3: scheduling Q: cos'e' il PCB? quali informazioni contiene? Q: cos'e' lo schedule? Q: cos'e' un context switching? in quali fasi consiste? Q: modelli di multithreading. qual e' il migliore? Q: scheduler non-preemptive e preemptive. qual e' il vantaggio di quello non-preemptive? quale viene utilizzato oggi? Q: throughtput, turnaround Q: memorizza algoritmi (p. 46)

in slide 4: risorse Q: 2 metodi per deadlock detection Q: 4 metodi di deadlock prevention Q: teorema dell'algoritmo del banchiere. dimostrazione (da memorizzare)

in slide 5: memoria Q: cos'e' il binding? quando puo' avvenire? Q: frammentazione interna e esterna. come risolvere la f. esterna? Q: quali tipi di allocazione dinamica ci sono? Q: nell'allocazione dinamica, quanti tipi di selezione del blocco libero ci sono? Q: in cosa consiste la paginazione? Q: cos'e' il tlb? Q: cos'e' la segmentazione? Q: quali algoritmi di rimpiazzamento ci sono? Q: cos'e' il supporto tramite reference bit? Q: cos'e' l'algoritmo di allocazione? Q: cos'e' il trashing? e il working set?

in slide 6: secondaria Q: parametri dei dischi Q: algoritmi di gestione dei dischi Q: RAID: acronimo? tipi? Q: dimostrare la scrittura di RAID 4 necessita del coinvolgimento di soli 3 strip Q: cos'e' RAID 10? e RAID 01? e RAID 50?

in slide 7: filesystem Q: che cos'e' l'MBR? Q: che cos'e' il superblock? Q: tipi di allocazione di memoria ci sono per i file? Q: tipi di gestione dello spazio libero? Q: come funzionano le directories? qual e' il contenuto delle directory entries? Q: com'e' gestito il problema della lunghezza dei nomi dei file? Q: cos'e' fsck? R: una utility unix per verificare se le directory puntano a inode illegali, per "curare" incoerenza dovuta al caching Q: come funzionano i log?

in slide 8: sicurezza (materiale2324) Q: che cos'e' il salt? Q: che cos'e' l'ACL? Q: che cos'e' la capability?