У овом чланку ћете научити о разлици између ИСР и позив функције , али пре него што разговарате о разликама, морате укратко да знате о ИСР-у и позиву функције.
спавати у јс
Шта је ИСР?
Сервисна рутина прекида (ИСР) је софтверска рутина коју хардвер позива као одговор на прекид. ИСР испитује прекид, одређује како да њиме рукује, извршава га и враћа вредност логичког прекида. Ако није потребно даље руковање, ИСР обавештава кернел повратном вредношћу. ИСР мора да ради веома брзо да би се избегао успоравање рада уређаја и рада свих ИСР нижег приоритета.
Иако ИСР може да премести податке из ЦПУ регистра или хардверског порта у меморијски бафер, генерално се ослања на наменску нит прекида (или задатак), названу нит услуге прекида (ИСТ), да обави већину потребне обраде. Ако је потребна додатна обрада, ИСР враћа вредност логичког прекида језгру. Затим пресликава број физичког прекида у вредност логичког прекида.
Механизам руковања прекидима
Испод је механизам за руковање прекидима у следећим корацима, као што су:
- Прекид је услов који чини да ЦПУ суспендује тренутни програм и изврши ИСР. ИСР је посебно написан програм за сервисирање стања које је изазвало прекид.
- Након сервисирања прекида, ЦПУ се враћа у главни програм, тачно на следећој инструкцији где је отишао.
- У преносу података вођеном прекидом, кад год је И/О уређај спреман за пренос података, он ће прекинути ЦПУ. У ИСР-у, ЦПУ ће извршити пренос података.
- Овај метод је бољи од анкетирања јер ЦПУ не мора да губи време на проверу статуса И/О уређаја. Тастатура је добар пример И/О приступа вођеног прекидима.
- Уместо провере ЦПУ-а, тастатура би требало да прекине ЦПУ када се притисне тастер. Тако се време неће губити у сталном проверавању тастатуре када корисник уопште не куца.
- У/И уређај захтева прекид слањем $оверлине{ИНТР}$ сигнал ЦПУ-у.
- Кад год ЦПУ прими $оверлине{ИНТР}$ сигнала, завршава извршавање тренутне инструкције и затим извршава ИСР. Када је ЦПУ спреман, шаље сигнал за потврду преко ДОК линија.
- ИСР се извршава, а ЦПУ се враћа у главни програм.
- И/О уређаји искључују $оверлине{ИНТР}$ сигнал након извршења.
На пример: У следећем примеру, И/О трансфер путем У/И-а вођених прекидом.
- Ако И/О уређај који жели да изврши пренос података са процесором мора да прекине процесор.
- Прекид је услов који чини да процесор изврши рутину услуге прекида.
- У ИСР, процесор ће извршити пренос података са И/О уређајем.
У овом примеру, прекинути захтев притиском на тастер на тастатури,
- Уместо да процесор проверава да ли је тастер притиснут, тастатура прекида рад процесора када се притисне тастер.
- У ИСР-у тастатуре, који је део софтвера драјвера тастатуре, процесор ће читати податке са тастатуре.
Предности ИСР-а
Испод су следеће предности ИСР-а, као што су:
сетинтервал јавасцрипт
- ИСР асинхрони догађаји се могу појавити у било ком тренутку током извршавања програма.
- ИСР чува ПЦ, заставице и регистре на стеку, онемогућава све прекиде и учитава адресу ИСР-а.
- ИСР не може имати аргументе који му се могу пренети.
- ИСР не може да врати вредности.
- ИСР омогућава прекиде.
- Генерално, ИСР је мали јер захтева време неког другог процеса.
- Неки од ИСР-а имају свој стацк.
Шта је позив функције?
Позив функције се такође назива позивом потпрограма. Потпрограм је скуп упутстава потребних програму више пута. То је део већег програма који је одговоран за извршавање одређеног задатка. Већи програм може да изврши велико радно оптерећење, а потпрограм може да обавља само једноставан задатак, који је такође независан од преосталог програмског кодирања.
Функција је кодирана на такав начин да може бити позвана више пута и са различитих места (чак и из других функција). Када се функција позове, процесор може отићи тамо где се налази код за функцију и извршити инструкције функције једну по једну. Након завршетка функција, процесор ће се вратити тачно тамо где је стао и наставити извршавање почевши од следеће инструкције.
Функције су одличан алат за поновну употребу кода. Многи савремени програмски језици подржавају функције. Збирка функција се назива а библиотека . Библиотеке се често користе као средства за дељење и трговање софтвером. У неким случајевима, цео програм може бити низ потпрограма.
У случају процесора 8086, потпрограм се позива од а ЦАЛЛ инструкције, и контролу враћа а ЈЕЛ ТАКО упутство. Смањује величину програма.
Разлика између ИСР-а и позива функције
Функција мора бити експлицитно позвана и део је истог контекста и нити извршавања као и њен позивалац. Хардверски ИСР се не позива експлицитно, већ се призива неким спољним догађајем. Контекст тренутне нити се аутоматски чува када се позове прекид пре пребацивања контекста на ИСР.
Заузврат, долази до обрнутог пребацивања контекста, враћајући стање процесора пре прекида тако да се извршавање наставља од тачке прекида. Испод су још неке разлике између ИСР-а и позива функције.
ИСР | Позив функције |
---|---|
Прекид обично покреће интерни или екстерни сигнални микропроцесор, а не извршавање инструкција. ИСР се извршава након складиштења тренутног статуса програма у стеку. ИСР обавља различите задатке у зависности од прекинутог уређаја или инструкција које је написао програмер. | Позив функције се позива извршавањем инструкција које извршавају одређене задатке и смањују величину програма. |
Хардвер одређује адресу ИСР-а. ИСР адреса је уписана унутар табеле вектора прекида, а ИСР адреса за сваки прекид је фиксна. | Адреса потпрограма је уписана унутар инструкције, која је написана унутар главног програмског кода. |
ИСР се користи за све задатке опште намене. | Позиви функција се врше за задатке специфичне за програм. |
Када дође до прекида током извршавања тренутног програма, дакле, након извршења тренутне инструкције, процесор извршава ИСР. Након извршења ИСР-а, процесор мора да настави програм тачно онако како је дошло до прекида. За ово се чувају садржај рачунара, µП регистри и неки статусни услови. Збирка свих статусних битова стања у микропроцесору назива се ПСВ (програм статус ворд).
| Овде је само рачунар смештен на стеку да би се добила адреса следеће инструкције у главном програму. Потпрограм мора имати приступ подацима из потпрограма који позива и враћа резултате тој потпрограму. Дакле, параметри потпрограма и повезивање података су урађени. Ово се може урадити кроз
|