Sunteți pe pagina 1din 11

Intreruperi Hardware

# ntreruperi hardware, generate de surse hardware, pentru evenimente externe procesului; de exemplu: * dispozitivele periferice pot solicita, printr-o cerere de ntrerupere, servicii sau aciuni specifice (imprimanta anun terminarea hrtiei, n timpul unei listri; unitatea de disc anun ncheierea unei operaii de citire/scriere sau apariia unei erori n timpul unei astfel de operaii; tastatura anun activarea sau dezactivarea unei taste, etc.) * dispozitivele hardware de supraveghere a funcionrii normale a sistemului de calcul pot emite cereri de ntrerupere n cazul sesizrii unor anomalii de funcionare (circuitele detectoare de paritate pot semnala erori de paritate n timpul unui transfer de date, circuite specializate pot sesiza scderea tensiunii de alimentare a sistemului, etc. n cazul ntreruperilor hardware, nivelul de ntrerupere este determinat de o component de pe placa de baz, numit controler de ntreruperi hardware; acesta primete cererea de ntrerupere i o direcioneaz ctre UCP pe un anumit nivel de ntrerupere, n funcie de sursa care a generat-o. Activitatea sistemului de operare pentru gestionarea resurselor sistemului de calcul Utilizarea eficient a unui sistem de calcul trebuie s asigure, n orice moment, executarea ct mai rapid a unui numr ct mai mare de sarcini. Pentru aceasta este necesar asigurarea exploatrii la capacitatea maxim a resurselor sistemului. Sarcinile care trebuiesc executate n sistem sunt complexe, diverse, cu un caracter aleatoriu, din punctul de vedere al naturii lor, al momentului apariiei sau al ordinii n care se succed. Executarea acestor sarcini se realizeaz prin intermediul proceselor generate n sistem. Pentru coordonarea optim a activitii componentelor sistemului de calcul, n aceste condiii de nedeterminare, au fost dezvoltate funcii speciale ale sistemului de operare, cu rolul de a controla modul de desfurare a

proceselor din sistem, funcii care alctuiesc componenta sistemului de operare de gestionare a resurselor sistemului de calcul. Aceste funcii asigur nlnuirea execuiei proceselor ntr-o ordine determinat i de contextul lor de execuie i alocarea resurselor solicitate de aceste procese conform unor criterii care au n vedere optimizarea modului de utilizare a resurselor. O activitate important pentru coordonarea execuiei proceselor i a alocrii resurselor este activitatea de comunicare ntre procese i sistemul de operare, de exemplu pentru a semnala atingerea unei anumite stri n cadrul unui proces (solicitarea unei resurse noi, ncheierea utilizrii unei resurse, apariia unei erori care mpiedic desfurarea n continuare a procesului, etc.); aceast comunicare este indicat s nu se realizeze prin intermediul UCP, pentru a nu ncrca suplimentar aceast resurs critic a sistemului de calcul. Din acest motiv se utilizeaz o metod de comunicare la nivel sczut (la nivel fizic) prin intermediul sistemului de ntreruperi. Gestionarea ntreruperilor Exist o categorie de sarcini a cror apariie n sistem face necesar tratarea lor imediat de ctre UCP; vom numi aceste sarcini evenimente. Pe de alt parte, UCP nu trebuie s afecteze timp pentru a verifica dac a aprut o astfel de solicitare n sistem, tiut fiind c timpul UCP este o resurs critic a sistemului de calcul. Apare astfel o problem de comunicare de la componentele fizice sau logice ale sistemului de calcul ctre UCP, problem rezolvat, n sistemele de calcul moderne, utiliznd tehnica ntreruperilor. ntreruperea reprezint suspendarea temporar a execuiei procesului care are alocat UCP, n momentul n care apare un eveniment n sistem, n scopul tratrii acestui eveniment de ctre UCP. Pentru ca o ntrerupere s fie funcional, este necesar s poat fi ndeplinite dou condiii: o UCP s dispun de capacitatea de a fi ntrerupt, adic s fie posibil ca UCP s fie alocat altui proces, nainte de ncheierea execuiei procesului cruia i este alocat, la un moment dat;

o s existe posibilitatea de a conserva parametrii procesului suspendat, pentru ca acesta s poat fi continuat ulterior, din punctul n care a fost ntrerupt. Surse de ntrerupere Sursele de ntrerupere identific acele componente fizice sau logice ale sistemului care pot solicita ntreruperi, n cazul apariiei unor evenimente. Semnalele transmise pentru UCP de ctre sursele de ntrerupere care solicit o ntrerupere se numesc cereri de ntrerupere (CI). n funcie de natura surselor de ntrerupere i a evenimentelor care pot genera o ntrerupere, se pot identifica mai multe tipuri de ntreruperi: ntreruperi hardware, generate de surse hardware, pentru evenimente externe procesului; de exemplu: * dispozitivele periferice pot solicita, printr-o cerere de ntrerupere, servicii sau aciuni specifice (imprimanta anun terminarea hrtiei, n timpul unei listri; unitatea de disc anun ncheierea unei operaii de citire/scriere sau apariia unei erori n timpul unei astfel de operaii; tastatura anun activarea sau dezactivarea unei taste, etc.) * dispozitivele hardware de supraveghere a funcionrii normale a sistemului de calcul pot emite cereri de ntrerupere n cazul sesizrii unor anomalii de funcionare (circuitele detectoare de paritate pot semnala erori de paritate n timpul unui transfer de date, circuite specializate pot sesiza scderea tensiunii de alimentare a sistemului, etc.) Mecanismul de funcionare a ntreruperilor n funcie de sursa ntreruperii, fiecare CI se identific printr-un numr, numit nivel de ntrerupere; numrul nivelelor de ntrerupere disponibile n sistem este o constant constructiv a sistemului de calcul, determinat de numrul de linii pe care UCP poate primi cereri de ntrerupere. Sursele de ntrerupere sunt grupate, fiecare grup avnd rezervat un anumit nivel de ntrerupere (de exemplu, exist cte un nivel de ntrerupere pentru: unitile de disc, imprimant, tastatur, ceasul sistemului, etc.)

n cazul ntreruperilor hardware, nivelul de ntrerupere este determinat de o component de pe placa de baz, numit controler de ntreruperi hardware; acesta primete cererea de ntrerupere i o direcioneaz ctre UCP pe un anumit nivel de ntrerupere, n funcie de sursa care a generat-o. n cazul ntreruperilor software, programul care lanseaz o cerere de ntrerupere trebuie s specifice i nivelul de ntrerupere corespunztor. Pentru fiecare nivel de ntrerupere exist un program de sistem specializat, numit rutin de tratare a ntreruperii sau handler. Fiecrui nivel de ntrerupere i corespunde o adres fix n memorie, unde este memorat adresa rutinei de tratare a ntreruperii respective. Toate aceste adrese fixe formeaz n memoria intern vectorul de ntrerupere. Operaia de executare a rutinei de tratare a ntreruperii corespunztoare unei cereri de ntrerupere poart numele de servire a cererii de ntrerupere respective. Rutinele de tratare a ntreruperilor sunt incluse n firmware, de exemplu n ROM-BIOS, sau n componentele sistemului de operare. Pot exista i rutine de tratare a ntreruperilor proprii unor programe de aplicaie. Aceste rutine pot fi create fie pentru a nlocui o ntrerupere standard, fie pentru a crea un nou tip de ntrerupere. n consecin, mecanismul de funcionare a ntreruperilor presupune: + lansarea unei cereri de ntrerupere i transmiterea ei pe un nivel de ntrerupere + ntreruperea temporar a procesului activ, cu conservarea strii sale n momentul ntreruperii + executarea rutinei de tratare a ntreruperii de pe nivelul corespunztor + reluarea procesului ntrerupt i continuarea lui, pornind de la starea din momentul ntreruperii. Activitatea UCP poate fi ntrerupt la ncheierea execuiei unei instruciuni main. La apariia unei cereri de ntrerupere, UCP execut urmtoarele operaii:

