Systemanrop vs Avbryt
En typisk prosessor utfører instruksjoner en etter en. Men det kan være tilfeller når prosessoren må stoppe midlertidig og holde den aktuelle instruksjonen og utføre et annet program eller kodesegment (bosatt på et annet sted). Etter å ha gjort dette, går prosessoren tilbake til normal utførelse og fortsetter fra hvor den sluttet. Et systemanrop og en avbrudd er slike anledninger. Et systemanrop er et anrop til en subrutine som er innebygd i systemet. En avbrudd er en programkontrollavbrudd forårsaket av eksterne maskinvarehendelser.
Hva er et systemanrop?
Systemanrop gir programmer som kjører på datamaskinen et grensesnitt for å snakke med operativsystemet. Når et program trenger å be om en tjeneste (for hvilken den ikke har tillatelse selv) fra kjernen til operativsystemet, bruker den et systemanrop. Brukernivåprosesser har ikke samme tillatelser som prosessene som er i direkte samspill med operativsystemet. For eksempel å kommunisere med og ekstern I / O-enhet eller å samhandle med andre prosesser, må et program bruke systemanrop.
Hva er en Avbryt?
Under normal utførelse av et dataprogram kan det være hendelser som kan føre til at CPUen midlertidig stanser. Hendelser som dette kalles forstyrrelser. Avbrudd kan være forårsaket av programvare eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Avbryter, mens programvareavbrudd kalles Unntak eller Feller. Når en avbrudd (programvare eller maskinvare) er hevet, overføres kontrollen til en spesiell subrutine kalt ISR (Interrupt Service Routine) som kan håndtere forholdene som oppstår ved avbrudd.
Som nevnt ovenfor er termen Avbryt vanligvis reservert for maskinvareavbrudd. De er programkontrollavbrudd forårsaket av eksterne maskinvarehendelser. Her betyr ekstern ekstern til CPU. Maskinvareavbrudd kommer vanligvis fra mange forskjellige kilder, for eksempel tidsbrikke, perifere enheter (tastatur, mus osv.), I / O-porter (seriell, parallell osv.), Diskstasjoner, CMOS klokke, utvidelseskort (lydkort, video kort osv.). Det betyr at maskinvareavbrudd nesten aldri oppstår på grunn av noen hendelser relatert til utførelsesprogrammet. For eksempel kan en hendelse som en nøkkel trykke på tastaturet av brukeren, eller en intern maskinvareutløser kan utvide denne typen avbrudd og kan informere CPUen om at en bestemt enhet trenger litt oppmerksomhet. I en slik situasjon stopper CPUen hva den gjorde (dvs. stopper det nåværende programmet), gir den tjenesten som kreves av enheten, og vil komme tilbake til det vanlige programmet.
Hva er forskjellen mellom systemanrop og avbrudd?
Systemanrop er et anrop til en subrutine som er innebygd i systemet, mens Avbryt er en hendelse, som gjør at prosessoren midlertidig holder den gjeldende kjøringen. En stor forskjell er imidlertid at systemanrop er synkron, mens avbrudd ikke er. Det betyr at systemanrop forekommer på en bestemt tid (vanligvis bestemt av programmereren), men avbrudd kan oppstå når som helst på grunn av en uventet hendelse, for eksempel et tastetrykk på tastaturet av brukeren. Derfor, når noen gang et systemanrop oppstår, må prosessoren bare huske hvor du skal komme tilbake til, men i tilfelle avbrudd, må prosessoren huske både stedet for å komme tilbake til og tilstanden til systemet. I motsetning til et systemanrop, har en avbrytelse vanligvis ikke noe å gjøre med det nåværende programmet.