Întrerupe

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

O întrerupere , în informatică , este un semnal asincron care indică „nevoia de atenție” de către un periferic care vizează o anumită cerere de serviciu, un eveniment sincron care permite întreruperea unui proces dacă apar anumite condiții ( gestionarea proceselor ) sau mai mult în general, o cerere specială către sistemul de operare printr-un proces care rulează .

Tipuri

Există două tipuri de întreruperi:

  • Întreruperile hardware generate de dispozitive externe CPU (periferice), care au sarcina de a comunica apariția evenimentelor externe, de obicei dispozitive de intrare / ieșire . O întrerupere hardware forțează procesorul să-și memoreze starea de execuție până la sosirea întreruperii și să înceapă execuția subrutinei (subrutine) ( comutare de context ) care efectuează sarcina solicitată de întrerupere, după care procesorul reia executarea operațiunilor a fost prelucrată anterior. În practică, există o încetinire a sistemului și o creștere a utilizării procesorului, care poate ajunge să fie 100% ocupat și pentru perioade lungi.
  • Întreruperi software : acestea sunt instrucțiuni de asamblare , de tip INT xx sau SYSCALL , care pot fi asimilate apelurilor subrutine, dar care exploatează mecanismul de întrerupere pentru a trece controlul de la programul apelant la cel apelat și invers; sunt utilizate pentru a accesa direct resursele sistemului de operare.

Utilizarea întreruperilor

Întreruperile sunt utilizate în principal atunci când:

  • un proces încearcă să execute o instrucțiune nevalidă, cum ar fi împărțirea la zero. În aceste cazuri nu este posibil să continuați cu execuția procesului, deoarece ar genera mai multe erori, ar putea corupe datele din registrele CPU și / sau ar duce la o blocare a sistemului în sine. Prin urmare, întreruperea permite informarea sistemului de operare despre ceea ce s-a întâmplat pentru a permite gestionarea corectă a problemei.
  • un proces necesită o operație I / O din sistemul de operare. CPU-urile moderne oferă posibilitatea de a utiliza diferite niveluri de privilegii, din motive de securitate , pe care procesele în execuție le pot primi. Numai sistemul de operare poate efectua unele operații, cum ar fi accesarea unor zone de memorie protejate sau gestionarea perifericelor .
  • un dispozitiv I / O informează CPU că este disponibil pentru a primi sau furniza date . În acest caz, se începe o procedură adecvată a sistemului de operare pentru a face față perifericului relevant. Acest tip de întrerupere necesită o gestionare foarte atentă, de fapt este posibil ca două dispozitive să fi generat o întrerupere în timpul execuției unui proces și este necesar să existe mecanisme care să evite conflictele și pierderea informațiilor, de exemplu, decidând ce întrerupere are o prioritate mai mare și trebuie executat mai întâi și în a doua coadă, delegând sarcina controlerului de întrerupere programabil .
  • timpul maxim disponibil pentru acest proces este atins și programatorul trebuie să aloce CPU la un alt proces din coadă.
  • o aplicație este depanată . În timpul fazei de dezvoltare a unui program este adesea necesar să testați funcționarea a ceea ce a fost creat pentru a descoperi și rezolva originea defecțiunilor. Depanarea permite urmărirea evoluției instrucțiunii programului prin instrucțiune, oferind posibilitatea de a întrerupe procesul în orice moment pentru a verifica valoarea fiecărui parametru. Pentru a face acest lucru este necesar ca codul sursă să fie compilat într-un mod specific, în acest caz, dacă programul este executat sub controlul unui program special, debugger, se efectuează o întrerupere la fiecare instrucțiune care vă permite să verificați dacă cererea pentru a întrerupe procesul.

Managementul întreruperii

Când procesorul primește o solicitare de întrerupere, este necesar să se determine ce dispozitiv îl generează. Există trei modalități principale de a face acest lucru:

  • Linii de întrerupere multiple.
  • Întrerupeți scanarea ( sondarea ).
  • Vectorizarea întreruperilor.

În liniile multiple de întrerupere, fiecare dispozitiv este asociat cu propriul pin al microprocesorului pentru gestionarea întreruperilor. Acest sistem nu este practic pentru gestionarea întreruperilor a numeroase dispozitive, dar poate fi utilizat în tehnologii cu scop special.

Scanarea de întrerupere constă în efectuarea unei scanări a dispozitivelor, interogarea fiecăruia pentru o posibilă confirmare a cererii de întrerupere trimise. Când dispozitivul care a generat întreruperea este interogat, acesta va trimite o confirmare procesorului și acesta din urmă va porni ISR-ul relevant. Setând secvența de scanare, puteți seta prioritatea.

Vectorizarea utilizează un circuit integrat numit Controller de întrerupere programabil care are un anumit număr de linii de cerere de întrerupere (IRQ) ca intrare, utilizat de dispozitive pentru a solicita o întrerupere. La primirea unei cereri, PIC este menit să trimită pe rând o cerere de întrerupere procesorului și, după ce acesta din urmă a confirmat solicitarea (care poate să nu apară dacă întreruperile au fost dezactivate), depusă în indexul magistralei de date a întreruperii vector relativ la adresa ISR care gestionează interacțiunea cu dispozitivul. Vectorii sunt conținuți într-un tabel situat într-o anumită locație din memorie, predefinit sau nu, și numit tabel vector de întrerupere ( Tabel descriptor de întrerupere pentru 8086 și IA-32 ). Fiecare vector conține datele care permit procesorului să determine adresa în memorie a ISR referitoare la dispozitivul care a generat întreruperea și, prin urmare, să gestioneze operația I / O solicitată.

Bibliografie

Elemente conexe

Controlul autorității LCCN (EN) sh94000530 · GND (DE) 4625501-1 · BNF (FR) cb12457456k (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT