Nó có nghĩa là gì bởi bộ đệm?


151

Tôi thấy từ "BUFFER" ở khắp mọi nơi, nhưng tôi không thể nắm bắt chính xác nó là gì.

  1. Bất cứ ai có thể giải thích bộ đệm trong ngôn ngữ của giáo dân là gì?
  2. Khi nào nó được sử dụng?
  3. Nó được sử dụng như thế nào?

Tôi đã nhận thấy rằng "bộ đệm" có các biến thể nhỏ trong tên và chúng có xu hướng thay đổi dựa trên chính xác bộ nhớ vật lý đang giữ nó và để làm gì. Giống như "Bộ đệm đồ họa" là một mảng char cho bộ nhớ video, trong khi Bộ đệm mạng có thể nằm trong RAM bình thường. Tôi không chắc đây là tiêu chuẩn hay tình cờ. Tương tự như câu trả lời của Ailayna cho đến cuối cùng.
Stephen J

Câu trả lời:


268

Hãy tưởng tượng rằng bạn đang ăn kẹo trong một cái bát. Bạn lấy một mảnh thường xuyên. Để ngăn không cho bát hết, ai đó có thể đổ đầy bát trước khi hết, để khi bạn muốn lấy một miếng khác, có kẹo trong bát.

Chiếc bát hoạt động như một bộ đệm giữa bạn và túi kẹo.

Nếu bạn đang xem phim trực tuyến, dịch vụ web sẽ liên tục tải xuống khoảng 5 phút tiếp theo vào bộ đệm, theo cách đó, máy tính của bạn không phải tải xuống phim khi bạn đang xem (điều này sẽ gây treo).


93
+1: Bộ đệm được yêu cầu khi người sản xuất và người tiêu dùng hoạt động ở các mức giá khác nhau. Kẹo được sản xuất theo lô lớn nhưng được tiêu thụ với số lượng nhỏ hơn - toàn bộ chuỗi cung ứng từ nhà sản xuất đến miệng là một loạt các bộ đệm.
S.Lott

30
Tương tự tốt nhất bao giờ hết. Khiến tôi thèm đường
Kyle Macey

dịch vụ web ở đây là gì? Bộ đệm ở đâu? Là dịch vụ web là máy chủ lưu trữ phim?
Jwan622

Định nghĩa vững chắc. Tôi đoán đó là lý do tại sao chúng tôi nói rằng video được đệm khi nó bị đóng băng và thanh tiến trình đang hiển thị khi chúng tôi đang xem phim
Red M

Điều này là rất tốt đẹp, khả thi và đơn giản.
Jonas Grønbek

93

Thuật ngữ "bộ đệm" là một thuật ngữ rất chung chung và không dành riêng cho CNTT hoặc CS. Đây là nơi để lưu trữ một cái gì đó tạm thời, để giảm thiểu sự khác biệt giữa tốc độ đầu vào và tốc độ đầu ra. Trong khi nhà sản xuất đang nhanh hơn người tiêu dùng, nhà sản xuất có thể tiếp tục lưu trữ đầu ra trong bộ đệm. Khi người tiêu dùng tăng tốc, nó có thể đọc từ bộ đệm. Bộ đệm nằm ở giữa để thu hẹp khoảng cách.


Nếu bạn tính trung bình các định nghĩa tại http://en.wiktionary.org/wiki/buffer , tôi nghĩ bạn sẽ có ý tưởng.

Đối với bằng chứng rằng chúng tôi thực sự đã "phải đi bộ 10 dặm nghĩ tuyết mỗi ngày để đi học", xem TOPS-10 Màn hình cuộc gọi Manual Tập 1 , phần 11,9, "Sử dụng Buffered I / O", tại bookmark 11-24. Đừng đọc nếu bạn gặp ác mộng.


1
+1 Tôi thích cách giải thích này tốt hơn. Nhiều như tôi yêu kẹo, ví dụ bát kẹo là một chút IMO.
Lập trình viên ngoài vòng pháp luật

10
Có, "một nơi để lưu trữ một cái gì đó tạm thời, để giảm thiểu sự khác biệt giữa tốc độ đầu vào và tốc độ đầu ra" tổng hợp một cách hoàn hảo.
tinh tinh

1
cảm ơn bạn đã giải thích đơn giản. Tuy nhiên, url PDF kèm theo đã chết
hassan

20

