logo

Rozdiel medzi ISR ​​a volaním funkcie

V tomto článku sa dozviete o rozdieloch medzi ISR a volanie funkcie , ale pred diskusiou o rozdieloch musíte v skratke vedieť o ISR a volaní funkcie.

preskočiť zoznam

čo je ISR?

Rutina služby prerušenia (ISR) je softvérová rutina, ktorú hardvér vyvoláva ako odpoveď na prerušenie. ISR preskúma prerušenie, určí spôsob jeho spracovania, vykoná ho a vráti hodnotu logického prerušenia. Ak nie je potrebná žiadna ďalšia manipulácia, ISR upozorní jadro s návratovou hodnotou. ISR sa musí vykonávať veľmi rýchlo, aby sa predišlo spomaleniu činnosti zariadenia a činnosti všetkých ISR s nižšou prioritou.

Hoci ISR ​​môže presunúť údaje z registra CPU alebo hardvérového portu do vyrovnávacej pamäte, vo všeobecnosti sa spolieha na vyhradené vlákno prerušenia (alebo úlohu), nazývané vlákno služby prerušenia (IST), aby vykonalo väčšinu požadovaného spracovania. Ak je potrebné ďalšie spracovanie, ISR vráti do jadra hodnotu logického prerušenia. Potom mapuje číslo fyzického prerušenia na logickú hodnotu prerušenia.

Mechanizmus spracovania prerušení

Nižšie je uvedený mechanizmus spracovania prerušení v nasledujúcich krokoch, ako napríklad:

  • Prerušenie je stav, ktorý spôsobí, že CPU pozastaví aktuálny program a vykoná ISR. ISR je špeciálne napísaný program na obsluhu stavu, ktorý spôsobil prerušenie.
  • Po obsluhe prerušenia sa CPU vráti do hlavného programu, presne v nasledujúcej inštrukcii, kde prestal.
  • Pri prenose dát riadenom prerušením vždy, keď je I/O zariadenie pripravené na prenos dát, preruší CPU. V ISR bude prenos dát vykonávať CPU.
  • Táto metóda je lepšia ako dotazovanie, pretože CPU nemusí strácať čas kontrolou stavu I/O zariadenia. Klávesnica je dobrým príkladom I/O prístupu riadeného prerušením.
  • Namiesto kontroly CPU by klávesnica mala prerušiť CPU pri stlačení klávesu. Nebude sa tak strácať čas opakovanou kontrolou klávesnice, keď používateľ vôbec nepíše.
  • I/O zariadenie požaduje prerušenie odoslaním $overline{INTR}$ signál do CPU.
  • Kedykoľvek CPU prijme $overline{INTR}$ signál, dokončí vykonávanie aktuálnej inštrukcie a potom vykoná ISR. Keď je CPU pripravený, pošle potvrdzovací signál cez WHILE riadok.
  • ISR sa vykoná a CPU sa vráti do hlavného programu.
  • I/O zariadenia vypínajú $overline{INTR}$ signál po vykonaní.
Rozdiel medzi ISR ​​a volaním funkcie

Napríklad: V nižšie uvedenom príklade je I/O prenos cez I/O riadený prerušením.

  • Ak I/O zariadenie, ktoré chce vykonať prenos údajov s procesorom, musí procesor prerušiť.
  • Prerušenie je stav, ktorý spôsobí, že procesor vykoná rutinu služby prerušenia.
  • V ISR bude procesor vykonávať prenos dát s I/O zariadením.

V tomto príklade prerušte požiadavku stlačením klávesu na klávesnici,

  • Namiesto toho, aby procesor skontroloval, či je kláves stlačený, klávesnica pri stlačení klávesu procesor preruší.
  • V ISR klávesnice, ktorá je súčasťou softvéru ovládača klávesnice, procesor načíta údaje z klávesnice.
Rozdiel medzi ISR ​​a volaním funkcie

Výhody ISR

Nižšie sú uvedené nasledujúce výhody ISR, ako napríklad:

java architektúra
  • Asynchrónne udalosti ISR ​​sa môžu vyskytnúť kedykoľvek počas vykonávania programu.
  • ISR uloží PC, príznaky a registre do zásobníka, zakáže všetky prerušenia a načíta adresu ISR.
  • ISR nemôže mať argumenty, ktoré mu možno odovzdať.
  • ISR nemôže vrátiť hodnoty.
  • ISR umožňuje prerušenia.
  • Vo všeobecnosti je ISR malý, pretože si vyžaduje čas nejakého iného procesu.
  • Niektoré z ISR majú svoj vlastný stack.

