Systemanrop vs Avbryt
En typisk prosessor utfører instruksjoner en etter en. Men det kan være anledninger når prosessoren må stoppe midlertidig og holde den gjeldende instruksjonen og utføre et annet program eller kodesegment (bosatt et annet sted). Etter å ha gjort dette, går prosessoren tilbake til normal kjøring og fortsetter fra der den slapp. Et systemanrop og et avbrudd er slike anledninger. En systemanrop er en anrop til en underrutine innebygd i systemet. Et avbrudd er et programstyringsavbrudd 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 (som det ikke selv har tillatelse for) fra kjernen i operativsystemet, bruker den en systemanrop. Prosesser på brukernivå har ikke de samme tillatelsene som prosessene som interagerer direkte med operativsystemet. For eksempel, for å kommunisere med og ekstern I / O-enhet eller for å samhandle med andre prosesser, må et program bruke systemanrop.
Hva er en avbrudd?
Under normal kjøring av et dataprogram kan det være hendelser som kan føre til at CPU midlertidig stopper. Hendelser som dette kalles avbrudd. Avbrudd kan skyldes programvarefeil eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Interrupts, mens programvareavbrudd kalles Unntak eller Feller. Når en avbrudd (programvare eller maskinvare) er hevet, overføres kontrollen til en spesiell underrutine kalt ISR (Interrupt Service Routine) som kan håndtere forholdene som heves av avbruddet.
Som nevnt ovenfor er begrepet Interrupt vanligvis reservert for maskinvareavbrudd. De er programstyringsforstyrrelser forårsaket av eksterne maskinvarehendelser. Her betyr ekstern ekstern til CPU. Maskinvareforstyrrelser kommer vanligvis fra mange forskjellige kilder, for eksempel timerchip, eksterne enheter (tastaturer, 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 kjøringsprogrammet. For eksempel kan en hendelse som et tastetrykk på tastaturet av brukeren, eller en intern tidtaker for maskinvaretimer øke denne typen avbrudd og kan informere CPUen om at en bestemt enhet trenger litt oppmerksomhet. I en slik situasjon vil CPUen stoppe hva den gjorde (dvs. pause det nåværende programmet),gir tjenesten som kreves av enheten, og vil komme tilbake til det normale programmet.
Hva er forskjellen mellom System Call og Interrupt?
Systemanrop er en samtale til en underrutine innebygd i systemet, mens Interrupt er en hendelse som får prosessoren til å midlertidig beholde den nåværende kjøringen. En stor forskjell er imidlertid at systemanrop er synkrone, mens avbrudd ikke er det. Det betyr at systemanrop forekommer på et fast tidspunkt (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 inntreffer, trenger prosessoren bare å huske hvor han skal gå tilbake, men i tilfelle avbrudd, må prosessoren huske både stedet å returnere til og tilstanden til systemet. I motsetning til et systemanrop, har et avbrudd vanligvis ikke noe å gjøre med det gjeldende programmet.