Một bộ đệm chỉ đơn giản là một đoạn bộ nhớ được sử dụng để chứa dữ liệu. Theo nghĩa chung nhất, nó thường là một đốm bộ nhớ được tải trong một thao tác và sau đó được làm trống trong một hoặc nhiều ví dụ "bát kẹo" của Perchik. Trong một chương trình C, ví dụ, bạn có thể có:

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

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

... đó là phiên bản tối thiểu của cp (1) . Ở đây, mảng bộ đệm được sử dụng để lưu trữ dữ liệu đọc bằng cách đọc (2) cho đến khi nó được ghi; sau đó bộ đệm được sử dụng lại.

Có các lược đồ đệm phức tạp hơn được sử dụng, ví dụ như một bộ đệm tròn , trong đó một số bộ đệm hữu hạn được sử dụng, lần lượt tiếp theo; một khi các bộ đệm đã đầy, chỉ mục "bọc xung quanh" để cái đầu tiên được sử dụng lại.


12

Bộ đệm có nghĩa là 'lưu trữ tạm thời'. Bộ đệm rất quan trọng trong điện toán vì các thiết bị và hệ thống được kết nối với nhau hiếm khi 'đồng bộ' với nhau, vì vậy khi thông tin được gửi từ hệ thống này sang hệ thống khác, nó sẽ ở đâu đó để đợi cho đến khi hệ thống người nhận sẵn sàng.


6

Thực sự nó sẽ phụ thuộc vào bối cảnh trong từng trường hợp vì không có một định nghĩa nào - nhưng nói một cách tổng quát thì bộ đệm là nơi để tạm thời giữ một cái gì đó. Sự tương tự thế giới thực tốt nhất mà tôi có thể nghĩ đến sẽ là một khu vực chờ đợi. Một ví dụ đơn giản trong điện toán là khi bộ đệm đề cập đến một phần RAM được sử dụng để lưu trữ dữ liệu tạm thời.


2

Bộ đệm là trình giữ chỗ tạm thời (biến trong nhiều ngôn ngữ lập trình) trong bộ nhớ (ram / đĩa) trên đó dữ liệu có thể được kết xuất và sau đó xử lý có thể được thực hiện.

Có nhiều ưu điểm của Buffering như nó cho phép mọi thứ diễn ra song song, cải thiện hiệu suất IO, v.v.

Nó cũng có nhiều nhược điểm nếu không được sử dụng đúng như tràn bộ đệm, tràn bộ đệm, v.v.

C Ví dụ về bộ đệm ký tự.

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

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


2

Bộ đệm là vùng dữ liệu được chia sẻ bởi các thiết bị phần cứng hoặc quy trình chương trình hoạt động ở các tốc độ khác nhau hoặc với các mức ưu tiên khác nhau. Bộ đệm cho phép mỗi thiết bị hoặc quá trình hoạt động mà không bị giữ bởi thiết bị kia. Để bộ đệm có hiệu quả, kích thước của bộ đệm và các thuật toán để di chuyển dữ liệu vào và ra khỏi bộ đệm.

bộ đệm là "nơi giữ điểm giữa" nhưng không tồn tại quá nhiều để tăng tốc độ của một hoạt động để hỗ trợ sự phối hợp của các hoạt động riêng biệt.

Thuật ngữ này được sử dụng cả trong lập trình và trong phần cứng. Trong lập trình, bộ đệm đôi khi ngụ ý cần phải sàng lọc dữ liệu từ vị trí dự định cuối cùng của nó để có thể chỉnh sửa hoặc xử lý trước khi chuyển sang tệp hoặc cơ sở dữ liệu thông thường.


1

Bộ đệm là trình giữ chỗ tạm thời (biến trong nhiều ngôn ngữ lập trình) trong bộ nhớ (ram / đĩa) trên đó dữ liệu có thể được kết xuất và sau đó xử lý có thể được thực hiện.

Thuật ngữ "bộ đệm" là một thuật ngữ rất chung chung và không dành riêng cho CNTT hoặc CS. Đây là nơi để lưu trữ một cái gì đó tạm thời, để giảm thiểu sự khác biệt giữa tốc độ đầu vào và tốc độ đầu ra. Trong khi nhà sản xuất đang nhanh hơn người tiêu dùng, nhà sản xuất có thể tiếp tục lưu trữ đầu ra trong bộ đệm. Khi người tiêu dùng tăng tốc, nó có thể đọc từ bộ đệm. Bộ đệm nằm ở giữa để thu hẹp khoảng cách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.