Gestione I/O e mem secondaria

Dispositivi a blocchi / caratteri

I dati vengono letti o scritti a blocchi (512-1024 byte) Raw IO (op di read, write e seek per blocchi) Accesso tramite filesystem (op di read write e seek su file), il diver fornisce solo accesso raw Accesso tramite memory-mapped I/O (il contenuto di un file viene mappato in mem, l'accesso avviene tramite istruzioni di load/store del processore)

Interfaccia di comunicazione a caratteri

  • i dati vengono letti/scritti un carattere alla volta
  • raw I/O
    • operazioni di get/put di un singolo carattere
  • bufferizzazione
    • lettura/scrittura di “una linea alla volta”

Tecniche di gestione dei dispositivi di I/O

  • buffering
  • caching
  • spooling
  • I/O scheduling

Tre motivazioni per il buffering  per gestire una differenza di velocità tra il produttore e il consumatore di un certo flusso di dati  per gestire la differenza di dimensioni nell'unità di trasferimento  per implementare la “semantica di copia” delle operazioni di I/O

Caching  mantiene una copia in memoria primaria di informazioni che si trovano in memoria secondaria  è differente dal buffering  nel buffer si trova l'unica istanza di un'informazione  la cache mantiene la copia di un'informazione

Spool  è un buffer che mantiene output per un dispositivo che non può accettare flussi di dati distinti  ad esempio, stampanti

SSD

Caratterisstiche principali:

  • Non hanno fragilità meccaniche
  • Consumano meno energia dei dischi rotazionali
  • Hanno un numero massimo di cicli di scrittura
  • Velocità lettura > velocità scrittura
  • Si legge a blocchi, si scrive a “banchi” (molti blocchi insieme)
  • Accesso uniforme su tutto lo spazio di memoria

Dischi

un disco è composto da un insieme di piatti, suddivisi in tracce, le quali sono suddivise in settori

I dischi sono caratterizzati da tre parametri fondamentali:

  • $r$: la velocità di rotazione, espressa in rpm (revolutions per minute)
  • $T_s$: il tempo di seek, ovvero il tempo medio necessario affinchè la testina si sposti sulla traccia desiderata
  • $V_r$: la velocità di trasferimento, espressa in byte al secondo

Il tempo di accesso:

  • è il tempo necessario per leggere un settore del disco, composto da tempo di seek, ritardo rotazionale e tempo di trasferimento

Ritardo rotazionale:

  • il tempo medio necessario affinchè il settore desiderato arrivi sotto la testina
  • è uguale a $1 / 2r$

Transfer time:

  • dipende dalla quantità di dati b da leggere (supponendo che siano contigui sulla stessa traccia) è uguale a $b/V$

Disk Scheduling

Gestione software dei dischi

  • il gestore del disco può avere numerose richieste pendenti, da parte dei vari processi presenti nel sistema
  • il sistema sarà più efficiente se le richieste pendenti verranno evase seguendo un ordine che minimizza il numero di operazioni che richiedono molto tempo (e.g. seek)

Valori tipici

  • tempo di seek: 8-10 ms
  • velocità rotazionale: 5400, 7200, 10000 rpm

FCFS

First Come, First Served (altrimenti detta FIFO) è una politica di gestione fair, non minimizza il numero di seek, non può mai generare starvation memoria_secondaria_2026-03-18_13-21-36

SSTF

Shortest Seek Time First, seleziona la richieste che prevede il minor spostamento della testina dalla posizione corrente. Nel caso di equidistanza, la direzione viene scelta casualmente. Può provocare starvation

memoria_secondaria_2026-03-18_13-22-45

LOOK

Detto anche algoritmo dell'ascensore Ad ogni istante, la testina è associata ad una direzione, la testina si sposta di richiesta in richiesta, seguendo la direzione scelta. Quando si raggiunge l'ultima richiesta nella direzione scelta, la direzione viene invertita e si eseguono le richieste nella direzione opposta

Caratteristiche

  • è efficiente
  • il tempo medio di accesso al disco non è omogeneo; sono privilegiate le tracce centrali
  • è esente da starvation (parzialmente)

memoria_secondaria_2026-03-18_13-24-16

C-LOOK

Ha lo stesso principio di funzionamento del metodo LOOK, ma la scansione del disco avviene in una sola direzione. Quando si raggiunge l'ultima richiesta in una direzione, la testina si sposta direttamente alla prima richiesta.

memoria_secondaria_2026-03-18_13-25-17

LOOK e C-LOOK

Problema E' possibile che il braccio della testina non si muova per un periodo considerevole di tempo (e.g., se un certo numero di processi continua a leggere sullo stesso cilindro)

Soluzione La coda delle richieste può essere suddivisa in due sottocode separate. Mentre il disk scheduler sta soddisfacendo le richieste di una coda, le richieste che arrivano vengono inserite nell'altra. Quando tutte le richieste della prima coda sono state esaurite, si scambiano le due code.

RAID

Problema

  • la velocità dei processori cresce secondo la legge di Moore, la velocità dei dispositivi di memoria secondaria molto più lentamente.

Considerazioni

  • per aumentare la velocità di un componente, una delle possibilità è quella di utilizzare il parallelismo, l'idea è quella di utilizzare un array di dischi indipendenti, che possano gestire più richieste di I/O in parallelo. Dobbiamo però garantire che i dati letti in parallelo risiedano su dischi indipendenti

RAID: Redundant Array of Independent Disks

Standard per l'uso di piu dischi in parallelo, consiste in 7 schemi diversi (0-6) che rappresentano le diverse architetture di distribuzione dei dati.

Caratteristiche comuni ai sette schiemi:

  • un array di dischi viene visto dal so come un solo singolo disco logico
  • dati distribuiti tra i vari dischi dell'array
  • la capacita' ridondante dei dischi puo essere usata per mem informazioni di parita' che garantiscono il recovery dei dati in caso di guasti.

Nota sui guasti: usare piu dischi contemporaneamente aumenta la prob di guasto. RAID offre meccanismi di parita' per contrastare questo problema

RAID 0 (striping)

No meccanismi di ridondanza. I dati vengono distribuiti tra i vari dischi. Vantaggi:

  • se due richieste di I/O riguardano blocchi indipendenti di dati, c'è la possibilità che i blocchi siano su dischi differenti
  • le due richieste possono essere servite in parallelo

*Striping:

  • il sistema RAID viene visto come un disco logico
  • i dati vengono suddivisi in strip
  • strip consecutivi sono distribuiti su dischi diversi (aumento performance)

memoria_secondaria_2026-03-19_15-45-29

Performance:

  • per grandi trasferimenti di dati
  • per un gran numero di richieste indipendenti: efficiente in particolare se la quantità di dati richiesta è paragonabile alla dimensione degli strip

Ridondanza: nulla

RAID 1 (mirroring)

Differisce dagli schemi (1-6) per come la ridondanza e'gestita, ovvero duplicando tutti i dati su due insiemi indipendenti di dischi. Il sistema e' basato su striping ma uno strip viene scritto su due dischi diversi Il costo per unita' di mem raddoppia memoria_secondaria_2026-03-19_15-51-39

Performance:

  • Una richiesta di lettura puo essere servita da uno qualsiasi dei dischi che ospitano il dato
  • una richiesta di scrittura deve essre servita da tutti i dischi che ospitano il dato (dipende dal disco con tempo di seek maggiore)

Ridondanza:

  • il recovery e'molto semplice: se un disco si guasta i dati sono accessibili dall'altro disco. E' necessario sostituire il disco guasto e fare una copia del disco funzionante

RAID 4

Si usa il meccanismo di data striping con strip relativamente grandi Strip di parita':

  • viene calcolato uno strip di parita' a partire dagli stri di dati corrispondenti, calcolato bit per bit
  • lo strip di parita' viene posto sul disco di parita'

memoria_secondaria_2026-03-19_15-57-31

Lettura (in assenza di guasti)

  • si individua lo strip corrispondente e si effettua la lettura dello strip

Lettura (in presenza di guasti)

  • si individua lo strip corrispondente; se il disco corrispondente è guasto, si effettua la lettura di tutti gli strip rimasti e tramite il disco di parità di ottiene lo strip mancante

Scrittura (in assenza di guasti)

  • quanti strip devono essere coinvolti?
  • a prima vista, si direbbe tutti (lo strip dati da scrivere, tutti gli altri strip da leggere, lo strip di parità in scrittura)

memoria_secondaria_2026-03-19_16-09-15

RAID 5

Come RAID 4 ma i blocchi di parita' sono sparsi tra i vari dischi Il vantaggio e'che non esiste un disco di parita' che diventa un bottleneck memoria_secondaria_2026-03-19_16-15-25

RAID 6

Come RAID 5 ma si usano due strip di parita' invece di uno il vantaggio è che non esiste un disco di parità che diventa un bottleneck

memoria_secondaria_2026-03-19_16-18-00

RAID 6

Come RAID 5, ma si utilizzano due strip di parità invece di uno Aumenta l'affidabilità (è necessario il guasto di tre dischi affinché i dati non siano recuperabili)