Tampon ile ne anlama geliyor?


151

Her yerde "TAMPON" kelimesini görüyorum , ama tam olarak ne olduğunu kavrayamıyorum.

  1. Layman'ın dilinde tamponun ne olduğunu açıklayan var mı?
  2. Ne zaman kullanılır?
  3. Nasıl kullanılır?

Ben "tampon" adında hafif varyasyonları olduğunu fark ettim ve tam olarak hangi fiziksel bellek tutuyor ve ne için dayalı eğilimindedir. "Grafik arabelleği" gibi, video belleği için bir char dizisidir, Ağ Arabelleği normal RAM'de olabilir. Bunun standart mı yoksa olay mı olduğundan emin değilim. Ailayna'nın sona doğru verdiği cevaba benzer.
Stephen J

Yanıtlar:


269

Bir kaseden şeker yediğinizi düşünün. Düzenli olarak bir parça alırsınız. Kasenin tükenmesini önlemek için, birileri boşalmadan önce kaseyi yeniden doldurabilir, böylece başka bir parça almak istediğinizde kasede şeker bulunur.

Kase, siz ve şeker torbası arasında bir tampon görevi görür.

Çevrimiçi bir film izliyorsanız, web hizmeti sonraki 5 dakikayı bir ara belleğe sürekli olarak indirir, böylece bilgisayarınızın filmi izlerken izlemesi gerekmez (bu da asmaya neden olur).


93
+1: Üreticiler ve tüketiciler farklı hızlarda çalıştıklarında tamponlar gerekir. Şeker, büyük partiler halinde yapılır, ancak daha az miktarlarda tüketilir - üreticiden ağza tüm tedarik zinciri bir dizi tampondur.
S.Lott

30
Şimdiye kadarki en iyi benzetme. Bana şeker istemek
Kyle Macey

buradaki web servisi nedir? Arabellek nerede? Web hizmeti film sunucusu mu?
Jwan622

Katı tanım. Sanırım bu yüzden video dondurulduğunda arabelleğe alınıyor ve bir film izlerken ilerleme çubuğu gösteriyor
Red M

Bu çok güzel, uygulanabilir ve basit.
Jonas Grønbek

93

"Tampon" terimi çok genel bir terimdir ve BT veya CS'ye özgü değildir. Bu, giriş hızı ve çıkış hızı arasındaki farkları azaltmak için geçici olarak bir şeyler saklamak için bir yerdir. Üretici tüketiciden daha hızlı olurken, üretici çıktıyı tamponda depolamaya devam edebilir. Tüketici hızlandığında, tampondan okuyabilir. Boşluğu kapatmak için tampon ortada bulunur.


Http://en.wiktionary.org/wiki/buffer adresindeki tanımları değerlendirirseniz, bu fikri edineceğinizi düşünüyorum.

Gerçekten okula gitmek için her gün kar düşündüm 10 mil yürümek zorunda olduğumuzu kanıtlamak için , 11-24 imi, TOPS-10 Monitör Çağrılar El Kitabı Cilt 1 , bölüm 11.9, "Arabellek I / O kullanma". Kabus görüyorsanız okumayın.


1
+1 Bu açıklamayı daha çok seviyorum. Şekerlemeyi sevdiğim kadarıyla, şekerlik örneği biraz streç IMO'ydu.
Yasadışı Programcı

10
Evet, "giriş hızı ve çıkış hızı arasındaki farkları azaltmak için geçici olarak bir şeyler saklayabileceğiniz bir yer" mükemmel bir şekilde özetliyor.
şempanze

1
basit açıklama için teşekkür ederim. Ancak, ekli PDF url'si öldü
hassan

20

Bir arabellek, verileri tutmak için kullanılan bir bellek yığınından ibarettir. En genel anlamda, genellikle tek bir işlemde yüklenen ve daha sonra bir veya daha fazla, Perchik'in "şekerlik" örneğinde boşaltılan tek bir bellek bloğu. Örneğin bir C programında şunlar olabilir:

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

... cp (1) ' in asgari bir versiyonu . Burada, tampon dizisi, okunana kadar okunan (2) verileri depolamak için kullanılır ; daha sonra tampon yeniden kullanılır.

Daha karmaşık tampon şemaları, örneğin bir sonlu sayıdan sonra birbiri ardına sınırlı sayıda tamponun kullanıldığı dairesel bir tampon kullanılır; arabelleklerin tümü dolduğunda, dizin "etrafını sarar", böylece birincisi yeniden kullanılır.


12

Tampon, 'geçici depolama' anlamına gelir. Tamponlar hesaplamada önemlidir çünkü birbirine bağlı cihazlar ve sistemler birbirleriyle nadiren “senkronize” dir, bu nedenle bilgi bir sistemden diğerine gönderildiğinde, alıcı sistem hazır olana kadar beklemesi gereken bir yer vardır.


6

Gerçekten, tek bir tanım olmadığından, her durumda bağlama bağlıdır - ancak genel olarak bir arabellek geçici olarak bir şeyleri tutmak için bir yerdir. Düşünebileceğim en iyi gerçek dünya benzetmesi bir bekleme alanı olurdu. Hesaplamadaki basit bir örnek, arabellek, verilerin geçici olarak depolanması için kullanılan RAM'in bir bölümünü ifade ettiğidir.


2

Arabellek, bellekte (ram / disk) verilerin üzerine dökülebileceği ve daha sonra işlenebileceği geçici yer tutucudur (birçok programlama dilinde değişkenler).

Arabelleğe almanın, şeylerin paralel olarak gerçekleşmesine, IO performansını artırmasına vb.Gibi birçok avantajı vardır.

Ayrıca, arabellek taşması, arabellek taşması vb. Gibi doğru kullanılmazsa birçok olumsuz yanı vardır.

C Karakter tamponu örneği.

char * buffer1 = calloc (5, sizeof (char));

char * buffer2 = calloc (15, sizeof (char));


2

Arabellek, farklı hızlarda veya farklı öncelik gruplarında çalışan donanım cihazları veya program işlemleri tarafından paylaşılan bir veri alanıdır. Tampon, her cihazın veya işlemin diğeri tarafından tutulmadan çalışmasına izin verir. Bir tamponun etkili olabilmesi için tamponun boyutu ve verileri tamponun içine ve dışına taşımak için kullanılan algoritmalar.

tampon bir "orta nokta tutma yeridir", ancak bir faaliyetin hızını hızlandırmak için ayrı faaliyetlerin koordinasyonunu destekleyecek kadar fazla mevcut değildir.

Bu terim hem programlamada hem de donanımda kullanılır. Programlamada, arabelleğe alma bazen düzenli bir dosya veya veritabanına taşınmadan önce düzenlenebilmesi veya başka bir şekilde işlenebilmesi için verilerin nihai amaçlanan yerinden taranması gereğini ima eder.


1

Arabellek, bellekte (ram / disk) verilerin üzerine dökülebileceği ve daha sonra işlenebileceği geçici yer tutucudur (birçok programlama dilinde değişkenler).

"Tampon" terimi çok genel bir terimdir ve BT veya CS'ye özgü değildir. Bu, giriş hızı ve çıkış hızı arasındaki farkları azaltmak için geçici olarak bir şeyler saklamak için bir yerdir. Üretici tüketiciden daha hızlı olurken, üretici çıktıyı tamponda depolamaya devam edebilir. Tüketici hızlandığında, tampondan okuyabilir. Boşluğu kapatmak için tampon ortada bulunur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.