Buforowanie D e f i n i c j a
B u f o r To obszar pamięci służący do przechowywania danych do komunikacji pomiędzy dwoma systemami, np. bufor karty sieciowej przechowuje pakiety, które mają zostać wysłane, a bufor karty graficznej – to co ma zostać wyświetlone na ekranie.
B u f o r y Bufory umożliwiają asynchroniczną komunikację między systemami. W niektórych językach programowania, np. w PHP, są funkcje, które działają jedynie przed wysłaniem czegokolwiek do odbiorcy. Jeśli potrzebne jest wywołanie funkcji po wysłaniu informacji do odbiory z pomocą przychodzi bufor. Podczas kompilacji zbiera wszystkie informacje wysyłane do odbiorcy i zapamiętuje je, a następnie pod sam koniec skryptu wyświetla zebrane informacje.
B u f o r o w a n i e Jest to technologia polegająca na stosowaniu buforów programowych lub sprzętowych, stosowana najczęściej w celu wyrównania różnic prędkości przesyłania danych między różnymi urządzeniami.
Wpływ buforowania danych Gdy średnie prędkości procesora i urządzeń wejścia-wyjścia są takie same, wówczas buforowanie danych pozwala procesorowi nieco wyprzedzać urządzenia lub pozostawać z nimi nieco w tyle, a jednocześnie przetwarzać wszystko z pełną prędkością.
Czynność buforowania danych Należy do obowiązków systemu operacyjnego. Monitor rezydujący lub programy obsługi urządzeń zawierają systemowe bufory wejścia-wyjścia dla każdego urządzenia zewnętrznego. Wywołania programów obsługi urządzeń przez programy użytkowe powodują zazwyczaj przesyłanie danych do lub z bufora systemowego
Czynność buforowania danych Rzeczywista operacja wejścia-wyjścia albo jest już wykonana, albo zostanie wykonana później – wtedy, kiedy urządzenie będzie dostępne
Wpływ buforowania danych Buforowanie pomaga głównie wygładzać wahania czasu zużywanego na przetworzenie rekordu.
B u f o r y Bufory występują również w przenośnych odtwarzaczach CD. Płyta CD w takim urządzeniu nie jest stabilna, co skutkuje przerwami w odczycie danych z płyty. Przerwom w odtwarzaniu dźwięku zapobiega bufor, który przechowuje odczytane z wyprzedzeniem fragmenty nagrania. W momencie zerwania kontaktu pomiędzy głowicą odczytującą a płytą CD do odtworzenia przesyłane są dane z bufora. Podobny mechanizm stosowany jest w odtwarzaczach MP3, bowiem nie da się dokładnie przewidzieć czasu dekodowania formatu MP3.
B u f o r c y k l i c z n y Jest to bufor zorganizowany w ten sposób, że dane są przechowywane w tablicy, a dodatkowo przechowywane są dwa wskaźniki lub indeksy tablicy pokazujące pierwszy i ostatni element (albo pierwszy i puste miejsce za ostatnim). Dopisywanie nowych danych wymaga inkrementacji wskaźnika na ostatni element. W przypadku dojścia do końca tablicy jest on przemieszczany na początek. Podobnie wskaźnik odczytu po dojściu do końca tablicy przemieszcza się na początek. Bufor na ogół reprezentuje kolejkę FIFO, można też zaimplementować na nim bufor, w którym dane mogą być dopisywane i czytane z obydwu stron.
Bufor cykliczny To między innymi bufor na PC. Mieści do 15 dwubajtowych kodów przycisków (keycode) kolejno naciśniętych przez użytkownika. Przekroczenie maksymalnej pojemności sygnalizowane jest przez charakterystyczny dźwięk oznaczający przepełnienie bufora klawiatury.
Zalety bufora cyklicznego prostota konstrukcji, szybki dostęp, oszczędność czasu przepisywania danych.
Wady bufora cyklicznego ograniczenie z góry wielkości bufora przez wielkość tablicy
Przykłady bufora cyklicznego bufor klawiatury (wydzielony obszar pamięci obsługiwanej przez BIOS. W buforze przechowywana jest informacja o naciśniętych klawiszach do czasu jej odczytania przez aplikacje lub system operacyjny) w PC
Przepełnienie bufora To błąd programistyczny polegający na pobraniu do wyznaczonego obszaru pamięci (bufora) większej ilości danych, niż zarezerwował na ten cel programista. Taka sytuacja może często prowadzić do zamazania danych znajdujących się w pamięci bezpośrednio za buforem, a w rezultacie do błędnego działania programu. W wielu sytuacjach, zwłaszcza gdy dane, które wpisywane są do bufora podlegają kontroli osoby o potencjalnie wrogich intencjach, może dojść do nadpisania struktur kontrolnych programu w taki sposób, by zaczął on wykonywać operacje określone przez atakującego.