logo

Az ISR és a függvényhívás közötti különbség

Ebből a cikkből megtudhatja, mi a különbség a ISR és függvényhívás , de a különbségek megvitatása előtt röviden ismernie kell az ISR-t és a függvényhívást.

hány uncia 10 milliliter

Mi az ISR?

A megszakítási szolgáltatási rutin (ISR) egy szoftverrutin, amelyet a hardver egy megszakításra válaszul hív meg. Az ISR megvizsgálja a megszakítást, meghatározza a kezelés módját, végrehajtja, és logikai megszakítási értéket ad vissza. Ha nincs szükség további kezelésre, az ISR visszatérési értékkel értesíti a kernelt. Az ISR-nek nagyon gyorsan kell működnie, nehogy lelassuljon az eszköz és az összes alacsonyabb prioritású ISR működése.

Bár az ISR áthelyezhet adatokat egy CPU-regiszterből vagy egy hardverportból egy memóriapufferbe, általában egy dedikált megszakítási szálra (vagy feladatra), úgynevezett megszakítási szolgáltatási szálra (IST) támaszkodik a szükséges feldolgozás nagy részének elvégzéséhez. Ha további feldolgozásra van szükség, az ISR egy logikai megszakítási értéket ad vissza a kernelnek. Ezután leképez egy fizikai megszakítási számot egy logikai megszakítási értékre.

A megszakításkezelés mechanizmusa

Az alábbiakban bemutatjuk a megszakításkezelés mechanizmusát a következő lépésekben, például:

  • A megszakítás egy olyan feltétel, amely arra készteti a CPU-t, hogy felfüggeszti az aktuális programot és végrehajt egy ISR-t. Az ISR egy speciálisan írt program a megszakítást okozó állapot kiszolgálására.
  • A megszakítás kiszolgálása után a CPU visszatér a fő programhoz, pontosan a következő utasításra, ahol elhagyta.
  • Megszakításvezérelt adatátvitel esetén, amikor az I/O eszköz készen áll az adatátvitelre, megszakítja a CPU-t. Az ISR-ben a CPU végzi az adatátvitelt.
  • Ez a módszer jobb, mint a lekérdezés, mert a CPU-nak nem kell időt vesztegetnie az I/O eszköz állapotának ellenőrzésével. A billentyűzet jó példa a megszakítás-vezérelt I/O hozzáférésre.
  • A CPU ellenőrzése helyett a billentyűzetnek meg kell szakítania a CPU-t, amikor egy billentyűt lenyomnak. Így nem kell időt vesztegetni a billentyűzet ismételt ellenőrzésére, amikor a felhasználó egyáltalán nem gépel.
  • Az I/O eszköz megszakítást kér a $overline{INTR}$ jelet a CPU-nak.
  • Amikor a CPU fogad $overline{INTR}$ jelet, akkor befejezi az aktuális utasítás végrehajtását, majd végrehajtja az ISR-t. Amikor a CPU készen áll, nyugtázó jelet küld a MÍG vonal.
  • Az ISR végrehajtásra kerül, és a CPU visszatér a fő programhoz.
  • Az I/O eszközök kikapcsolják a $overline{INTR}$ jelzés végrehajtás után.
Az ISR és a függvényhívás közötti különbség

Például: Az alábbi példában I/O átvitel megszakításvezérelt I/O-val.

  • Ha egy I/O eszköznek, amely adatátvitelt kíván végrehajtani a processzorral, meg kell szakítania a processzort.
  • A megszakítás egy olyan állapot, amely arra készteti a processzort, hogy egy megszakítási szolgáltatási rutint hajtson végre.
  • Az ISR-ben a processzor adatátvitelt hajt végre az I/O eszközzel.

Ebben a példában a kérés megszakítása a billentyűzet gombjának megnyomásával,

  • Ahelyett, hogy a processzor ellenőrizné, hogy le van-e nyomva egy billentyű, a billentyűzet megszakítja a processzort egy billentyű lenyomásakor.
  • A billentyűzet ISR-jében, amely a billentyűzet-illesztőprogram része, a processzor beolvassa az adatokat a billentyűzetről.
Az ISR és a függvényhívás közötti különbség

Az ISR előnyei

Az alábbiakban felsoroljuk az ISR következő előnyeit, például:

string tömbbe java
  • Az ISR aszinkron események a program végrehajtása során bármikor előfordulhatnak.
  • Az ISR elmenti a PC-t, a zászlókat és a regisztrációkat a veremben, letiltja az összes megszakítást, és betölti az ISR címét.
  • Az ISR-nek nem lehetnek átadható érvei.
  • Az ISR nem tud értékeket visszaadni.
  • Az ISR engedélyezi a megszakításokat.
  • Általában az ISR kicsi, mivel más folyamatokhoz időbe telik.
  • Néhány ISR-nek saját stackje van.

