Operációs rendszer MS-DOS

Kezelni az eseményeket, amelyek akkor aszinkron módon, hogy az a program végrehajtása a legalkalmasabb csapda mechanizmus. Megszakítás lehet tekinteni, mint egy különleges esemény a rendszerben, amely azonnali reakciót. Például egy jól megtervezett rendszer a nagy megbízhatóság használjuk megszakítás baleset az elektromos hálózatban, hogy végre tartalommal felvételi eljárások regiszterek és a memória a mágneses adathordozón, hogy az áramszünet után hasznosítási művelet továbbra is ugyanazon a helyen.

Nyilvánvalónak tűnik, hogy lehet, hogy a különböző kiesések a különböző okok miatt. Ezért a megszakítás nem egyszerűen a ilyen: ez együtt jár egy számot, hívott szám típusú megszakítást vagy egyszerűen megszakítja számát. Minden megszakítás száma kötődik egy adott eseményt. A rendszer képes felismerni, amely megszakítja, akkor előfordult, hogy néhány számot, és elindítja a megfelelő eljárás ezt a számot.

A programok maguk okoznak megszakítás egy előre meghatározott szám. Ehhez használják INT parancsot. Ez az úgynevezett szoftver megszakítja. Szoftver megszakítások nem aszinkron, ahogy ezt a programot (és tud valamit, ő, megszakad!).

Használata megszakítás ha dolgozik lassabb külső eszközök lehetővé teszik, hogy összekapcsolják az input / output adatok feldolgozása a központi processzor, és így növeli a teljes rendszer teljesítményét.

Néhány megszakítás (az első szám szerint öt sorrendben) számára vannak fenntartva a CPU esetén semmilyen különleges események, mint kísérlet nullával osztani, túlcsordulás, stb

Néha kívánatos, hogy a rendszer érzéketlen valamennyi vagy egyes megszakítások. Erre a célra egy úgynevezett maszkolás megszakításokat, ami szólunk részletesen. De néhány nem szabad azt hinnünk megszakítás NMI.

Azt is megjegyzik, hogy a megszakításkezelõkben maguk okoznak szoftver megszakítások például, hogy hozzáférjen a BIOS szolgáltatás, vagy a DOS (BIOS szolgáltatás is elérhető egy szoftver megszakítás mechanizmus).

Elkészítése saját megszakítást rutinok és cseréje a szabványos DOS és BIOS felvezető felelős, és kihívást jelentő munkát. Meg kell figyelembe venni minden részletet a berendezések és az átjárhatóság a szoftver és hardver. Amikor a hibakeresés lehetséges pusztítást kiszámíthatatlan következményekkel az operációs rendszer, így meg kell nézni alaposan, hogy mi teszi a programot.

Formázza meg a táblázatot részben BIOSposle vizsgálati eszközök és rendszerindítás előtt az operációs rendszer, részben tölteni a DOS. DOS válthat néhány BIOS megszakítások.

Nézzük a tartalmát megszakításvektorok asztalra. Itt vannak a jelentése néhány legfontosabb vektorok:

Megszakítása léptetés. Keletkezik végrehajtása után minden gép parancs, ha a szó zászlók bittel lépésenként TF nyoma. Használt hibakeresés programokat. Ezt a megszakítást generál végrehajtását követően a MOV utasítás a szegmens regiszterek betöltése után a szegmens regiszterek POP csapat.

Hardver NMI. Ezt a megszakítást lehet használni különböző módokon, különböző gépeken. Általában keletkezik, amikor a paritás hibát a memória és a megszakítás kérés a koprocesszor.

Megszakítás követése. Ezt a megszakítást akkor keletkezik, amikor az egy byte-os gépi utasítás CCh kódot, és általában debuggers lehet beállítani a töréspont.

Túlcsordulás. Kibocsátott gép parancsot, ha a zászló. Ha a jelző nincs beállítva, az INTO utasítás végrehajtásra kerül, mint egy NOP. Ezt a megszakítást kezelésére használt hibák aritmetikai műveleteket.

Nyomtassa ki a képernyőn. Akkor keletkezik, amikor megnyomja a billentyűzeten PrtScr gombot. Nyomtatásához alkalmazott a képernyő képe. Ahhoz, hogy 80286 akkor keletkezik, amikor a gép BOUND parancsot, ha a vizsgálati érték túllépett a megadott tartományon.

Határozatlan műveleti kód vagy parancs hossza nagyobb, mint 10 byte (a 80286).

IRQ0 - IRQ15-re - ez hardver megszakítás, akkor később ismertetjük.

Gyakran a kritikus részei a programnak, annak érdekében, hogy megfelelnek bizonyos parancsokat, mint egész, meg kell tiltani a megszakításokat. Ezt megteheti CLI parancs. Úgy kell elhelyezni elején kritikus parancsokat, de a végén helyzetben az STI csapat, lehetővé teszi, hogy a processzor, hogy egy megszakítás. CLI parancs letiltja csak a maszkos megszakítás Unmasked mindig kezeli a processzor.