+ salveaz starea procesului n execuie, prin memorarea pe stiv a coninutului registrului contor de program, al cuvntului de stare program i al registrelor generale + accept ntreruperea i localizeaz rutina de ntrerupere + execut rutina de ntrerupere + reface contextul de execuie al procesului ntrerupt + reia procesul din punctul n care a fost ntrerupt. 4.1.3. Controlul ntreruperilor n timpul executrii unui proces, exist anumite operaii critice, care nu trebuiesc ntrerupte. n acest scop, exist posibilitatea invalidrii unei CI. Controlul ntreruperilor se refer la posibilitatea acordat UCP de a accepta sau nu o cerere de ntrerupere. n cod main exist dou instruciuni complementare: + EI (Enable Interrupt) care permite validarea unei cereri de ntrerupere + DI (Disable Interrupt) care nu permite validarea unei cereri de ntrerupere, pn la o nou instruciune EI. Prin intermediul acestei instruciuni se poate realiza invalidarea soft a unei cereri de ntrerupere. ntreruperile care pot fi invalidate soft se numesc ntreruperi mascabile. Exist ns i cereri de ntrerupere care trebuie s genereze obligatoriu ntreruperea procesului n curs, n momentul apariiei lor. ntreruperile care nu pot fi invalidate soft se numesc ntreruperi nemascabile. Ierarhizarea ntreruperilor La un moment dat, n sistem, pot fi activate, simultan, mai multe cereri de ntrerupere. Acestea sunt servite n ordinea n care apar n sistem. De exemplu: se oprete, temporar, execuia unei rutine de ntrerupere, pentru a lansa n execuie o alt rutin de ntrerupere, apelat de o cerere de ntrerupere aprut ulterior n sistem.

Se poate realiza o ierarhizare a ntreruperilor, prin acordarea de prioriti de execuie fiecrui nivel de ntrerupere. n cazul ierarhizrii ntreruperilor, ordinea de servire a cererii de ntrerupere va fi stabilit conform urmtoarelor principii: + servirea unei cereri de ntrerupere poate fi ntrerupt numai de o cerere de ntrerupere cu nivel de prioritate mai mare; + ntreruperile nemascabile au prioritate maxim; + dup ncheierea unei rutine de tratare a ntreruperii se reia execuia ntrerupt, care poate fi a unui proces sau a altei rutine de tratare a unei ntreruperi cu prioritate mai mic. 4.1.5. Funciile sistemului de ntreruperi n concluzie, sistemul de ntreruperi permite comunicarea n sistemul de calcul i sincronizarea activitii UCP cu evenimentele externe sau interne din sistem, asigurnd: + direcionarea majoritii cererilor adresate UCP, din mediul extern + degrevarea UCP de sarcina explorrii intrrilor n sistemul de calcul, pentru a detecta sarcinile care i revin + micorarea timpului de rspuns al UCP la solicitrile externe sau interne primite + detectarea rapid a unor situaii de disfuncionalitate a sistemului, determinnd astfel creterea fiabilitii acestuia. Utilizarea ntreruperilor Ce sunt ntreruperile? Cnd vrem s efectum transferuri de date cu un port I/O putem utiliza una din urmtoarele dou metode: Putem interoga(Polling)portul ceea ce implic citirea strii portului la intervale regulate pentru a determina dac au fost recepionate date sau s-a modificat starea portului. Dac da se poate apela subrutina care deservete portul respectiv. Este evident c interogarea portului necesit un anumit timp, timp ce

ar putea fi utilizat n alte scopuri (remprosptarea ecranului, afiarea orei, etc). O alternativ mai eficient o reprezint utilizarea ntreruperilor. n aceast situaie procesorul poate efectua sarcinile utilizator (remprosptare ecran, afiri, etc) iar cnd portul necesit atenia sa (recepionarea unui caracter, schimbarea strii) va emite o cerere de ntrerupere (IRQ) ctre procesor. Odat ce procesorul primete o cerere de ntrerupere, i termin instruciunea curent, salveaz n stiv PC-ul (Program Counter) i execut subrutina de tratare a ntreruperilor ISR(Interrupt Service Routine), care poate aduce octetul de la portul de I/E pentru a-l depune ntr-un buffer. Odat ncheiat subrutina de tratare a ntreruperilor, procesor i reia execuia de unde a rmas. Folosind aceast metod, procesorul nu trebuie s mai iroseasc timpul interognd dispozitivele I/O, ci acestea vor ntrerupe procesorul atunci cnd au nevoie de atenie. ntreruperile i arhitectura Intel ntreruperile nu trebuie asociate ntotdeauna cu dispozitivele de intrare/ieire. Familia de microprocesoare 8086 furnizeaz 256 de ntreruperi, multe dintre acestea fiind folosite ca ntreruperi software. Seria 8086 are o tabel a vectorului de ntreruperi situat la adresa 0000:0000, tabela care are lungimea de 1 Kb. Tabela vectorului de ntreruperi conine adresele rutinelor de tratare a ntreruperilor (ISR), toate avnd lungimea de 8 octeti. Acest lucru ne permite definirea a 256 vectori de ntreruperi. INT (Hex) IRQ Common Uses 00 - 01 Exception Handlers 02 Non-Maskable IRQ Non-Maskable IRQ (Parity Errors) 03 - 07 Exception Handlers 08 Hardware IRQ0 System Timer 09 Hardware IRQ1 Keyboard 0A Hardware IRQ2 Redirected 0B Hardware IRQ3 Serial Comms. COM2/COM4 0C Hardware IRQ4 Serial Comms. COM1/COM3 0D Hardware IRQ5 Reserved/Sound Card 0E Hardware IRQ6 Floppy Disk Controller 0F Hardware IRQ7 Parallel Comms. 10 - 6F Software Interrupts 70 Hardware IRQ8 Real Time Clock 71 Hardware IRQ9 Redirected IRQ2 72 Hardware IRQ10 Reserved 73 Hardware IRQ11 Reserved 74 Hardware IRQ12 PS/2 Mouse 75 Hardware IRQ13 Math's Co-Processor

76 Hardware IRQ14 Hard Disk Drive 77 Hardware IRQ15 Reserved 78 - FF Software Interrupts Table 1 : x86 Interrupt Vectors Calculatorul obinuit are doar 16 ntreruperi Hardware plus una nemascabil. Restul vectorilor de ntreruperi sunt folosii pentru ntreruperile software i tratarea excepiilor. Tratrile de excepii sunt subrutine asemntoarea ISR-urilor, dar care sunt apelate atunci cnd apare o eroare. Un exemplu ar fi vectorul de ntreruperi care conine adresa tratrii excepiei mprire la zero. Atunci cnd apare o mprire la 0, microprocesorul ncarc adresa 0000:0000 i ncepe executarea instruciunilor de la aceast adres. ntreruperile Hardware Controlerul de ntreruperi programabil (Programmable Interrupt Controller PIC) trateaz ntreruperile hardware. Majoritatea PC-urilor au dou astfel de controlere situate la adrese diferite. Unul trateaz ntreruperile 0..7 i cellalt pe cele de la 8 la 15, furniznd 15 linii individuale de ntreruperi, cel de-al doilea controler fiind cascadat de primul prin IRQ2. n majoritatea cazurilor iniializarea controlerului de ntreruperi este fcut de BIOS, de aceea noi trebuie s avem grij doar de dou instruciuni. PIC ne permite mascarea individual a ntreruperilor, pentru ca acestea s nu ajung la procesor. Aadar, prima instruciune este Operation Control Word 1 (OCW1), pentru a stabili care ntrerupere se mascheaz i care nu. Avnd la dispoziie doua PIC-uri situate la adrese diferite, trebuie mai nti s stabilim care PIC trebuie folosit. Primul controler a flat la adresa de baz 0x20h controleaz ntreruperile de la IRQ 0 la IRQ 7. Coninutul cuvntului de control al primului controler de ntreruperi este dat n tabelul 2. Cel de-al doilea PIC aflat la adresa de baz 0xA0h controleaz ntreruperile de la IRQ 8 la IRQ 15.

Sistemul de ntreruperi Microprocesorul mai dispune de dou linii pentru semnalele de ntrerupere emise de dispozitivele externe: linia INTR (Interrupt Request) i linia NMI (Non-Maskable Interrupt). Pe linia INTR sosesc ntreruperi n urma crora unitatea central, n funcie de valoarea indicatorului de validare a ntreruperilor (IF), execut diferite operaii. Dac IF este

