Bir sayfa önbellek sayfası değiştirildiğinde, kirli olarak işaretlendiğini ve bir geri yazma gerektirdiğini biliyorum, ancak ne zaman olur:
Senaryo: Yürütülebilir bir dosya olan / apps / EXE dosyası, sayfa önbelleğine tamamen sayfalanmış (tüm sayfaları önbellek / bellekte) ve P işlemi tarafından yürütülüyor
Sürekli sürüm daha sonra / apps / EXE dosyasını yepyeni bir yürütülebilir dosyayla değiştirir.
Varsayım 1: P sürecinin (ve eski yürütülebilir dosyayı referans alan bir dosya tanımlayıcısına sahip olan herkesin) eski, bellekte / apps / EXE'de sorun olmadan kullanmaya devam edeceğini ve bu yolu yürütmeye çalışan yeni işlemlerin yeni yürütülebilir dosya.
Varsayım 2: Dosyanın tüm sayfaları belleğe eşlenmezse, dosyadan değiştirilen sayfalar gerektiren bir sayfa hatası olana ve muhtemelen bir segfault oluşana kadar işlerin iyi olacağını varsayıyorum.
Soru 1: Dosyanın tüm sayfalarını vmtouch gibi bir şeyle kilitlerseniz, bu senaryo hiç değişiyor mu?
Soru 2: / apps / EXE uzak bir NFS üzerindeyse, bu bir fark yaratır mı? (Sanmıyorum)
Lütfen 2 varsayımımı düzeltin veya doğrulayın ve 2 sorumu yanıtlayın.
Bunun bir çeşit 3.10.0-957.el7 çekirdeği olan bir CentOS 7.6 kutusu olduğunu varsayalım.
Güncelleme: Daha fazla düşünerek, bu senaryonun diğer kirli sayfa senaryolarından farklı olup olmadığını merak ediyorum.
Sanırım yeni ikili yazma işlemi tüm sayfalanmış beri tüm önbellek sayfaları bir okuma yapacak ve alacak ve daha sonra tüm bu sayfalar kirli işaretlenir. Eğer tıkanmışlarsa, ref sayısı sıfıra düştükten sonra çekirdek belleği işgal eden işe yaramaz sayfalar olacaktır.
Şu anda yürütülen programlar sona erdiğinde, başka herhangi bir şey yeni ikiliyi kullanacağından şüpheleniyorum. Her şeyin doğru olduğunu varsayarsak, sadece dosyanın sadece bir kısmı disk belleği içine alındığında ilginç olur.