2013-03-18 16 views
5

Ben Linux belleğe ilgili şu soru var:Sorular

  1. ben aktif bellek en sık erişilen bellek bölümü olduğunu biliyoruz. Ama birisi bana linux'in aktif bellek ya da inaktif bellek için kullanılacak bellek konumunu nasıl düşündüğünü açıklayabilir.

  2. Tüm bileşenlerin aktif belleği nedir? Disk/dosya önbelleği etkin belleğin bir parçası olarak kabul edilir.

  3. Buffers ve Cached bellek arasındaki fark nedir?

    (1) Temel olarak konuşursak, düşünceleriniz doğru:

cevap

3

Senin sorularını yanıtlamaya çalışın. Ancak sayfa önbellek uygulaması Linux Kernel'de karmaşıktır. Linux Kernel, sayfa önbellek listelerini yönetmek için LRU (En Az Son Kullanılanlar) algoritmasını kullanır. Bir Linux sisteminde farklı bellek bölgeleri olabilir, her bir bölge LRU_INACTIVE_ANON, LRU_ACTIVE_ANON (bu iki liste anonim sayfa önbellekleri içindir), LRU_INACTIVE_FILE, LRU_ACTIVE_FILE (bu iki liste dosya sayfası önbellekleri içindir), LRU_UNEVICTABLE gibi birkaç LRU listesini korur. Bu listeler LRU algoritması kullanılarak korunur (kuyruğa eklenir, baştan çıkarılır). Ve sayfalar, erişim frekansına göre aktif liste ile aktif olmayan liste arasında aktarılır. Sayfalar aktif liste kuyruğuna sadece sayfaya erişildiğinde ve aktif olmayan listede yer aldığında eklenir. Aktif liste çok daha büyük olursa, aktif listenin başındaki sayfalar aktif olmayan liste kuyruğuna taşınır. İstenmeyen sayfadaki sayfa geri alma işlemi aktif olmayan listenin başından başlar.

(2) Düzenli dosyalar okuma/yazma, dosya erişimini engelleyin ve bellek eşlemeli dosyaların tümü Linux Çekirdeğini etkin veya etkin olmayan sayfa önbelleklerini oluşturmak için tetikleyebilir. Ayrıca, kullanıcı alanı işleminde ve kullanıcı alanı yığınında kullanılan malloc, sayfa önbelleklerini oluşturmak için Linux Kernel'i tetikleyebilir.

(3) Belki de sorunuzu yanlış anladım, arabellek önbelleği ile sayfa önbelleği arasındaki farkı kastediyorum: Eski sürüm çekirdeği arabellek önbelleği ve sayfa önbelleği kullanır. Sayfa önbelleği dosya erişimi içindir (normal dosya erişimleri, bellek haritası dosyaları, aygıt dosya erişimlerini engelleme gibi) ve arabellek önbellekleri fiziksel disk blokları içindir (normalde fiziksel disk bloğunun boyutu bir sayfadan daha azdır, bu nedenle birkaç fiziksel disk blokları bir sayfaya girebilir). Yeni sürüm çekirdeği hala arabellek önbellek kavramını kullanıyor olsa da, yeni çekirdek arabellek önbelleğini sayfa önbelleğine göre uygular.

Veya bellek arabelleği ile cpu önbelleği arasındaki farkı kastediyorsunuz, eğer varsa, bellek arabelleği disk/çevre erişimlerini hızlandırır ve cpu önbelleği bellek erişimini hızlandırmaktır.

+0

Ne demek istiyorsun? "Ayrıca, kullanıcı alanı işleminde ve kullanıcı alanı yığınında kullanılan malloc, sayfa önbelleklerini oluşturmak için Linux Çekirdeğini tetikleyebilir." –

İlgili konular