Čo je volanie funkcie?

Volanie funkcie sa tiež nazýva volanie podprogramu. Podprogram je súbor inštrukcií, ktoré program potrebuje opakovane. Je súčasťou väčšieho programu, ktorý je zodpovedný za vykonávanie konkrétnej úlohy. Väčší program môže vykonávať veľké pracovné zaťaženie a podprogram môže vykonávať len jednoduchú úlohu, ktorá je tiež nezávislá od zostávajúceho kódovania programu.

Funkcia je kódovaná tak, že ju možno volať viackrát a z rôznych miest (aj z iných funkcií). Keď je zavolaná funkcia, procesor môže prejsť na miesto, kde sa nachádza kód funkcie, a vykonať inštrukcie funkcie jeden po druhom. Po dokončení funkcií sa procesor vráti presne tam, kde skončil a pokračuje v vykonávaní od nasledujúcej inštrukcie.

Funkcie sú skvelým nástrojom na opätovné použitie kódu. Mnoho moderných programovacích jazykov podporuje funkcie. Súbor funkcií sa nazýva a knižnica . Knižnice sa často používajú ako prostriedky na zdieľanie a obchodovanie so softvérom. V niektorých prípadoch môže byť celý program sekvenciou podprogramov.

V prípade procesora 8086 je podprogram vyvolaný a ZAVOLAJTE inštrukcia a riadenie sa vracia a SPRÁVNY poučenie. Znižuje veľkosť programu.

Rozdiel medzi ISR ​​a volaním funkcie

Funkcia musí byť explicitne volaná a je súčasťou rovnakého kontextu a vlákna vykonávania ako jej volajúci. Hardvérový ISR ​​nie je explicitne volaný, ale skôr vyvolaný nejakou externou udalosťou. Kontext aktuálneho vlákna sa automaticky zachová, keď sa zavolá prerušenie pred prepnutím kontextu na ISR.

Na oplátku dôjde k prepnutiu spätného kontextu, čím sa obnoví stav procesora pred prerušením, takže vykonávanie pokračuje od bodu prerušenia. Nižšie sú uvedené niektoré ďalšie rozdiely medzi ISR ​​a volaním funkcie.

ISR Volanie funkcie
Prerušenie je zvyčajne iniciované interným alebo externým mikroprocesorom signálu, a nie vykonávaním inštrukcií. ISR sa vykoná po uložení aktuálneho stavu programu do zásobníka.
ISR vykonáva rôzne úlohy v závislosti od prerušeného zariadenia alebo inštrukcií napísaných programátorom.
Volanie funkcie je vyvolané vykonávaním inštrukcií, ktoré vykonávajú špecifické úlohy a znižujú veľkosť programu.
Hardvér určuje adresu ISR.
Adresa ISR je zapísaná vo vnútri tabuľky vektorov prerušení a adresa ISR pre každé prerušenie je pevná.
Adresa podprogramu je zapísaná vo vnútri inštrukcie, ktorá je zapísaná v hlavnom programovom kóde.
ISR sa používa pre všetky univerzálne úlohy. Volania funkcií sa vykonávajú pre úlohy špecifické pre program.
Keď počas vykonávania aktuálneho programu dôjde k prerušeniu, procesor po vykonaní aktuálnej inštrukcie vykoná ISR. Po vykonaní ISR musí procesor pokračovať v programe presne tak, ako pred prerušením.
Na tento účel sa ukladá obsah PC, registre µP a niektoré stavové podmienky. Súbor všetkých stavových bitových podmienok v mikroprocesore sa nazýva PSW (program status word).
  • Počas cyklu prerušenia sa obsah PC a PSW vytlačí do zásobníka. Adresa vetvy pre konkrétne prerušenie sa potom odovzdá PC a do stavového registra sa nahrá nový PSW.
  • Posledná inštrukcia v ISR je návrat z prerušenej inštrukcie. Keď je táto inštrukcia vykonaná, zo zásobníka sa vyberie starý PSW a návratová adresa.
Tu je v zásobníku uložený iba počítač, aby získal adresu ďalšej inštrukcie v hlavnom programe.
Podprogram musí mať prístup k údajom z volajúceho podprogramu a vrátiť výsledky tomuto podprogramu. Preto sa vykonávajú parametre podprogramu a dátové prepojenie.
To sa dá urobiť cez
  • AC register je možné použiť pre jeden vstupný parameter a jeden výstupný parameter. V počítačoch s viacerými procesorovými registrami je možné týmto spôsobom odovzdať viac parametrov.
  • Ďalším spôsobom prenosu údajov do podprogramu je pamäť.