ters (are valoarea 0) nseamn c ntreruperile semnalate pe linia INTR sunt mascate sau dezactivate, ca urmare unitatea central le ignor i trece la instruciunea urmtoare. Dac IF este poziionat (are valoarea 1) nseamn c ntreruperile de pe linia INTR sunt activate i unitatea central oprete execuia normal a instruciunilor i pred controlul rutinei de tratare a ntreruperilor. NMI este o linie prin care sosesc ntreruperi care anun evenimente critice. Aceste ntreruperi nu pot fi dezactivate i unitatea central le va lua n considerare de fiecare dat cnd acestea sosesc. Sistemul de ntreruperi este simplu i uor de manevrat. Pot fi utilizate cel mult 256 de tipuri de ntrerupere, fiecrui tip fiindu-i atribuit un cod specific. ntreruperile pot fi clasificate n ntreruperi externe i ntreruperi interne. Cele externe sunt numite i ntreruperi hardware, iar cele interne mai poart denumirea de ntreruperi software. Diferena esenial dintre cele dou tipuri de ntreruperi este c cele externe sunt cauzate de dispozitivele externe, iar cele interne sunt generate prin program, folosindu-se anumite instruciuni. Tabela vectorilor de ntrerupere Tabela vectorilor de ntrerupere permite asocierea dintre tipul ntreruperii (reprezentat de un numr ntre 0 i 255) i rutina de tratare a ntreruperii. Fiecare intrare a tabelei ocup 4 bytes, ea coninnd adresa rutinei de tratare a ntreruperii. Tabela ocup prima zon a memoriei interne i poate avea pn la 256 de intrri. La apariia unei ntreruperi este suspendat execuia instruciunilor programului curent i sunt salvate pe stiv registrul cu indicatorii de stare i control i adresa instruciunii urmtoare; apoi este activat rutina de tratare a ntreruperii.

Intreruperi (Driving Interrupts) Un PC poate lucra cu doua tipuri de intreruperi, software si hardware. In aceasta lucrare vom explica numai intreruperile hardware. Intr-un PC intreruperile externe sunt gestionate de un controler de intreruperi de tip 8259A. Dupa ce circuitul 8259A primeste un semnal de tip cerere de intrerupere pe una din liniile IRQ2 la IRQ7, el transmite un semnal pe intrarea INTR a mP-ului. Apoi 8086 transmite un semnal INTA (interruptacknowledge) catre 8259. Astfel, mP poate obtine tipul de intrerupere de la dispozitivul extern ce a solicitat intrerupere. 8086 utilizeaza tipul citit de la dispozitivul extern pentru a prelua adresa procedurii de servire a intreruperii din tabelul pointerilor de intreruperi din memorie. De notat faptul ca semnalele INTR si INTA nu sunt prezente in bus-ul ISA, aceste semnale fiind utilizate numai pentru mP si 8259A. Programarea intreruperilor Ideea de baza a unei intreruperi este de a executa o functie ce raspunde la cererile dispozitivului hardware. Un vector de intrerupere contine adresa acestei functii. Intr-un sistem 8086 primul Koctet de memorie (de la 00000H la 003FFH) este utilizat pentru vectorii de intrerupere. Pentru a adresa orice locatie de memorie sunt necesari patru octeti. 16 biti sunt utilizati pentru adresa de baza, iar alti 16 biti pentru identificarea unui segment. Astfel, 1 Koctet de memorie permite stocarea unui numar de 256 vectori de intrerupere. Unii dintre cei 256 de vectori de intrerupere sunt utilizati de sistem, alti vectori se pot utiliza pentru programele utilizatorului. Pentru a instala o procedura de servire a unei intreruperi se poate utiliza un program asa cum este exemplificat in pagina WEB a ziarului "Electronica Azi" la sectiunea Download. Programul instaleaza o rutina de intreruperi pentru canalul de intreruperi IRQ1, care este timer-ul sistemului. Acest timer genereaza 18,2 intreruperi per secunda. In rutina de servire a intreruperii se incrementeaza o variabila globala. Cand aceasta variabila ajunge la valoarea 18 se realizeaza afisarea pe ecran. Deci in concluzie ar fii bine sa va feriti de intreruperile hardware sau daca nu contactati-l pe Calin Radu!!

Powered by http://www.referat.ro/ cel mai tare site cu referate

S-ar putea să vă placă și