Bu bana Flush Allocate'i hatırlatıyor . Bir dosya sistemi bu özelliği kullandığında, verileri doğrudan diske yazmak yerine, diskin boş alan sayacından yazılacak verinin boyutunu çıkarır ve bir senkronizasyon sistemi çağrısı yapılana veya çekirdek karar verene kadar verileri bellekte tutar kirli tamponları temizlemek için.
Bu durumda, dosya bir işlem tarafından değiştiriliyor ve başka bir işlem tarafından açılıyorsa, ikinci işlem dosyanın değiştirilmemiş ( veya isterseniz "eski" sürümünü "görür" ).
Tabii ki, yukarıdaki teorik ve çeşitli faktörlere bağlıdır ve biraz tahmin edilemez söyleyebilirim -çünkü kernel kirli sayfaları ne zaman temizleyeceğini tam olarak bilmiyorsunuz. Örneğin Linux'ta ( Linux Çekirdeğini Anlama bölümünde 15.3 bölümünde de okuyabileceğiniz gibi ), kirli sayfalar aşağıdaki koşullar altında diske yazılır:
Sayfa önbelleği çok dolu oluyor ve daha fazla sayfa gerekiyor ya da kirli sayfa sayısı çok fazla oluyor.
Bir sayfa kirli kaldığı için çok fazla zaman geçti.
Bir işlem, bir blok aygıtında veya belirli bir dosyada bekleyen tüm değişikliklerin temizlenmesini ister; bunu bir sync (), fsync () veya fdatasync () sistem çağrısını çağırarak yapar.
Bu özelliğin HFS +, XFS, Reiser4, ZFS, Btrfs ve ext4 dosya sistemlerinde uygulandığı bilinmektedir.