Wat is gebruikersmodus versus kernelmodus in Windows?

U hebt misschien gehoord over toepassingen die in de modus "kernel" of "gebruiker" worden uitgevoerd. Het komt allemaal neer op hoe besturingssystemen werken wanneer ze hun werk doen. Als je dat eenmaal begrijpt, is het gemakkelijk om het verschil tussen gebruikersmodus en kernelmodus te begrijpen.

Begrijpen wat een besturingssysteem doet(Does)

Een computer bestaat uit hardware, de elektronische componenten en software, de computercode die door die hardware wordt uitgevoerd. Maar wat misschien minder duidelijk is, is hoe ze samenwerken.

Het meest essentiële element van een computer is de bit of het 'binaire cijfer'. Alles wat(” Everything) een computer doet, wordt weergegeven als enen en nullen. Verschillende(Different) computercomponenten vertegenwoordigen bits op verschillende manieren. In een CPU vertegenwoordigen microscopisch kleine transistors enen en nullen door aan of uit te staan. Die transistors zijn gerangschikt in logische structuren, logische poorten genoemd.

In elektronisch computergeheugen worden bits weergegeven door geheugencellen met een lading boven of onder een bepaalde drempel. Op een mechanische harde schijf worden bits weergegeven als magnetische fluctuaties gemeten op een draaiende plaat. Op optische schijven doen putjes en landjes die wel of niet laserlicht reflecteren hetzelfde werk. 

Ongeacht hoe de fysieke weergave van binaire code wordt bereikt, u kunt uiteindelijk alle computercomponenten van de consument terugbrengen tot deze onbewerkte machinecode.

Dus hoe ga je van de mensvriendelijke interface van een computer naar de rauwe, low-level processen in de computer zelf? Dat is waar het besturingssysteem om de hoek komt kijken. Het bestuurt rechtstreeks de hardware van de computer. 

Deze software vertaalt alles wat applicaties (en dus de gebruiker) willen in de machinecode-instructies die de CPU en andere componenten begrijpen. Het meest kritische stukje software in dit proces is de kernel.

Wat is de kern?

De kernel is, zoals de naam al doet vermoeden, de kern van het besturingssysteem. De kernel is software die zich in het RAM bevindt en alles bestuurt wat de computer doet. Wanneer iets in het geheugen wordt geschreven, is het de kernel die de uitvoering aanstuurt.

De kernel weet hoe hij moet communiceren met hardware zoals GPU's en netwerkkaarten, maar hij weet misschien niet hoe hij deze optimaal moet gebruiken, omdat hij vertrouwt op generieke standaarden in de computerindustrie.

De hardwarestuurprogramma's komen hier in het spel. Drivers vertellen je besturingssysteem hoe je met specifieke componenten moet werken, daarom heb je verschillende drivers nodig voor bijvoorbeeld Nvidia en AMD GPU's .

Uitgerust met de juiste stuurprogramma's, is de kernel de ultieme autoriteit binnen de computer, inclusief het doen van dingen die catastrofale gegevens kunnen vernietigen.

De rol(Role) van Application Programming Interfaces ( API's )

In de tijd van MS-DOS moesten softwareontwikkelaars hun software speciaal voor de hardware van de gebruiker schrijven. Het meest beruchte voorbeeld hiervan op MS-DOS- systemen waren stuurprogramma's voor geluidskaarten.

Een bepaald videospel zou de meest populaire kaarten moeten ondersteunen ( Sound Blaster , Ad-lib , Gravis Ultrasound , enz.) en hopen dat de meeste spelers gedekt waren. Tegenwoordig werken de dingen heel anders, dankzij API's .

Microsoft DirectX is een goed voorbeeld. Als je een diepgaande uitleg wilt, ga dan naar Wat is DirectX en waarom is het belangrijk? (What Is DirectX and Why Is It Important?)Het belangrijkste om te weten is echter dat de API een standaard manier biedt voor softwareontwikkelaars om hardwarebronnen op te vragen van componenten zoals de GPU . Bovendien moeten hardwarefabrikanten er alleen voor zorgen dat hun producten voldoen aan DirectX om volledige compatibiliteit met gelijkaardige compatibele software te garanderen.

API's bieden een vertaallaag tussen softwaretoepassingen en de low-level kernel met zijn hardwarestuurprogramma's. Ja, dit komt met een kleine prestatiestraf. Toch is dit op moderne computers verwaarloosbaar, en het heeft een aantal voordelen, en dat is waar we uiteindelijk uitkomen bij de gebruikersmodus en de kernelmodus.

Gebruikersmodus versus kernelmodus

Moderne besturingssystemen voeren honderden of duizenden "processen" tegelijkertijd uit, waardoor ze dynamisch CPU- tijd krijgen als dat nodig is op basis van hun prioriteiten en rekenkrachtvereisten.

Wanneer u een toepassing start, genereert deze processen en de CPU kan ze uitvoeren in gebruikersmodus of kernelmodus.

Een Windows -proces dat in de gebruikersmodus wordt uitgevoerd, heeft alleen toegang tot zijn eigen privéadresruimte voor virtueel geheugen en een handle-tabel. De software gebruikt deze tabellen om gegevens in RAM op te slaan en bronnen op te vragen. Er is geen directe toegang tot geheugen of andere hardware, en het is aan het besturingssysteem om die virtuele ruimtes toe te wijzen aan de daadwerkelijke hardware van de computer.

Dit is om vele redenen goed, maar het meest cruciale voordeel is dat de toepassing geen gegevens kan overschrijven of wijzigen buiten de adresruimte van het virtuele geheugen. Bovendien zijn bepaalde functies niet toegankelijk voor processen in de gebruikersmodus, voornamelijk processen die het systeem kunnen laten crashen of gegevens kunnen vernietigen.

Wanneer een proces wordt gestart of naar de kernelmodus wordt verheven, heeft het volledige toegang tot systeembronnen, zelfs die gereserveerd zijn voor het besturingssysteem. Dus in theorie zou het cruciale gegevens kunnen overschrijven die het besturingssysteem nodig heeft om correct te werken.

Vallen en uitzonderingen

Het is belangrijk om te begrijpen dat deze twee modi op hardwareniveau worden afgedwongen door de CPU zelf. Als een toepassing die in de gebruikersmodus draait iets probeert te doen waarvoor toegang in de kernelmodus vereist is, genereert het een "trap" of "uitzondering". Het besturingssysteem zal dan de toepassing afhandelen, meestal door deze af te sluiten en een crashlog te genereren, zodat de ontwikkelaars kunnen zien wat er in het geheugen gebeurde toen de zaken ontspoorden.

De gevaren(Dangers) van kernelmodus(Kernel Mode) : het blauwe scherm(Blue Screen) van de dood(Death)

Als je ooit een Blue Screen of Death hebt meegemaakt (wie niet?) die je computer dwong om uit te schakelen of opnieuw op te starten, is de kans groot dat het een proces in de kernelmodus was.

Wanneer een proces in de kernelmodus iets doet wat het niet zou moeten doen, kan het besturingssysteem er niet van herstellen en stopt de hele computer. Wanneer een gebruikersmodusproces in de war raakt, crasht alleen de applicatie en kan de rest van de software en het besturingssysteem zonder problemen doorgaan.

Dit is een gebied waar API's een essentiële rol spelen, omdat het de API is die om privileges in de kernelmodus vraagt. Toepassingen in gebruikersmodus delegeren in wezen verzoeken die privileges in de kernelmodus zouden hebben vereist aan de API .

Dit is de reden waarom kernel-modus meestal alleen wordt verleend aan systeemprocessen op laag niveau die rechtstreeks toegang moeten hebben tot de hardware van de computer. Gewoonlijk wordt dit recht uitgebreid tot een proces omdat het meer prestaties nodig heeft dan de gebruikersmodus kan bieden. Sommige CPU- instructies werken alleen in de kernelmodus, dus als een proces die functies moet gebruiken, moet het worden verhoogd.

Als je problemen hebt met Blue Screen of Death , lees dan zeker onze Blue Screen of Death-gids voor probleemoplossing voor Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) !



About the author

Ik ben een professionele audio- en toetsenbordtechnicus met meer dan 10 jaar ervaring. Ik heb in het bedrijfsleven gewerkt, als consultant en productmanager, en meest recentelijk als software-engineer. Door mijn vaardigheden en ervaring kan ik aan verschillende soorten projecten werken, van kleine bedrijven tot grote bedrijven. Ik ben ook een expert in Windows 11 en werk nu ruim twee jaar aan het nieuwe besturingssysteem.



Related posts