Înainte Înapoi Cuprins

7. Cum lucrează dispozitivele de intrare și întreruperile?

Tastatura dvs. este un foarte simplu dispozitiv de intrare; simplu deoarece generează mici cantități de date foarte încet (după standardele unui calculator). Când apăsați sau eliberați o tastă, acel eveniment este semnalat prin cablul de tastatură să provoace o întrerupere hardware.

Este treaba sistemului de operare să urmărească astfel de întreruperi. Pentru fiecare fel posibil de întrerupere, o să fie un handler ( tratare ) de întreruperi, o parte a sistemului de operare care pune deoparte orice date asociate lor (precum apăsarea/eliberarea tastei) până când poate să fie procesată.

Ce face de fapt hadlerul de întreruperi pentru tastatură este să posteze valoarea tastei într-o zonă de sistem lângă începutul memoriei. Acolo, va fi disponibilă pentru inspecție când sistemul de operare pasează controlul programului care trebuie să citească curent de la tastatură.

Dispozitivele de intrare mai complexe precum discuri sau plăci de rețea lucrează într-un fel similar. Mai sus, ne-am referit la un controller de disc folosind magistrala să semnaleze că o cerere de disc a fost îndeplinită. Ce se întâmplă de fapt este că discul ridică o întrerupere. Hadlerul de întreruperi de disc copiază apoi datele primite în memorie, pentru a fi folosite mai târziu de programul care a făcut cererea.

Fiecare fel de întrerupere are asociat un nivel de prioritate. Întreruperile cu prioritate mai mică (precum evenimentele de tastatură) trebuie să aștepte după întreruperile cu prioritate mai mare (precum ceasul procesorului sau evenimentele de disc). Unix are un design care dă prioritate mai mare la întreruperile care au nevoie să fie procesate rapid ca să mențină răspunsurile mașinii.

În mesajele de la boot ale sistemului dvs. de operare, puteți vedea referințe la numere IRQ (cereri de întreruperi). Trebuie să știți că un fel obișnuit de configurare proastă a hardwareului este să aveți două dispozitive încercând să folosească același IRQ, fără să înțeleagă exact de ce.

Iată raspunsul. IRQ este prescurtarea de la "Interrupt Request". (cerere de întrerupere). Sistemul de operare (SO) trebuie să știe la pornire care întreruperi (numărate) vor fi folosite de fiecare dispozitiv hardware, așa încât să asocieze handlerele potrivite cu fiecare. Dacă două dispozitive diferite încearcă să folosească același IRQ, întreruperile vor fi date câteodată la handlerul greșit. Aceasta de obicei va bloca cel puțin dispozitivul, și poate câteodată să confuze SOul destul de rău încât o să se blocheze.


Înainte Înapoi Cuprins