Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Antonino Mazzeo » 24.I/O e Gestione dei dischi


Sommario

  • Dispositivi
  • Obiettivi di progetto del sistema di I/O
  • Tecniche di comunicazione di I/O
  • Architettura del sistema di I/O
  • I/O su disco e politiche di scheduling delle richieste
  • RAID

Introduzione

  • Classificazione in base all’uso:
    • Human readable, Machine readable, Comunicazione
  • Classificazione in base alla modalità di trasferimento:
    • A blocchi (dischi, nastri, …), A caratteri (tastiera, mouse, modem, rete, stampante…), Speciali (timer)
  • Supporto architetturale all’I/O
    • Bus e interfacce standard semplificano lo sviluppo del sistema di I/O, riducendo l’eterogeneità.
Supporto architetturale all’I/O

Supporto architetturale all'I/O


Tecniche di comunicazione di I/O

  • I/O programmato
    • Il processo attende (busy-wait) per il completamento dell’operazione di I/O
  • I/O Interrupt-driven
    • Viene invocato un comando di I/O
    • Il processore continua ad essere attivo in quanto il processo che ha invocato il comando viene sospeso
    • Il modulo I/O invia un interrupt quando ha terminato
  • Direct Memory Access (DMA)
    • Il DMA è in grado di controllare lo scambio di blocchi di dati tra la memoria principale ed il dispositivo di I/O
    • Il processore viene interrotto solo dopo che l’intero blocco dei dati è stato trasferito

Obbiettivi di progetto del sistema di I/O

  • Efficienza
    • La maggior parte dei dispositivi di I/O sono estremamente lenti se comparati alla memoria centrale
    • Le operazioni di I/O non devono inficiare le prestazioni del sistema
    • Rendere efficiente l’I/O significa anche rendere efficiente altri componenti del sistema operativo, ad esempio le attività di swapping
    • Minimizzare i tempi medi per soddisfare una richiesta di servizio
    • Massimizzare il numero di richieste servite nell’unità di tempo
    • Massimizzare l’utilizzo delle periferiche e al contempo della CPU
    • Minimizzare la varianza fra i tempi entro cui le richieste sono soddisfatte, privilegiando imparzialità e predicibilità
  • Generalità
    • Offrire un’interfaccia unica ed uniforme per l’esecuzione delle operazioni di I/O, nascondendo la maggior parte dei dettagli implementativi ed architetturali

Architettura del sistema di I/O

  • Responsabilità del livello indipendente dai dispositivi:
    • Naming, Buffering, Gestione dei guasti, Virtualizzazione delle periferiche, Allocazione dei dispositivi e spooling
  • Device Drivers
    • Tutto il codice che dipende dal dispositivo viene gestito dal driver del dispositivo.
    • Il compito di un driver è di accettare richieste astratte provenienti dal device-independent software e di controllare che queste siano eseguite!
  • Il contesto di esecuzione di un driver può essere sia il kernel del SO, sia uno specifico processo
Architettura del sistema di I/O

Architettura del sistema di I/O


Considerazioni sui driver

  • Ogni driver ha sempre bisogno di una procedura del kernel mediante la quale esso possa ’sospendersi’ una volta che sia iniziata l’operazione di I/O.
  • Nel modello in cui il processo driver è direttamente accessibile agli altri processi, essa viene implementata a mezzo di una WAIT su di un semaforo privato (ogni driver possiede il proprio semaforo privato)
  • Per uscire poi da questa WAIT, occorre trasformare l’interrupt hardware generato dalla periferica in un interrupt software che sia in grado di sbloccare il driver. Basta inserire una SIGNAL nel relativo ramo della ISR per risvegliare il corrispondente processo driver

