User Mode ve Kernel Mode

Posted by Umut on

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 ç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.

ic535109

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 gamers, 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 modda execute edilir.

Şöyle ilginç bir konu var. Kernel modda, 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


Umut

http://www.umuttosun.com

Siber güvenlik alanında çalışan ve araştırmayı seven bir vatandaş ;)