Mi az a funkcióhívás?

A függvényhívást szubrutinhívásnak is nevezik. A szubrutin olyan utasítások halmaza, amelyekre a programnak ismételten szüksége van. Ez egy nagyobb program része, amely egy adott feladat elvégzéséért felel. Előfordulhat, hogy a nagyobb program nagy terhelést hajt végre, az alprogram pedig csak egy egyszerű feladatot hajt végre, amely szintén független a fennmaradó programkódolástól.

Egy függvényt úgy kódolnak, hogy többször és különböző helyekről (még más függvényeken belül is) hívható legyen. Egy függvény meghívásakor a processzor odaléphet, ahol a függvény kódja található, és egyenként végrehajthatja a függvény utasításait. A funkciók elvégzése után a processzor pontosan oda tér vissza, ahol abbahagyta, és a következő utasítástól kezdve folytatja a végrehajtást.

A függvények nagyszerű eszközt jelentenek a kód újrafelhasználásához. Számos modern programozási nyelv támogatja a funkciókat. A függvények gyűjteményét a könyvtár . A könyvtárakat gyakran használják szoftverek megosztására és kereskedelmére. Bizonyos esetekben az egész program szubrutinok sorozata lehet.

8086-os processzor esetén egy szubrutint hív meg a HÍVÁS utasítást, és a vezérlést a JOBB utasítás. Csökkenti a program méretét.

Az ISR és a függvényhívás közötti különbség

Egy függvényt kifejezetten meg kell hívni, és ugyanannak a kontextusnak és végrehajtási szálnak a része, mint a hívója. A hardveres ISR-t nem kifejezetten hívja meg, hanem valamilyen külső esemény hívja meg. Az aktuális szál kontextusa automatikusan megőrződik, amikor egy megszakítást hívnak meg, mielőtt a kontextus ISR-re váltana.

Cserébe megtörténik a fordított környezetváltás, amely visszaállítja a processzor megszakítás előtti állapotát, így a végrehajtás a megszakítás helyétől folytatódik. Az alábbiakban még néhány különbség van az ISR és a függvényhívás között.

ISR Funkcióhívás
A megszakítást általában egy belső vagy külső jelmikroprocesszor kezdeményezi, nem pedig az utasítások végrehajtása. Az ISR a program aktuális állapotának a veremben való tárolása után kerül végrehajtásra.
Az ISR különböző feladatokat hajt végre a megszakított eszköztől vagy a programozó által írt utasításoktól függően.
A függvényhívást utasítások végrehajtása hívja meg, amelyek végrehajtják az adott feladatokat és csökkentik a program méretét.
A hardver határozza meg az ISR címét.
Az ISR-cím a megszakítási vektortáblázatba van írva, és az egyes megszakítások ISR-címe rögzített.
A szubrutin címe az utasításba van írva, ami a fő programkódba van írva.
Az ISR-t minden általános célú feladathoz használják. A függvényhívások programspecifikus feladatokhoz készülnek.
Ha egy aktuális program végrehajtása közben megszakítás történik, ezért az aktuális utasítás végrehajtása után a processzor végrehajtja az ISR-t. Az ISR végrehajtása után a processzornak pontosan úgy kell folytatnia a programot, mint a megszakítás előtt.
Ehhez a számítógép tartalma, µP regiszterek és bizonyos állapotfeltételek kerülnek tárolásra. A mikroprocesszorban lévő összes állapotbit-feltétel összegyűjtését PSW-nek (program állapotszónak) nevezik.
  • A megszakítási ciklus során a PC és a PSW tartalma a verembe kerül. Az adott megszakításhoz tartozó ág címét ezután átadja a PC-nek, és egy új PSW betöltődik az állapotregiszterbe.
  • Az ISR utolsó utasítása a megszakított utasításból való visszatérés. Amikor ez az utasítás végrehajtódik, a régi PSW és a visszatérési cím kikerül a veremből.
Itt csak egy PC van a veremben tárolva, hogy megkapja a fő program következő utasításának címét.
A szubrutinnak hozzá kell férnie a hívó szubrutin adataihoz, és vissza kell adnia az eredményeket a szubrutinnak. Ezért megtörténik a szubrutin paraméterei és az adatkapcsolat.
Ezt keresztül lehet tenni
  • Az AC regiszter egyetlen bemeneti paraméterhez és egyetlen kimeneti paraméterhez használható. A több processzorregiszterrel rendelkező számítógépekben több paraméter adható át így.
  • Az adatok szubrutinnak való továbbításának másik módja a memória.