Sanal Bellek
- İngilizcesi
- Virtual Memory
- Okunuşu
- vörçuıl memıri
Kısaca
Sanal 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.
Sanal bellek (virtual memory) nedir?
Sanal bellek, işletim sisteminin her process'e büyük, özel ve kesintisiz bir bellek bloğunun tamamen kendisine ait olduğu yanılsamasını vermesinin bir yoludur. Bir programın kullandığı adresler sanal adreslerdir; işletim sistemi CPU'nun yardımıyla bunları fiziksel RAM'deki gerçek konumlara çevirir.
Bellek, yaygın olarak her biri 4 KB olan, sabit boyutlu sayfalar (page) denen parçalara bölünür. Her process için bir sayfa tablosu (page table), her sanal sayfanın gerçekte nerede yaşadığını kaydeder ve bellek yönetim birimi (MMU) denen bir donanım birimi her bellek erişiminde çeviriyi yapar. Bir sayfa o anda RAM'de değilse CPU bir sayfa hatası (page fault) yükseltir ve kernel onu yükler; bu sırada daha az kullanılan bir sayfayı takas alanı (swap space) ya da sayfa dosyası (page file) denen bir bölgede diske taşıyabilir.
Sanal belleği, bir kapıcının yönettiği bir binadaki daire numaralarına benzetin. Her kiracı yalnızca kendi daire numaralarını bilir; kapıcı ise eşyalarının hangi odalarda durduğuna dair özel bir harita tutar, hatta bazı kutular bina dışı bir depodadır. Bu tasarım process'leri birbirinden yalıtır, programların fiziksel olarak var olandan fazla bellek kullanmasına olanak tanır ve sistem kütüphaneleri gibi paylaşılan kodun bir kez yüklenip birçok process tarafından kullanılmasını sağlar.
Sanal bellek çoğu zaman sanal makine (virtual machine) ya da swap alanıyla karıştırılır. Sanal makine bütün bir bilgisayarı taklit eder; sanal bellek ise tek bir işletim sistemi içindeki bir adresleme düzenidir. Swap, sanal belleğin yalnızca bir parçasıdır ve ona ağır biçimde güvenmek (thrashing) sistemi çok yavaşlatır; çünkü diskler RAM'den çok daha yavaştır.
Önemli noktalar
- Her process kendi özel sanal adres alanını alır.
- MMU ve sayfa tabloları sanal adresleri fiziksel adreslere çevirir.
- Bellek, yaygın olarak 4 KB olan sabit boyutlu sayfalarla yönetilir.
- RAM'de olmayan bir sayfaya erişmek bir sayfa hatası tetikler ve kernel onu yükler.
- Sanal bellek yalıtım, bellek paylaşımı ve fiziksel RAM'i aşabilme imkânı sağlar.
Örnek
# Show physical RAM and swap usage
free -h
# Compare this shell's virtual size (VmSize) with the RAM it really uses (VmRSS)
grep -E 'VmSize|VmRSS' /proc/$$/status
# Show the page size in bytes (often 4096)
getconf PAGESIZESık sorulan sorular
Sanal bellek swap ile aynı şey midir?
Hayır. Sanal bellek, sanal adresleri fiziksel belleğe eşlemenin tüm sistemidir; swap ise işletim sisteminin RAM'e sığmayan sayfaları tutmak için kullanabileceği disk alanıdır. Swap kapalı olsa bile bir sistem sanal bellek kullanır.
Sayfa hatası (page fault) nedir?
Sayfa hatası, bir programın o anda fiziksel RAM'e eşlenmemiş bir sanal sayfaya erişmesiyle olur. Kernel bunu sayfayı yükleyerek, adres geçersizse programı segmentation fault ile durdurarak ele alır.
Sanal bellek bilgisayarımı hızlandırır mı?
Sanal bellek ham hızdan çok güvenliği ve esnekliği artırır. Aynı anda daha fazla programın çalışmasına izin verir, ancak sistem swap'a ağır biçimde güveniyorsa performans keskin biçimde düşer.
İlgili sayfalar
- 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.
- 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.
- Memory Leakİşletim Sistemleri, s. 20Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
- Sanal MakineDevOps ve Bulut, s. 45Sanal makine, paylaşılan fiziksel donanımda kendi işletim sistemini çalıştıran, aynı ana makinedeki diğerlerinden yalıtılmış yazılım tabanlı bilgisayardır.
- Çöp toplamaProgramlamanın Temelleri, s. 9Çöp toplama, dil çalışma zamanının programın artık kullanamadığı verileri bulup bu belleği yeniden kullanıma açtığı otomatik bellek yönetimidir.
- RAMİşletim Sistemleri, s. 25RAM (rastgele erişimli bellek), bilgisayarın hızlı ve geçici çalışma belleğidir; kullanımdaki programları ve verileri tutar, güç kesilince içeriği kaybolur.
- Heap Belleğiİşletim Sistemleri, s. 13Heap belleği, boyutu ya da ömrü önceden bilinmeyen, çalışma zamanında ayrılan ve onu oluşturan fonksiyondan uzun yaşayabilen verilerin tutulduğu bölgedir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin