Vai alla Home Page About me Courseware Federica Living Library Federica Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Marco Lapegna » 5.La gestione dell'I/O


Dispositivi di I/O

I dispositivi di I/O sono l’interfaccia del calcolatore verso il mondo esterno.

Esiste una incredibile varietà di dispositivi di I/O.

  • Dispositivi classici di I/O
    (tastiera, schermo, mouse)
  • Dispositivi di memorizzazione
    (Dischi rigidi, nastri, CDROM)
  • Dispositivi di rete
    (Scheda di rete, radio, linea seriale)
  • Dispositivi multimediali
    (Videocam, microfono, )

Architettura di un sistema di calcolo

I vari dispositivi interagiscono con le altre componenti del sistema attraverso un bus.
Ogni dispositivo è governato da un controllore (controller) che rappresenta l’interfaccia del dispositivo con il sistema.


Controllori dei dispositivi

Ogni controller ha:

  • un suo buffer locale;
  • Registri di controllo.

Le operazioni di I/O avvengono dal dispositivo verso i buffer locali e viceversa.
La CPU sposta i dati tra la memoria e il buffer.


Esempio

3 registri di controllo

  • status (read only) indica lo stato del dispositivo:
    • 1 dispositivo occupato;
    • 0 dispositivo pronto ad eseguire un comando.
  • command (write) indica il comando da eseguire:
    • Read / write.
  • control (write) indica che un comando è pronto nel registro command:
    • 1 comando da eseguire presente nel registro command;
    • 0 nessun comando da eseguire.

2 buffer:

  • Di input.
  • Di output.

L’insieme delle regole per il coordinamento tra CPU e controller e’ chiamato negoziazione (handshaking).

Esempio di negoziazione per l’output

La CPU interroga il registro status fino a che status==0
La CPU definisce il registro command = write e trasferisce i dati dalla memoria al buffer di output
La CPU pone il registro control=1
Il controller pone status=1
Il controller esamina il registro command e trasferisce i dati dal buffer al dispositivo
Il controller pone command=0 e status=0

ATTESA ATTIVA nel passo 1

Attesa attiva (polling)

Interrogare occasionalmente un dispositivo è in sé un’operazione poco costosa

  • Leggi il registro status
  • Test sul contenuto
  • Salto ad un altro punto del codice se status=0

tale tecnica diviene però inefficiente se le ripetute interrogazioni trovano raramente un dispositivo pronto per il servizio mentre altre utili elaborazioni attendono la CPU.

L’alternativa: le interruzioni

I controllori dei dispositivi, gli errori e le chiamate di sistema generano segnali d’interruzione per comunicare alla CPU un evento asincrono.

Le interruzioni vengono generate dai dispositivi e recapitate alla CPU attraverso la linea delle richieste delle interruzioni.

Dipendono dall’architettura e possono avere nomi differenti.
Esempio: architettura IA32 (Intel Pentium)

  • Interrupt (se generati da dispositivi hardware);
  • Exceptions (se generati da errori o da programmi in esecuzione).

Ciclo di I/O basato sulle interruzioni


Accesso diretto alla memoria

La dimensione di buffer dei controllori è di pochi byte.

Quando devono essere trasferiti molti dati
vengono generate molte interruzioni alla CPU

La gestione dell’I/O da e per la memoria è di solito delegato ad una unita’ separata dalla CPU chiamata
Controllore dell’Accesso Diretto alla Memoria (DMA controller)

Il controllore DMA agisce direttamente sul bus della memoria, esegue il trasferimento senza l’aiuto della CPU e genera una sola interruzione

I livelli del software di I/O


Gestore delle interruzioni

Problemi:

  • Necessità di differire le interruzioni nel caso di elaborazioni critiche;
  • Necessità di un meccanismo efficiente e rapido per determinare quale dispositivo ha generato l’interruzione;
  • Necessità di priorita’ tra le varie interruzioni.

Soluzione:

  • La gestione è affidata ad un dispositivo separato dalla CPU chiamato controllore delle interruzioni;
  • Per rendere efficiente la gestione delle interruzioni si usa di solito una sola Interrupt Service Routine (ISR) che gestisce una tabella di puntatori contenente gli indirizzi delle varie procedure di servizio (vettore delle interruzioni).

Gestione delle interruzioni


Driver dei dispositivi

Problema: differenze tra i vari controllori di dispositivo:

  • Es: i controller dei dischi possono essere molto diversi tra loro (# tracce, #settori,…)

Il software che governa i dispositivi e rende uniforme l’accesso e’ detto driver del dispositivo;

I driver hanno il compito di isolare il sottosistema di I/O del nucleo dai controllori dei dispositivi.

  • Es: se si sostituisce un disco è necessario sostituire solo il relativo driver senza modificare il resto del sistema operativo.

Poiché ogni sistema operativo ha le sue convenzioni, ogni dispositivo necessita di un driver differente per ogni sistema operativo. Tale driver è in genere scritto dal produttore del dispositivo.

Driver dei dispositivi

2 categorie di driver dei dispositivi

  • Dispositivi a blocco (ad es. dischi, fotocamere, cdrom);
  • Dispositivi a carattere (ad es. tastiera, terminali, stampanti, interfacce di rete).

Funzioni principali dei driver

  • Accettare richieste di I/O dagli strati superiori del s.o.
  • Effettuare controlli sui dati;
  • Gestire le differenti velocita’ dei dispositivi (protocollo prod. cons.);
  • Garantire l’alimentazione, rilevare la presenza del dispositivo (es. hot swap dei dispositivi USB).

Sw di I/O indipendente dai dispositivi

I driver dei dispositivi esportano le funzionalita’ dei dispositivi di I/O verso il sistema operativo.

I driver sono strettamente legati al dispositivo, ma ogni s.o. utilizza un disco sempre allo stesso modo (ad es. differenti metodi di memorizzazione di un file).

Problema: portabilita’ delle applicazioni su calcolatori con dispositivi di I/O differenti:
Es: l’accesso ad un file dovrebbe essere sempre lo stesso indipendentemente dal tipo di disco su cui e’ memorizzato

Necessità di un livello software che renda
standard l’accesso ai dispositivi

Esempio


Compiti del sw di I/O indipendente dai dispositivi

Interfacciamento uniforme:

  • (rendere i dispositivi quanto più simili possibile).

Bufferizzazione:

  • (contribuire a gestire le differenti velocità dei dispositivi).

Gestire e riportare errori:

  • (es. lettura da unità di output e viceversa).

Allocare e rilasciare risorse:

  • (Garantire la mutua esclusione nell’accesso di alcuni dispositivi).

Sw di I/O a livello utente

Librerie utente per l’I/O:

  • (es. le chiamate di sistema scanf e printf ).

software per la gestione dei file speciali associati ai dispositivi:

  • (es. spooling).

I materiali di supporto della lezione

Silberschatz , Galvin, Gagne – Sistemi Operativi 8a ed. Capitolo 13

Tanenbaum – Moderni sistemi operativi 3a ed. Capitoli 1 e 5

Deitel, Deitel, Choffnes - Sistemi operativi 3a ed. Capitolo 1

  • 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