E, kad smo razjasnili šta je to BSOD, da vidimo malo kako on nastaje i šta ga izaziva. Napominjem da ću ovde govoriti o malo komplikovanijim stvarima i koga mrzi da zamara mozak time, neka slobodno preskoči ovaj post i nastavi sa čitanjem sledećeg.
Elem, arhitektura NT sistema je data na šemi:
http://www.winntmag.com/Files/301/Figure_01.gif
Kao što se vidi, razlikujemo dva moda u kojima rade NT procesi (tačnije - niti, ali to nema značaja za ovu diskusiju), a to su
user mode i
kernel mode. Osnovna razlika između ova dva moda je u nivou privilegija koje procesi imaju u odnosu na OS i hardver. Naime, user mode programi su kontrolisani od strane NT Executive i nametnuta su im razna ograničenja koja ne važe za kernel mode procese. Recimo, user mode programi mogu da pristupaju samo prva 2Gb (odnosno 3Gb kod 2k servera) virtualne memorije, dok je ostatak rezervisan za kernel mode niti; pri tome kernel mode niti mogu da pristupe delu memorije rezervisanom za user mode programe. Na primer, Windows aplikacije ne mogu da pristupe memoriji rezervisnoj za drajvere, ali drajveri mogu da pristupe memoriji rezervisanoj za aplikaciju.
Veoma važno ograničenje za user mode programe je to da ne mogu da pristupaju hardveru direktno, već samo preko kernel mode delova kao što su drajveri. Drajveri su oslobođeni ovih restrikcija i mogu da rade direktno sa hardverom, mada i za njih postoje "zabranjene zone" u memoriji.
Šta se dešava kada se javi neka greška, tipa da proces pokušava da pristupi zabranjenom delu memorije? Ako je proces u user modu, grešku rešava OS, najčešće tako što "ubije" neposlušni proces, ali sistem ostaje stabilan. Međutim, ako je takva greška načinjena u kernel mode drajveru ili podsistemu, često je jedino rešenje da se pozove KeBugCheck funkcija,
http://msdn.microsoft.com/libr...kmarch/hh/kmarch/k105_8omq.asp
koja će da zaustavi rad OS-a i odštampa podatke koji bi pomogli administratoru da razreši problem. Ova funkcija maskira sve interapte svih procesora, "ofarba" ekran u plavo i krene sa ispisivanjem podataka o stanju sistema. Tako smo dobili BSOD.��mpom, a ne pitanje šta mu