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