Sanal bellek / çağrı tesisi bir çekirdeğin kullanıcı alanı işlemlerine belleği "sanallaştırmasını" sağlar. Çekirdek sayfalarını fiziksel bellekten alabilir ve disk belleği kullanarak düzenleyerek bir kullanıcı alanı işlemine bitişik görünmelerini sağlar.
Bir kullanıcı alanı işleminin hafızasında bir sınır belirlenebilir ve işlem bunun ötesine geçerse "sayfa hatası" oluşur ve bu durum çekirdeğe geri dönen bir CPU istisnasına neden olur. Bu, kullanıcı programı, çekirdeğin veya diğer programların çekirdeğin izni olmadan ayrılan belleğe karışmasını önler.
Tipik olarak, kullanıcı alanı programları iyi tanımlanmış arayüzler üzerinden bu uzatabilme çekirdek sormak (Cı işlevleri tarafından adlandırılan malloc()
ve free()
örneğin.). Çekirdek, bir programın ne kadar ve hangi belleğin tahsis edildiğini takip etmekten sorumludur.
Bu "sayfa hatası" mekanizması aynı zamanda, çekirdeğin belleğe aşırı koruma sağlaması durumunda (ve hem Windows hem de Linux bunu destekliyorsa) bu nedenle neden takas olarak adlandırılıyorsa, çekirdeğin işlemden birini diskten erişmeye çalıştığı sayfayı değiştirmesine de izin verebilir. Eğer hafıza erişimi gerçekten geçersiz ise (yani süreç önce sormadığı hafızaya erişmeye çalışıyorsa), o zaman tipik olarak bir SIGSEGV ile öldürülecektir.
Bu nedenle "takas", sanal belleğe / sayfalamaya bağlı olan ancak sadece bir CPU'nun sanal belleğe / sayfalamaya sahip olması gerekmeyen ek bir özelliktir (Linux'ta isterseniz tamamen devre dışı bırakabilirsiniz). Kavramlar aynı değildir ancak takas, var olan disk belleği / sanal belleğe bağlıdır.
Ayrıca, sorunuzu daha yakından okuduktan sonra, "disk belleği" bazen "takas" için bir eşanlamlı olarak da kullanılır - ancak tüm işlemin hafızasının değiştirildiği anlamına gelen "takas" anlamını hiç duymamıştım. değiştirildi.
Peki neden Linux takas bölümüne ihtiyaç duyuyor? Fiziksel bellek doluysa, bazı işlemler sabit sürücüye taşınır ve yeni bir işlem sanal bellekten fiziksel belleğe eşlenir.
"Sanal bellek" olduğunu sadece fiziksel bellek, "remapped." MMU donanımı hiçbir depolama aygıtına doğrudan eşlenemez. MMU, çekirdeğe sahip olması gerekmeyen bir belleğe erişmeye çalıştığı bir işlemin çekirdeğe söyleyebileceği bir hataya neden olabilir - ve çekirdek, bir işlemin bellekte olduğu düşünülen bir şeyi geri almak istediğini görmek için bu mekanizmayı kullanabilir ve " takas". Mesele şu ki, sayfaları diske kaydetmeye karar veren işletim sistemidir, böylece bu sayfaları donanımı değil diğer işlemler için kullanabilir.