5.5. Tampon bellek

Bir diskten okumak gerçek bellekten okumaktan çok daha yavaştır. Ek olarak, nispeten kısa zaman aralıkları ile aynı disk yüzeyi tekrar tekrar okunacaktır. Örneğin birisi; evvelce gelmiş bir iletiyi okuyabilir, daha sonra cevaplarken metin düzenleyiciden o iletiyi okur ve postalarken, sistemin eposta dizinine bir kopyasının konması için onu okutabilir. Veya ls komutunun bir sistem üzerinde kullanıcılar tarafından ne kadar sıklıkla kullanıldığını bir düşünün. Diskten bir kere okutup, bu bilgiyi işi bitince bellekte tutmak yöntemiyle sistem hızını artırabiliriz fakat önce okuyun. Bu işleme disk tamponlanması ve bu iş için kullanılan belleğe tampon bellek denir.

Bellek sınırlı ve kıt kaynaklara sahip olduğu için tampon bellek yeterli büyüklükte olamaz (ihtiyaç duyulan tüm bilgileri bir seferde okutmak için). Tampon dolduğu zaman, uzun süre kullanılmayan bilgiler yeni bilgilerin alınabilmesi için silinir.

Disk tamponlama tabii ki yazarak çalışır. Bir yanda, sık sık yazılan ve hemen ardından okunan bir bilgiyi (örneğin; bir dosyaya kopyalanan bir kaynak kodu dosyası ve ardından onu okuyan derleyici uygulama) tampon belleğe yerleştirmek iyi bir fikir olabilir. Diğer yandan, bilgiyi tampona yerleştirerek yazma işleminin bir seferde yapılmasını sağlayamazsınız çünkü yazma işlemi oldukça yavaştır. Yazma işlemi, diğer uygulamaları yavaşlatmaksızın, artalanda yapılır.

Pek çok işletim sistemi bu isimle anılmasa da bir önbelleğe sahiptir. Fakat çalışma prensipleri farklı olabilir. Bazıları doğrudan yazma (write-through) prensibiyle, bilgiler önbellek içinde saklanırken diske bir seferde yazma işlemini yapar; yazma işlemi daha sonra yapılan önbellekler arkadan yazma (write-back) olarak adlandırılır. Arkadan yazma, doğrudan yazma işlemine göre daha etkili ama hatalara daha meyillidir. Şayet sistem kilitlenirse, elektrik kesilirse, genellikle önbellek içinde yapılan değişiklikler kaybolur. Belki de yazılamayan bilgiler çok önemli muhasebe/kayıt bilgileri içermekteydi. Bu yüzden de dosya sistemi tam kapasite kullanıma geçemiyor da olabilir.

Bu sebeplerden dolayı sistemi her zaman normal bir şekilde kapatın. (Açılışlar ve Kapanışlar bölümüne de bakın.) Bağlı bir çıkarılabilir diski umount komutu ile sistemden ayırmadan yuvasından çıkarmayın, elektrik akımını sistem açıkken kapatmayın, disk sürücünün işini bitirmesini bekleyin. sync komutu önbelleğe baskı uygular ve bütün yazılmamış ama yazılması gereken bilgilerin disk üzerine yazılmasını sağlar. Bu komutla işlemin tam yapıldığından emin olabilirsiniz. Geleneksel Unix sistemlerinde her 30 saniyede bir sync komutunun çalışmasını sağlayan update isimli bir uygulama bulunur. Bu uygulama arka planda çalışır ve bu sayede sync komutunu kullanmanıza gerek kalmaz. Linux sync'in ağır disk G/Ç hatalarına sebep olması nedeniyle meydana gelen ani donmaları önlemek amacıyla daha etkili ve doğru sync sinyali gönderilmesini sağlayan bdflush isimli bir uygulamayı kullanır.

Linux altında bdflush, update tarafından başlatılır. Genellikle endişelenecek bir durum olmaz ama her hangi bir sebepten dolayı bdflush durur ise, çekirdek sizi uyaracaktır. Bunu /sbin/update kullanarak elle yeniden başlatabilirsiniz.

Önbelleğin etkili olamamasının sebebi onun boyutlarına bağlıdır. Çok küçük bir önbellek içinde bulunan bilgiler tekrar kullanılamadan, yeni gelenlere yer açmak için silinecektir. Kritik alan; aynı bilgiye hangi sıklıkla ulaşıldığı, ne kadar bilgi okunup yazıldığıdır.

Sabit boyutta bir önbellek alanınız varken onu çok büyük bir hale getirmek iyi olmayabilir. Çünkü bu gerçek belleğin boş alanının kısıtlanmasına ve çok yavaş olan takas işlemine ihtiyaç duyulmasına sebep olabilir. Gerçek belleğin daha verimli kullanılması için, Linux otomatik olarak boştaki bütün RAM alanını disk önbelleği olarak ayırır ve kullanır. Şayet bir uygulama RAM alanına ihtiyaç duyarsa Linux önbellek alanını otomatik olarak küçültür.

Linux altında çalışırken önbelleği kullanmak için özel bir işlem yapmanız gerekmez, her şey otomatik olarak yapılmaktadır. Kapatma ve disk ayırma işlemlerini düzgün uyguladığınız sürece, hiçbir şey hakkında endişelenmeniz gerekmez.