Forskel mellem systemopkald og afbrydelse

Anonim

Systemopkald vs Afbryd

En typisk processor udfører instruktioner en efter en. Men der kan være tilfælde, hvor processoren skal stoppe midlertidigt og holde den aktuelle instruktion og udføre et andet program eller kodesegment (der er bosat på et andet sted). Efter dette har processoren vendt tilbage til normal eksekvering og fortsætter fra hvor den blev slukket. Et systemopkald og en afbrydelse er sådanne lejligheder. Et systemopkald er et opkald til en underrutine indbygget i systemet. En afbrydelse er en afbrydelse af programkontrol forårsaget af eksterne hardwarehændelser.

Hvad er et systemopkald?

Systemopkald giver programmer, der kører på computeren, et interface til at tale med operativsystemet. Når et program skal bede om en tjeneste (som det ikke har selv tilladelse til) fra kernen i operativsystemet, anvender det et systemopkald. Brugerprocesser har ikke de samme tilladelser som processerne, der direkte interagerer med operativsystemet. For eksempel at kommunikere med og ekstern I / O-enhed eller at interagere med andre processer, skal et program bruge systemopkald.

Hvad er en afbrydelse?

Under normal udførelse af et computerprogram kan der være begivenheder, der kan få CPU'en til midlertidigt at standse. Begivenheder som dette kaldes afbrydelser. Afbrydelser kan skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Afbrydelser, mens softwareafbrydelser kaldes Undtagelser eller Fælder. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en særlig subrutine kaldet ISR (Interrupt Service Routine), der kan klare de forhold, der opstår ved afbrydelsen.

Som nævnt ovenfor er udtrykket Interrupt normalt forbeholdt hardwareafbrydelser . De er programkontrolafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder ekstern ekstern til CPU'en . Hardwareafbrydelser kommer som regel fra mange forskellige kilder som timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS ur, ekspansionskort (lyd kort, grafikkort osv.). Det betyder, at hardwareafbrydelser næsten aldrig opstår på grund af en begivenhed i forbindelse med det udførende program. For eksempel kan en begivenhed som en tast trykke på tastaturet af brugeren, eller en intern hardware timeren kan udløse denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for lidt opmærksomhed. I en sådan situation stopper CPU'en, hvad den gør (det vil sige pauser det nuværende program), giver den service, der kræves af enheden, og vil komme tilbage til det normale program.

Hvad er forskellen mellem systemopkald og afbrydelse?

Systemopkald er et opkald til en underrutine indbygget i systemet, mens Afbryd er en begivenhed, som får processoren til midlertidigt at holde den aktuelle udførelse. En stor forskel er imidlertid, at systemopkald er synkron, mens afbrydelser ikke er. Det betyder, at systemopkald opstår på et bestemt tidspunkt (som regel bestemmes af programmøren), men afbrydelser kan ske på ethvert tidspunkt på grund af en uventet begivenhed som f.eks. Et tastetryk på tastaturet af brugeren. Derfor skal processoren, når der nogensinde opstår et systemopkald, kun huske, hvor man skal vende tilbage til, men i tilfælde af afbrydelse skal processoren huske både stedet for at vende tilbage til systemet og tilstanden. I modsætning til et systemopkald har en afbrydelse normalt ikke noget at gøre med det aktuelle program.