Guida Gestione delle periferiche (S.O.)

Stato
Discussione chiusa ad ulteriori risposte.

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
Ultima modifica da un moderatore:
Partiamo subito col dire che esistono diversi tipi di periferiche, anche di natura molto diversa tra loro, che si distinguono in base a diverse caratteristiche, alcune sono di sola lettura e altre di sola scrittura, oppure di lettura e scrittura, altre ancora condivise e cosi' via!

Il sistema operativo deve fornire astrazione e virtualizzazione delle periferiche, fornendo all'utente un'interfaccia comune con cui interagire con esse, nascondendone i dettagli implementativi.

E' proprio a questo scopo che il software di gestione delle periferiche e' strutturato in tre strati:

1) Gestione del canale di comunicazione
2) Device Depended Driver (DDD)
3) Device Indipended Driver (DID)

La gestione del canale di comunicazione deve rendere trasparente la gestione della connessione alla particolare periferica, indipendentemente dal modo di gestione previsto (memory mapped, interrupt, DMA)

Lo strato DDD deve astrarre la tipologia di dispositivo, fornendo un'interfaccia indipendente dal particolare modello e produttore, per cui, accedendo dall'esterno a tale strato, vedremo ad esempio un unico monitor, un'unica tastiera e cosi' via.
Il linguaggio con cui impartire comandi o ricevere messaggi e informazioni di errore diviene unico per una data tipologia di periferica.

Lo strato DID innalza ulteriormente il livello di astrazione, gestendo in modo unitario una qualsiasi periferica, quindi ponendo un'interfaccia comune che riassume le varie tipologie esposte dal DDD.

Le funzioni di gestione della periferica sono:

- Schedulazione
- Bufferizzazione
- Caching
- Spooling
- Locking

Alle varie periferiche possono giungere piu' richieste da una o piu' processi in esecuzione, pertanto occorrera' schedularle mettendole in una coda di richieste, generalmente di tipo FIFO, o scegliendo tra le migliori politiche disponibili al fine di massimizzare l'efficienza d'uso della periferica.

La bufferizzazione consiste nel porre i dati in invio o ricezione in un buffer, posto in una zona di memoria centrale invece che inviarli o riceverli direttamente.

I vantaggi sono:

- adattamento alle diverse velocita' di trasmissione tra sorgente e destinatario;
- adattamento nel caso in cui sorgente e destinatario trasferiscano i caratteri singolarmente o a blocchi.

Il caching conserva una copia dei dati letti da una periferica in modo che, ad una successiva richiesta di lettura degli stessi dati, non occorra nuovamente accedere alla periferica, ma solamente in memoria.

Lo spooling e' usato per le periferiche condivise ed ha lo scopo di disaccoppiare la richiesta di emissione di dati verso la periferica dell'effettiva scrittura sulla periferica stessa.
Quando un processo manda un documento in stampa, tale processo non verra' direttamente la periferica, bensi' lo spooling, evitando di attendere ulteriormente.

Nel caso del caching, i dati vengono salvati in memoria centrale, mentre con lo spooling, spesso vengono salvati sul disco.

Il loocking e' usato invece per realizzare un accesso mutuamente esclusivo ad una periferica.

Al fine di ottimizzare le prestazioni nell'I/O e' opportuno:

1) ridurre i cambi di contesto;
2) ridurre il numero di copie di dati;
3) avere sempre un numero adeguato di processi nello stato di ready to run in modo da eliminare i tempi morti;
4) far in modo che la CPU lavori quando vi sono in corso operazioni di I/O.

A questo punto, finalmente, posso rimandarvi alla lettura sul file system, di cui avrei dovuto scrivere solo adesso, non chiedetemi perche' l'abbia fatto prima, boh cosi'!

Quindi, adesso e' tempo di leggere questa: http://www.inforge.net/community/in...os-e-file-system-di-un-sistema-operativo.html

Per poi continuare l'argomento discutendo di:

- Memoria virtuale;
- Protezione dei file;
- Gestione della memoria paginata

Di cui scrivero' comunque a breve, almeno chiudo con la panoramica generale sul funzionamento di un sistema operativo, per poi introdurre altri argomenti allettanti :p

Ma torniamo a noi, dopo questa breve panoramica vi rimando a qualche link interessante per approfondire o semplicemente per chiarire alcuni argomenti:

- http://www.cs.princeton.edu/courses/archive/fall09/cos318/lectures/Device.pdf
- La gestione delle periferiche
- http://www.di.unito.it/~zacchi/biologia/so-periferiche.pdf
- Spool
- Memory-mapped I/O
- Direct Memory Access
- Interrupt

STAY TUNED!
 
  • Mi piace
Reazioni: Asahi
Stato
Discussione chiusa ad ulteriori risposte.