Tipuri de întreruperi

3. Reporniți echipa

4. Prelucrarea întreruperilor pe un computer personal

5. Mecanisme de trecere a controlului asupra operatorilor

6. Protecția în procedurile de întrerupere.

Alternativa de vot, utilizată în aproape toate procesoarele moderne, se numește întrerupere. și constă într-o complicație semnificativă a logicii pentru procesarea instrucțiunilor de către procesor.








Procesorul are una sau mai multe intrări, numite semnale sau linii de solicitare de întrerupere. Când un semnal apare pe una dintre intrări, procesorul așteaptă ca executarea comenzii curente să se finalizeze și, în loc să treacă la următoarea comandă, inițiază manipularea întreruperii.

O întrerupere este terminarea executării comenzii curente sau a secvenței curente de comenzi pentru procesarea unui eveniment printr-un program special - un handler de întrerupere. cu revenirea ulterioară la executarea programului întrerupt. Evenimentul poate fi cauzat de o situație specială care apare atunci când programul este executat sau de un semnal de la un dispozitiv extern. Întreruperea este utilizată pentru reacția rapidă a procesorului la situații speciale care apar în timpul executării programului și a interacțiunii cu dispozitive externe. În principiu, întreruperile sunt generate de dispozitivele I / O și cronometrele procesorului și pot fi activate (dezactivate) sau dezactivate (dezactivate).

Mecanismul de întrerupere este furnizat de hardware-ul și software-ul corespunzător al computerului.

Orice situație specială care provoacă o întrerupere. este însoțită de un semnal numit cerere de întrerupere (RF). Cererile de întrerupere de la dispozitivele externe sunt trimise procesorului prin linii speciale și cereri. care apar în timpul executării programului, provin direct din interiorul microprocesorului. Mecanismele de manipulare a întreruperilor ambelor tipuri sunt similare. Luați în considerare funcționarea calculatorului atunci când apare un semnal de cerere de întrerupere. bazându-se în principal pe procesarea întreruperilor hardware (figura 1.1).

Tipuri de întreruperi


Fig. 1.1. Executarea unei întreruperi în computer: tp - timpul de reacție al procesorului la cererea de întrerupere; tc - timpul de salvare a stării programului întrerupt și de a apela comanda de întrerupere; tв - timpul de recuperare al programului întrerupt

După apariția semnalului de solicitare de întrerupere, calculatorul continuă cu executarea programului - dispozitivul de tratare a întreruperilor. Operatorul efectuează acțiunile necesare în legătură cu situația specială care a apărut. De exemplu, o astfel de situație poate fi o apăsare de taste pe tastatura calculatorului. Apoi, manipulatorul trebuie să treacă codul cheii presate de la controlerul de la tastatură la procesor și, eventual, să analizeze acest cod. La sfârșitul manualului, controlul este transferat la programul întrerupt.

Timpul de răspuns este timpul dintre apariția semnalului de cerere de întrerupere și începutul programului de întrerupere (dispozitivul de întrerupere a întreruperii), dacă această întrerupere este activată pentru întreținere.

^ Timpul de răspuns depinde de momentul în care procesorul determină prezența unei cereri de întrerupere. Cererile de întrerupere pot fi trimise fie la sfârșitul pasului următor al comenzii (de exemplu citirea unei comenzi, citirea primului operand etc.), fie după terminarea fiecărei comenzi a programului.

Prima abordare oferă un răspuns rapid, dar este necesar în tranziția spre un handler de întrerupere pentru a salva o cantitate mare de informații despre programul întrerupt, procesorul care cuprinde registrele de stare tampon, non încheiat fază etc. Când vă întoarceți de la handler, trebuie să efectuați o mare cantitate de lucru pentru a restabili starea procesorului.

În al doilea caz, timpul de reacție poate fi destul de mare. Cu toate acestea, atunci când comutați la dispozitivul de tratare a întreruperii, trebuie să vă amintiți contextul minim al programului care este întrerupt (de obicei un contor de comandă și un registru de steaguri). În prezent, computerele folosesc deseori recunoașterea cererii de întrerupere după finalizarea următoarei comenzi.

^ Timpul de răspuns este determinat pentru cererea cu cea mai mare prioritate.

Adâncimea de întrerupere este numărul maxim de programe care se pot întrerupe reciproc. Adâncimea întreruperii coincide de obicei cu numărul de nivele de prioritate. recunoscut de sistemul de întrerupere. Funcționarea sistemului de întrerupere la diferite adâncimi de întrerupere (n) este prezentată în Fig. 1.2. Aici se presupune că prioritatea numărului cererii de întrerupere crește.