Ha használja a megszakítások tiltva a CLI parancsok, legyen óvatos, hogy ne szakítsa leállt hosszabb ideig, mivel ez ahhoz vezethet, hogy nem kívánatos következmények. Például fog őrködni.

Ha még nem tiltható le az összes megszakítást, de csak néhány, például a billentyűzet, az erre a célra szükséges, hogy használja a szolgáltatást a megszakítás vezérlő. Részletek egy kicsit alacsonyabb, most megjegyezzük, hogy a kibocsátás az adott vezérlő vezérlő információ maszkolható interrupt egyes készülékek között.

A program meg kell szervezni a feldolgozás egyes megszakítások. Ehhez a program hozzárendelése vektor a kezelő. Ezt meg lehet tenni megváltoztatásával tartalmának megfelelő elem megszakításvektorok asztalra.

Fontos, hogy ne felejtsük el, hogy a kilépés előtt, hogy visszaállítsa a tartalmát a módosított vektorok a megszakítás asztal, mert befejezése után a program memória különítettek el, ez tekinthető a szabad és lehet használni, hogy letölthető egy másik program. Ha elfelejtette visszaállítani a megszakítási vektort, és ez a rendszer összeomlik - vektor most rámutat egy olyan területre, bármit tartalmazhat.

Funkció 25h 21h megszakítási vektort készletek száma Al vannak, a megszakítás kezelő DS: DX.

Természetesen, akkor lehet alkalmazni, közvetlenül a megszakítási vektort asztalra, de akkor, amikor a felvétel szükséges, hogy elfedje a CLI parancs megszakítja, ne felejtsük el, hogy megoldja őket rögzítése után STI csapat.

Ha kell hozzá semmilyen saját intézkedéseit a végrehajt egy szabványos megszakítás kezelő, akkor lehet szervezni egy lánc megszakítások.

A Quick C könyvtár rendelkezik egy olyan funkcióval, hogy megszakítja a láncot szervezet - _chain_intr ().

Tekintsük részletesebben IDE könyvtár képességek Gyors C működésre tervezett megszakításokkal.

Módosító megszakítás (_interrupt Quick C 2.5 és C 6,0) leírja a funkciója, amely a megszakítás kezelő. Ilyen funkció befejeződik visszatérés a megszakítás feldolgozását IRET parancsot, akkor a rendszer automatikusan elmenti a generált parancs nyilvántartások belépési és helyreállítani azokat, amikor kilépünk a megszakítás kezelő. Példa a módosító leírására egy megszakítási feldolgozási funkció:

Kulcsszó megszakítást is leírására használják a változók tárolására megszakításvektorokat:

Módosítók _interrupt és _far Quick C 2.5 és C 6.0 szinonimák illetve megszakítására és messzire.

Milyen követelményei vannak a program megszakítás?

Ha megszakítások gyakran fordulnak elő, ezek feldolgozása nagyban lassítja az alkalmazást. Ezért a megszakítás kezelő legyen rövid, gyors program, amely elvégzi csak a legszükségesebb intézkedéseket. Vegyük például a következő karaktert a port a nyomtató, és tegyük a puffer, növeli az értékét a globális megszakítás számláló stb

Telepíteni a megszakítás kezelő funkció használatához _dos_setvec. Ez a függvény két paramétert - a megszakítás számát és a mutatót a megszakítás feldolgozás funkciót. Például:

Ebben a példában a billentyűzet számozott 16h megszakítás kezelő my_key_intr létesít új megszakítás.

A következő egyszerű példa bemutatja az a három funkció működésre megszakításokkal. Ez a program épít saját időzítő megszakítás kezelőt, amely fogják hívni mintegy 18,2 másodpercenként. Süllyesztett megszakítás kezelő tartja időzítő kullancsok, és ha számláló értéke többszöröse a 20, a számítógépes hangszóró sípolás ki. Végén az új időzítő megszakítás feldolgozó program okozza a régi felvezető _chain_intr funkciót.

Telepítése után egy új processzor megszakítani időzítő főprogram vár bármely gomb megnyomásával a billentyűzeten, akkor visszaállítja a régi tartalmát a megszakítási vektort.

Hardver megszakításokat számítástechnikai eszközök, ha az igény a szolgáltatás is. Például, egy időzítő megszakítás kezelő megfelelő megszakítás tartalmát növeli a memória sejtek tárolásra. Ellentétben szoftver megszakítások okozta tervezett maga alkalmazás szoftver, hardver megszakítások mindig előfordulnak tekintettel aszinkron módon a futó program. Ezen kívül lehet, hogy ugyanabban az időben, több megszakítás!

Annak érdekében, hogy a rendszer „nem veszett”, eldönti, hogy mely megszakítja a szolgáltatás az első helyen, van egy speciális prioritási séma. Minden megszakítás egy egyedi prioritás. Ha több megszakítások fordulnak elő ugyanabban az időben, a rendszer előnyben részesíti kiemelt, késlelteti a feldolgozási idő fennmaradó megszakítások.

elsőbbségi rendszer alapját két chip Intel 8259 (az XT-osztályú gép - egy ilyen chip). Mindegyik eszköz szolgálja ki nyolc prioritás. Zseton lehet kombinálni (Cascaded) számának növelése a prioritási szintek a rendszerben.

prioritási szintek rövidített IRQ0 - IRQ15-re (XT osztályú gép, már csak szinten IRQ0 - IRQ7).

Gépeknél XT prioritások lineárisan függ a megszakítási szint számát. IRQ0 élvezik a legmagasabb prioritást, majd séta IRQ1, IRQ2, IRQ3, és így tovább. IRQ2 szintű XT osztályú gépek számára van fenntartva a jövőbeli bővítés a rendszer és a kezdődő AT osztályú gépek IRQ2 használták lépcsőzetes megszakítás vezérlő 8259. Hozzáadott prioritási szintek IRQ8 - IRQ15-re az ilyen gépekben előtérbe közötti IRQ1 és IRQ3.

Itt van egy táblázat hardver megszakítások, rendezett sorrendben:

IRQ7 - megszakítása a nyomtató. Kibocsátott nyomtató, amikor készen áll a következő művelet. Sok nyomtató adapterek nem használja ezt a megszakítást.

A táblázat azt mutatja, hogy a legnagyobb prioritást kap az időzítő megszakítás intervallumot, majd megszűnése a billentyűzetet.

Szabályozhatja az elsőbbségi rendszereket kell tudni, hogy a belső megszakítás-vezérlő eszköz 8259. Bejövő megszakítás alatt a megszakítás kérelem nyilvántartásba IRR. Mind a nyolc bit ebben a nyilvántartásban megfelel megszakítás. Az ellenőrzés után a feldolgozás pillanatában másik megszakításkérelmi információt a ISR szolgáltatás nyilvántartásba. Kibocsátása előtt megszakítás kérés, hogy a processzor ellenőrzi a tartalmát a nyolc bites maszk regiszter IMR megszakítja. Ha a megszakítás nem vak ezen a szinten, akkor megkérdezi, hogy szakítsa meg.

A legérdekesebb a szempontból a programozás egy megszakítás vezérlő megszakítás maszk regiszter IMR, és a megszakítás vezérlő regiszter.

Bit szakítsa maszk regiszter megfelelnek az IRQ számát. Annak érdekében, hogy elfedjék a hardver megszakít minden szinten meg kell küldeni egy byte maszk regiszter, ahol a megfelelő bit erre a szintre van beállítva, hogy 1. Például, a maszk egy megszakítási floppy port 21h kell küldenie a bináris szám 01000000.

Itt egy példa programot, amely álcázza magát egy megszakítás egy floppy lemezt:

Ez a program elérhető a floppy lemezen, hogy jött a könyv. Fuss (HDD), és próbálja meg a munka, például a meghajtó A. Nem sikerül!

(Beleértve a floppy), a „újjáéleszteni” floppy, a program futtatásához, hogy razmaskiruet minden megszakítás:

Figyeljük meg, hogy már csak elfedi megszakítás azt egy floppy lemezre, az összes többi eszköz továbbra is normálisan működik. Ha megadta gépi utasítás CLI, akkor tiltsa le az összes hardver megszakításokat. Ez azt jelentené, például az a tény, hogy a billentyűzet lenne blokkolva.

Ha feldolgozni a megszakítás 1Krón a kiegészítés végén a program nem szükséges, mivel ez egy kiterjesztése a megszakítás másik megszakítás (időzítő megszakítás).

Mielőtt a teljes vizsgálat megszakítások, kérdezzük magunkat - ez lehet, hogy elfedje a NMI? Kiderült, amennyit csak tudsz!

Természetesen, ha egy megszakítási jel érkezett a bemeneti processzor megszakítás NMI, semmit sem lehet tenni - a megszakítás történik elkerülhetetlenül. De a XT és AT számítógépek feltéve rendszerek, blokkolja a bejárat NMI NMI processzor megszakítás.

Hasonlóképpen, a maszkolás AT NMI 7. bit vezérli a 70H port. Vedd 0ADh byte 70H tilalmat port NMI és bájtok 2DH - átengedik megszakítás.

Vegyük észre, hogy nem tiltják NMI „belül” a processzor - lehetetlen definíció, mi „nem hagyja, hogy” egy megszakítási jel a bemeneti a NMI.

Kapcsolódó cikkek