Bufor
Bufor (ang. buffer) to wydzielony obszar pamięci operacyjnej, w którym dane są przechowywane tymczasowo podczas przesyłania między dwoma procesami, urządzeniami lub systemami pracującymi z różną prędkością. Bufor działa jak śluza: szybsza strona nie musi czekać na wolniejszą, bo dane odkłada do bufora, a odbiorca pobiera je we własnym tempie. To jeden z najbardziej uniwersalnych mechanizmów informatyki — występuje od sterowników dysków po streaming wideo.
Jak działa buforowanie
Typowy bufor pracuje w modelu FIFO (first in, first out): dane wchodzą z jednej strony i wychodzą z drugiej w tej samej kolejności. Kluczowe scenariusze:
- operacje wejścia/wyjścia — system operacyjny buforuje zapisy na dysk, łącząc wiele małych operacji w większe, sekwencyjne bloki (szybsze zwłaszcza na HDD),
- transmisja sieciowa — karty sieciowe i stos TCP utrzymują bufory nadawcze i odbiorcze; ich rozmiar wpływa na wykorzystanie przepustowości przy dużych opóźnieniach,
- streaming audio/wideo — odtwarzacz gromadzi kilka sekund materiału z wyprzedzeniem, dzięki czemu chwilowe wahania łącza nie przerywają odtwarzania,
- serwery WWW — np. Nginx buforuje odpowiedzi z backendu (PHP-FPM, proxy), uwalniając procesy aplikacji szybciej, niż klient odbiera dane.
Pojęcia bufora nie należy mylić z cache: bufor wyrównuje przepływ danych „w drodze”, a cache przechowuje kopie danych do wielokrotnego użytku.
Zastosowanie w praktyce
Administratorzy serwerów stykają się z buforami na co dzień: strojenie buforów TCP (net.core.rmem_max, wmem_max) poprawia transfery na łączach o dużym opóźnieniu; bufory Nginx (proxy_buffers, fastcgi_buffers) decydują, czy odpowiedź aplikacji zmieści się w pamięci, czy wyląduje w pliku tymczasowym; a bufor zapisu MariaDB/MySQL (innodb_log_buffer_size) wpływa na wydajność transakcji. W programowaniu buforowanie wyjścia (np. ob_start() w PHP) pozwala zbudować całą odpowiedź przed wysłaniem nagłówków.
Bufory mają też ciemną stronę: błędy zarządzania nimi prowadzą do przepełnienia bufora (buffer overflow) — klasy podatności, w której nadmiarowe dane nadpisują sąsiednią pamięć i mogą umożliwić wykonanie obcego kodu. Stąd we współczesnych językach i kompilatorach stosuje się mechanizmy ochrony, jak kontrola zakresów czy stack canaries.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się bufor od cache?
Bufor wyrównuje różnice prędkości między nadawcą a odbiorcą danych — dane przechodzą przez niego zwykle raz, w kolejności FIFO. Cache przechowuje kopie danych, po które sięga się wielokrotnie, aby uniknąć ich ponownego pobierania lub wyliczania. Bufor służy przepływowi, cache — powtarzalnemu dostępowi.
