Systemopkald vs Afbryd
En typisk processor udfører instruktioner en efter en. Men der kan være lejligheder, hvor processoren skal 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 fra det sted, hvor den slap. Et systemopkald og en afbrydelse er sådanne lejligheder. Et systemopkald er et kald til en subrutine, der er 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, en grænseflade til at tale med operativsystemet. Når et program skal bede om en tjeneste (som det ikke selv har tilladelse til) fra operativsystemets kerne, bruger det et systemopkald. Processer på brugerniveau har ikke de samme tilladelser som processerne, der direkte interagerer med operativsystemet. For at kommunikere med og ekstern I / O-enhed eller 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 at stoppe midlertidigt. Begivenheder som denne kaldes afbrydelser. Afbrydelser kan enten skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Interrupts, mens softwareafbrydelser kaldes Undtagelser eller fælder. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en særlig underrutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der hæves af afbrydelsen.
Som nævnt ovenfor er udtrykket Interrupt normalt forbeholdt hardwareafbrydelser. De er programstyringsafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder eksternt eksternt for 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 forekommer på grund af en eller anden begivenhed relateret til udførelsesprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern tidsindstilling af hardware-timer hæve denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en sådan situation vil CPU'en stoppe, hvad den end gjorde (dvs. sætte det aktuelle program på pause),leverer den service, der kræves af enheden, og vender tilbage til det normale program.
Hvad er forskellen mellem systemopkald og afbryd?
Systemopkald er et opkald til en subrutine, der er indbygget i systemet, mens Interrupt er en begivenhed, der får processoren til midlertidigt at holde den aktuelle udførelse. En stor forskel er imidlertid, at systemopkald er synkrone, mens afbrydelser ikke er det. Det betyder, at systemopkald forekommer på et fast tidspunkt (normalt bestemt af programmøren), men afbrydelser kan til enhver tid forekomme på grund af en uventet begivenhed, f.eks. Et tastetryk på tastaturet af brugeren. Derfor, når der nogensinde opstår et systemopkald, behøver processoren kun at huske, hvor han skal vende tilbage, men i tilfælde af et afbrydelse skal processoren huske både stedet, hvor han skal vende tilbage og systemets tilstand. I modsætning til et systemopkald har en afbrydelse normalt ikke noget at gøre med det aktuelle program.