14 Struttura della memoria secondaria 14.1 Struttura del disco 14.1

1
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.
1
4
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.
2
7
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
posizionata sul cilindro 53
3
10
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
Lo spostamento totale della testina è di 236 cilindri.
4
13
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.
5
16
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
Lo spostamento totale della testina è di 153 cilindri.
6
19
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
– Formattazione logica: crea un file system.
7
22
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
8
25
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
9