Sistemi operativi
per il corso di diploma universitario in
Ingegneria Elettronica
anno accademico 1999/00

Agenda delle lezioni dell'A.A. 1999-00

Posizione originaria: <URL:http://fly.cnuce.cnr.it/didattica/agenda99.html>.

Oltre che in HTML, l'agenda è disponibile anche in Postscript e PDF.

Ultima modifica: 2001/11/21.

Abbreviazioni usate nell'agenda:
:2L
2 ore di lezione (sviluppo di nuovi argomenti)
:1E
1 ora di esercitazioni (esercizi in classe)
:1S
1 ora di laboratorio (pratica in classe o in laboratorio)
T: 9.1, 9.5…; S:7.6; P: 2.1-2.12
Argomenti trattati nel testo di riferimento Tanenmbaum, capitoli 9.1 e tutto il 9.5, in Silberschatz, capitolo 7.6, e nel manuale PSOS, da pagina 2-1 a pagina 2-12.

Cos'è un sistema operativo

T: 1, S: 1-3

Boot, compilazione, link, caricamento, esecuzione

T: 3.1.3, 3.7, 8.3.2; S: 3.8, 8.1…, 13.3.2

I processi

T: 2.1…; S: 4.1…, 4.3…

Scheduling

T: 2.4, 7.5.1; S: 4.2…, 21.5…, 22.4, 22.4.1&hellip, 22.5.2;; P: 2.1-2.12

[11:2E] Esercitazione: struttura di un file oggetto, dettagli sulle tabelle di rilocazione e dei simboli.

[12:2E] Esercitazione: struttura di un file eseguibile, esempio di file ELF.

[13:1E] Prova in itinere: rispondere a tre domande scritte sul programma svolto sinora.

Sincronizzazione: concetti, mutua esclusione

T: 2.2.1, 2.2.2, 2.2.3, 2.2.4; S: 6.1, 6.2, 6.3

Sincronizzazione: semafori e monitor

T: 2.2.5, 2.2.7; S: 6.4…, 6.5.1, 6.5.2, 6.7(l'inizio); P: 2.49-2.50

Sincronizzazione e comunicazione: messaggi

T: 2.2.8, 2.2.9; S: 4.6.1, 4.6.2, 4.6.3, 4.6.4; P: 2.44;2.46

Condizioni di stallo (deadlock)

T: 6.1, 6.2, 6.3, 6.4.3, 6.6, 6.7.1; S: 7.1, 7.2, 7.3, 7.4, 7.7

Panoramica sulla gestione della memoria

T: 3.1, 3.1.1, 3.1.3, 3.2, 3.2.1, 3.2.3, 3.2.5, 3.3, 3.3.1, 3.3.2 (prima parte), 3.4.7, 3.6.1; S: 8.2, 8.3, 8.4…, 8.5.1, 8.5.2…, 9.1, 9.4, 9.5.3, 9.7, 9.7.1, 9.8.1

Memoria virtuale: paginazione

T: 3.6.4; S: 8.5.5, 9.2, 9.3, 9.8.5, 9.8.6

Esercizio: in quali casi è generata un'eccezione di pagina mancante?

Esercizio: mentre l'accesso ad una pagina non valida genera un'eccezione di errore si bus (bus error), l'accesso ad una pagina non presente genera un'eccezione di pagina mancante (page fault), che si usa per gestire la paginazione su domanda. Descrivere più edttagliatamente possibile la sequenza di azioni che porta alla sostituzione di una pagina dallo swap.

  1. Accesso a pagina valida ma non presente, con diritti corretti.
  2. La MMU genera un page fault.
  3. La CPU gestisce l'eccezione e chiama il gestore.
  4. Il gestore verifica che ci sia un frame libero.
    1. Se non c'è un frame libero, si decide quale pagina va liberata.
      • Se la pagina da liberare è sporca (modificata), si inizia il suo trasferimento sullo swap.
      • Cambio di contesto, la CPU va ad un altro processo. Il primo processo è bloccato in attesa non interrompibile.
      • Arriva un interrupt che segnala la fine del trasferimento della pagina sporca sul disco.
    2. Che sia avvenuto lo swap o no, la pagina da liberare ora è pulita (non modificata): è marcata come non valida e il frame corrispondente è marcato come libero.
  5. La pagina che ha generato il page fault poteva essere di memoria non inizializzata mai acceduta prima. In questo caso, non si fa niente. Oppure deve essere letta dal file system (codice o dati) o dallo swap, comunque dal disco.
    1. Se è sul disco, si inizia il trasferimento da disco.
    2. Cambio di contesto, la CPU va ad un altro processo. Il primo processo è bloccato in attesa non interrompibile.
    3. Arriva un interrupt che segnala la fine del trasferimento da disco.
  6. La pagina viene marcata come valida e non modificata, e associata al frame che era stato liberato, e che ora è marcato non libero.
  7. Il processo che aveva generato il page fault è sbloccato e messo nella coda dei pronti.

[24:2E] Esercizio: in quali casi è generata un'eccezione di errore di bus?

Esercizio: in quali casi è generata un'eccezione di violazione di segmentazione?

Esercizio: come sono implementate le operazioni shmget, shmat e shmdt nel kernel di Unix?

Esercizio: come si implementano le librerie condivise (solo dal punto di vista dell'uso della memoria virtuale)?

Esercizio: come è implementato l'algoritmo di invecchiamento delle pagine che si usa per scegliere la pagina da sostituire?

[25:1E] Prova in itinere: rispondere a tre domande scritte sul programma svolto sinora.

[26:2E] Esercizi: commenti alle domande fatte nella prova in itinere.

Chiamate di sistema e di libreria per gestire la memoria

T: 3.7; S: 8.6…, 8.7, 9.5.4…, 9.6, 9.6.1

Device

T: 5.2…; S: 12.3…

I file system

T: 4.1, 4.1.4, 4.3.1 (senza I-nodes), 4.3.2 (solo MS-DOS), 4.5.2, 5.3.2 (ultimo capoverso); S: 10.1.1, 10.1.2, 11.2.2, 11.2.3, 10.4.2, 10.4.4, 13.5

Esercizio: qual è la sequenza di eventi che ha luogo quando si alloca memoria con una chiamata di realloc?

Laboratorio: progetto di un device driver per il chip LANCE

Esercizio: qual è la sequenza di eventi che ha luogo quando si apre un file in un sistema operativo di tipo Unix? E quando si fa una read?

Esercizio: apro un file in lettura e scrittura e ottengo un errore perché non ho diritti di scrittura. Cosa è successo esattamente?

[33:1E] Prova in itinere: rispondere a tre domande scritte sul programma svolto sinora.