Cunoaște Intuit, de curs, întreruperi și cazuri speciale

Întreruperile și cazuri speciale

Întrerupere - este o inversare a ordinii naturale a programului, care se datorează necesității răspunsului sistemului la activitatea de dispozitive externe, precum și erorile și excepțiile întâlnite în timpul execuției programului. În acest program special este numit - un handler de întrerupere. specifice pentru fiecare situație a apărut, după ce lucrarea este reluat programul întrerupt.

mecanism de întrerupere prevăzut cu hardware-ul corespunzător și software de calculator.

Clasificarea întreruperi este prezentată în Fig. 7.1.

Cunoaște Intuit, de curs, întreruperi și cazuri speciale


Fig. 7.1. clasificarea întreruperi

Cerere întreruperi hardware apar la microprocesor asincronă și sunt legate de dispozitivul extern.

Solicitare din nonmaskable NMI de întrerupere este de intrare la microprocesor și nu poate fi blocat de către software-ul. De obicei, această intrare este utilizată pentru a întrerupe livrarea schemelor de control al puterii sau eroare nerecuperabilă I / O.

Pentru Maskable întrerupere INT cererea de intrare a microprocesorului utilizat. procesul de întrerupere pentru această intrare poate fi blocat descărcarea de gestiune dacă bitul în steaguri registru microprocesor.

Software-ul întrerupe. strict vorbind, ele sunt numite excepții sau cazuri speciale. Acestea sunt legate de situații speciale, care apar în timpul execuției programului (pagini în memorie, o încălcare a securității, preaplin), adică acele situații în care programatorul nu se poate anticipa, sau a prezenței în programul unui comandă special INT n, care este folosit de programator pentru a apela funcții de sistem de operare sau BIOS. susținerea lucrărilor cu dispozitive externe. Mai târziu, în discuția despre sistemul de întreruperi, vom folosi termenul unic „întrerupere“ pentru întreruperi hardware și excepții, în cazul în care nu se prevede altfel.

întreruperile soft sunt împărțite în următoarele tipuri.

Încălcare (eșec) - caz special care microprocesorul poate detecta eroarea înainte de real (de exemplu, nu există o pagină în memorie); după prelucrare program de tulburări este executat cu comanda de repornire care a dus la încălcarea.

Trap - un caz special, care este detectat după sfârșitul comenzii (de exemplu, prezența INT comanda programului n sau pavilion setat în registrul de pavilion TF). După prelucrare, execuția programului de întrerupere continuă cu următoarea instrucțiune.

Accident (în afara procesului) - ca un bug serios care programează unele context, este pierdut și nu poate continua. Cauza accidentului nu poate fi setat, astfel încât programul este eliminat din prelucrare. Pentru accidentele sunt erori de hardware și valori inconsistente sau incorecte în tabelele de sistem.

Procedura de manipulare întrerupe

Întreruperile sunt detectate și cazuri speciale la limitele de echipe, și un programator nu poate pasa de starea registrelor de lucru interne și dispozitive de transport.

Ca răspuns la cererea de întrerupere, microprocesorul trebuie să identifice sursa acesteia, pentru a menține contextul minim al programului actual și a comuta la un program special - un handler de întrerupere. După deservirea întrerupere MP revine la programul întrerupt, și ar trebui să fie reluat ca și în cazul în care nu a existat nici o întrerupere.

Tratamentul IRQ este format din:

  • acțiune „Reflex“ a procesorului care sunt aceleași pentru toate întreruperile și ocazii speciale, iar programatorul nu poate controla;
  • efectuarea unui handler la programator.

Pentru ca microprocesorul poate identifica sursa de tratare a întreruperii și pentru a găsi corespunzătoare solicitării primite, fiecare cerere numărul dvs. (de tip întrerupere) atribuit să-și întrerupă.

tip de întrerupere la programul de întrerupere este înscris din interiorul microprocesorului; de exemplu, prin absența întreruperii memoriei paginii este de tip 14. Pentru întreruperile cauzate de comandă INT n tip conținută în comanda de sine. Pentru Maskable tip întrerupere hardware este intrare de la regulatorul de prioritate de întrerupere prin intermediul magistralei de date. NMI i se atribuie de tip 2.

Total microprocesor 256 face distincția întrerupe tipuri. Astfel, ele pot fi codificate într-un singur octet.

