Điều này làm tôi nhớ đến Allocate On Flush . Khi một hệ thống tập tin sử dụng tính năng này, thay vì ghi dữ liệu trực tiếp vào đĩa, nó sẽ trừ đi kích thước của dữ liệu được ghi từ bộ đếm không gian trống của đĩa và giữ dữ liệu trong bộ nhớ cho đến khi thực hiện lệnh gọi hệ thống đồng bộ hoặc nhân quyết định để xả bộ đệm bẩn.
Trong trường hợp này, nếu tệp đang được sửa đổi bởi một quy trình và được mở bởi quy trình khác, quy trình sau sẽ "xem" phiên bản chưa sửa đổi ( hoặc "cũ" nếu bạn thích ) của tệp.
Tất nhiên, những điều trên là lý thuyết và phụ thuộc vào nhiều yếu tố khác nhau, và tôi sẽ nói một chút không thể đoán trước được - vì bạn không biết chính xác khi nào kernel sẽ xóa các trang bẩn. Chẳng hạn như trong Linux ( như bạn cũng có thể đọc trong phần 15.3 của Tìm hiểu về Hạt nhân Linux ), các trang bẩn được ghi vào đĩa theo các điều kiện sau:
Bộ đệm trang quá đầy và cần nhiều trang hơn hoặc số lượng trang bẩn trở nên quá lớn.
Quá nhiều thời gian đã trôi qua kể từ khi một trang bị bẩn.
Một quy trình yêu cầu tất cả các thay đổi đang chờ xử lý của một thiết bị khối hoặc của một tệp cụ thể sẽ bị xóa; nó thực hiện điều này bằng cách gọi một cuộc gọi hệ thống sync (), fsync () hoặc fdatasync ().
Tính năng này được biết là được triển khai trong các hệ thống tập tin HFS +, XFS, Reiser4, ZFS, Btrfs và ext4.