megszakítási rendszer

Megszakítás - A végrehajtás felfüggesztése egy programot és az irányítás átadása másik esetén bizonyos események önhibájukon kívül. Továbbra is visszatér a megszakított program irányítása, anélkül, hogy elveszítené rabotosposodnosti azt.







Munkavégzés a megszakítási rendszer tekinthető két szempontból:

Munkavégzés a megszakításvektorokat;

Megjegyzés: Ismét hangsúlyozza, hogy elsősorban a valós módban. Próbálok „próbálja meg” minden más is beláthatatlan következményekkel.

Megszakítás leíró táblázat Védett üzemmód csak a zéró gyűrű védelmet, akkor létrehozni vagy módosítani, ha ezt a kapcsolót védett módban magad!

Ha működő V86 lehet változtatni a képet a megszakítás asztal, de a következmények határozzák meg képességeit a virtuális monitor!

Munkavégzés a megszakításvektorokat.

Annak szükségessége, hogy működjön együtt a megszakítás asztal előfordulhat a következő esetekben:

Mint egy megszakítás, akkor hívja az egyik rutin. Bár az alprogram hívás megszakítások igényel CPU időt, ez a megközelítés akkor indokolt, ha az szükséges, hogy megtörje az elvet hierarchia szoftver egy modulon belüli, illetve ha az eljárást sokan használják a programokat (akkor hagyja a tartózkodási befejezése után a rendszer program).

A második ok az írás a megszakítás lehet a használata egyetlen hardveres megszakítás. Ezt a megszakítást nevezik automatikusan, ha bizonyos feltételek.
Normális esetben a BIOS az használatlan megszakításvektorokat úgy, hogy pont egy eljárást, amely semmit sem (ez tartalmazza az egyik szolgáltató IRET). Írhatsz egy eljárást, és módosítják a megszakítási vektort, hogy pont azt. Akkor az eljárást fogják elvégezni, amikor a hardveres megszakítás történik.

Lehet cserélni a meglévő megszakítás saját. Az egyik ilyen megszakítás megszakítási napszak, ami automatikusan meghívódik 18,2 másodpercenként. Általában ez a megszakítás csak frissíti az órát, de akkor tudja használni, hogy szinkronizálja események a programon belül. Más lehetőségek - írja a feldolgozási eljárás Ctrl-szünet, ha a program kell végezni néhány konkrét intézkedések befejezése előtt.

Végül, érdemes írni a megszakítás, amely kiegészíti az egyik operációs rendszer eljárásokat. Ebben az esetben, miután elvégezte a szükséges intézkedéseket meg kell átvinni a vezérlést az eredeti rutin preravany (a „hosszú” feltétel nélküli ugrást vagy kiegészítő interrupt). Ez a technika akkor lehet hasznos, ha írásban TSR kapó kontroll fogadásakor adott parancsot a billentyűzeten.

Megszakításvektorok táblázatából foglal 1Kbayt memória tartományban 00000h - 00400h. Minden vektor rendelt négy bájt az asztalra, és rendelt egy számot 00h-FFh. Abban inicializálóvektorból rendszer konfigurálva rutinok található ROM BIOS és a DOS.

PUSH DS; DS park

MOV DX, OFFSET ROUT; eltolt DX eljárásokban

MOV AX, SEG ROUT; szegmens eljárások

MOV DS, AX, tegye a DS

MOV AH, 25H; vektor beállítási funkció

MOV AL, 60H; vektor száma

INT 21H; változás megszakítás

POP DS; DS helyreállítása

Az adatkezelő a HDD-AT, XT286, PS50 +

Integrált áramkör 8259 három egyetlen bájtos regiszter vezérlő vonalak nyolc hardver megszakítások. megszakítás kérés regiszter (IRR) beállítja a megfelelő bit, ha a megszakítás kérés vonal jeleket. Ezután a chip automatikusan ellenőrzi, hogy ha egy másik megszakítás feldolgozása folyamatban van. Így kéri az információkat szolgáltató nyilvántartást (ISR). További lánc felelős az elsődleges rendszer. Végül, mielőtt megszakítja a hívást, és ellenőrizte a megszakítás maszk regiszter (IMR), hagyjuk tudni, hogy abban a pillanatban megszakad ezen a szinten.

Mielőtt használatba venné a vezérlőt kell inicializálni. Inicializálása végezzük terhelésvezérléséről szavak (legfeljebb 4 bájt). Miután inicializálás, a vezérlő belép egy működési üzemmódban.







Amikor Ajánlott i8085 megszakítás vezérlő ő rendszerben voltak hibák, így a tervezés a vezérlő i8086 (8259A chip), amennyiben a lehetőségét annak működését és felépített rendszerek alapján i8085. A beállítás akkor tekinthető csak i8086 rendszereket.

Port 20h - ellenőrző szó ICW1 inicializálás:

Bit 0 1 inicializálása négy szó (word ICW4 meghatározza jellemzői kapcsolata master és a slave vezérlők);

bites 1 1 rendszer egyetlen vezérlő;

2. bit 0 vektort 8 bájtos,

1 vektort 4 byte;

bit 3 0 rögzítés megszakítás "elöl" (PC és AT),

1 rögzítés megszakítás "a" (a PS / 2);

Bit 4 1 - jel ICW1;

7..5 bitek nulla (az i8086).

Port 21h - ellenőrző szó ICW2 inicializálás:

2..0 bitek nulla (az i8086);

Bit 7..3 túlnyomó része megszakításvektorok szám (i8086).

