close

Önbellek

Gezinmeye atla Aramaya atla

Bilgisayar bilimindeki önbellek terimi, son derece hızlı bir bellek alanını belirtir, ancak genellikle düşük bir kapasite büyüklüğüne sahiptir. Amacı , programların yürütülmesini hızlandırmaktır .

Bir örnek, kısa vadede kullanılması beklenen verileri ve programları hızlı bir şekilde almak için kullanılan önbellektir .

Etimoloji ve telaffuz

"Önbellek", Fransızca "caché" ( İtalyanca 'gizli') teriminin İngilizce uyarlamasıdır . Genellikle / ˈkaʃ / olarak telaffuz edilir ( İngilizce / ˈkæʃ / 'den etkilenir ). Adın kökeni, önbelleğin ve kullanımının programcı için "saydam", pratikte "gizli" olmasından kaynaklanmaktadır, çünkü bunlar doğrudan işletim sistemi veya donanım tarafından yönetilmektedir .

Açıklama

Önbellek, verilerin bulunduğu ana bellekle ilişkilendirilir. Genellikle ana bellekten daha küçük bir kapasiteye sahiptir, ancak erişim süresi ve/veya sistem yükü açısından kullanımı daha uygundur.

Verilere erişim gerektiğinde, önce önbellekte bir kopyası aranır: mevcut ve geçerliyse bu kopya kullanılır; aksi takdirde veriler ana bellekten alınır ve daha sonra kullanılabilme ihtimaline karşı önbellekte saklanır.

Ana bellek, RAM (işlemci ana belleği) veya sabit sürücü gibi bir donanım olabileceği gibi , DNS veya web gibi karmaşık bir dağıtılmış veritabanı da olabilir . Bu durumlarda, ana bellek önbelleğe geçmeden değiştirilebilir, bu da "orijinal" veriler ile önbellekteki veriler arasında tutarlılık sorunlarına yol açar, bu da olası bir yanlış hizalamadır.

Bazı durumlarda, hala senkronize ve doğru olup olmadığını görmek için ana belleği sorgulayarak önbellekte bulunan verileri doğrulamak mümkündür. Web'de, örneğin proxy sunucularının yaptığı görev budur: HTTP sunucusuna, sahip oldukları sayfanın saklandıktan sonra değiştirilip değiştirilmediğini sorar ve değilse, onu aktarmaktan kaçınır ve doğrudan yeniden teklif eder. müşteriye . _

Diğer durumlarda, saklanan veriler için zamanlanmış bir sona erme mekanizması kullanılır ve önbellekteki bir verinin süresi dolmadığı sürece, ana bellekte mevcut olanla eşleşmese bile kullanılır. Bu, DNS tarafından benimsenen mekanizmadır.

Önbellek, ana bellekten ve onunla veri kullanıcısı arasındaki bağlantıdan temizlenmesi gereken istek yükünü azaltır. Bu, sistem performansının iyileştirilmesine de yardımcı olabilir. Örneğin, birçok kullanıcı tarafından kullanılan bir proxy sunucusunu düşünün : bir kullanıcı, bir başkası tarafından daha önce talep edilmiş olan bir sayfayı istediğinde, proxy , orijinal siteye bağlanmak zorunda kalmadan yanıt verebilecek ve böylece hem orijinal hem de orijinal siteyi yüklemekten kaçınacaktır. site ve ağ, böylece orijinal sitelere iletilmesi gereken daha küçük miktardaki istekler için bile sistem performansını iyileştirir.

Bir önbellek, hangi verilerin tutulacağına ve hangilerinin atılacağına karar vermek için, en son kullanılan sayfaları, sayfaların bitişikliğini veya diğer birkaç faktörü hesaba katan bir algoritma kullanır.

Bir önbellek, saklanan verileri adresine (bir bellek bloğu veya sabit disk verisi) veya "adına" (bir web sayfası veya DNS adı gibi ilişkili önbellek) dayalı olarak indeksleyebilir .

Bazı durumlarda önbellek de veri değiştirmeyi destekler. İşlemcilerde bulunan RAM bellek önbelleğinde olduğu gibi, önbellek ana belleğe giden tek erişim yoluysa, uygulanması kolaydır: önbellek RAM'e bir yazma işlemini "kabul eder" ve işlemcinin işlemeye devam etmesine izin verir. , güncellenen verileri tekrar okunmasını isterse hemen işlemciye sunar ve sayfayı silmeden önce bunları RAM'e yazmaya özen gösterir. Bu şekilde, bellekteki bir veri işlemci tarafından sık sık değiştirilirse, değişiklikleri önbellekte tutmak ve RAM'e sürekli aktarımlardan kaçınmak mümkündür (bkz . Önbellek tutarlılığı ).

Kalıcı bellekte depolanan tüm önbellek türleri, doğrudan ilgili klasörlerde hareket ederek veya işletim sistemi veya uygulamanın komutlarını kullanarak veya aşağıdakiler gibi birçok üçüncü taraf temizleyiciden [1] birini kullanarak kolayca ortadan kaldırılabilir : örneğin, CCleaner .

Tipoloji

Önbellek terimi, ilişkili olduğu terime ve bağlama bağlı olarak farklı anlamlar kazanır. O halde şundan bahsedelim: Bellek önbelleği , Disk önbelleği, TLB - Çeviri Lookaside Buffer (Sayfa Tablo önbelleği, Şube Tahmin önbelleği, Şube geçmişi tablosu, Şube Hedef Adres Önbelleği, İzleme önbelleği), bunlar fiziksel belleklerdir.

Diğerleri, geçici verileri ayrılmış MM alanlarında depolamak için yazılım tarafından yönetilen belleklerdir, örneğin: Disk önbelleği, Sayfa önbelleği, Sistem önbelleği, Uygulama önbelleği, Veritabanı önbelleği , Web önbelleği , DNS önbelleği , Tarayıcı önbelleği, Yönlendirici önbelleği, vb.

İkincisinin bazıları sadece " Tamponlar " dır , yani klasik önbelleklerin bellek-önbellek adres ilişkileri yoluyla rastgele erişimlere kıyasla sıralı erişime (veri dizileri) sahip ilişkisel olmayan belleklerdir.

Önbellek

En sık kullanılan RAM bellek konumlarına erişimi hızlandırmak ve özellikle ortak bellekli (paylaşımlı) çok işlemcili sistemlerde , bu sistemlerin en büyük darboğazlarından biri olan sistem bus ve ana bellek trafiğini azaltmak için kullanılır. Bu, doğrudan işlemcinin üzerine veya yakın çevresine kurulan küçük bir miktar hızlı bellektir. Bu hafıza, bir programın Talimatlarını ve üzerinde çalışılacak Verileri saklamak için kullanılır . Daha yüksek erişim hızı nedeniyle (bir ana bellek DRAM'ına karşı) SRAM tipi bellek kullanılır . Tarihsel olarak bu, kullanılan ilk önbellekti. Bu bellek "Önbellek" veya "Önbellek önbelleği" veya basitçe " önbellek " idi (ve hala denir). Bazen, ancak çok nadiren buna uygun olmayan bir terimle " CPU önbelleği " de denir ( Önbellekteki nota bakın ). Diğer tüm veri türlerini saklayan diğer tüm önbellekler ise her zaman işlevleri " önbellek " terimiyle ilişkilendirilerek tanımlanır.

Sayfa önbelleği

Halihazırda kullanımda olan verilerin sabit diskten kopyalandığı işletim sistemi tarafından kullanılan RAM'in bir kısmına sahip olmaktan ibarettir . Bu durumda RAM erişimi, disk erişiminden daha hızlıdır. Kullanılabilir bellek genellikle sınırlı olduğundan, işletim sistemi şu anda kullanılmayan ancak geçmişte olan bir sayfa tablosunu koruyarak bir sayfayı mümkün olduğunca bellekte tutmaya çalışır. Yeni bir sayfanın yüklenmesi gerektiğinde, henüz kullanılmayan en eski sayfanın üzerine yazılacaktır.

Disk önbelleği

İçinde RAM'in bir parçası olan bir sabit diske sahip olmaktan oluşur , burada istenene mantıksal olarak bitişik disk sektörleri yüklenebilir. Diske okuma modunda erişildiğinde, gerekli veriler önbellekte mevcutsa, disk okuma kafasının hareketi önlenerek, bilgilerin alınmasını hızlandırır ve disk üzerindeki aşınmayı azaltmaya yardımcı olur.

DNS önbelleği

Yetkili bilgileri olmayan ancak yetkili sunuculardan isteyebilen ve yanıtları depolayabilen bir DNS sunucusudur . İnternet kullanıcıları tarafından kullanılan DNS sunucuları genellikle önbellek sunucularıdır. DNS, yetkili bir sunucudan alınan her kaydın belirli bir süre için geçerli olduğu ve ardından atılması gereken bir sona erme mekanizması kullanır.

Web önbelleği

Bir http proxy sunucusu veya bir kullanıcının tarayıcısı tarafından, navigasyon sırasında yüklenirken sayfaları kaydetmek için ayrılmış sabit diskin bir parçasıdır, bu nedenle uzak sisteme tekrar sormaya gerek kalmadan yeniden önerilebilir. Bu durumda ortadan kaldırmak istediğimiz darboğaz, bant genişliği darboğazı . Ancak, bir sayfayı önbelleğe alma işlemi her zaman meşru değildir: örneğin bir çevrimiçi bankacılık işlemi yaptığınız zamanı düşünün. Genellikle, önbellekte olası kullanımına ilişkin talimatlarla birlikte gönderilen aynı web sayfasıdır; bazı durumlarda yeniden yükle simgesine tıklarken " ctrl " veya " shift " tuşunu basılı tutarak tarayıcınızı sayfayı yeniden yüklemeye zorlayabilirsiniz .

Google önbelleği

Daha doğrusu arama motoru önbelleği , bir arama motorunun sunucularına kaydedilen web sayfalarının kopyalarından oluşur. Bunlar iki nedenden dolayı kullanılır: sayfalar içinde yerel arama yapmak ve anlık sorunlar nedeniyle veya orijinal sunucudan kaldırıldığından dolayı mevcut olmayan bir sayfanın güncellenmemiş olsa bile bir kopyasını görme imkanı sunmak.

Tarayıcı önbelleği

Herhangi bir cihazda kullanılan tarayıcılar , tarama geçmişine ek olarak, girilen kullanıcı adları ve şifreler, çerezler ve site verileri, form doldurma bilgileri, hatta önbellek. Bu, gezinilen içeriklerle temsil edilir: dosyalar, resimler, metinler, vb. Bu önbellek, kullanıcının klasörlerindeki tek tek öğeleri silerek, tarayıcı komutlarını kullanarak veya "temizleyiciler" olarak adlandırılanları kullanarak kolayca ortadan kaldırılabilir.

Bu önbelleğin varlığı, tarama deneyimini kolaylaştırır ve kişiselleştirir. Açıkçası, silindiğinde, yüklenen sayfalar önceki kayıtlarını "kaybeder".

Belirli önbellekler

Aygıt türünden bağımsız olarak herhangi bir işletim sistemi [2] , önbellek kavramını çeşitli amaçlar için kullanır. Bazı önbellekler (doğrudan veya temizleyiciler kullanılarak) kolayca silinebilir, diğerleri ise verilerinin sistem klasörlerinde / dosyalarında veya yapılandırma veritabanlarında (örneğin " gibi) saklanması anlamında yarı kalıcıdır. kayıt defteri" )[3]Windows Bu nedenle, bu tür önbelleklerin temizlenmesi genellikle gelişmiş işlem gerektirir. Bazı sistemlerde, belirli önbellekleri temizlemek için sıfırlama yapılması bile gereklidir.

Bu durumda önbellek, kullanıcı deneyimini optimize etme işlevine sahiptir. Uygulamada, cihazın kullanımı daha hızlı, daha sorunsuz ve daha kişisel hale getiriliyor.

İşletim sistemi önbelleklerine örnekler:

  • girilen ve seçilen kelimeleri ara ("bul" veya "ara" kutusu)
  • geçici dosyalar (işletim sistemi, uygulamalar, hizmetler vb.)
  • duvar kağıdı, kilit ekranı, giriş ekranı, ekran koruyucu, kullanıcı profili veya hesabı, simgeler vb. için önceden yüklenmiş resimler.
  • çevresel kurulum yolları
  • resimlerin, videoların, belgelerin önizlemeleri, onları içeren klasörü açarken daha hızlı görüntülenmelerini sağlar
  • yazılan ve yürütülen komutlar
  • depolanan ayarlar: çubuklar, bildirimler, menüler, listeler, geçmişler vb.
  • pencere boyutları ve ilgili grafik ayarları
  • uygulamalar veya işletim sistemi ("son" veya günlükler olarak adlandırılır) tarafından kullanılan bilgiler (veriler, dosyalar, çeşitli içerikler)
  • en çok kullanılan programların verileri (açılma hızını artırmak için kullanılır)
  • kaldırılan uygulamalara ve çevre birimlerine (sürücüler) referanslar
  • geri yükleme, güncelleme, sıfırlama veya yeniden yükleme gibi önceki sistem "durumlarının" görüntüleri
  • klasörlere ve dosyalara, yollara ve ağ cihazlarına, kullanıcılara, çevre birimlerine, çeşitli hizmetlere yapılan erişimler
  • etki alanına erişimler hakkında bilgi
  • TPM cihaz kurtarma şifreleme anahtarı ve parolası

Kullanımla ilgili sorunlar

Bir önbelleğe sahip olmak , önbellek bellekleri ile ana bellek arasındaki tutarlılığı korumak gerektiğinden, bir elektronik cihazın veya yönetim yazılımının tasarımını büyük ölçüde karmaşıklaştırabilir . Bu, özellikle işlemcilerin ve anakartların geliştirilmesinin potansiyel önbellek tutarlılık sorunlarını hesaba katması ve önbellek ile ana bellek arasındaki senkronizasyon sorunları nedeniyle veri bozulmasını önlemek için yeterli mekanizmalar sağlaması gerektiği çok işlemcili makinelerde görülür.

Ayrıca, önbellek yönetimi yazılımı, sözde kurtarma ek yükünden kaçınmak için hem uygulamada hem de veri kurtarma stratejisinde (algoritma) oldukça karmaşık olmalıdır. Temel olarak, belirli bir önbellek belleğinin aranması veya depolanmasının, kurtarmanın kendisini çok külfetli hale getirmek gibi kaynakları (özellikle zamanı) kullanması, paradoksal olarak RAM belleğinden daha uygun hale gelmesi asla olmamalıdır.

Genel olarak, önbellek veri yönetimi algoritmaları iki temel kavramla bağlantılıdır:

  1. kodun bulunduğu yer
  2. en son kullanılan verileri önbellekten temizleme

İlk yön, her işleme aşamasında iyi tanımlanmış bellek sayfalarını etkileyen kodun taslağıyla doğrudan bağlantılıdır: kodun belirli bir bölümünün işlenmesi bittiğinde, kullanılan bellek sayfalarına artık şu şekilde atıfta bulunulmamalıdır: kodun yerini değiştirmek için, aynı zamanda o andan itibaren kullanılacak verilerin de değiştirilmesi.

Bu nedenle ikinci yön, önbellekte bulunan ve kod konumu farklı olduğunda başvurulan bir bellek sayfasına ait olan bir verinin, mevcut kod konumu ile ilgili verilere yer açmak için önbellekten çıkarılabilmesini sağlar.

Notlar

  1. ^ Bu, iOS için geçerli değildir .
  2. ^ Windows, Linux ve Android'in önbelleği silmek için komutlar sağladığına veya her durumda üçüncü taraf uygulamaların derinlemesine bile olsa bunu yapmasına izin verdiğine dikkat edilmelidir. Apple sistemlerinde kasıtlı olarak imkansız değilse de tarihsel olarak karmaşıktır (sıfırlama yapılmalıdır).
  3. ^ Bu durumda genişletilmiş anlamda önbellektir.

İlgili öğeler

Dış bağlantılar