Tipuri de întreruperi


Fig. 1.2. Întrerupeți funcționarea sistemului la diferite adâncimi de întrerupere

Nu ia în considerare timpul de reacție. precum și timpul de păstrare și timpul de recuperare:

prioritizarea


Până când procesarea întreruperii este finalizată, este de obicei interzis să se ocupe de acest tip de întrerupere, astfel încât procesorul să nu intre în ciclu pentru procesarea unei întreruperi. Prioritizarea înseamnă că toate sursele de întrerupere sunt împărțite în clase și fiecare clasă este atribuită nivelului său de prioritate pentru cererea de întrerupere. Prioritățile pot fi servite ca relativă și absolută. Serviciul relativ de întrerupere înseamnă că dacă o întrerupere de prioritate mai mare apare în timpul procesării întreruperii, această întrerupere (prioritate mai mare) va fi procesată numai după întreruperea rutinei de întrerupere curentă. serviciu de întrerupere absolută înseamnă că, în cazul în care, la momentul întreruperii handler primește mai mult de preemțiune, procedura actuală de prelucrare întreruperea este forțată, iar procesorul începe să efectueze procesare din nou, a primit mai mult de preemțiune. După terminarea acestei proceduri, procesorul revine la rutina de întrerupere prestabilită.







Întrerupeți întreruperea - schimbați manual dispozitivul de întrerupere.

Întreruperile sunt împărțite în hardware și software.

Întreruperile hardware sunt întreruperi cauzate de procesele din hardware-ul sistemului informatic. Sursa unei astfel de întreruperi poate fi microprocesorul însuși (nu programul, ci echipamentul microprocesor propriu-zis). Folosit pentru a organiza interacțiunea cu dispozitivele externe. Solicitările de întreruperi hardware sunt trimise la intrările speciale ale microprocesorului. Acestea sunt:

  1. mascat;

  2. demascat; .

Mascabile - întrerupe, care pot fi dezactivate prin setarea biților corespunzători în registrul corespunzător al măștii de întrerupere; poate fi mascat de software-ul de calculator;

întrerupere Maskable determină o tranziție la un nivel ridicat la intrare sig-Nala INTR (Interrupt Request) la pavilion permisiune este setat (IF = 1). În acest caz, magazinele de procesoare steagurile în registrul stivă, fac obiectul unui dumping pavilion Vaeth-IF și produce două consecutive (spate în spate) de întrerupere ciclu în care confirmă de generat controlul sig-Nala INTA # (Întrerupe Recunoasteti). Nivelul ridicat al semnalului INTR trebuie să fie menținut cel puțin până la recunoașterea întreruperii. Primul ciclu de recunoaștere al controlerului de întrerupere în regim de întrerupere, prin cel de-al doilea impuls, transmite numărul vectorului de întreținere a acestui tip de întrerupere hardware prin magistrala. Întreruperea cu numărul de vector primit este executată de procesor în același mod ca și programul. Procesarea întreruperii curente poate fi la rândul său, întreruptă de un NMI, iar în cazul în care conductorul va seta indicatorul, dacă este mascat, și alte componente hardware întrerupe.

Nemaskiruemye procesate întotdeauna, indiferent de valoarea pavilionului IF (în procesoarele Intel), deoarece sunt proiectate să răspundă unor evenimente importante pentru sistemul informatic.

Întreruperile fără mascare se efectuează indiferent de starea semnalului IF prin semnalul NMI (Non-Mascable Interrupt). Un nivel ridicat la această intrare va cauza o întrerupere cu un tip (vector) 2, care este executat în același mod ca cel mascat. Prelucrarea acestuia nu poate fi întreruptă de semnalul de intrare NMI până când comanda IRET nu este executată.

Recunoașterea prezenței semnalelor de cerere de întrerupere și determinarea celor mai importante dintre acestea pot fi efectuate prin diverse metode.

Unele tipuri de întreruperi sunt controlate de steagurile IF și TF din registrul de registre al procesorului, care trebuie să fie setat să înțeleagă condiția de întrerupere a procesorului. Dacă condiția pentru întrerupere este îndeplinită și sunt setate steagurile necesare, procesorul implementează secvența de întrerupere la finalizarea instrucțiunii executabile curente:

1) valoarea curentă a registrelor FL (steaguri), CS și IP este inclusă în stivă;

2) în conținutul registrelor CS și IP plasat nou (ad-res întrerupere procedură), care este definit de tipul de întrerupere, și este extras din celule de memorie predefinite redelyaemyh de tip op întrerupere;

