Privilege Levels
Sonraki birkaç ders oldukça teorik olacak, bu yüzden pratik şeyler arıyorsanız ileri atlayıp sonra geri dönebilirsiniz.
Neden user space ve kernel için farklı soyutlama katmanlarımız var? Neden her iki gücü tek bir katmanda birleştiremiyoruz? Bu iki katmanın ayrı ayrı var olmasının çok iyi bir sebebi var. Her ikisi de farklı modlarda çalışır; kernel, kernel mode’da çalışır ve user space de user mode’da çalışır.
Kernel mode’da kernel donanıma tamamen erişebilir, her şeyi kontrol eder. User space mode’da ise erişmenize izin verilen çok küçük bir güvenli bellek ve CPU alanı vardır. Temelde, donanımla ilgili bir şey yapmak istediğimizde—disklerimizden veri okumak, disklerimize veri yazmak, ağımızı kontrol etmek vb.—bunların hepsi kernel mode’da yapılır. Bu neden gereklidir? Makinenizin spyware ile enfekte olduğunu hayal edin, sisteminizin donanımına doğrudan erişebilmesini istemezsiniz. Tüm verilerinize, webcam’inize vb. erişebilir ve bu hiç iyi olmaz.
Bu farklı modlara privilege levels (elde ettiğiniz ayrıcalık seviyeleri için uygun şekilde adlandırılmış) denir ve genellikle protection rings olarak tanımlanır. Bu resmi boyamayı kolaylaştırmak için, diyelim ki Britney Spears’ın kasabanızdaki yerel klerb’te olduğunu öğrendiniz; grupçuları tarafından, ardından kişisel korumaları tarafından, sonra da klerb’ün dışındaki bodyguard tarafından korunuyor. Onun imzasını almak istiyorsunuz (neden olmasın?), ama ona ulaşamıyorsunuz çünkü yoğun şekilde korunuyor. Halkalar da aynı şekilde çalışır; en içteki halka en yüksek ayrıcalık seviyesine karşılık gelir. x86 bilgisayar mimarisinde iki ana seviye veya mod vardır. Ring #3, user mode uygulamalarının çalıştığı ayrıcalıktır; Ring #0, kernel’ın çalıştığı ayrıcalıktır. Ring #0 herhangi bir sistem talimatını çalıştırabilir ve tam güven verilir. Artık bu privilege level’ların nasıl çalıştığını bildiğimize göre, donanımımıza nasıl bir şey yazabiliyoruz? Kernel’dan farklı bir modda olmayacak mıyız?
Cevap system calls ile olur; system calls bize kernel mode’da ayrıcalıklı bir talimat gerçekleştirmemizi ve sonra user mode’a geri dönmemizi sağlar.
Last updated