Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Probleme generale privind intreruperile

Informatica


Probleme generale privind intreruperile

Intreruperea este un semnal transmis sistemului de calcul prin care

acesta este anuntat de aparitia unui eveniment neobisnuit. Atunci

cind evenimentul s-a produs, au loc, in ordine, urmatoare 646t1911g le trei

actiuni:

     1. suspendarea programului in curs de desfasurare;

     2. lansarea in executie a unei rutine specializate, numita



Rutina de Tratare a Intreruperii (RTI) sau Handler de intrerupere,

care deserveste intreruperea;

     3. reluarea executiei programului suspendat.

Cauzele acestor evenimente pot fi de doua tipuri: externe si

interne. Iata citeva exemple de evenimente de natura externa:

apasarea unei anumite combinatii de taste (de exemplu CTRL/BREAK),

terminarea unei operatii de intrare/iesire, asteptarea unui raspuns

de la SC pentru continuarea activitatii unui proces tehnologic etc.

De cele mai multe ori, in urma tratarii intreruperii externe, se

reia activitatea programului suspendat.

Iata si citeva exemple de evenimente neobisnuite de natura interna:

impartire la zero, tentativa de adresare a unei zone de memorie

care nu exista, tentativa de executie a unei instructiuni avand un

cod inexistent, depasirea capacitatii de reprezentare a

rezultatului unui calcul etc.

De cele mai multe ori, in urma tratarii intreruperii interne,

controlul este transmis SO, fara a mai relua activitatea

programului suspendat.

Regula unanim acceptata de catre proiectantii sistemelor de

intreruperi este aceea ca orice intrerupere este luata in

considerare numai intre executiile a doua instructiuni masina

succesive. Daca apar simultan doua intreruperi, circuitele hard ale

SC decid care dintre ele va fi servita prima.

La aparitia unei intreruperi, SC trebuie, in ordine:

     1)   sa determine tipul evenimentului care a generat

          intreruperea (intern, extern);

     2)   sa afle care este cauza intreruperii;

     3)   sa determine adresa RTI (rutinei de tratare a

          intreruperii);

Pentru fiecare tip de eveniment si pentru fiecare cauza posibila a

unei intreruperi se construieste cite un RTI. Metoda cea mai

folosita pentru localizarea rapida a RTI este vectorizarea

intreruperilor. Aceasta consta in a asocia, pentru fiecare

intrerupere, o locatie de memorie cu adresa fixa. In aceasta

locatie fixa se trece adresa RTI corespunzator intreruperii. Deci

in momentul aparitiei unei interuperi, mai intii se scoate din

locatia de memorie asociata intreruperii adresa handlerului

corespunzator si apoi se da controlul acestuia. De regula, cele

doua actiuni sunt contopite intr-una singura, folosind adresarea

indirecta cu continutul locatiei fixe.

O parte dintre RTI sunt furnizate odata cu sistemul de calcul. O

alta parte dintre ele sunt scrise de catre proiectantii sistemului

de operare. In sfirsit, utilizatorii pot sa-si scrie propriile lor

RTI.

In proiectarea unui handler de intrerupere trebuie respectate, in

ordine, urmatoarele etape:

1. Salvarea contextului programului suspendat: registri, flaguri,

o parte a stivei etc. De exemplu, presupunem ca 8086 trebuie sa

execute instructiunile:

                         mov  AX,a

                         add  AX,b

Daca intre cele doua instructiuni apare o intrerupere, este normal

ca RTI sa salveze registrul AX!

2. Interzicerea tratarii intreruperilor care pot perturba evolutia

normala a handlerului respectiv. De exemplu handlerul care rezolva

impartirea la zero poate sa contina, eventual din greseala, o

impartire la zero. In acest caz ar trebui sa nu fie apelat din nou

acest handler.

3. Deservirea intreruperii, aceasta constituind partea esentiala a

handlerului.