Pentru a dezactiva executarea unei secvențe de întrerupere, utilizați semnalul IF, care este controlat de comenzile STI și CLI. Statul de pavilion zero interzice (măști) întrerupe. Flagul IF se aplică tuturor tipurilor de întreruperi, cu excepția unei întreruperi nemascate (tip 2), care este declanșată de un semnal aplicat la intrarea procesorului NMI.

Se execută secvența de procesor de întrerupere poate fi cauzată de două cauze: executarea unui semnal de întrerupere de comandă INT software-ul de întrerupere sau alimentat la intrarea procesorului INTR și apoi efectuarea unui ciclu special de procesor de autobuz pentru citirea tipului de întrerupere transmis printr-un dispozitiv instalat semnalul INTR pe liniile DO-D7 . Următoarele comenzi sunt disponibile pentru comenzile de întrerupere a programelor: INT3, INTO și INT n, unde n este tipul de întrerupere. Formatele comenzilor enumerate sunt date în anexă. Fiecare întrerupere a procedurii trebuie să-capete de revenirea din comanda de întrerupere IRET, care restabilește conținutul registrelor IP, CS, și FL din stivă.

Fig. 4.1 Formatul registrului IDTR
Tabelul de întrerupere poate conține până la 256 descriptori. Dacă încercați să reparați o întrerupere cu un număr care depășește dimensiunea tabelului, se aruncă o excepție #DF. Au fost scutite primele 32 de numere (0 ¸31).
Nu toate aceste vectori sunt utilizate în prezent de către procesor; vectorii ne-atribuiți din această gamă sunt rezervați pentru o utilizare ulterioară. Utilizați vectori ne-atribuit nu ar trebui să fie.

Vectorii de întreruperi mascabile sunt determinate de hardware. controlere de întreruperi externe (de exemplu, Intel 8259 controler de întreruperi programabil) este transmisă magistrala procesorului în timp ce vectorul de întrerupere ciclul confirmă de. Orice vectori pot fi utilizați în intervalul de la 32 la 255. Într-un număr real mod interval de prelucrare de întreruperi hardware a fost: întrerupe IRQ0¸IRQ7 și non 08h¸0Fh IRQ8¸IRQ15 - 70h¸77h. Datorită faptului că, așa cum sa menționat mai sus, prima camera 32 sunt angajate de excepție, devine necesară pentru a reprograma controler de întreruperi la alte numere. Programarea inițială a controlerului pentru modul real este gestionată de BIOS. Total în modul protejat există 208 de numere pentru întreruperi de program.
^

Procesarea întreruperilor pe un computer personal


Microprocesoarele de tip x86 au două intrări pentru solicitări de întreruperi hardware externe:

  • NMI este o întrerupere care nu poate fi mascată. Utilizat în mod obișnuit pentru cererile de întrerupere pentru întreruperea alimentării

  • INT este o întrerupere mascabilă. o cerere din care poate fi deghizată programatic prin resetarea pavilionului IF în registrul de steaguri.

Tipuri de întreruperi


Fig. 1.4. Structura controlerului de întrerupere prioritară

Tipuri de întreruperi


Fig. 1.5. Structura tabelului de vectori de întrerupere

Accesul la elementele mesei se face în conformitate cu codul de 8 biți - tipul de întrerupere (tabelul 1.1).


Diferitele surse specifică tipul de întrerupere în diferite moduri:

  • software-ul întrerupe introducerea acestuia din interiorul procesorului sau îl conține în numărul de comandă INT n;

  • Întreruperile hardware mascate le injectează de la controlerul de întrerupere prioritară prin magistrala de date;

  • O întrerupere hardware deblocabilă este atribuită tipului 2.

Mecanisme pentru trecerea controlului la dispozitivele de întrerupere.
Tabelul descriptor de întreruperi (IDT) conține gateway-uri (figura 4.2).

Fig. 4.2 Format IDT Gateway
Câmpul "TYPE" din octetul de acces determină tipul de gateway:


  • 4 - apel gateway 80286 (Call Gate);

  • 5 - gateway task 80286 (Gateway Task);

  • 6 - Poarta de întrerupere 80286 (Poarta întreruperii);

  • 7 - gateway-ul de capcană 80286 (Gateway Trap);

  • C - gateway-ul de apel 386 (poarta de apel);

  • D - task gateway 386 (Gateway Task);

  • Poarta de întrerupere E 386 (Poarta întreruperii);

  • F - gateway 386 (Gateway Trap).






Articole similare

Trimiteți-le prietenilor: