User Mode ve Kernel Mode

Herkesin bilmesinde faydası olduğunu düşündüğüm bir konu. Çok kısa bir yazı olacak o yüzden 1-2 dakika kaybedecekte olsanız en azından işletim sisteminin çalışma mantığının çok ufak bir kısmını anlayacaksınız.

Konuya ufak bir soru ile başlayayım. Yazdığımız programlarda oluşan hatalar nasıl oluyorda işletim sisteminin çekirdeğini etkileyip bütün sistemin çökmesine neden olmuyor? Ya da neden kötü niyetli birisi direk bir şekilde çekirdeğe erişemiyor?

İşte User mode ve Kernel mode burada devreye giriyor. Processor (işlemci), bir programdaki hatanın bütün işletim sistemini etkilememesi için kernel mode ve user mode arasında geçiş yapıyor. User mode ismindende anlaşılacağı gibi kullanıcıya ait uygulamaların execute edildiği moddur. Kernel mode ise çekirdeğe ait driver’ların execute edildiği moddur.

User Mode

Bir uygulamayı çalıştırdığımızda, Windows uygulama için process (işlem) oluşturur. Process uygulama için private virtual address space (özel sanal adres alanı) oluşturur. Uygulamanın virtual address space’ i private olduğundan dolayı diğer uygulamalar bu alanı değiştiremiyor. İşte bu yüzden bir program crash olursa sadece 1 uygulama etkileniyor. Bu sayede diğer uygulamalar bundan etkilenmiyor.

Bunun yanı sıra user-mode uygulamalarına ait virtual address space kısıtlıdır. User modda çalışan bir processor, işletim sistemine ayrılan virtual address lere erişim sağlayamaz. User mode application’lara ayrılan virtual address alanını kısıtlamak bütünlüğün bozulmasını önler.

Kernel Mode

Peki kernel da neler oluyor?

Bu modda da belki herkesin duyduğu, çoğunluğu oyuncular, driver lar execute ediliyor. Yalnız şöyle bir şey var: bütün driver lar kernel modda execute edilmez, user-mode driver’lar isminden de anlaşıldığı gibi user mode da execute edilir.

Şöyle ilginç bir konu var. Kernel mode’da, yukarıda bahsettiğim private virtual address space yok! Kernel modda çalışan bütün kodlar tek bir virtual address space i paylaşıyorlar. Bunun ne demek olduğunu tahmin edebildiniz mi? Yani kernel modda çalışan bir driver crash olduğunda bütün işletim sistemi çöküyor.

Kaynak: https://msdn.microsoft.com/en-us/library/windows/hardware/ff554836(v=vs.85).aspx

Be First to Comment

Leave a Reply

Your email address will not be published.