Megszakítás

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. április 27-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A megszakítás a számítástechnika egyik alapfogalma , amely abban rejlik, hogy egy esemény bekövetkezésekor a vezérlés egy speciális eljárásra, az úgynevezett megszakításkezelőre (ISR, eng.  Interrupt Service Routine ) kerül át [1] . A feltételes és feltétel nélküli ugrásokkal ellentétben a megszakítás bárhol hívható a programban, beleértve azt is, ha a program végrehajtása felfüggesztve van, és általában a programon kívüli események okozzák. A szükséges műveletek elvégzése után a megszakításkezelő rendszerint visszaadja a vezérlést a megszakított programnak [2] .

Időpont

Általános szabály, hogy a megszakításokat a perifériás eszközökkel való munkához használják. Például el kell küldenie egy kérést, hogy adatokat töltsön be a lemezről a memóriába, és miközben a betöltés folyamatban van, végre kell hajtania néhány egyéb műveletet, vagy le kell állítania a végrehajtást, amíg megszakítás nem érkezik, majd a letöltés befejezése után lépjen a megszakításkezelőhöz. amely elkezdi feldolgozni a bejövő adatokat [1] . A megszakítások segítségével megvalósítható a multitasking , programhibakeresés , bizonyos eszközök emulációja stb .

Faj

A megszakító jel forrásától függően ezek a következőkre oszthatók:

A "csapda" ( angolul  trap ) kifejezést néha a "megszakítás" vagy a "belső megszakítás" szinonimájaként használják. Általános szabály, hogy a felhasználást az adott processzorarchitektúra gyártójának dokumentációja határozza meg.

Maszkolás

A külső megszakítások a tiltás lehetőségétől függően a következőkre oszthatók:

A megszakításkezelőket általában úgy írják, hogy a feldolgozási idejük minél rövidebb legyen, mivel működésük során más megszakításokat nem lehet feldolgozni, és ha sok van belőlük (főleg egy forrásból), akkor elveszhetnek. A Windows a késleltetett eljáráshívási mechanizmust használja ehhez .

Prioritás

A megszakítási feldolgozás végéig általában tiltják az ilyen típusú megszakítások feldolgozását, hogy a processzor ne lépjen be egy megszakítás feldolgozási ciklusába. A prioritás azt jelenti, hogy az összes megszakítási forrás osztályokra van osztva, és minden osztályhoz saját megszakításkérés prioritási szint tartozik [3] .

Táblázat megszakítása

A megszakítási vektor  egy eszközhöz rendelt szám, amely azonosítja a megfelelő megszakításkezelőt. A megszakítási vektorokat a megszakításkezelők címeit tartalmazó megszakítási vektortáblázatba egyesítjük [4] . A táblázat elhelyezkedése a processzor típusától és üzemmódjától függ.

Átlátszóság

Feltételezhető, hogy a megszakításnak átláthatóságot kell biztosítania - vagyis a megszakítás célja alapján módosítandó adatok kivételével a megszakítási feldolgozás befejezése után a feldolgozót abba az állapotba kell visszaállítani, amelyben felhívása idején volt [5] . A legegyszerűbb esetben elég az összes processzorregiszter állapotát a verembe menteni.

Szoftver megszakítás

A szoftvermegszakítás olyan szinkron megszakítás, amelyet egy program egy speciális utasítás segítségével valósíthat meg .

Az x86-os processzorokban egy szinkron megszakítás kifejezetten hívására van egy utasításInt , amelynek argumentuma a megszakítás száma (0-tól 255-ig). IBM PC-kompatibilis számítógépeken egyes megszakításokat a ROM -ban tárolt BIOS - rutinok dolgoznak fel , és a megszakítás interfészként szolgál a BIOS által nyújtott szolgáltatás eléréséhez. A megszakításokat a bővítőkártyák (például hálózati vagy videokártyák ) BIOS-a, az operációs rendszer, és még a szokásos (alkalmazási) programok is kiszolgálhatják, amelyek folyamatosan a memóriában vannak, miközben más programok futnak (ún. rezidens programok ). ). Ellentétben a valós móddal , az x86 processzorok védett üzemmódjában a közönséges programok nem tudják kiszolgálni a megszakításokat, ez a funkció csak a rendszerkód (operációs rendszer) számára érhető el.

Az MS-DOS 20h-tól 3Fh-ig számozott megszakításokat használ a moduljaival és az alkalmazási programjaival való interakcióhoz (a számokat hexadecimális jelöléssel adják meg , ahogy az x86 assembly nyelven történő programozáskor szokásos ). Például az MS-DOS függvények fő készletéhez való hozzáférés egy utasítás végrehajtásával történik Int 21h(ebben az esetben a függvény száma és argumentumai regiszterekben kerülnek átvitelre ). A megszakítási számok ilyen kiosztása nem vezetékes, és más programok telepíthetik saját megszakításkezelőket az MS-DOS vagy más programok által telepített meglévő kezelők helyett vagy fölé, ami általában a funkcionalitás megváltoztatására vagy a rendszerfunkciók listájának bővítésére szolgál. A vírusok is kihasználják ezt a lehetőséget .

Jegyzetek

  1. 1 2 Tanenbaum, 2018 , p. 452.
  2. Pogorely, 1989 , p. 56.
  3. Tanenbaum, 2018 , p. 454=456.
  4. Tanenbaum, 2018 , p. 453.
  5. Tanenbaum, 2018 , p. 454.

Irodalom