Wat veroorzaakt een BSOD in Windows 10?

30-08-2016 15:49
Windows 10 draait in zowel kernelmodus als gebruikersmodus. Het idee is simpel: de kerncode van het besturingssysteem en apparaatdrivers draaien in de kernelmodus. De applicaties en bovenliggende drivers draaien in de gebruikersmodus. Applicaties die de OS-services en de hardware moeten aanspreken, gebruiken de Windows-services als proxy's. Het OS wordt zo vrij goed beschermd omdat code in de gebruikersmodus geen directe toegang heeft tot de kernel.

Crash door ongeldige bewerkingen

Problemen ontstaan als er iets misgaat in de kernelmodus. In de meeste gevallen komt dat doordat third-party-drivers de verkeerde calls maken, bijvoorbeeld naar geheugenadressen die niet bestaan of omdat ze OS-code willen overschrijven, wat leidt tot systeemfalen en het BSOD. Het is dus inderdaad zo dat Windows zelf vaak niet de schuldige is van de crash.
Kernelmodussoftware heeft volledige en onbeperkte toegang tot de hardware. Software die deze rechten heeft is normaal gesproken de meest vertrouwde. Het in staat is elke instructie uit te voeren en mag verwijzen naar alle adressen in het systeem. In deze modus vind je de kernelcode en de meeste drivers. Een crash in kernelmodus leidt tot een volledige systeemfalen waarna een herstart is vereist.

Applicaties afgeschermd van kernel

Software in de gebruikersmodus heeft niet die ruime en directe toegang tot adressen. Het moet aanvragen doorgeven aan calls naar API's. Dit zorgt voor een beveiligingslaag bij het uitvoeren van systeemfuncties, ongeacht of de applicatie een verkeerde call maakt of een verkeerd adres aanspreekt. Crashes hierin zijn dan ook vaak goed te verhelpen en vereisen meestal een herstart van de applicatie; niet van het hele systeem. Code van Microsoft Word tot de browser en enkele drivers draaien in deze modus.
Omdat er zoveel software in de gebruikersmodus draait, is er minder kans dat applicaties een fout op systeemniveau veroorzaken. Het enige waar kernelmodussoftware niet tegen is beschermd, is andere kernelmodussoftware. Wanneer bijvoorbeeld een videodriver een stukje geheugen wil bewerken dat is toegewezen aan een ander programma - of als het geheugen niet aangesproken mag worden door een driver - stopt Windows in zijn geheel.

Herstarten, recovery of reproduceren

Een BSOD geeft aan dat er iets mis gaat in de kernelmodus en dat gaat in de meeste gevallen om hardwaredrivers die fouten maken of zijn beschadigd. Soms is dat eenmalig, waardoor een herstart voldoende is. Soms keert de BSOD steeds terug en wijst het op een groter probleem met code in de kernelmodus. Het terugplaatsen van bijvoorbeeld een schijfimage verhelpt het probleem als kernelcode corrupt is geraakt, maar pakt de onderliggende probleem niet aan, waardoor de BSOD weer kan terugkeren.