User Space
Kullanıcı Alanı
- Okunuşu
- yuzır speys
Kısaca
User space, sıradan programların çalıştığı kısıtlı alandır; kernel space'ten ayrıdır, böylece hatalı ya da kötü niyetli bir uygulama tüm sistemi çökertemez.
İşletim sisteminde user space (kullanıcı alanı) nedir?
Modern işletim sistemleri bir bilgisayarı iki dünyaya böler. Kernel space, kernel'ın belleğe ve donanıma tam erişimle çalıştığı yerdir. User space ise geri kalan her şeyin çalıştığı yerdir: uygulamalar, shell'ler, kütüphaneler, daemon'lar ve hatta grafik arayüzün çoğu.
Bu ayrımı CPU'nun kendisi uygular. İşlemcilerin x86'da halka (ring), ARM'de istisna düzeyi (exception level) denen ayrıcalık düzeyleri vardır; kernel en ayrıcalıklı düzeyde çalışır, kullanıcı programları ise en düşükte. Bellek sayfaları yalnızca kernel'a ait ya da kullanıcı tarafından erişilebilir olarak işaretlenir; bu yüzden kullanıcı kodu kernel belleğini okuyamaz ve aygıtlarla doğrudan konuşmak gibi ayrıcalıklı komutlar kullanıcı kodu denerse başarısız olur. Sınırı aşmak için program bir system call yapar: CPU kernel moduna geçer, istenen kernel kodunu çalıştırır ve sonuçla birlikte kullanıcı moduna döner.
User space bir bankanın herkese açık lobisidir, kernel space ise kasa dairesi. Müşteriler lobide özgürce dolaşır ancak kasadaki herhangi bir şey için gişe görevlisinden istemek zorundadır. Bu ayrım sayesinde çöken bir uygulama yalnızca kendi process'ini düşürür ve bir programdaki güvenlik hatalarını tüm makinenin denetimine dönüştürmek çok daha zordur. Bazı sistemler güvenlik veya hız için işi bilerek kullanıcı alanına taşır; kullanıcı alanı dosya sistemleri ve sürücüleri gibi. eBPF gibi teknolojiler ise kullanıcı programlarının kernel'a küçük, doğrulanmış programları güvenle yüklemesine izin verir.
User space çoğu zaman kullanıcı hesaplarıyla karıştırılır. root kullanıcısının ya da bir yöneticinin çalıştırdığı programlar bile user space'te çalışır: kernel'ın onlar için geçirdiği izin kontrolleri daha fazladır, ancak yine de kernel'dan system call'larla istemek zorundadırlar. Kernel'ı da kernel space'ten ayırmak yardımcı olur: kernel bir programdır, kernel space ise onun içinde çalıştığı korumalı bellek bölgesi ve CPU modudur.
Önemli noktalar
- User space, uygulamaların kısıtlı ayrıcalıklarla çalıştığı yerdir.
- Kernel space, donanıma tam erişimi olan kernel'a ayrılmıştır.
- CPU sınırı ayrıcalık düzeyleri ve bellek korumasıyla uygular.
- Programlar user space'ten kernel'a system call'larla geçer.
- root tarafından çalıştırılan programlar da user space'te çalışır.
Örnek
# Count the system calls (user-to-kernel crossings) a command makes
strace -c ls > /dev/null
# Compare time spent in user space ("user") and in the kernel ("sys")
time find /usr -name "*.conf" > /dev/null 2>&1Sık sorulan sorular
User space ile kernel space arasındaki fark nedir?
Kernel space, kernel'ın çalıştığı ve tüm belleğe ve donanıma erişebildiği ayrıcalıklı alandır. User space ise uygulamaların çalıştığı kısıtlı alandır ve ayrıcalıklı herhangi bir şey için kernel'dan istemek üzere system call'ları kullanmak zorundadır.
root olarak çalışmak kernel space'te çalışmak demek midir?
Hayır. root, kernel'ın saygı gösterdiği ek izinlere sahip bir kullanıcı hesabıdır, ancak root'un programları yine user space'te çalışır. Bununla birlikte root, kernel space'te çalışan kernel modüllerini yükleyebilir.
Programlar neden user space'te çalışır?
Uygulamaları kısıtlı ayrıcalıklarla çalıştırmak sistemi korur. Bir programdaki hata ya da saldırı, kernel'ın veya başka bir process'in belleğinin üzerine doğrudan yazamaz.
İlgili sayfalar
- Kernelİşletim Sistemleri, s. 17Kernel, işletim sisteminin CPU'yu, belleği ve donanım aygıtlarını yöneten ve programların bu kaynaklara nasıl eriştiğini denetleyen çekirdek bölümüdür.
- System Callİşletim Sistemleri, s. 32System call, bir programın işletim sistemi kernel'ından bir dosyayı okumak ya da process başlatmak gibi ayrıcalıklı bir işlem yapmasını istediği çağrıdır.
- Processİşletim Sistemleri, s. 23Process, bir programın çalışan örneğidir; işletim sistemi tarafından yönetilen kendi bellek alanına, kaynaklarına ve en az bir yürütme iş parçacığına sahiptir.
- Sanal Bellekİşletim Sistemleri, s. 26Sanal bellek, her process'e kendine ait özel bir adres alanı veren ve bunu arka planda fiziksel RAM'e ya da diske eşleyen bir işletim sistemi tekniğidir.
- Device Driverİşletim Sistemleri, s. 8Device driver, işletim sisteminin belirli bir donanımı denetlemesini sağlayan ve genel işletim sistemi isteklerini aygıta özgü komutlara çeviren yazılımdır.
- Dosya İzinleriİşletim Sistemleri, s. 9Dosya izinleri, bir dosyayı kimin okuyup değiştirebileceğini ya da çalıştırabileceğini belirleyen ve işletim sisteminin her erişimde uyguladığı kurallardır.
- Kernel Modeİşletim Sistemleri, s. 18Kernel mode (çekirdek kipi), çekirdeğin donanıma ve belleğe tam erişebildiği ayrıcalıklı CPU durumudur; sıradan programlar kısıtlı kullanıcı kipinde çalışır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin