You are on page 1of 5

I Compendi OpenSource

di Giacomo Marciani

Teoria, Formulario e Suggerimenti Pratici

Sistemi Operativi

Sistemi di I/O

Una periferica1 un componente del calcolatore che realizza funzioni aggiuntive rispetto alla semplice esecuzione dei programmi, attraverso lo scambio di segnali con la CPU, il quale avviene lungo il bus di sistema. Un bus un fascio di linee di comunicazione con un protocollo rigorosamente denito2 . La periferica si interfaccia con il calcolatore attraverso un'interfaccia realizzata da tre livelli:
interfaccia hardware: connessione e adattamento della periferica al

bus, realizzata dai controllori e dagli adattatori. porte.

interfaccia logica: programmazione della periferica, realizzata dalle interfaccia software: utilizzo della periferica da parte del kernel, re-

alizzata dal sottosistema di I/O e dai driver di periferica.

Una porta tipicamente costituita dai seguenti registri di controllo: datain, data-out, status e control. Un controllore un circuito integrato nel calcolatore che regola il funzionamento di una porta3 , un bus o un dispositivo4 . Un adattatore un controllore realizzato come circuito esterno inseribile nel calcolatore. L'interazione tra processore e controllore si realizza tramite il mutuo accesso ad una stessa porta, la cui logica di accesso denita dal protocollo di handshaking, ed regolata dalle modalit di gestione delle periferiche.
Spazio di indirizzamento di I/O Lo spazio di indirizzamento di I/O l'insieme di indirizzi utilizzabili per operare con un dispositivo. Esistono due tipi di indirizzamento:
indirizzamento isolato: lo spazio di indirizzamento di I/O separato

ed indipendente dallo spazio di indirizzamento della memoria centrale, i registri di controllo del dispositivo hanno cio indirizzi propri e l'ISA prevede istruzioni macchina speciche per l'accesso a questo spazio. I/O mappato nello spazio di indirizzamento della memoria centrale, i registri di controllo del dispositivo vengono fatti corrispondere ad indirizzi mappati; si utilizzano le stesse istruzioni macchina sia per accedere a questo spazio che allo spazio della memoria centrale.
e
metodo di con-

indirizzamento mappato in memoria5 : lo spazio di indirizzamento di

nessione. 3 un controllore di porta

1 anche detto dispositivo periferico, o dispositivo. 2 i bus dieriscono tra loro per metodo si segnale, velocit, throughput

dispone tavolta di un circuito integrato FIFO che possa contenere parecchi byt, cos da espandere le sua capacit di gestione oltre la dimensione del registro di controllo data. 4 alcuni dispositivi sono dotati di propri controllori incorporati. 5 anche detto memory-mapped I/O.

Handshaking, Polling, Interrupt e DMA Il protocollo di handshakdenisce la logica di accesso ad una porta, protocollando dunque la comunicazione tra CPU e controllore. Esso consiste nei seguenti passi:
ing6

1. la CPU legge lo stato del controllore. 2. quando il controllore pronto, la CPU scrive il comando da eseguire e i dati, poi comunica di aver nito la sua richiesta. 3. quando il controllore si accorge che una richiesta stata inoltrata, comunica di essere impegnato. 4. il controllore legge comandi e dati, ed esegue l'operazione richiesta. 5. il controllore notica il successo o gli eventuali errori dell'operazione eseguita, poi comunica di essere pronto e di non avere richieste inoltrate. Le modalit di gestione delle cessore con i controllori, e sono:
periferiche

regolano l'interazione del pro-

polling7 : la CPU legge ciclicamente lo stato del controllore, e non pro-

cede in altre interazioni no a che questo non pronto, comportando dunque uno stato di busy-waiting.

interrupt: evita la busy-waiting del processore attraverso il meccan-

simo delle interruzioni 8 . Il controllore invia un segnale di interruzione al processore per informarlo che pronto, allora avviene l'handshaking. di dati, si utilizza un canale DMA10 , il quale realizza il trasferimento diretto dei dati tra memoria centrale e periferica, senza l'ausilio del processore, anzi sottraendogli temporaneamente il controllo del bus di memoria. L'interazione con i controllori mediata dunque da un controllore DMA, il quale riceve comandi strutturati da parte del processore, si occupa dell'handshaking programmando pi trasferimenti alla volta. Questa gestione comporta la sottrazione di cicli 11 .

direct memory access (DMA)9 : per il trasferimento di grandi quantit

