Stelseloproep vs onderbreking
'n Tipiese verwerker voer instruksies een vir een uit. Maar daar kan geleenthede wees wanneer die verwerker tydelik moet stop en die huidige instruksie moet hou en 'n ander program of kodesegment (wat op 'n ander plek woon) moet uitvoer. Nadat dit gedoen is, keer die verwerker terug na normale uitvoering en gaan voort van waar dit opgehou het. 'n Stelseloproep en 'n onderbreking is sulke geleenthede. 'n Stelseloproep is 'n oproep na 'n subroetine wat in die stelsel ingebou is. 'n Onderbreking is 'n programbeheeronderbreking wat deur eksterne hardeware-gebeurtenisse veroorsaak word.
Wat is 'n stelseloproep?
Stelseloproepe bied programme wat op die rekenaar loop 'n koppelvlak om met die bedryfstelsel te praat. Wanneer 'n program vir 'n diens (waarvoor dit nie self toestemming het nie) van die kern van die bedryfstelsel moet vra, gebruik dit 'n stelseloproep. Gebruikersvlakprosesse het nie dieselfde toestemmings as die prosesse wat direk met die bedryfstelsel in wisselwerking tree nie. Byvoorbeeld, om met 'n eksterne I/O-toestel te kommunikeer of om met enige ander prosesse te kommunikeer, moet 'n program stelseloproepe gebruik.
Wat is 'n onderbreking?
Gedurende normale uitvoering van 'n rekenaarprogram kan daar gebeure wees wat kan veroorsaak dat die SVE tydelik stop. Gebeurtenisse soos hierdie word onderbrekings genoem. Onderbrekings kan veroorsaak word deur óf sagteware óf hardeware foute. Hardeware-onderbrekings word (eenvoudig) onderbrekings genoem, terwyl sagteware-onderbrekings uitsonderings of lokvalle genoem word. Sodra 'n onderbreking (sagteware of hardeware) opgehef is, word die beheer oorgedra na 'n spesiale subroetine genaamd ISR (Interrupt Service Routine) wat die toestande kan hanteer wat deur die onderbreking veroorsaak word.
Soos hierbo genoem, word die term Onderbreking gewoonlik gereserveer vir hardeware-onderbrekings. Dit is programbeheeronderbrekings wat veroorsaak word deur eksterne hardeware-gebeurtenisse. Hier beteken ekstern ekstern tot die SVE. Hardeware-onderbrekings kom gewoonlik van baie verskillende bronne af, soos timerskyfie, randtoestelle (sleutelborde, muis, ens.), I/O-poorte (serieel, parallel, ens.), skyfdryf, CMOS-klok, uitbreidingskaarte (klankkaart, video kaart, ens.). Dit beteken hardeware-onderbrekings vind byna nooit plaas as gevolg van een of ander gebeurtenis wat verband hou met die uitvoeringsprogram nie. Byvoorbeeld, 'n gebeurtenis soos 'n sleuteldruk op die sleutelbord deur die gebruiker, of 'n interne hardeware-afteller kan hierdie soort onderbreking veroorsaak en kan die SVE inlig dat 'n sekere toestel aandag nodig het. In 'n situasie soos daardie sal die SVE stop wat dit ook al gedoen het (d.w.s. onderbreek die huidige program), verskaf die diens wat deur die toestel vereis word en sal teruggaan na die normale program.
Wat is die verskil tussen Stelseloproep en Onderbreking?
Stelseloproep is 'n oproep na 'n subroetine wat in die stelsel ingebou is, terwyl Onderbreking 'n gebeurtenis is wat veroorsaak dat die verwerker die huidige uitvoering tydelik vashou. Een groot verskil is egter dat stelseloproepe sinchronies is, terwyl onderbrekings dit nie is nie. Dit beteken dat stelseloproepe op 'n vaste tyd plaasvind (gewoonlik deur die programmeerder bepaal), maar onderbrekings kan enige tyd voorkom as gevolg van 'n onverwagte gebeurtenis soos 'n sleuteldruk op die sleutelbord deur die gebruiker. Daarom, wanneer ooit 'n stelseloproep plaasvind, hoef die verwerker net te onthou waarheen om terug te keer, maar in die geval van 'n onderbreking moet die verwerker beide die plek om na terug te keer en die toestand van die stelsel onthou. Anders as 'n stelseloproep, het 'n onderbreking gewoonlik niks met die huidige program te doen nie.