Rendszerhívás vs megszakítás
Egy tipikus processzor egyesével hajtja végre az utasításokat. De előfordulhatnak olyan esetek, amikor a processzornak ideiglenesen le kell állnia, és le kell tartania az aktuális utasítást, és végre kell hajtania egy másik programot vagy kódszegmenst (amely más helyen van). Ezt követően a processzor visszatér a normál végrehajtáshoz, és onnan folytatja, ahol abbahagyta. Ilyen alkalom a rendszerhívás és a megszakítás. A rendszerhívás a rendszerbe épített szubrutin hívása. A megszakítás külső hardveres események által okozott programvezérlési megszakítás.
Mi az a rendszerhívás?
A rendszerhívások interfészt biztosítanak a számítógépen futó programok számára az operációs rendszerrel való kommunikációhoz. Amikor egy programnak egy szolgáltatást kell kérnie (amelyhez magának nincs engedélye) az operációs rendszer kerneléből, rendszerhívást használ. A felhasználói szintű folyamatok nem rendelkeznek ugyanazokkal az engedélyekkel, mint az operációs rendszerrel közvetlenül együttműködő folyamatok. Például a külső I/O eszközzel való kommunikációhoz vagy más folyamatokkal való interakcióhoz a programnak rendszerhívásokat kell használnia.
Mi az a megszakítás?
A számítógépes programok normál végrehajtása során előfordulhatnak olyan események, amelyek a CPU ideiglenes leállását okozhatják. Az ehhez hasonló eseményeket megszakításoknak nevezzük. A megszakításokat szoftver- vagy hardverhibák okozhatják. A hardveres megszakításokat (egyszerűen) megszakításoknak, míg a szoftveres megszakításokat kivételeknek vagy csapdáknak nevezzük. Ha egy megszakítást (szoftvert vagy hardvert) emelnek, a vezérlés átkerül az ISR (Interrupt Service Routine) nevű speciális szubrutinba, amely képes kezelni a megszakítás által felvetett feltételeket.
Amint fentebb említettük, a megszakítás kifejezést általában a hardveres megszakításokra tartják fenn. Ezek külső hardveresemények által okozott programvezérlési megszakítások. Itt a külső a CPU-n kívüli kifejezést jelenti. A hardveres megszakítások általában sok különböző forrásból származnak, mint például időzítő chip, perifériás eszközök (billentyűzetek, egér stb.), I/O portok (soros, párhuzamos stb.), lemezmeghajtók, CMOS óra, bővítőkártyák (hangkártya, videó). kártya stb.). Ez azt jelenti, hogy hardveres megszakítások szinte soha nem fordulnak elő a végrehajtó programmal kapcsolatos események miatt. Például egy olyan esemény, mint a felhasználó billentyűzetének billentyűlenyomása, vagy egy belső hardveres időzítés, előidézheti ezt a fajta megszakítást, és tájékoztathatja a CPU-t, hogy egy bizonyos eszköz figyelmet igényel. Ilyen helyzetben a CPU leállítja, amit csinált (azaz szünetelteti az aktuális programot), biztosítja az eszköz által igényelt szolgáltatást, és visszatér a normál programhoz.
Mi a különbség a rendszerhívás és a megszakítás között?
A rendszerhívás egy, a rendszerbe épített szubrutin hívása, míg az Interrupt egy olyan esemény, amely miatt a processzor átmenetileg felfüggeszti az aktuális végrehajtást. Az egyik fő különbség azonban az, hogy a rendszerhívások szinkronok, míg a megszakítások nem. Ez azt jelenti, hogy a rendszerhívások meghatározott időpontban történnek (ezt általában a programozó határozza meg), de megszakítások bármikor előfordulhatnak váratlan esemény miatt, például a billentyűzeten a felhasználó általi gombnyomás miatt. Ezért, amikor rendszerhívás történik, a processzornak csak emlékeznie kell arra, hogy hova kell visszatérnie, de megszakítás esetén a processzornak emlékeznie kell a visszatérési helyre és a rendszer állapotára is. A rendszerhívásokkal ellentétben a megszakításnak általában nincs köze az aktuális programhoz.