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