logo

Skirtumas tarp ISR ir Function Call

Šiame straipsnyje sužinosite apie skirtumą tarp ISR ir funkcijos skambutis , tačiau prieš aptardami skirtumus, turite trumpai sužinoti apie ISR ir funkcijos iškvietimą.

Kas yra ISR?

Pertraukimo paslaugų tvarka (ISR) yra programinė įranga, kurią aparatinė įranga iškviečia reaguodama į pertraukimą. ISR tiria pertraukimą, nustato, kaip su juo elgtis, jį vykdo ir grąžina loginę pertraukimo reikšmę. Jei nereikia daugiau tvarkyti, ISR praneša branduoliui su grąžinimo verte. ISR turi veikti labai greitai, kad nesulėtėtų įrenginio ir visų žemesnio prioriteto ISR veikimas.

Nors ISR gali perkelti duomenis iš procesoriaus registro arba aparatinės įrangos prievado į atminties buferį, dažniausiai jis remiasi tam skirta pertraukimo gija (arba užduotimi), vadinama pertraukimo paslaugų gija (IST), kad atliktų didžiąją dalį reikalingo apdorojimo. Jei reikia papildomo apdorojimo, ISR grąžina branduoliui loginio pertraukimo reikšmę. Tada jis susieja fizinį pertraukimo skaičių su loginės pertraukimo reikšme.

myflixer

Pertraukimų valdymo mechanizmas

Toliau pateikiamas pertraukimų tvarkymo mechanizmas šiais veiksmais, pavyzdžiui:

  • Pertraukimas yra sąlyga, dėl kurios CPU sustabdo esamą programą ir atlieka ISR. ISR yra specialiai parašyta programa, skirta aptarnauti būklę, dėl kurios įvyko pertraukimas.
  • Aptarnavus pertraukimą, procesorius grįžta į pagrindinę programą, tiksliai įvykus kitai instrukcijai, iš kurios jis buvo išėjęs.
  • Pertraukimu pagrįsto duomenų perdavimo metu, kai įvesties / išvesties įrenginys bus paruoštas duomenų perdavimui, jis pertrauks centrinį procesorių. ISR sistemoje CPU atliks duomenų perdavimą.
  • Šis metodas yra geresnis nei apklausa, nes CPU nereikia gaišti laiko tikrindamas I/O įrenginio būseną. Klaviatūra yra geras pertraukimu valdomos I/O prieigos pavyzdys.
  • Užuot tikrinusi centrinį procesorių, klaviatūra turėtų pertraukti procesorių, kai paspaudžiamas klavišas. Taigi laikas nebus švaistomas pakartotinai tikrinant klaviatūrą, kai vartotojas visai nerašo.
  • Įvesties / išvesties įrenginys prašo pertraukti, išsiųsdamas $overline{INTR}$ signalas į CPU.
  • Kai tik CPU gauna $overline{INTR}$ signalą, jis užbaigia dabartinės komandos vykdymą ir tada vykdo ISR. Kai CPU yra paruoštas, jis siunčia patvirtinimo signalą per KOL linija.
  • ISR vykdomas, o CPU grįžta į pagrindinę programą.
  • Įvesties / išvesties įrenginiai išjungia $overline{INTR}$ signalas po vykdymo.
Skirtumas tarp ISR ir Function Call

Pavyzdžiui: Žemiau pateiktame pavyzdyje įvesties / išvesties perdavimas pertraukimu valdomu įvesties / išvesties būdu.

  • Jei I/O įrenginys, norintis atlikti duomenų perdavimą su procesoriumi, turi pertraukti procesorių.
  • Pertraukimas yra sąlyga, dėl kurios procesorius vykdo pertraukimo tarnybos rutiną.
  • ISR procesorius atliks duomenų perdavimą su I/O įrenginiu.

Šiame pavyzdyje nutraukite užklausą paspausdami klaviatūros klavišą,

  • Vietoj to, kad procesorius patikrintų, ar paspaustas klavišas, klaviatūra pertraukia procesorių, kai paspaudžiamas klavišas.
  • Klaviatūros ISR, kuri yra klaviatūros tvarkyklės programinės įrangos dalis, procesorius nuskaitys duomenis iš klaviatūros.
Skirtumas tarp ISR ir Function Call

ISR privalumai

Žemiau pateikiami šie ISR pranašumai, tokie kaip:

kali linux terminalas
  • ISR asinchroniniai įvykiai gali įvykti bet kuriuo programos vykdymo metu.
  • ISR išsaugo kompiuterį, vėliavėles ir registruojasi ant krūvos, išjungia visus pertraukimus ir įkelia ISR adresą.
  • ISR negali turėti argumentų, kuriuos jai būtų galima perduoti.
  • ISR negali grąžinti verčių.
  • ISR įgalina pertraukimus.
  • Paprastai ISR ​​yra mažas, nes užtrunka kai kurių kitų procesų laiką.
  • Kai kurie ISR turi savo krūvą.

Kas yra funkcijos skambutis?

Funkcijos iškvietimas taip pat vadinamas paprogramės iškvietimu. Paprogramė yra instrukcijų rinkinys, kurio programai reikia pakartotinai. Tai didesnės programos, atsakingos už konkrečios užduoties atlikimą, dalis. Didesnė programa gali atlikti didelį darbo krūvį, o paprogramė gali atlikti tik paprastą užduotį, kuri taip pat nepriklauso nuo likusio programos kodavimo.

Funkcija užkoduojama taip, kad ją būtų galima iškviesti kelis kartus ir iš skirtingų vietų (net iš kitų funkcijų). Kai funkcija iškviečiama, procesorius gali eiti ten, kur yra funkcijos kodas, ir po vieną vykdyti funkcijos instrukcijas. Atlikęs funkcijas, procesorius grįš tiksliai ten, kur baigė, ir tęs vykdymą nuo kitos instrukcijos.

minimalus algoritmas

Funkcijos yra puikus įrankis pakartotiniam kodo panaudojimui. Daugelis šiuolaikinių programavimo kalbų palaiko funkcijas. Funkcijų rinkinys vadinamas a biblioteka . Bibliotekos dažnai naudojamos kaip dalijimosi ir prekybos programine įranga priemonė. Kai kuriais atvejais visa programa gali būti paprogramių seka.

8086 procesoriaus atveju paprogramę iškviečia a SKAMBINTI nurodymą ir kontrolinį grąžinimą a TEISINGAI nurodymas. Tai sumažina programos dydį.

Skirtumas tarp ISR ir Function Call

Funkcija turi būti aiškiai iškviesta ir yra to paties konteksto ir vykdymo gijos dalis kaip ir jos skambinantysis. Aparatinės įrangos ISR nėra aiškiai iškviečiamas, o iškviečiamas kažkokio išorinio įvykio. Dabartinės gijos kontekstas automatiškai išsaugomas, kai prieš perjungiant kontekstą į ISR iškviečiamas pertraukimas.

Mainais įvyksta atvirkštinio konteksto perjungimas, atkuriant procesoriaus būseną prieš pertraukimą, kad vykdymas būtų tęsiamas nuo pertraukimo taško. Žemiau pateikiami dar keli ISR ​​ir funkcijos iškvietimo skirtumai.

ISR Funkcijos skambutis
Pertraukimą dažniausiai inicijuoja vidinis arba išorinis signalo mikroprocesorius, o ne komandų vykdymas. ISR vykdomas išsaugojus dabartinę programos būseną krūvoje.
ISR atlieka skirtingas užduotis, priklausomai nuo pertraukto įrenginio arba programuotojo parašytų instrukcijų.
Funkcijos iškvietimas iškviečiamas vykdant instrukcijas, kurios atlieka konkrečias užduotis ir sumažina programos dydį.
Aparatinė įranga nustato ISR adresą.
ISR adresas įrašomas pertraukimo vektorių lentelėje, o kiekvieno pertraukimo ISR adresas yra fiksuotas.
Paprogramės adresas rašomas instrukcijos viduje, kuri rašoma pagrindinio programos kodo viduje.
ISR naudojamas visoms bendrosios paskirties užduotims. Funkcijų iškvietimai atliekami konkrečioms programos užduotims atlikti.
Kai vykdomos programos vykdymo metu įvyksta pertraukimas, taigi, įvykdęs esamą komandą, procesorius vykdo ISR. Įvykdžius ISR, procesorius turi atnaujinti programą tiksliai taip, kaip buvo prieš įvykstant pertraukimui.
Tam išsaugomas kompiuterio turinys, µP registrai ir kai kurios būsenos sąlygos. Visų būsenos bitų sąlygų rinkimas mikroprocesoriuje vadinamas PSW (programos būsenos žodis).
  • Pertraukimo ciklo metu kompiuterio ir PSW turinys įstumiamas į krūvą. Tada konkretaus pertraukimo šakos adresas perduodamas kompiuteriui, o naujas PSW įkeliamas į būsenos registrą.
  • Paskutinė ISR instrukcija yra grįžimas iš nutrauktos komandos. Kai ši instrukcija vykdoma, senasis PSW ir grąžinimo adresas iškeliami iš krūvos.
Čia krūvoje saugomas tik kompiuteris, kad gautų kitos pagrindinės programos instrukcijos adresą.
Paprogramė turi turėti prieigą prie duomenų iš iškviečiančios paprogramės ir grąžinti rezultatus šiai paprogramei. Todėl atliekami paprogramės parametrai ir duomenų susiejimas.
Tai galima padaryti per
  • Kintamosios srovės registras gali būti naudojamas vienam įvesties parametrui ir vienam išvesties parametrui. Kompiuteriuose su keliais procesorių registrais tokiu būdu galima perduoti daugiau parametrų.
  • Kitas būdas perduoti duomenis į paprogramę yra per atmintį.