Ana içeriğe geç

User Space

Kullanıcı Alanı

Okunuşu
yuzır speys
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/user-space

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

Linux'ta user space ve kernel süresini görmekbash
# 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>&1

Sı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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar