Thirrje sistemi kundër ndërprerjes
Një procesor tipik ekzekuton instruksionet një nga një. Por mund të ketë raste kur procesori duhet të ndalojë përkohësisht dhe të mbajë instruksionin aktual dhe të ekzekutojë ndonjë program tjetër ose segment kodi (që banon në një vend tjetër). Pasi ta bëjë këtë, procesori kthehet në ekzekutimin normal dhe vazhdon nga vendi ku e la. Një telefonatë sistemi dhe një ndërprerje janë raste të tilla. Një thirrje sistemi është një thirrje në një nënprogram të integruar në sistem. Një ndërprerje është një ndërprerje e kontrollit të programit të shkaktuar nga ngjarje të jashtme të harduerit.
Çfarë është një thirrje sistemi?
Thirrjet e sistemit u ofrojnë programeve që ekzekutojnë në kompjuter një ndërfaqe për të folur me sistemin operativ. Kur një program duhet të kërkojë një shërbim (për të cilin ai vetë nuk ka leje) nga kerneli i sistemit operativ, ai përdor një thirrje sistemi. Proceset e nivelit të përdoruesit nuk kanë të njëjtat leje si proceset që ndërveprojnë drejtpërdrejt me sistemin operativ. Për shembull, për të komunikuar me një pajisje hyrëse/dalëse të jashtme ose për të ndërvepruar me ndonjë proces tjetër, një program duhet të përdorë thirrjet e sistemit.
Çfarë është një ndërprerje?
Gjatë ekzekutimit normal të një programi kompjuterik, mund të ketë ngjarje që mund të bëjnë që CPU të ndalet përkohësisht. Ngjarjet si kjo quhen ndërprerje. Ndërprerjet mund të shkaktohen nga defekte softuerike ose harduerike. Ndërprerjet e harduerit quhen (thjesht) Ndërprerje, ndërsa ndërprerjet e softuerit quhen Exceptions ose Traps. Pasi të ngrihet një ndërprerje (softuer ose harduer), kontrolli transferohet në një nënprogram të veçantë të quajtur ISR (Interrupt Service Routine) që mund të trajtojë kushtet që ngrihen nga ndërprerja.
Siç u përmend më lart, termi Ndërprerje zakonisht rezervohet për ndërprerjet e harduerit. Ato janë ndërprerje të kontrollit të programit të shkaktuara nga ngjarje të jashtme harduerike. Këtu, i jashtëm do të thotë i jashtëm për CPU. Ndërprerjet e harduerit zakonisht vijnë nga shumë burime të ndryshme si çipi i kohëmatësit, pajisjet periferike (tastierat, miu, etj.), portat I/O (seriale, paralele, etj.), disqet e diskut, ora CMOS, kartat e zgjerimit (karta e zërit, video kartelë, etj). Kjo do të thotë se ndërprerjet e harduerit pothuajse kurrë nuk ndodhin për shkak të ndonjë ngjarjeje që lidhet me programin ekzekutues. Për shembull, një ngjarje si shtypja e tastit në tastierë nga përdoruesi, ose një kohëmatës i brendshëm i harduerit mund të shkaktojë këtë lloj ndërprerjeje dhe mund të informojë CPU-në se një pajisje e caktuar ka nevojë për vëmendje. Në një situatë të tillë, CPU do të ndalojë çdo gjë që ka bërë (d.m.th. ndalon programin aktual), ofron shërbimin e kërkuar nga pajisja dhe do të kthehet në programin normal.
Cili është ndryshimi midis Thirrjes së Sistemit dhe Ndërprerjes?
Thirrja e sistemit është një thirrje për një nënprogram të integruar në sistem, ndërsa Ndërprerja është një ngjarje, e cila bën që procesori të mbajë përkohësisht ekzekutimin aktual. Sidoqoftë, një ndryshim i madh është se thirrjet e sistemit janë sinkron, ndërsa ndërprerjet jo. Kjo do të thotë që thirrjet e sistemit ndodhin në një kohë fikse (zakonisht e përcaktuar nga programuesi), por ndërprerjet mund të ndodhin në çdo kohë për shkak të një ngjarjeje të papritur, si p.sh. shtypja e tastit në tastierë nga përdoruesi. Prandaj, sa herë që ndodh një thirrje sistemi, procesori duhet vetëm të kujtojë se ku të kthehet, por në rast të një ndërprerjeje, procesori duhet të kujtojë vendin ku duhet të kthehet dhe gjendjen e sistemit. Ndryshe nga një thirrje sistemi, një ndërprerje zakonisht nuk ka të bëjë me programin aktual.