U ovom ćete članku naučiti o razlici između ISR i poziv funkcije , ali prije rasprave o razlikama, morate se ukratko upoznati s ISR-om i pozivom funkcije.
sortiraj niz u Javi
Što je ISR?
Servisna rutina prekida (ISR) je softverska rutina koju hardver poziva kao odgovor na prekid. ISR ispituje prekid, određuje kako s njime postupati, izvršava ga i vraća vrijednost logičkog prekida. Ako nije potrebno daljnje rukovanje, ISR obavještava kernel povratnom vrijednošću. ISR se mora izvesti vrlo brzo kako bi se izbjeglo usporavanje rada uređaja i rada svih ISR-ova nižeg prioriteta.
Iako ISR može premjestiti podatke iz CPU registra ili hardverskog priključka u memorijski međuspremnik, općenito se oslanja na namjensku nit prekida (ili zadatak), nazvanu nit usluge prekida (IST), za obavljanje većine potrebne obrade. Ako je potrebna dodatna obrada, ISR vraća vrijednost logičkog prekida jezgri. Zatim preslikava broj fizičkog prekida u vrijednost logičkog prekida.
Mehanizam rukovanja prekidima
Ispod je mehanizam rukovanja prekidom u sljedećim koracima, kao što su:
- Prekid je uvjet koji tjera CPU da obustavi trenutni program i izvrši ISR. ISR je posebno napisan program za servisiranje stanja koje je uzrokovalo prekid.
- Nakon servisiranja prekida, CPU se vraća u glavni program, točno na sljedećoj instrukciji odakle je otišao.
- U prijenosu podataka vođenom prekidom, kad god je I/O uređaj spreman za prijenos podataka, on će prekinuti CPU. U ISR-u, CPU će izvršiti prijenos podataka.
- Ova metoda je bolja od anketiranja jer CPU ne mora gubiti vrijeme na provjeru statusa I/O uređaja. Tipkovnica je dobar primjer I/O pristupa vođenog prekidima.
- Umjesto provjere CPU-a, tipkovnica bi trebala prekinuti CPU kada se pritisne tipka. Tako se vrijeme neće gubiti na stalno provjeravanje tipkovnice kada korisnik uopće ne tipka.
- I/O uređaj zahtijeva prekid slanjem $overline{INTR}$ signal CPU-u.
- Kad god CPU primi $overline{INTR}$ signala, dovršava izvršenje trenutne instrukcije i zatim izvršava ISR. Kada je CPU spreman, šalje signal potvrde putem DOK crta.
- ISR se izvršava i CPU se vraća u glavni program.
- I/O uređaji isključuju $overline{INTR}$ signal nakon izvršenja.
Na primjer: U donjem primjeru, I/O prijenos I/O-om vođenim prekidom.
- Ako I/O uređaj koji želi izvršiti prijenos podataka s procesorom mora prekinuti procesor.
- Prekid je stanje koje tjera procesor da izvrši rutinu usluge prekida.
- U ISR-u, procesor će izvršiti prijenos podataka s I/O uređajem.
U ovom primjeru, prekinite zahtjev pritiskom tipke na tipkovnici,
- Umjesto da procesor provjerava je li tipka pritisnuta, tipkovnica prekida procesor kada pritisne tipku.
- U ISR-u tipkovnice, koji je dio softvera upravljačkog programa tipkovnice, procesor će čitati podatke s tipkovnice.
Prednosti ISR-a
Ispod su sljedeće prednosti ISR-a, kao što su:
- ISR asinkroni događaji mogu se dogoditi bilo kada tijekom izvođenja programa.
- ISR sprema PC, zastavice i registrira na stog, onemogućuje sve prekide i učitava adresu ISR-a.
- ISR ne može imati argumente koji mu se mogu proslijediti.
- ISR ne može vratiti vrijednosti.
- ISR omogućuje prekide.
- Općenito, ISR je mali jer zahtijeva vrijeme nekog drugog procesa.
- Neki od ISR-a imaju vlastiti stack.
Što je poziv funkciji?
Poziv funkcije naziva se i poziv potprograma. Potprogram je skup instrukcija koje su programu potrebne više puta. To je dio većeg programa koji je odgovoran za izvršavanje određenog zadatka. Veći program može izvršiti veliko radno opterećenje, a potprogram može obavljati samo jednostavan zadatak, koji je također neovisan o preostalom programskom kodiranju.
Funkcija je kodirana na takav način da se može pozvati više puta i s različitih mjesta (čak i unutar drugih funkcija). Kada se funkcija pozove, procesor može otići do mjesta gdje se nalazi kod funkcije i izvršiti instrukcije funkcije jednu po jednu. Nakon završetka funkcija, procesor će se vratiti točno tamo gdje je stao i nastaviti s izvršenjem počevši od sljedeće instrukcije.
Funkcije su izvrstan alat za ponovnu upotrebu koda. Mnogi moderni programski jezici podržavaju funkcije. Zbirka funkcija naziva se a knjižnica . Knjižnice se često koriste kao sredstva za dijeljenje i trgovanje softverom. U nekim slučajevima cijeli program može biti niz potprograma.
godine u kvartale
U slučaju procesora 8086, potprogram se poziva od strane a POZIV upute, a kontrolu vraća a PRAVO uputa. Smanjuje veličinu programa.
Razlika između ISR-a i poziva funkcije
Funkcija se mora izričito pozvati i dio je istog konteksta i niti izvršavanja kao i njezin pozivatelj. Hardverski ISR se ne poziva eksplicitno, već ga poziva neki vanjski događaj. Kontekst trenutne niti se automatski čuva kada se pozove prekid prije prebacivanja konteksta na ISR.
Zauzvrat se javlja obrnuti kontekstni prekidač, vraćajući stanje procesora prije prekida tako da se izvođenje nastavlja od točke prekida. Ispod su još neke razlike između ISR-a i poziva funkcije.
ISR | Poziv funkcije |
---|---|
Prekid obično pokreće unutarnji ili vanjski signalni mikroprocesor, a ne izvršavanje instrukcija. ISR se izvršava nakon pohranjivanja trenutnog statusa programa u stog. ISR obavlja različite zadatke ovisno o prekinutom uređaju ili uputama koje je napisao programer. | Poziv funkcije se poziva izvršavanjem instrukcija, koje izvode specifične zadatke i smanjuju veličinu programa. |
Hardver određuje adresu ISR-a. ISR adresa je zapisana unutar tablice vektora prekida, a ISR adresa za svaki prekid je fiksna. | Adresa potprograma je zapisana unutar instrukcije, koja je zapisana unutar glavnog programskog koda. |
ISR se koristi za sve zadatke opće namjene. | Pozivi funkcija vrše se za zadatke specifične za program. |
Kada se tijekom izvođenja trenutnog programa dogodi prekid, dakle, nakon izvršenja tekuće instrukcije, procesor izvršava ISR. Nakon izvršenja ISR-a, procesor mora nastaviti program točno kao prije nego što je došlo do prekida. Za to se pohranjuju PC sadržaj, µP registri i neki statusni uvjeti. Skup svih uvjeta statusnih bitova u mikroprocesoru naziva se PSW (program status word).
| Ovdje je samo PC pohranjen na stogu da bi se dobila adresa sljedeće instrukcije u glavnom programu. Potprogram mora imati pristup podacima iz pozivajućeg podprograma i vratiti rezultate u taj potprogram. Stoga su parametri potprograma i povezivanje podataka napravljeni. To se može učiniti putem
|