Sunteți pe pagina 1din 2

Capcane. Capcana (trap) este un mecanism care produce apelarea automata a unei proceduri.

Spre deosebire de o intrerupere, capcana este activata, explicit sau implicit, d e catre o actiune efectuata de catre programul aflat in rulaj. Capcanele sint ut ilizate pentru tratarea unor conditii de exceptie, adesea anormale, care apar in cursul existentei unui program, sau pentru activarea unor proceduri speciale, c um ar fi rutine ale sistemului de operare. Exceptiile generate de gestiunea memoriei externe sau de unitatile cu virgula mo bila pot fi considerate drept capcane, desi CPU este prevazuta cu linii externe, de acelasi tip cu cele pentru intreruperi, pentru detectarea acestor situatii. In cazul capcanelor, aceste linii externe sint activate de stari de eroare cauza te de program, fie in gestiunea memoriei, fie in utilizarea unitatii aritmetice cu virgula mobila. Exista trei tipuri de capcane: a) capcane activate intotdeauna ; b) capcane activate/dezactivate prin program ; c) capcane solicitate explicit prin program. Primul din aceste tipuri se asociaza cu un eveniment de tip eroare,indiferent de operatia efectuata de catre CPU; de aceea, nu exista mijloace de dezactivare a acestui tip de capcana. Exemple tipice in acest sens sint: tentativa de a execut a o instructiune inexistenta sau aceea de a executa, dintr un regim neprivilegia t, o instructiune rezervata regimului privilegiat. In aceeasi clasa pot fi incad rate si capcanele in conjunctie cu gestiunea memoriei externe. In al doilea tip de capcane sint cuprinse evenimentele care reprezinta sau nu re prezinta o conditie de exceptie sau anormala, in functie de actiunile specifice efectuate de catre program. Acesta este motivul pentru care capcanele pot fi act ivate (dezactivate) de programul insusi, dupa cum este necesar sau nu a detecta aceste situatii. Standardul IEEE 754 prevede ca exceptiile generate de operatiile cu numere cu virgula mobila sau de conversie pot genera o capcana num ai in urma unei activari de catre program. Un alt exemplu: capcana utilizata pen tru a detecta tentativa de executie a unei operatii cu operanzi cu virgula mobil a in absenta unitatii aritmetice dedicate acestor operatii. In aceste cazuri cap cana se dezactiveaza cind configuratia hardware include procesorul matematic. Al treilea tip de capcana nu se foloseste, in mod obisnuit, pentru detectarea co nditiilor anormale, dar reprezinta un mijloc de activare a executiei unor rutine speciale, de cele mai multe ori acestea fiind functii ale sistemului de operare . Adesea ele sint astfel organizate incit sa fie posibila activarea lor la apari tia unor capcane. Operatiei ii sint dedicate instructiuni speciale, numite adese a apeluri de sistem (system call instructions), data fiind menirea lor principal a de activare a rutinelor sistemului de operare. Cind se executa o astfel de in structiune se activeaza capcana corespunzatoare. Prin asocierea unui parametru a ceeasi instructiune poate activa capcane diferite. Manipularea capcanelor Actiunile cerute de manipularea capcanelor sint similare cu cele executate la ap aritia unei intreruperi: se salveaza in stiva contorul programului si indicatori i de conditie, apoi se executa saltul la rutina de tratare a capcanei. Informati a despre rutina de tratare este memorata intr un vector stocat intr o zona de me morie bine precizata; in anumite cazuri capcanele si intreruperile folosesc in c omun acelasi vector. Capcanele permanent activate sau cele care pot fi activate de catre program au a sociat un element specific al vectorului capcanei, intrucit corespund unor eveni mente definite aprioric. Al treilea tip de capcane folosesc acest parametru asoc iat drept index pentru identificarea rutinei corespunzatoare, intrucit programul este cel ce asociaza un anume inteles acestor capcane. Capcane destinate detec tarii anomaliilor efectueaza si salvarea in stiva a conditiilor care au provocat capcana, fapt ce permite rutinei de tratare sa furnizeze diagnoza privind eroar ea si sa "repare" efectele acesteia. De regula, rutina de tratare a capcanei se executa la un nivel privilegiat super ior fata de cel in care se afla programul ce a produs capcana. Unele microproces

oare au doua indicatoare de stiva, unul pentru starea normala, iar celalalt pe ntru starea sistem. Stiva sistem este folosita pentru salvarea informatiilor le gate de tratarea capcanei, asa ca, printr o simpla instructiune return from inte rrupt, se termina executia rutinei si se returneaza controlul programului curent . Prioritati Aparitia simultana de intreruperi si capcane ridica probleme legate de selectare a celei careia sa i se acorde atentie. Ca si intreruperile, capcanele sint servite, de regula, la terminarea instructiu nii curente. Unele capcane (cum este page fault trap, despre care se va discuta mai tirziu) trebuie servite imediat, intrerupind instructiunea curenta. Ele pot fi considerate similar cu intreruperile cu relansare. Desi fiecare microprocesor are propriile sale reguli de prioritate privind capc anele, se pot folosi urmatoarele criterii generale: 1.capcanele cu relansare au prioritatea maxima, ca si intreruperile cu relansare ; 2.celelalte capcane au prioritati superioare intreruperilor mascabile, deoarece ele sint folosite pentru detectarea erorilor si starilor anormale, deci necesita atentie imediata; 3.intreruperile nemascabile pot intrerupe rutinele de tratare a capcanelor si a intreruperilor. Evident, pentru asignarea de prioritati capcanelor nu sint necesare circuite ext erioare