Hardware voorkomt dat een gebruikersprogramma volledige controle over de CPU krijgt via verschillende mechanismen, die allemaal samenwerken om een cruciaal principe af te dwingen:bescherming . Deze mechanismen bevinden zich voornamelijk in de CPU zelf en de geheugenbeheereenheid (MMU):
1. Geringde beschermings-/privilegeniveaus: De meeste moderne CPU's maken gebruik van een geringd beschermingsmodel. Dit verdeelt de uitvoeringsmodi van de CPU in concentrische ringen, elk met afnemende privilegeniveaus. De binnenste ring (ring 0 of kernelmodus) heeft volledige toegang tot alle hardware en bronnen. Gebruikersprogramma's draaien doorgaans in een hogere ring (ring 3 of gebruikersmodus), ernstig beperkt in wat ze rechtstreeks kunnen openen of uitvoeren. Pogingen om geprivilegieerde instructies uit te voeren (bijvoorbeeld directe toegang tot I/O-poorten, het manipuleren van de interne registers van de CPU op manieren die het systeem in gevaar kunnen brengen) vanuit een hogere ring zullen resulteren in een valstrik of uitzondering, waarbij de controle wordt overgedragen aan het besturingssysteem (kernel).
2. Geheugenbeheereenheid (MMU): De MMU is een cruciale hardwarecomponent die virtuele adressen die door programma's worden gebruikt, vertaalt naar fysieke adressen in RAM. Het dwingt verschillende belangrijke beschermingsmechanismen af:
* Virtueel geheugen: Elk proces krijgt zijn eigen virtuele adresruimte, waardoor het wordt geïsoleerd van andere processen. Zelfs als één proces een bug heeft die het geheugen overschrijft, is het onwaarschijnlijk dat dit andere processen zal beïnvloeden, omdat de MMU zijn toegangen zal vertalen naar zijn eigen toegewezen ruimte.
* Segmentatie/paging: Dit zijn methoden die door de MMU worden gebruikt om het geheugen in segmenten of pagina's te verdelen. Toegangsrechten (lezen, schrijven, uitvoeren) kunnen individueel aan elk segment of elke pagina worden toegewezen. De MMU controleert deze machtigingen voordat geheugentoegang wordt toegestaan, waardoor wordt voorkomen dat een gebruikersprogramma bijvoorbeeld naar het codesegment van de kernel schrijft of gevoelige gegevens uit het geheugen van een ander proces leest.
* Adresvertaling: De MMU voorkomt dat een programma rechtstreeks toegang krijgt tot fysieke geheugenadressen. Het onderschept alle geheugentoegangen en valideert deze aan de hand van de toegangscontrolelijsten voordat ze worden toegestaan.
3. Onderbrekingen en uitzonderingen: Hardware-interrupts (bijvoorbeeld van een timer, toetsenbord of netwerkadapter) en software-uitzonderingen (bijvoorbeeld delen door nul, illegale instructies) veroorzaken een overdracht van controle naar de kernel van het besturingssysteem. Dit voorkomt dat een gebruikersprogramma de CPU voor onbepaalde tijd monopoliseert en stelt het besturingssysteem in staat bronnen te beheren en gebeurtenissen af te handelen. De kernel bepaalt vervolgens de juiste actie, waaronder mogelijk het beëindigen van het overtredende programma.
4. Timers: De CPU heeft interne timers die het actieve programma periodiek onderbreken, waardoor het besturingssysteem andere processen kan plannen en kan voorkomen dat een programma voor altijd wordt uitgevoerd. Zonder dit zou een zich misdragend programma de CPU kunnen gijzelen.
5. Beveiligde instructies: Sommige instructies zijn bevoorrecht en kunnen alleen in de kernelmodus worden uitgevoerd. Een poging om een geprivilegieerde instructie uit te voeren vanuit de gebruikersmodus resulteert in een val, waardoor ongeautoriseerde toegang tot hardware en systeembronnen wordt voorkomen.
Samenvattend werkt een combinatie van hardwarefuncties zoals ringbescherming, de geheugenbeheermogelijkheden van de MMU, interruptafhandeling, timers en beveiligde instructies samen met het besturingssysteem om te voorkomen dat een gebruikersprogramma volledige controle over de CPU krijgt, waardoor de systeemstabiliteit en veiligheid behouden blijven. Als een enkel onderdeel zou falen, zouden de andere nog steeds een zekere mate van bescherming bieden, maar zou de algehele systeembeveiliging afnemen. |