Handler de întrerupere

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

În informatică, un gestionar de întreruperi este o rutină a cărei execuție este declanșată de apariția unei întreruperi .

Este evoluția unei rutine de servicii de întrerupere (ISR), o funcție de computer, de tip callback , care este pornită de sistemul de operare ca răspuns la o întrerupere .

Descriere

Când sosește o întrerupere, CPU trebuie să execute ISR configurat ad hoc de către programator pentru întreruperea respectivă. Pentru ca mecanismul de întrerupere să funcționeze corect, este necesar ca toate acțiunile efectuate de ISR să fie transparente în ceea ce privește programul întrerupt, adică la final totul să fie restabilit așa cum a fost înainte de întrerupere, cu alte cuvinte, că ISR reintră perfect (prin declarația Return ). Pentru a face acest lucru, CPU, înainte de a rula ISR, face un switch de context , adică salvează tot ceea ce făcea (adică contextul actual ), iar la sfârșitul ISR îl restabilește așa cum era.

Întreruperea trebuie gestionată rapid și, prin urmare, nu se pierde timp în salvarea întregului context curent (variabile, starea programului, imaginea de pe ecran etc.), ci doar ceea ce va fi modificat de fapt de ISR. Pe de altă parte, CPU nu știe exact ce va schimba ISR și, prin urmare, nu poate ști în prealabil ce să salveze. Deci, atunci când are loc o întrerupere, hardware-ul trebuie să schimbe cel puțin următoarea porțiune din context:

  • Registrul PC-ului ( Contor de programe )
  • Registrul care definește starea de întrerupere a procesorului

În sistemele moderne, dispozitivele de manipulare a întreruperilor sunt împărțite în două părți:

  • Handler de întrerupere de primul nivel ( FLIH )
  • handlers de nivel II ( SLIH, Second-Level Interrupt Handlers )

Handlerele de nivel superior (FLIH) funcționează la fel ca vechile rutine de întrerupere. Ca răspuns la o întrerupere, apare un comutator de context și codul de gestionare a întreruperii este încărcat în memorie și executat. Sarcina FLIH, totuși, nu este de a gestiona întreruperea, ci de a programa următoarea execuție a managerului de nivel secundar (SLIH), precum și de a urmări și stoca toate informațiile importante care erau disponibile numai în momentul în care întreruperea apare.

Managerul SLIH rămâne în coada pregătită a sistemului de operare până când, când timpul de procesare al mașinii devine disponibil, ajunge rândul său de executare și codul poate fi executat pentru a gestiona evenimentul care a declanșat întreruperea.

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT