Apa yang dimaksud dengan buffer?

151

Saya melihat kata "BUFFER" di mana-mana, tetapi saya tidak dapat memahami apa sebenarnya itu.

  1. Adakah yang bisa menjelaskan buffer dalam bahasa awam ?
  2. Kapan itu digunakan?
  3. Bagaimana ini digunakan?
Pratik Deoghare
sumber
Saya perhatikan bahwa "buffer" memiliki sedikit variasi dalam nama, dan mereka cenderung berubah berdasarkan apa yang dipegang oleh memori fisik dan untuk apa. Seperti "Graphics buffer" adalah array char untuk memori video, sementara Network Buffer mungkin dalam RAM normal. Saya tidak yakin apakah ini standar atau kebetulan. Mirip dengan jawaban Ailayna menjelang akhir.
Stephen J

Jawaban:

268

Bayangkan Anda memakan permen dari mangkuk. Anda mengambil satu potong secara teratur. Agar mangkuk tidak kehabisan, seseorang mungkin mengisi ulang mangkuk sebelum kosong, sehingga ketika Anda ingin mengambil bagian yang lain, ada permen di dalam mangkuk.

Mangkuk bertindak sebagai penyangga antara Anda dan kantong permen.

Jika Anda menonton film online, layanan web akan terus-menerus mengunduh sekitar 5 menit ke depan ke dalam buffer, dengan cara itu komputer Anda tidak perlu mengunduh film saat Anda menontonnya (yang akan menyebabkan menggantung).

Perchik
sumber
93
+1: Buffer diperlukan ketika produsen dan konsumen beroperasi pada tingkat yang berbeda. Permen dibuat dalam jumlah besar tetapi dikonsumsi dalam jumlah yang lebih kecil - seluruh rantai pasokan dari produsen ke mulut adalah serangkaian buffer.
S.Lott
30
Analogi terbaik yang pernah ada. Membuat saya sangat membutuhkan gula
Kyle Macey
apa layanan web di sini? Dimana buffernya? Apakah layanan web host film?
Jwan622
Definisi yang solid. Saya rasa itu sebabnya kami mengatakan video ini buffering ketika membeku, dan progress bar ditampilkan ketika kami menonton film
Red M
Ini sangat bagus, layak dan sederhana.
Jonas Grønbek
93

Istilah "buffer" adalah istilah yang sangat umum, dan tidak spesifik untuk IT atau CS. Ini adalah tempat untuk menyimpan sesuatu sementara, untuk mengurangi perbedaan antara kecepatan input dan kecepatan output. Sementara produsen lebih cepat dari konsumen, produsen dapat terus menyimpan output dalam buffer. Ketika konsumen mempercepat, ia bisa membaca dari buffer. Buffer ada di tengah untuk menjembatani kesenjangan.


Jika Anda meratakan definisi di http://en.wiktionary.org/wiki/buffer , saya pikir Anda akan mendapatkan idenya.

Untuk bukti bahwa kami benar-benar "harus berjalan 10 mil berpikir salju setiap hari untuk pergi ke sekolah", lihat TOPS-10 Monitor Panggilan Manual Volume 1 , bagian 11.9, "Menggunakan Buffered I / O", di bookmark 11-24. Jangan membaca jika Anda mengalami mimpi buruk.

John Saunders
sumber
1
+1 Saya menyukai penjelasan ini dengan lebih baik. Sama seperti saya suka permen, contoh mangkuk permen adalah sedikit IMO peregangan.
Outlaw Programmer
10
Ya, "tempat untuk menyimpan sesuatu sementara, untuk mengurangi perbedaan antara kecepatan input dan kecepatan keluaran" merangkum dengan sempurna.
simpanse
1
terima kasih atas penjelasannya yang sederhana. Namun, url PDF terlampir sudah mati
hassan
20

Buffer hanyalah sepotong memori yang digunakan untuk menyimpan data. Dalam pengertian paling umum, biasanya satu gumpalan memori yang dimuat dalam satu operasi, dan kemudian dikosongkan dalam satu atau lebih, contoh "mangkuk permen" Perchik. Dalam program C, misalnya, Anda mungkin memiliki:

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

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

... yang merupakan versi minimal cp (1) . Di sini, array buffer digunakan untuk menyimpan data yang dibaca oleh baca (2) hingga ditulis; kemudian buffer digunakan kembali.

Ada skema penyangga yang lebih rumit yang digunakan, misalnya penyangga bundar , di mana sejumlah buffer terbatas, satu demi satu; setelah semua buffer penuh, indeks "membungkus" sehingga yang pertama digunakan kembali.

Charlie Martin
sumber
12

Buffer berarti 'penyimpanan sementara'. Buffer sangat penting dalam komputasi karena perangkat dan sistem yang saling berhubungan jarang 'sinkron' satu sama lain, sehingga ketika informasi dikirim dari satu sistem ke sistem lainnya, ia memiliki tempat untuk menunggu hingga sistem penerima siap.

karim79
sumber
6

Benar-benar akan tergantung pada konteks dalam setiap kasus karena tidak ada satu definisi - tetapi berbicara sangat umum penyangga adalah tempat untuk sementara memegang sesuatu. Analogi dunia nyata terbaik yang dapat saya pikirkan akan menjadi ruang tunggu. Salah satu contoh sederhana dalam komputasi adalah ketika buffer mengacu pada bagian RAM yang digunakan untuk penyimpanan data sementara.

Fraser
sumber
2

Buffer adalah placeholder sementara (variabel dalam banyak bahasa pemrograman) dalam memori (ram / disk) tempat data dapat dibuang dan kemudian pemrosesan dapat dilakukan.

Ada banyak keuntungan dari Buffering seperti itu memungkinkan hal-hal terjadi secara paralel, meningkatkan kinerja IO, dll.

Ini juga memiliki banyak kelemahan jika tidak digunakan dengan benar seperti buffer overflow, buffer underflow, dll.

C Contoh buffer Karakter.

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

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

Santosh Gokak
sumber
2

Buffer adalah area data yang digunakan bersama oleh perangkat keras atau proses program yang beroperasi pada kecepatan yang berbeda atau dengan serangkaian prioritas yang berbeda. Buffer memungkinkan setiap perangkat atau proses untuk beroperasi tanpa ditahan oleh yang lain. Agar buffer menjadi efektif, ukuran buffer dan algoritma untuk memindahkan data masuk dan keluar dari buffer.

penyangga adalah "tempat penampungan titik tengah" tetapi ada tidak begitu banyak untuk mempercepat kecepatan suatu kegiatan untuk mendukung koordinasi kegiatan yang terpisah.

Istilah ini digunakan baik dalam pemrograman dan perangkat keras. Dalam pemrograman, buffering kadang-kadang menyiratkan kebutuhan untuk menyaring data dari tempat tujuan akhir sehingga dapat diedit atau diproses sebelum dipindahkan ke file atau database biasa.

Ailayna Entarria
sumber
1

Buffer adalah placeholder sementara (variabel dalam banyak bahasa pemrograman) dalam memori (ram / disk) tempat data dapat dibuang dan kemudian pemrosesan dapat dilakukan.

Istilah "buffer" adalah istilah yang sangat umum, dan tidak spesifik untuk IT atau CS. Ini adalah tempat untuk menyimpan sesuatu sementara, untuk mengurangi perbedaan antara kecepatan input dan kecepatan output. Sementara produsen lebih cepat dari konsumen, produsen dapat terus menyimpan output dalam buffer. Ketika konsumen mempercepat, ia bisa membaca dari buffer. Buffer ada di tengah untuk menjembatani kesenjangan.


sumber