Systemopkald vs afbrydelse
En typisk processor udfører instruktioner én efter én. Men der kan være tilfælde, hvor processoren er nødt til at stoppe midlertidigt og holde den aktuelle instruktion og udføre et andet program eller kodesegment (bosat et andet sted). Efter at have gjort dette vender processoren tilbage til normal udførelse og fortsætter derfra, hvor den slap. Et systemopkald og en afbrydelse er sådanne lejligheder. Et systemopkald er et opkald til en subroutine indbygget i systemet. En afbrydelse er et programkontrolafbrydelse forårsaget af eksterne hardwarebegivenheder.
Hvad er et systemopkald?
Systemopkald giver programmer, der kører på computeren, en grænseflade til at tale med operativsystemet. Når et program har brug for at bede om en service (som det ikke selv har tilladelse til) fra kernen i operativsystemet, bruger det et systemopkald. Processer på brugerniveau har ikke de samme tilladelser som de processer, der direkte interagerer med operativsystemet. For at kommunikere med og ekstern I / O-enhed eller for 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 forårsage, at CPU'en midlertidigt standser. Begivenheder som dette kaldes afbrydelser. Afbrydelser kan være forårsaget af enten software- eller hardwarefejl. Hardwareafbrydelser kaldes (blot) afbrydelser, mens softwareafbrydelser kaldes undtagelser eller fælder. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en speciel subroutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der opstår ved afbrydelsen.
Som nævnt ovenfor er udtrykket Interrupt normalt forbeholdt hardwareafbrydelser. Det er programkontrolafbrydelser forårsaget af eksterne hardwarebegivenheder. Her betyder ekstern ekstern til CPU'en. Hardwareafbrydelser kommer normalt fra mange forskellige kilder, såsom timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS-ur, udvidelseskort (lydkort, video kort osv.). Det betyder, at hardwareafbrydelser næsten aldrig opstår på grund af en eller anden hændelse, der er relateret til eksekveringsprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern timertimering af hardware skabe denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en situation som at CPU'en vil stoppe uanset hvad den gjorde (dvs. pauser det aktuelle program), leverer den service, som enheden kræver, og vender tilbage til det normale program.
Hvad er forskellen mellem systemopkald og afbrydelse?
Systemopkald er et opkald til en subroutine, der er indbygget i systemet, mens afbrydelse er en begivenhed, der får processoren til midlertidigt at holde den aktuelle udførelse. En vigtig forskel er imidlertid, at systemopkald er synkrone, mens afbrydelser ikke er det. Det betyder, at systemopkald forekommer på et fast tidspunkt (normalt bestemt af programmereren), men afbrydelser kan til enhver tid opstå på grund af en uventet begivenhed, såsom et tastetryk på tastaturet af brugeren. Derfor, når et systemopkald nogensinde finder sted, skal processoren kun huske, hvor han skal vende tilbage til, men i tilfælde af en afbrydelse skal processoren huske både stedet at vende tilbage til og systemets tilstand. I modsætning til et systemopkald har en afbrydelse normalt ikke noget at gøre med det aktuelle program.