Systemanrop vs Avbryt
En typisk processor utför instruktioner en efter en. Men det kan finnas tillfällen när processorn måste sluta tillfälligt och hålla den aktuella instruktionen och genomföra något annat program eller kodsegment (bosatt på någon annan plats). Efter detta har processorn återgått till det normala utförandet och fortsätter från var den slutade. Ett systemanrop och ett avbrott är sådana tillfällen. Ett systemsamtal är ett samtal till en subrutin inbyggd i systemet. Ett avbrott är ett programstyrningsavbrott som orsakats av externa hårdvaruhändelser.
Vad är ett systemsamtal?
Systemsamtal ger program som körs på datorn ett gränssnitt för att prata med operativsystemet. När ett program behöver begära en tjänst (för vilken det inte har tillstånd själv) från operativsystemets kärna används det ett systemsamtal. Användarnivåprocesser har inte samma behörigheter som processerna som direkt interagerar med operativsystemet. Till exempel för att kommunicera med och extern I / O-enhet eller att interagera med andra processer måste ett program använda systemsamtal.
Vad är ett avbrott?
Under normalt utförande av ett datorprogram kan det finnas händelser som kan orsaka att CPU-enheten tillfälligt stannar. Händelser som detta kallas avbrott. Avbrott kan orsakas av programvaru- eller maskinvarufel. Hårdvaruproblem kallas (helt enkelt) Avbrott, medan programavbrott kallas undantag eller fällor. När en avbrott (mjukvara eller hårdvara) har höjts överförs kontrollen till en särskild subrutin som heter ISR (Interrupt Service Routine) som kan hantera de förhållanden som uppstår vid avbrottet.
Som nämnts ovan är termen Avbryt vanligtvis reserverad för hårdvaruavbrott. De är programkontrollavbrott som orsakas av externa hårdvaruhändelser. Här betyder externt externt för CPU: n. Hårdvaruproblem kommer vanligen från många olika källor, såsom timerchip, kringutrustning (tangentbord, mus etc.), I / O-portar (seriell, parallell, etc.), hårddiskar, CMOS-klocka, expansionskort (ljudkort, video kort, etc.). Det innebär att hårdvaruavbrott nästan aldrig uppstår på grund av en händelse som är relaterad till exekveringsprogrammet. Exempelvis kan en händelse som en tangent trycka på tangentbordet av användaren, eller en intern hårdvarutimerstimer kan öka denna typ av avbrott och kan informera CPU: n att en viss enhet behöver viss uppmärksamhet. I en sådan situation kommer CPU-enheten att stoppa vad den gjorde (dvs pausar det aktuella programmet), ger 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 samtal till en subrutin som är inbyggd i systemet, medan Avbryt är en händelse, vilket gör att processorn tillfälligt håller den aktuella körningen. En stor skillnad är dock att systemsamtal är synkrona, medan avbrott inte är. Det innebär att system samtal sker vid en bestämd tid (vanligtvis bestämd av programmeraren), men avbrott kan uppstå när som helst på grund av en oväntad händelse, såsom en tangenttryck på tangentbordet av användaren. Därför, när som helst ett systemsamtal inträffar, måste processorn bara komma ihåg var man ska återvända till, men i händelse av 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 vanligtvis inte något att göra med det aktuella programmet.