I/O Buffering

  • I processi tipicamente devono attendere il completamento di un’operazione di I/O prima di procedere
  • Il sistema Operativo alloca un buffer in memoria principale (buffer singolo) per memorizzare le richieste di I/O e lo utilizza per effettuare l’operazione di I/O
  • Si consideri T= tempo di trasferimento di un blocco, C= tempo di calcolo tra due richieste di input, M = tempo di trasferimento di un blocco verso il buffer. Il tempo di esecuzione del blocco è:

Senza Buffer: T+C;

Con Buffer: max[T,C]+M, con M<

Schema Buffering

Schema Buffering


I/O sul disco

  • Tra le attività di I/O, quella relativa ai dischi è la più critica per le prestazioni di un SO.
  • Rispetto alla memoria i dischi hanno una capacità estesa e delle prestazioni ridotte, non sono volatili e costano meno
  • Parametri Prestazionali:
    • Tempo di seek: tempo di ricerca medio per posizionare la testina sulla traccia desiderata
    • Ritardo di rotazione: tempo necessario affinché il disco effettui mezza rotazione
    • Tempo di trasferimento: tempo necessario alla rotazione di una traccia moltiplicato per la frazione della traccia da percorrere
  • Tempo di trasferimento totale
    • T = Ts + Trl + Ttr
Schema esplicativo (I/O su disco)

Schema esplicativo (I/O su disco)


Politiche di Scheduling del disco

  • First-in, first-out (FIFO):Si comporta male (prestazioni basse) nelle situazione in cui si devono gestire un alto numero di richieste
  • Priorità: come FIFO, ma i processi richiedenti sono organizzati in code diverse a seconda della loro priorità
  • Last-in, first-out (LIFO): Viene servita la richiesta più recente al fine di minimizzare il movimento dei braccetti del disco
  • Shortest Service Time First: Seleziona la richiesta di I/O che richiede il minimo movimento dei braccetti del disco dalla posizione corrente
  • SCAN (Algoritmo dell’ascensore): I bracci del disco si muovono solo in una direzione, soddisfacendo tutte le richieste pendenti fintanto che non si raggiunge l’ultima traccia; la direzione viene poi invertita
  • C-SCAN (Circular SCAN): Applica lo scanning secondo un’unica direzione; quando viene raggiunta l’ultima traccia, i braccetti del disco portano la testina alla parte opposta del disco, ricominciando così lo scanning
  • N-step-SCAN: segmenta la coda di richieste al disco in più code di lunghezza N; le N code sono processate una alla volta usando SCAN;
  • FSCAN: Due code; Una di queste è dedicata alle nuove richieste entranti

RAID (Redundant Array of Independent Disks)

  • Un insieme di dischi visto dal sistema come un’unica unità logica
  • Aumentano il throughput e l’affidabilità. Strategie di distribuzione dei dati:
  • RAID 0: Alta frequenza di I/O requests; Load Balancing; Le prestazione dipendono anche dalla dimensione delle strip; Dischi richiesti = N
  • RAID 1: Ridondanza dei dati con tecnica di mirroring; Buon Livello di affidabilità; Buon Throughput; Dischi richiesti = 2N, 3N , ….
  • RAID 2: Ridondanza dei dati con codifica di Hamming; Buon Livello di affidabilità; Alta capacità di trasferimento; Dischi richiesti = N+m
  • RAID 3: Ridondanza dei dati con bit di parità; Buon Livello di affidabilità; Alta capacità di trasferimento; Dischi richiesti = N+1
  • RAID 4: Ridondanza dei dati con bit di parità per blocco; Buon Livello di affidabilità; Dischi richiesti = N+1
  • RAID 5: Ridondanza dei dati con bit di parità per blocco distribuiti su più dischi; Buon Livello di affidabilità; Dischi richiesti = N+1
  • RAID 6: Ridondanza dei dati con doppio bit di parità per blocco distribuiti su più dischi; alta affidabilità; peggiori prestazioni in scrittura. Dischi richiesti = N+2

Prossima lezione

Il File System

I materiali di supporto della lezione

P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap.5)

Input/Output

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93