Simulator procesor DLX - Despre sistemul de intreruperi.


Pagina introductiva
Despre program - folosire
Despre resursele procesorului
Despre procesor - operatii
Despre intreruperi
Specificatii de program
Contactati-ne pe web !




               Generalitati:  Rolul interruperilor este acela de a opri rularea pas cu pas a unui program (datorita unor cauze variabile) si de a ceda controlul unui alt program (de obicei mai mic) - numit rutina de tratare a intreruperii - si care dupa ce se ruleaza cedeaza la randul sau controlul programului initial care fusese intrerupt. Este deci necesara (la intrarea in rutina de tratare a intreruperii) salvarea starii procesorului si apoi (la iesirea din rutina de tratare a intreruperii) restaurarea acestei stari (cu modificarile de riguare - daca exista).

               Cauzele intreruperilor:  Cauzele sunt multiple, printre acestea putem enumera:
      1) cereri din partea unor dispozitive I/O
      2) invocarea sistemului de operare de catre utilizator
      3) in timpul trasarii / derularii pas cu pas a programului
      4) introducerea de breaking - points in program
      5) depasirile inferioara / superioara in cadrul operatiilor aritmetice
      6) eroarea de pagina la adresarea memoriei
      7) accese nealiniate la memorie
      8) violarea protectiei memoriei
      9) folosirea unor coduri de operatie neimplementate
     10) erori hardware provenite de la echipamente interne sau externe
     11) caderea tensiunii de alimentare

               O clasificare a intreruperilor:  
      1) Sincrone / Asincrone
      2) Cerute de utilizator / Impuse de evenimente independente de utilizator
      3) Mascabile / Nemascabile de catre utilizator
      4) Generate si recunoscute in cadrul / intre instructiuni
      5) Cu suspendarea sau terminarea programului aflat in rulare

               Concret:  Evident, nu putem simula toate intreruperile prezentate mai sus in acest program pentru ca nu putem simula caderea tensiunii de alimentare sau defectarea unui echipament extern sau chiar a unui echipament intern (cum ar fi memoria) din simplul motiv ca aceste elemente nu exista fizic. Asadar, sistemul de intreruperi va fi net simplificat. In simulare am luat in consideratie urmatoarele tipuri de intreruperi: depasiri aritmetice, depasiri de adresare. Rezolvarea acestora este simpla: se abandoneaza rularea programului si se prezinta un mesaj de eroare care precizeaza linia din program unde a avut loc intreruperea.

               Exemple:  
     Iata un exemplu: o instructiune LW R1,150(R2); unde valoarea din R2 e 2, este gresita si se genereaza intrerupere. Explicatia: instructiunea spune: incarca cuvantul gasit in memorie pe pozitia M[150+2]=M[152] in registrul R1. Or, evident, M[152] nu exista. Rezultat: se abandoneaza executia programului si apare un mesaj: "eroare pe linia 5" - unde linia 5 era linia program care continea instructiunea.
     Analog s-a procedat si cu alte tipuri de intrerupere (overflow, ...).

               Recomandari:  Simulatorul nu dispune de un sistem special de tratare a intreruperilor, dar ele se pot simula de catre utilizator prin construirea unui program (a unui fisier sursa) astfel incat prin mecanismul de JUMP-uri si BRENCH-uri sa isi defineasca rutine de tratare pe care sa le poata executa in anumite conditii.

               Pentru a rula pagina la inceput (la meniu) dati un click aici.