Buforowanie - Lucjan Miciuk

Download Report

Transcript Buforowanie - Lucjan Miciuk

Slide 1

Buforowanie

Definicja


Slide 2

Bufor
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.


Slide 3

Bufory
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.


Slide 4

Buforowanie
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.


Slide 5

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ą.


Slide 6

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


Slide 7

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


Slide 8

Wpływ buforowania danych

Buforowanie pomaga głównie wygładzać
wahania czasu zużywanego na przetworzenie
rekordu.


Slide 9

Bufory
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.


Slide 10

Bufor cykliczny
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.


Slide 11

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.


Slide 12

Zalety bufora cyklicznego
 prostota konstrukcji,
 szybki dostęp,
 oszczędność czasu przepisywania danych.


Slide 13

Wady bufora cyklicznego

 ograniczenie z góry wielkości bufora przez

wielkość tablicy


Slide 14

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


Slide 15

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.