Port 21h - ellenőrző szó ICW3 vezető:

Bit 7..0 1 jelölt vonalak, amelyek össze vannak kötve a slave vezérlők;

Port 21h - ellenőrző szó ICW3 slave:

Bit 2..0 száma vonal fogadó vezérlő, amely össze van kötve a vezérlő,

7..3 bit nulla;

Port 21h - ellenőrző szó ICW4 inicializálás

1 bit 0 (az i8086);

bit 1 0 megszakítja a parancs befejeztével

1 automatikus meghatározását a végén a megszakítás;

3..2 pufferelés nélküli bit:

0 vagy 1 pufferelés nem használjuk,

2 alárendelt pufferelés módban,

3 vezető pufferelés mód;

4. bit 0 szekvenciálisan

1 speciális átfogó beágyazott mód.

7..5 bitek értéke nulla.

Megjegyzés: Az inicializálási ellenőrző szavak töltik posledovalelno után ICW1 átvitel.

Controller Operations Management.

az üzemirányítási parancsot lehet küldeni a vezérlő után az inicializálás bármikor.

Port 21h - OCW1 megszakítás maszk regiszter (IMR)

7..0 0 megszakítás kiszolgáló bit,

1 megszakítás maszkolás;

Port 20h - OCW2 megszakítja regisztrációhoz parancsok (ICR)

2..0 bitek határozzák meg a bitek száma a jelenlegi szolgáltatás-nyilvántartás (ISR),

4..3 bitek nulla (meghatározva OCW2),

Bit május 1 befejezését megszakítás;

6. bit bit 1 Tisztítás az említett ISR;

Bit 7 jelentése 1 ciklikus eltolási prioritások.

Port 20h - OCW3 szó üzemirányítási

Bit 1..0 terül olvasás:

0 vagy 1 olvasni ott,

1 megjelöléssel bit 2 forma a szó-állapot (benne a legnagyobb számú kérelem érkezett be);

Bit 4..3 aláírására 01 OCW3;

Bit 6..5 speciális maszkoló:

0 vagy 1 hiányzik,

3 készlet (a prioritások illeszkedjenek kérelmek);

7. bit nulla.

Disable / enable kiválasztott hardver megszakítások.

Program asemblere letilthatja hardver megszakítások. Ez maszkos megszakítás; más hardver megszakítások során előforduló hiba történt (például nullával való osztást) nem lehet maszkolni.

Ennek két oka van a tiltás hardver megszakításokat.

Az első esetben minden megszakítások úgy, hogy egy kritikus része a kód már végre teljesen, mielőtt a gép fog néhány más intézkedés. Például szakítsa megtiltják a változó hardver megszakítási vektort, elkerülve megszakításvektorok változik, ha a félúton.

A második esetben, maszkos csak bizonyos hardver megszakítások. Ez úgy történik, amikor néhány sajátos megszakításra tud reagálni a kritikus műveletekkel az idők. Például, nem lehet pontosan kiszámítani az idő egy I / O eljárással kapjuk meg kell szakítani egy hosszabb megszakítás a lemez.

Performing Megszakítás függ a megszakítás flag (9. bit) a lobogó nyilvántartásban. Ha ez a bit 0, akkor a megszakítások engedélyezve vannak, ami lehetővé teszi, hogy a maszkot. Ha értéke 1, az összes hardver megszakítások engedélyezett. Ha le szeretné tiltani a megszakításokat, amelyben a jelző 1, a CLI utasítást. Ha törölni ezt a zászlót, és megszakítja helyreállítás - STI utasítást. Kerülje letiltása megszakítások hosszú ideig. napszak megszakítás történik 18.2 másodpercenként, és ha ez a megszakítás volt több, mint egy kérés, amikor hardver megszakítások már betiltották, a felesleges kérelmek elutasításra kerül isistemnoe idő fogja meghatározni helytelenül.

A készülék automatikusan kikapcsolja a hardver megszakítja a hívást szoftver megszakítások és automatikusan megoldja őket, amikor visszatér. Amikor írsz a szoftver megszakítások, meg lehet kezdeni a programot STI utasítások, ha megakadályozza a hardver megszakítások. Azonban, ha az utasítás a CLI nem lehet az STI, akkor megáll a gép, mint a billentyűzet beviteli be kell fagyasztani.

A következő példa letiltja lemez megszakítás. Ne felejtsük el, hogy törölje a nyilvántartásból végén a program, vagy a lemez tevékenység nem engedélyezett befejezése után a program.

; --- maszkolás 6. bit megszakítás maszk regiszter

MOV AL, 01000000B; kitakarható 6. bit

OUT 21H, AL, küldjön egy megszakítási maszk regiszter

OUT 21H, AL, törölje a IMR végén a program

Végén a kódot minden hardver megszakítások van hozzá, a következő két sornyi kód:

Ha nincs hardveres megszakítja végei ezeket a sorokat, a chip 8259 törli nyilvántartások szolgáltatási információt annak érdekében, hogy szakítsa meg a kezelést hagyjuk alacsonyabb, mint feldolgozni. Ezek hiányában a vonalak könnyen vezethet összeomlott a program, hiszen a megszakítás a billentyűzet valószínűleg be kell fagyasztani, vagy akár a Ctrl-Alt-Del használhatatlan lesz. Ez az adalékanyag nem szükséges a megszakításvektorokat, amelyek kiterjesztése a meglévő megszakítás.




Kapcsolódó cikkek