un evento asincrono. Un'interruzione un segnale che induce un handling, ovvero il salto automatico ad una interrupt-handler routine. Le interruzioni si distinguono in due classi: interruzioni mascherabili, e non mascherabili ; e sono caratterizzate da un livello di priorit. I segnali di interruzione giungono al processore tramite le linee di richiesta di interruzione, una per le interruzioni mascherabili, e una per quelle non mascherabili. Il meccanismo delle interruzioni realizza l'handling attraverso il vettore delle interruzioni con interrupt chaining. 9 ovvero accesso diretto alla memoria. Anche detto bus mastering per il fenomeno della sottrazione di cicli. 10 un canale DMA l'insieme dei registri e controllori DMA dedicati ad un singolo trasferimento. 11 la sottrazione dei cicli il fenomeno per cui quando il controllore DMA prende possesso del bus di memoria, la CPU temporaneamente impossibilitata ad accedere alla memoria centrale, pur potendo accedere alle proprie cache.

6 anche detto protocollo di negoziazione. 7 anche detta programmed I/O (PIO), o gestione a controllo di programma. 8 il meccanismo delle interruzioni permette al processore di rispondere ad

di controllo DMA:

L'interfaccia logica di un canale DMA costituita dai seguenti registri status, base address, lenght, command, location.

Interfacce di I/O Una interfaccia un insieme di funzioni che incapsulano le caratteristiche speciche di un oggetto. Un driver di periferica un modulo del kernel che incapsula le caratteristiche speciche di una data periferica, di modo da fornirne un'interfaccia di I/O della periferica, ovvero un'interfaccia uniforme. Quindi lo scopo dello strato dei driver di periferica di nascondere al sottosistema di I/O del kernel le dierenze fra i controllori di periferica, rendendolo cos indipendente dalla struttura sica della periferica. Le interfacce di I/O delle periferiche si distinguono per:
trasferimento :

          

trasferimento a flusso di caratteri trasferimento a blocchi

accesso :
accesso sequenziale accesso diretto

prevedibilit del tempo di risposta:


trasferimento sincrono trasferimento asincrono

condivisione:
periferica riservata periferica condivisa

direzione :
lettura scrittura lettura e scrittura

Le interfacce di I/O delle periferiche possono inoltre supportare le seguenti classi distinte di chiamate di sistema di I/O :
bloccante: il processo chiamante viene messo nello stato di attesa no al

ritorno della chiamata di sistema, ovvero no al completamente dell'I/O; per poi essere messo nella ready-queue per riprendere l'esecuzione. Tipicamente queste chiamate di sistema realizzano l'I/O sincrono. senza attendere il completamento dell'I/O. 4

non bloccante: il processo chiamante continua la propria esecuzione

Sottosistema di I/O Il sottosistema di I/O il sottosistema del kernel che realizza le operazioni di I/O e si occupa della gestione delle periferiche. I servizi oerti da questo sottosistema sono realizzati a partire dalle periferiche e dai relativi driver, e comprendono anche le misure di sicurezza per la salvaguardia dell'I/O. I principali servizi oerti sono:
scheduling di I/O buffering: un buffer un'area di memoria transitoria che contiene dati

durante un trasferimento tra due periferiche o tra un'applicazione e una periferica, in modo da gestire la dierenza di velocit tra il produttore e il consumatore di un usso di dati. Il buering viene impiegato nelle seguenti forme:

doppia bufferizzazione:

i trasferimenti tra entit con ampio scarto di velocit sono mediati da un doppio buering. Questa soluzione svincola dunque il produttore dal consumatore, semplicando la loro sincronizzazione.  bufferizzazione dei blocchi: il trasferimento di blocchi viene frammentato in un usso di pacchetti buerizzati.  semantica delle copie: impone e garantisce il vincolo di coerenza tra i dati trasferiti nella periferica e quelli contenuti nel buer al momento della chiamata di sistema, indipendentemente da ogni successiva modica. Il trasferimento avviene dunque, prima tra uno user buer e un kernel buer, poi dal kernel buer alla periferica: quindi l'eettivo trasferimento avviene tra la memoria del kernel e la periferica.
caching: una cache un'area di memoria transitoria che mantiene copie

di dati secondo il principio di localit, in modo da renderli rapidamente accessibili. ica che accetta solo ussi di dati non intercalati. Questa attivit gestita da un demone, o da kernel thread ; in entrambi i casi il sistema operativo fornisce un'interfaccia di controllo per la gestione utente delle code. previsto dalla specica periferica.
codici di rilevazioni multilivello12 ,

spooling: uno spool un buer contenente dati destinati ad una perifer-

gestione degli errori: il sistema operativo gestisce gli errori secondo

secondo il livello di dettaglio

protezione di I/O: protegge il sistema da operazioni di I/O illegali, de-

nendo come privilegiate tutte le istruzioni di I/O, cosicch possano essere impartite solo passando al vaglio del kernel. Protegge inoltre sia gli spazi di indirizzamento di I/O mappati in memoria che quelli isolati, attraverso inibizione dell'accesso utente o assicurandovi un locking esclusivo.
detti multilevel sense keys.

12 anche

You might also like