întreruperile pot fi implementate în hardware ca o componentă distinctă cu linii de control sau pot fi integrate în subsistemul de memorie.
dacă este implementat în hardware ca o componentă distinctă, un circuit al controlerului de întrerupere, cum ar fi controlerul de întrerupere programabil (pic) al PC-ului IBM, poate fi conectat între dispozitivul de întrerupere și pinul de întrerupere al procesorului pentru a multiplexa mai multe surse de întrerupere pe una sau două linii CPU disponibile în mod obișnuit. Dacă este implementat ca parte a controlerului de memorie, întreruperile sunt mapate în spațiul de adrese de memorie al sistemului.
Irqsedit partajat
Mai multe dispozitive pot partaja o linie de întrerupere declanșată de margine dacă sunt proiectate să. Linia de întrerupere trebuie să aibă un rezistor pull-down sau pull-up, astfel încât, atunci când nu este condus activ, să se stabilească la starea sa inactivă, care este starea implicită a acesteia. Dispozitivele semnalează o întrerupere conducând scurt linia la starea sa non-implicită și lăsați linia să plutească (nu o conduceți activ) atunci când nu semnalizați o întrerupere. Acest tip de conexiune este denumit și colector deschis. Linia poartă apoi toate impulsurile generate de toate dispozitivele. (Acest lucru este similar cu cablul de tragere de pe unele autobuze și cărucioare pe care orice pasager îl poate trage pentru a semnala șoferului că solicită o oprire.) Cu toate acestea, impulsurile de întrerupere de la diferite dispozitive se pot îmbina dacă apar aproape în timp. Pentru a evita pierderea întreruperilor, procesorul trebuie să declanșeze pe marginea finală a impulsului (de exemplu, marginea în creștere dacă linia este trasă în sus și condusă jos). După detectarea unei întreruperi, procesorul trebuie să verifice toate dispozitivele pentru cerințele de service.
întreruperile declanșate de margine nu suferă problemele pe care întreruperile declanșate de nivel le au cu partajarea. Serviciul unui dispozitiv cu prioritate redusă poate fi amânat în mod arbitrar, în timp ce întreruperile de la dispozitivele cu prioritate ridicată continuă să fie recepționate și să fie întreținute. Dacă există un dispozitiv pe care CPU nu știe să îl deservească, ceea ce poate ridica întreruperi false, acesta nu va interfera cu semnalizarea întreruperii altor dispozitive. Cu toate acestea, este ușor să pierdeți o întrerupere declanșată de margine-de exemplu, atunci când întreruperile sunt mascate pentru o perioadă – și dacă nu există un tip de zăvor hardware care înregistrează evenimentul, este imposibil de recuperat. Această problemă a cauzat multe” blocări ” în hardware-ul computerului timpuriu, deoarece procesorul nu știa că era de așteptat să facă ceva. Hardware-ul mai modern are adesea unul sau mai multe registre de stare de întrerupere care blochează solicitările; codul de manipulare a întreruperilor bine scris, bazat pe margini, poate verifica aceste registre pentru a se asigura că nu sunt ratate evenimente.
magistrala de arhitectură standard a industriei în vârstă (ISA) folosește întreruperi declanșate de margine, fără a impune ca dispozitivele să poată partaja linii IRQ, dar toate plăcile de bază ISA de masă includ rezistențe pull-up pe liniile lor IRQ, astfel încât dispozitivele ISA cu comportament bun care partajează linii IRQ ar trebui să funcționeze bine. Portul paralel utilizează, de asemenea, întreruperi declanșate de margine. Multe dispozitive mai vechi presupun că au o utilizare exclusivă a liniilor IRQ, ceea ce face nesigur din punct de vedere electric partajarea acestora.
există 3 moduri în care mai multe dispozitive „care împărtășesc aceeași linie” pot fi ridicate. Primul este prin conducție exclusivă (comutare) sau conexiune exclusivă (la pini). Următorul este cu autobuzul (toate conectate la aceeași linie de ascultare): carduri pe un autobuz trebuie să știe când trebuie să vorbească și să nu vorbească (de exemplu, autobuzul ISA). Vorbirea poate fi declanșată în două moduri: prin zăvor de acumulare sau prin porți logice. Porțile logice se așteaptă la un flux continuu de date care este monitorizat pentru semnalele cheie. Acumulatorii se declanșează numai atunci când partea de la distanță excită poarta dincolo de un prag, astfel nu este necesară o viteză negociată. Fiecare are avantajele sale de viteză față de distanță. Un declanșator, în general, este metoda în care este detectată excitația: marginea în creștere, marginea în cădere, pragul (osciloscopul poate declanșa o mare varietate de forme și Condiții).
declanșarea întreruperilor software trebuie încorporată în software (atât în sistemul de operare, cât și în aplicație). O aplicație ‘ C ‘ are un tabel de declanșare (un tabel de funcții) în antetul său, pe care atât aplicația, cât și sistemul de operare îl cunosc și îl utilizează în mod corespunzător, care nu are legătură cu hardware-ul. Cu toate acestea, nu confundați acest lucru cu întreruperile hardware care semnalează CPU (CPU adoptă software dintr-un tabel de funcții, similar cu întreruperile software).
dificultate la partajarea liniilor de întrerupere
Mai multe dispozitive care partajează o linie de întrerupere (de orice stil de declanșare) acționează toate ca surse de întrerupere false unul față de celălalt. Cu multe dispozitive pe o singură linie, volumul de muncă în întreruperile de service crește proporțional cu pătratul numărului de dispozitive. Prin urmare, este de preferat să se răspândească dispozitivele uniform pe liniile de întrerupere disponibile. Lipsa liniilor de întrerupere este o problemă în proiectele de sistem mai vechi în care liniile de întrerupere sunt conductori fizici distincți. Întreruperile semnalate prin mesaje, unde linia de întrerupere este virtuală, sunt favorizate în noile arhitecturi de sistem (cum ar fi PCI Express) și ameliorează această problemă într-o măsură considerabilă.
unele dispozitive cu o interfață de programare prost proiectată nu oferă nicio modalitate de a determina dacă au solicitat service. Ei pot bloca sau altfel se comportă greșit Dacă sunt deserviți atunci când nu o doresc. Astfel de dispozitive nu pot tolera întreruperile false și, de asemenea, nu pot tolera partajarea unei linii de întrerupere. Cardurile ISA, datorită designului și construcției adesea ieftine, sunt notorii pentru această problemă. Astfel de dispozitive devin mult mai rare, deoarece logica hardware devine mai ieftină și noile arhitecturi de sistem impun întreruperi partajabile.
HybridEdit
unele sisteme utilizează un hibrid de semnalizare declanșată de nivel și de margine. Hardware-ul nu numai că caută o margine, dar verifică, de asemenea, că semnalul de întrerupere rămâne activ pentru o anumită perioadă de timp.
o utilizare obișnuită a unei întreruperi hibride este pentru intrarea NMI (întrerupere care nu poate fi mascată). Deoarece NMI semnalează în general evenimente majore – sau chiar catastrofale – ale sistemului, o bună implementare a acestui semnal încearcă să se asigure că întreruperea este valabilă verificând dacă rămâne activă pentru o perioadă de timp. Această abordare în 2 pași ajută la eliminarea întreruperilor false de la afectarea sistemului.
Message-signaledEdit
o întrerupere semnalată de mesaj nu utilizează o linie de întrerupere fizică. În schimb, un dispozitiv semnalează cererea sa de serviciu trimițând un mesaj scurt pe un mediu de comunicații, de obicei o magistrală de computer. Mesajul poate fi de un tip rezervat întreruperilor sau poate fi de un tip preexistent, cum ar fi o scriere de memorie.
întreruperile semnalate de mesaj se comportă foarte mult ca întreruperile declanșate de margine, în sensul că întreruperea este mai degrabă un semnal momentan decât o condiție continuă. Software-ul de manipulare a întreruperilor le tratează pe cele două în același mod. De obicei, mai multe întreruperi semnalate de mesaje în așteptare cu același mesaj (aceeași linie de întrerupere virtuală) au voie să fuzioneze, la fel cum întreruperile declanșate de margine distanțate strâns se pot îmbina.
vectorii de întrerupere semnalizați prin mesaj pot fi partajați, în măsura în care mediul de comunicare subiacent poate fi partajat. Nu este necesar un efort suplimentar.
deoarece identitatea întreruperii este indicată de un model de biți de date, care nu necesită un conductor fizic separat, multe alte întreruperi distincte pot fi gestionate eficient. Acest lucru reduce nevoia de partajare. Mesajele de întrerupere pot fi, de asemenea, transmise printr-o magistrală serială, fără a necesita linii suplimentare.
PCI Express, o magistrală de computer serial, utilizează exclusiv întreruperile semnalate prin mesaje.
DoorbellEdit
într-o analogie cu butonul de apăsare aplicată sistemelor informatice, termenul de sonerie sau întrerupere a soneriei este adesea folosit pentru a descrie un mecanism prin care un sistem software poate semnaliza sau notifica un dispozitiv hardware al computerului că există ceva de făcut. De obicei, sistemul software va plasa date în unele locații de memorie bine cunoscute și convenite de comun acord și va „suna soneria” scriind într-o altă locație de memorie. Această locație de memorie diferită este adesea numită regiunea soneriei și pot exista chiar mai multe sonerii care servesc unor scopuri diferite în această regiune. Acest act de scriere în regiunea de memorie a soneriei este cel care” sună clopotul ” și notifică dispozitivul hardware că datele sunt gata și așteaptă. Dispozitivul hardware ar ști acum că datele sunt valide și pot fi acționate. De obicei, ar scrie datele pe o unitate de hard disk sau le-ar trimite printr-o rețea sau le-ar cripta etc.
termenul de întrerupere a soneriei este de obicei un termen impropriu. Este similar cu o întrerupere, deoarece determină efectuarea unor lucrări de către dispozitiv; cu toate acestea, regiunea soneriei este uneori implementată ca o regiune interogată, uneori Regiunea soneriei scrie în registrele dispozitivelor fizice și, uneori, Regiunea soneriei este conectată direct la registrele dispozitivelor fizice. Atunci când scrieți sau direct în registrele fizice ale dispozitivului, acest lucru poate provoca o întrerupere reală la unitatea centrală a procesorului (CPU) a dispozitivului, dacă are una.
întreruperile soneriei pot fi comparate cu întreruperile semnalate prin mesaj, deoarece au unele asemănări.
Multiprocessor IPIEdit
In multiprocessor systems, a processor may send an interrupt request to another processor via inter-processor interrupts (IPI).