„Reflector“ pași de procesare microprocesor executat MP întrerupere hardware și includ:

Ulterior, programul - un handler de întrerupere. care corespunde cererii. Acest program este scris și plasat în aplicația de memorie sau programator de sistem. handler de întrerupere trebuie să fie completate de către echipa I RET. prin care bunurile provenite automat la executarea programului întrerupt pentru a continua cu restaurarea contextului său.

Pentru a apela rutina de tratare a întreruperii atunci când microprocesorul funcționează în mod real întrerupe tabelul vector utilizează. și în modul protejat - întrerupe tabelul descriptor.

În modul protejat, un handler de întrerupere este utilizat tabelul descriptor întrerupere IDT. Elementele din tabel sunt de tip 8 octeți descriptori -petsialnye structura unui program de gateway, prin care transferul de control al procesorului.

Cunoaște Intuit, de curs, întreruperi și cazuri speciale


Fig. 7.2. masă vector de întrerupere

Cunoaște Intuit, de curs, întreruperi și cazuri speciale


Fig. 7.3. Ordinea de tratament pentru a întrerupe tabelul descriptor

Conținutul registru IDTr nu este stocat în segmentele TSS și nu se modifică atunci când trecerea sarcinilor. Programele nu pot accesa IDT. deoarece numai un singur indicator de bit TI selectorul de tabel de segment selectează numai între mese GDT si LDT.

Limita maximă a tabelului descriptor întrerupere este de 256 * 8-1 = 2047.

Puteți defini o limită inferioară, dar acest lucru nu este recomandat. Dacă există un apel la descriptor limitele IDT. Procesorul trece în modul de oprire până la semnal de intrare NMI sau Reset.

se ocupă numai următoarele tipuri pot fi stocate în IDT:

  • Gateway Trap
  • întrerupe poarta de acces, sarcina poarta de acces.

Gateway-uri sunt capcane și întreruperi similare prin apel la poarta de acces. numai în lor deconectat câmpul Contor WC (Fig. 7.4). De la încetarea unui eveniment neașteptat, și nu este asociat cu programul curent, pentru a vorbi despre trecerea la parametrii handler lor nu este necesară.

Cunoaște Intuit, de curs, întreruperi și cazuri speciale


Fig. 7.4. Format gateway-uri capcane și întreruperi

Bit S = 0 în accesul octet definește acest drept mâner obiect sistem. În cazul în care câmpul TYPE în octetul acces la aceeași 1110 întrerupe poarta de acces. în cazul în care 1111 - capcanele poarta de acces.

privilegii la nivel de câmp descriptor DPL. de regulă, este setat la 3, astfel încât de întrerupere microprocesorului poate accesa programul de la orice nivel de privilegiu.

Prezența Bit P poate fi egal cu 0 sau 1.

La intrarea în handler de întrerupere printr-un gateway la bitul de pavilion de resetare registru întrerup permite IF. În acest caz, microprocesorul dezactivează toate componentele hardware întrerupe sunt mascate. Prin urmare, rutina de tratare a întreruperii, acest bit este setat la 1, cât mai curând posibil, astfel încât să nu blocheze activitatea programelor care este invocat, de exemplu, în procesarea întreruperii timer de sistem.

La intrarea handler capcana prin gateway-IF pavilion nu este schimbat.

Apelați handler printr-o poarta capcană. și nu întrerupe poarta, de multe ori puse în aplicare Excepție de manipulare. deoarece perioada de întrerupere a serviciului este de nedorit mecanism în afara timpului de separare, folosind o întrerupere cronometru.

handler de apel prin sarcina gateway-ului efectuat de obicei în procesarea întreruperii de hardware, deoarece o astfel de prelucrare nu este asociat cu sarcina de executare în prezent. În acest caz, mecanismul de posibile întrerupe imbricate în cazul în care întreruperea este permis în problema. Apelarea handler de întrerupere prin intermediul sarcinilor de gateway efectuate și de manipulare excepție. de exemplu, „nesoluționarea TSS“, atunci când sarcina deteriorat nu poate provoca o întrerupere de rutină. Comutare sarcină necesită aproximativ 5 ori mai mare decât apelul de procedură. Prin urmare, în cazul în care prioritatea unei cereri este mare, iar programul de serviciu scurt, în formă în formă de procedură.

articole similare