Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1245

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Unix and Internet Fundamentals HOWTO: Come funzionano i dispositivi di input e gli interrupt?</TITLE>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-8.html" REL=next>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-6.html" REL=previous>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO.html#toc7" REL=contents>
</HEAD>
<BODY>
<A HREF="Unix-Internet-Fundamentals-HOWTO-8.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-6.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc7">Indice</A>
<HR>
<H2><A NAME="s7">7. Come funzionano i dispositivi di input e gli interrupt?</A></H2>

<P>La tastiera &egrave; un dispositivo di input molto semplice: semplice perch&eacute;
genera piccole quantit&agrave; di dati molto lentamente (per gli standard di
un computer). Quando premete o rilasciate un tasto, il valore di
questo evento viene segnalato attraverso il cavo della tastiera per
far scattare un <EM>interrupt hardware</EM>.
<P>&Egrave; compito del sistema operativo stare attento a questi interrupt. Per
ogni possibile tipo di interrupt c'&egrave; un <EM>gestore
dell'interrupt</EM>, una parte del sistema operativo che
immagazzina i dati a esso associati (come il valore del vostro
premere/rilasciare il tasto) finch&eacute; pu&ograve; essere processato.
<P>Quello che effettivamente fa il gestore dell'interrupt della vostra
tastiera &egrave; mettere il valore del tasto in un'area di sistema vicino al
fondo della memoria. L&agrave; rimane a disposizione per ispezione quando il
sistema operativo passa il controllo al programma che ritiene stia
attualmente leggendo dalla tastiera.
<P>Dispositivi di input pi&ugrave; complessi come i dischi o le schede di rete
funzionano in modo simile. Sopra abbiamo fatto il caso di un
controller del disco che usa il bus per segnalare che una richiesta
disco &egrave; stata ultimata. In realt&agrave; succede che il disco fa scattare un
interrupt. Il gestore dell'interrupt del disco copia poi in memoria i
dati ottenuti, a uso successivo da parte del programma che aveva
fatto la richiesta.
<P>A ogni tipo di interrupt &egrave; associato un <EM>livello di
priorit&agrave;</EM>. Gli interrupt con priorit&agrave; pi&ugrave; bassa (come gli
eventi della tastiera) devono dare la precedenza agli interrupt con
priorit&agrave; pi&ugrave; alta (come i tick dell'orologio o gli eventi del
disco). Unix &egrave; progettato per dare alta priorit&agrave; al tipo di eventi che
hanno bisogno di essere processati rapidamente, in modo da mantenere
fluida la risposta del computer.
<P>Tra i messaggi d'avvio del vostro SO potete vedere dei riferimenti a
numeri di <EM>IRQ</EM>. Forse sapete, senza capirne
esattamente il perch&eacute;, che uno dei modi pi&ugrave; comuni di configurare male
l'hardware &egrave; avere due dispositivi diversi che cercano di usare lo
stesso IRQ.
<P>Ecco la spiegazione. IRQ &egrave; l'abbreviazione di ``Interrupt Request''
(richiesta di interrupt). Il sistema operativo ha bisogno di sapere al
momento dell'avvio quali interrupt numerati verranno usati da ciascun
dispositivo hardware, in modo da poter associare a ciascuno il gestore
appropriato. Se due dispositivi diversi cercano di usare lo stesso IRQ
a volte gli interrupt verranno notificati al gestore sbagliato. Questo
di solito provocher&agrave; quantomeno il blocco del dispositivo, ma pu&ograve; a
volte confondere il SO a tal punto da farlo diventare instabile oppure
mandarlo in crash.
<P>
<HR>
<A HREF="Unix-Internet-Fundamentals-HOWTO-8.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-6.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc7">Indice</A>
</BODY>
</HTML>