4. Ridicarea restrictiilor impuse la etapa 2.

5. Refacerea contextului salvat la etapa 1.

6. Predarea controlul programului care a fost suspendat sau

sistemului de operare.

                 Sistemul de intreruperi 8086

                 Clasificarea intreruperilor

Microprocesorul 8086 dispune de 256 de intreruperi numerotate de la

00 la 0FFh. Dam in cele ce urmeaza o clasificare a lor pe trei

nivele. Natural, incercind o clasificare a intregului sistem de

intreruperi, suntem nevoiti sa folosim o serie de termeni

nedefiniti in aceasta lucrare. Pentru detalii se pot consulta

documentatiile DOS.

     ž Intreruperi hard:

          - ale microprocesorului;

          - ale memoriei;

          - de ceas;

          - ale altor echipamente.

     ž Intreruperi si servicii BIOS:

          - intreruperi propriu-zise;

           diverse servicii BIOS:

               - servicii ecran;

               - servicii tastatura;

               - servicii disc;

               - servicii imprimanta;

               - alte servicii;

          - adrese ale unor structuri de date BIOS.

     ž Intreruperi si servicii DOS:

          - intreruperi generale;

           intreruperea (21h) care defineste functiile DOS:

               - controlul memoriei;

               - controlul proceselor;

               - functii ale discului;

               - directori si fisiere;

               - I/O cu periferice de tip caracter;

               - informatii despre sistem;

               - diverse alte functii;

          - adrese ale unor structuri de date DOS.

     ž Intreruperi si servicii definite de utilizator.

                 Principalele intreruperi

               Exemple de intreruperi hard

Intreruperi ale microprocesorului:

     00h impartire la zero.

     01h un pas; e apelata dupa fiecare instructiune daca TF = 1.

     04h depasire aritmetica la reprezentarea unui numar.

Intrerupere relativa la memoria RAM:

     02h eroare de paritate la accesul unei locatii din memoria

         RAM. Aceasta intrerupere este nemascabila, adica nu i se poate

         interzice declansarea, in sensul etapei 2 descrisa mai sus.

Intrerupere de ceas:

     08h Controlul timpului. Este apelata automat de aproximativ

         18.2 ori pe secunda.

Intreruperi ale altor echipamente:

     09h Activarea tastaturii. Este apelata la fiecare apasare sau

         eliberare a unei taste si furnizeaza un cod corespunzator.

     05h Print Screen. Este apelata la tastarea <SHIFT/PRTSCR> in

         scopul copierii continutului ecranului pe imprimanta.

              Exemple de intreruperi si servicii BIOS

Intreruperi simple:

     11h Lista echipamentelor.

     12h Dimensiunea memoriei RAM.

     15h Acces la legatura seriala RS-232.

     18h Acces la interpretorul BASIC. Astazi mai putin folosita.

     1bh Rezolvarea tastarii <CTRL/BREAK>.

Intreruperi complexe, care ofera pachete de servicii tipice BIOS:

     10h Servicii de lucru cu ecranul, in mod text si in mod grafic.

     13h Servicii de lucru cu hard discul si cu discheta.

     19h Servicii de incarcare a sistemului de operare.

     16h Bufferizarea manipularii tastaturii.

     1ah Servicii legate de ceasul sistem.

     17h Servicii imprimanta.

Adrese ale unor structuri de date BIOS:

     1dh Adresa zonei de parametri video.

     1eh Adresa zonei de parametri a unitatilor de discheta.

     1fh Parametrii adaptorului grafic.

     41h Parametrii hard discului.

     50h Accesarea memoriei CMOS.

               Principalele intreruperi DOS

Principala intrerupere DOS este 21h. Ea inmagazineaza practic

intreaga componenta BDOS a sistemului de operare DOS. Sectiunea

urmatoare va fi destinata exclusiv acestei intreruperi.

