Umut Tosun

I love low level stuffs and cyber security

User Mode ve Kernel Mode

03 Oct 2016 » Genel, Reverse Engineering

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.

UserModeKernel

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