14 Struttura della memoria
secondaria
• Struttura del disco • Scheduling del disco • Gestione del disco
• Gestione dello spazio di swap • Affidabilità
2
14.1 Struttura del disco
3
14.1 Struttura del disco
• I dischi sono indirizzati come un array unidimensionale di blocchi logici =:= la più piccola unità di trasferimento dati.
• L’array unidimensionale di blocchi logici è tradotto in settori del disco sequenzialmente:
– Il settore 0 è il primo settore della prima traccia del cilindro più esterno.
– Poi si procede sulla stessa traccia, le altre tracce dello stesso cilindro, poi sul resto dei cilindri.
14.1 Struttura del disco
• In questo modo, è possibile tradurre un numero di blocco logico in un indirizzo di disco che specifica:
– un numero di cilindro
– un numero di traccia all’interno del cilindro – un numero di settore nella traccia
• In pratica, questa traduzione è molto più complicata e difficile
5
14.1 Struttura del disco
• Per prima cosa, i dischi possono avere settori difettosi che vengono nascosti dal meccanismo di traduzione
• Inoltre, il numero di settori per traccia non è costante
– più una traccia è lontana dal centro del disco, più è lunga, maggiore è il numero di settori che può contenere (fino al 40% in più di una traccia interna)
6
14.2 Scheduling del disco
• Il sistema operativo è responsabile dell’utilizzo efficiente dell’hardware
– per i dischi, questo significa avere basso tempo di accesso, e elevata bandwidth.
• Il tempo di accesso dipende da due componenti principali
– Seek time: il tempo impiegato per muovere le testine sulla traccia desiderata.
– Rotational latency: il tempo di attesa che il disco ruoti portando il settore sotto la testina.
14.2 Scheduling del disco
• Minimizzare il seek time per aumentare le prestazioni
• Seek time ≈ distanza della testina • Bandwidth: è il numero totale di byte
trasferiti, diviso per il tempo totale tra la prima richiesta di servizio e il
completamento dell’ultimo trasferimento.
8
14.2 Scheduling del disco
• Se il disco è disponibile, la richiesta è soddisfatta immediatamente
• Se il dispositivo è impegnato (a servire una richiesta) ogni nuova richiesta viene inserita in una coda di richieste pendenti per quel dispositivo
• Quando una richiesta è stata servita, il sistema operativo può scegliere quella successiva da servire
9
14.2 Scheduling del disco
• Esistono diversi algoritmo di scheduling delle richieste di I/O del disco.
• Le illustreremo utilizzando la seguente coda di richieste (numeri di cilindro) (0-199).
98, 183, 37, 122, 14, 124, 65, 67 • Supponiamo inoltre che la testina si
14.2.1 FCFS
Lo spostamento totale della testina è di 640 cilindri.
11
14.2.2 SSTF
• SSTF: shortest seek time first
• Sceglie la richiesta con il tempo di seek minimo dalla posizione corrente della testina.
• SSTF è una variante di SJF; quindi può causare starvation di alcune richieste.
12
14.2.2 SSTF
14.2.3 SCAN
• Il braccio del disco si muove dall’esterno verso il centro (e viceversa), servendo le richieste per i cilindri che attraversa. • Quando arriva ad un estremo del disco,
inverte la direzione e riprende il servizio • Anche chiamato algoritmo dell’ascensore.
14
14.2.3 SCAN
Lo spostamento totale della testina è di 208 cilindri.
15
14.2.4 C-SCAN
• Fornisce un tempo di attesa più uniforme di SCAN.
• La testina si muove da un estremo all’altro del disco, servendo le richieste.
• Quando raggiunge l’estremità del disco, torna immediatamente all’inizio senza servire richieste.
• In pratica, tratta i cilindri come una lista circolare.
14.2.4 C-SCAN
Lo spostamento totale della testina è di 183 cilindri.
17
14.2.5 C-LOOK
• Versione di C-SCAN
• Il braccio della testina va solo fino
all’ultima richiesta in ogni direzione invece che fino all’estremo del disco,servendo le richieste
• Poi inverte la direzione immediatamente e continua a servire le richieste.
• In pratica, non attraversa i cilindri che stanno agli estremi se non ci sono richieste
18
14.2.5 C-LOOK
14.2.6 Selezione di un algoritmo
• SSTF è diffuso e intuitivo
• SCAN e C-SCAN vanno meglio per sistemi con elevato numero di richieste.
• Le prestazioni dipendono dal numero e dal tipo di richieste.
• Le richieste possono dipendere anche dal metodo di allocazione del file system.
20
14.2.6 Selezione di un algoritmo
• Gli algoritmi dovrebbero essere scritti come moduli separati in modo da poterli sostituire quando necessario
• Sia SSTF che C-LOOK sono una scelta ragionevole come algoritmo di default
21
14.3 Gestione del disco
• Formattazione a basso livello, o
formattazione fisica =:= dividere il disco in
settori in modo da permettere al controllere di leggere e scrivere
• Per memorizzare i file, il sistema operativo necessita di salvare le proprie strutture dati sul disco.
– Partizionare il disco in uno o più gruppi di cilindri
14.3 Gestione del disco
• Sul disco principale c’è il Boot block che serve per inizializzare il sistema.
– Il boot block ha posizione fissa nella partizione – Il codice di bootstrap è memorizzato in ROM
oppure nel boot block
– Nel secondo caso si un programma detto
Bootstrap loader.
23
14.3 Gestione del disco
• I blocchi del disco possono essere difettosi o divenirlo in seguito all’uso (bad blocks) • I controller del disco mantengono una lista
dei blocchi difettosi e la aggiornano durante la vita del disco
• I controller moderni usano diversi metodi per gestire i blocchi difettosi
– sector sparing, sector slipping
24
14.4 Gestione dello spazio di Swap
• Spazio di Swap =:= la memoria virtuale usa spazio disco come estensione della memoria principale.
• Lo spazio di swap può essere preso dal file system o più comunemente risiedere su una partizione apposita
14.4 Gestione dello spazio di Swap
• Gestione dello spazio di Swap
– 4.3BSD alloca spazio di swap quando uin processo inizia; mantiene sia il text segment (il programma) sia il data segment.
– Il Kernel usa una swap maps per mantenere traccia dello spazio utilizzato.
– Solaris 2 alloca spazio di swap solo quando una pagina è rimossa dalla memoria fisica, e solo se è una pagina di dati.
26
14.5 Affidabilità dei dischi
• Diversi miglioramenti nelle tecniche di utilizzo dei dischi richiedono l’uso di dischi multipli che funzionino cooperativamente
• La tecnica di disk striping usa un gruppo di dischi come una unità di memorizzazione unica. • Lo schema RAID (redundant array of
inexpensive disks) aumenta le prestazioni e l’affidabilità memorizzando i dati in froma ridondante.
27
14.5 Affidabilità dei dischi
– Mirroring o shadowing mantengono dei duplicati di ciascun disco.
– Block interleaved parity usa molto meno spazio mantenendo informazioni di parità che permettono di ricostruire i dati originali a partire dalle informazioni disponibili