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.
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 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.
| 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
|