Systemsamtal kontra avbrott
En typisk processor utför instruktioner en efter en. Men det kan finnas tillfällen då processorn måste stanna tillfälligt och hålla inne den aktuella instruktionen och köra något annat program eller kodsegment (bosatt på någon annan plats). Efter att ha gjort detta återgår processorn till normal körning och fortsätter där den slutade. Ett systemsamtal och ett avbrott är sådana tillfällen. Ett systemanrop är ett anrop till en subrutin som är inbyggd i systemet. Ett avbrott är ett programkontrollavbrott som orsakas av externa hårdvaruhändelser.
Vad är ett systemsamtal?
Systemanrop ger program som körs på datorn ett gränssnitt för att prata med operativsystemet. När ett program behöver be om en tjänst (som det inte själv har tillstånd för) från operativsystemets kärna använder det ett systemanrop. Processer på användarnivå har inte samma behörigheter som de processer som direkt interagerar med operativsystemet. Till exempel, för att kommunicera med en extern I/O-enhet eller för att interagera med andra processer, måste ett program använda systemanrop.
Vad är ett avbrott?
Under normal körning av ett datorprogram kan det inträffa händelser som kan få CPU:n att tillfälligt stanna. Händelser som detta kallas avbrott. Avbrott kan orsakas av antingen mjukvaru- eller hårdvarufel. Hårdvaruavbrott kallas (helt enkelt) avbrott, medan programvaruavbrott kallas för undantag eller fällor. När ett avbrott (mjukvara eller hårdvara) har höjts, överförs kontrollen till en speciell subrutin som kallas ISR (Interrupt Service Routine) som kan hantera de tillstånd som uppstår av avbrottet.
Som nämnts ovan är termen avbrott vanligtvis reserverad för hårdvaruavbrott. De är programkontrollavbrott orsakade av externa hårdvaruhändelser. Här betyder extern extern till CPU. Hårdvaruavbrott kommer vanligtvis från många olika källor såsom timerchip, kringutrustning (tangentbord, mus, etc.), I/O-portar (seriella, parallella, etc.), diskenheter, CMOS-klocka, expansionskort (ljudkort, video). kort etc). Det betyder att hårdvaruavbrott nästan aldrig inträffar på grund av någon händelse relaterad till det körande programmet. Till exempel kan en händelse som en tangenttryckning på tangentbordet av användaren, eller en intern hårdvarutimers timeout höja denna typ av avbrott och kan informera CPU:n att en viss enhet behöver lite uppmärksamhet. I en sådan situation kommer CPU:n att stoppa vad den än gjorde (dvs. pausar det aktuella programmet), tillhandahåller den tjänst som krävs av enheten och kommer tillbaka till det normala programmet.
Vad är skillnaden mellan systemsamtal och avbrott?
Systemanrop är ett anrop till en subrutin som är inbyggd i systemet, medan Interrupt är en händelse som får processorn att tillfälligt hålla kvar den aktuella exekveringen. Men en stor skillnad är att systemanrop är synkrona, medan avbrott inte är det. Det betyder att systemanrop sker vid en fast tidpunkt (vanligtvis bestäms av programmeraren), men avbrott kan inträffa när som helst på grund av en oväntad händelse, såsom en tangenttryckning på tangentbordet av användaren. När ett systemanrop inträffar behöver därför processorn bara komma ihåg var den ska återvända till, men i händelse av ett avbrott måste processorn komma ihåg både platsen att återvända till och systemets tillstånd. Till skillnad från ett systemsamtal har ett avbrott vanligtvis inte något att göra med det aktuella programmet.