Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Varsayılan olarak, Windows disklerden okunan ve disklere yazılan dosya verilerini önbelleğe alır. Bu, okuma işlemlerinin dosya verilerini fiziksel disk yerine sistem dosyası önbelleği olarak bilinen sistem belleğindeki bir alandan okuduğu anlamına gelir. Buna karşılık, yazma işlemleri dosya verilerini disk yerine sistem dosya önbelleğine yazar ve bu önbellek türüne geri yazma önbelleği denir. Önbelleğe alma, dosya nesnesi başına yönetilir.
Önbelleğe alma, windows çalışırken sürekli olarak çalışan önbellek yöneticisialtında gerçekleşir. Sistem dosya önbelleğindeki dosya verileri, işletim sistemi tarafından belirlenen aralıklarla diske yazılır ve bu dosya verileri tarafından daha önce kullanılan bellek serbest bırakılmıştır; bu, önbellek temizleme olarak adlandırılır. Verilerin dosyaya yazılması geciktirme ve önbellek boşaltılana kadar önbellekte tutma ilkesi, yavaş yazma olarak adlandırılır ve önbellek yöneticisi tarafından belirli bir zaman aralığında tetiklenir. Bir dosya veri bloğunun boşaltıldığı zaman, kısmen önbellekte depolandığı süreye ve bir okuma işleminde verilere en son erişildiğinden bu yana geçen süreye bağlıdır. Bu, sık okunan dosya verilerinin sistem dosya önbelleğinde en uzun süre boyunca erişilebilir kalmasını sağlar.
Bu dosya verilerini önbelleğe alma işlemi aşağıdaki şekilde gösterilmiştir.
Önceki şekildeki düz oklarda gösterildiği gibi, 256 KB veri bölgesi, bir dosya okuma işlemi sırasında önbellek yöneticisi tarafından ilk kez istendiğinde sistem adres alanında 256 KB önbellek "yuvasına" okunur. Kullanıcı modu işlemi daha sonra bu yuvadaki verileri kendi adres alanına kopyalar. İşlem veri erişimini tamamladığında, değiştirilen verileri işlem adres alanı ile sistem önbelleği arasındaki noktalı ok tarafından gösterildiği gibi sistem önbelleğindeki aynı yuvaya geri yazar. Önbellek yöneticisi verilerin artık belirli bir süre gerekmeyecek olduğunu belirlediğinde, değiştirilen verileri sistem önbelleği ile disk arasındaki noktalı okta gösterildiği gibi diskteki dosyaya geri yazar.
Dosya verilerini önbelleğe almanın sunduğu G/Ç performansı geliştirme miktarı, okunan veya yazılan dosya veri bloğunun boyutuna bağlıdır. Büyük dosya veri blokları okunup yazıldığında, G/Ç işlemini tamamlamak için disk okuma ve yazma işlemleri yapılması daha olasıdır. Bu tür G/Ç işlemleri gerçekleştikçe G/Ç performansı giderek azalacaktır.
Bu gibi durumlarda önbelleğe alma kapatılabilir. Dosya açıldığında bu işlem, FILE_FLAG_NO_BUFFERING, dwFlagsAndAttributes parametresi için bir değer olarak CreateFilefonksiyonuna geçirilerek yapılır. Önbelleğe alma devre dışı bırakıldığında, tüm okuma ve yazma işlemleri fiziksel diske doğrudan erişilir. Ancak, dosya meta verileri yine de önbelleğe alınabilir. Meta verileri diske boşaltmak için FlushFileBuffersişlevinikullanın.
Temizlemenin oluşma sıklığı, sistem performansını sistem güvenilirliğiyle dengeleyen önemli bir noktadır. Sistem önbelleği çok sık temizlerse, büyük yazma işlemlerinden kaynaklanan temizlemeler sistem performansını önemli ölçüde azaltır. Sistem yeterince sık boşaltılmazsa, temizlemeden önce sistem belleğinin önbellek tarafından tükenmesi veya ani bir sistem hatası (bilgisayarın güç kaybı gibi) olması olasılığı daha yüksektir. İkinci örnekte önbelleğe alınan veriler kaybolur.
Doğru miktarda temizlemenin gerçekleştiğinden emin olmak için önbellek yöneticisi her saniye tembel yazar adı verilen bir işlem başlatır. Tembel yazıcı işlemi, son zamanlarda diske yazılmamış sayfaların sekizde birini diske yazılması için kuyruğa alır. En iyi sistem performansı için boşaltılan veri miktarını sürekli olarak yeniden değerlendirir ve daha fazla veri yazılması gerekiyorsa daha fazla veri kuyruğa alınır. Tembel yazarlar geçici dosyaları silmezler, çünkü bunların uygulama veya sistem tarafından silineceği varsayılır.
Virüs denetleme yazılımı gibi bazı uygulamalar yazma işlemlerinin hemen diske boşaltılması gerekir; Windows bu özelliği yazma yoluyla önbelleğe alma yoluyla sağlar. İşlem, FILE_FLAG_WRITE_THROUGH bayrağını CreateFileçağrısına geçirerek belirli bir G/Ç işlemi için yazma önbelleğini etkinleştirir. Yazma önbelleği etkinleştirildiğinde, veriler önbelleğe yazılır, ancak önbellek yöneticisi gecikmeli yazıcıyı kullanarak gecikmeye neden olmak yerine verileri hemen diske yazar. Bir işlem, FlushFileBuffers işlevini çağırarak açtığı bir dosyanın temizlenme işlemini de zorlayabilir.
Dosya sistemi meta verileri her zaman önbelleğe alınır. Bu nedenle, diskte yapılan meta veri değişikliklerini depolamak için dosyanın boşaltılması veya FILE_FLAG_WRITE_THROUGHile açılması gerekir.