Alte intreruperi DOS:

     20h Terminarea unui program.

     25h Citire fizica de pe disc.

     26h Scriere fizica pe disc.

     27h Terminarea unui program de tip TSR.

     28h Intrerupere DOS nedocumentata pentru partajarea timpului.

         Asupra intreruperilor nedocumentate vom reveni ulterior cu

         explicatii.

     2eh (nedocumentata). Executa o comanda DOS ca si cind ar fi

         data de la prompter.

Intreruperea 2fh are functii multiple. Ea se ocupa cu multiplexarea

resurselor sistemului, cu gestiunea memoriei extinse (XMS) daca

aceasta exista, cu controlul programelor TSR s.a.m.d.

Intreruperea 67h grupeaza toate serviciile necesare gestiunii

memoriei expandate daca SC este dotat cu o astfel de componenta

hard.

Intreruperea 33h grupeaza toate functiile necesare lucrului cu

mouse.

Urmatoarele intreruperi furnizeaza o serie de adrese ale unor

structuri DOS:

     22h Adresa de terminare a programului.

     23h Adresa handlerului care trateaza tastarea <CTRL/BREAK>.

     24h Adresa handlerului care trateaza erorile critice aparute

         in executie.

                   Principalele functii DOS

Asa cum am mai aratat, principala intrerupere DOS este 21h. Ea

inmagazineaza practic intreaga componenta BDOS a sistemului de

operare DOS. Mai mult, sarcinile unora dintre intreruperile mai sus

amintite au fost preluate si uneori extinse de catre unele dintre

functiile acestei intreruperi.

Functii de gestiune a memoriei:

     48h  Alocare de memorie.

     49h  Eliberare de memorie.

     4ah  Ajustarea spatiului de memorie alocat.

Functii de gestiune a proceselor:

     4bh  Executia unui proces fiu.

     4ch  Terminarea unui program.

     31h  Terminarea unui program dar raminerea lui rezidenta(TSR).

     4dh  Obtinerea codului de retur al fazei precedente.

     26h  Creare PSP.

     62h  Obtinerea adresei unui PSP.

     50h  Reactivarea unui proces suspendat de un TSR.

Functii specifice discului:

     19h  Intoarce numarul discului implicit.

     33h  Intoarce numarul discului folosit la incarcarea SO.

     1ah  Furnizeaza adresa de transfer disc (DTA).

     1bh  Furnizeaza informatii despre tabela de alocare a

          fisierelor (FAT).

Functii specifice directorilor si fisierelor:

     39h Crearea unui director.

     3ah Stergerea unui director.

     3bh Schimbarea directorului curent.

     47h Furnizarea directorului implicit curent.

     56h Schimbarea numelui unui fisier.

     4eh Gasirea primului fisier specificat generic.

     4fh Gasirea urmatorului fisier specificat generic.

     41h Stergerea unui fisier.

     3dh Deschiderea unui fisier.

     3eh Inchiderea unui fisier.

     3fh Citirea dintr-un fisier.

     40h Scrierea intr-un fisier.

Intrari / iesiri cu periferice de tip caracter:

     01h Citirea unui caracter.

     02h Scrierea unui caracter.

     09h Scrierea unui sir de caractere.

     0ah Citirea unui sir de caractere.

Informatii despre sistem:

     30h Furnizeaza versiunea curenta DOS.

     38h Trateaza parametrii dependenti de tara.

     2bh Furnizeaza sau modifica data curenta.

     2dh Furnizeaza sau modifica ora curenta.

Diverse alte functii:

     35h Obtine adresa unui handler de intrerupere.

     25h Modifica adresa unui handler de intrerupere.

     44h Ansamblu de functii destinat lucrului la nivel fizic cu

         diverse tipuri de periferice caracter sau bloc.

     34h Furnizeaza adresa flagului ce indica existenta unei

         functii DOS in executie (nedocumentata).

     52h Atribuie valori unor variabile DOS (nedocumentata).


Document Info


Accesari: 1822
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )