ZADANIE_22.HTML 

po polsku



Propozycja zadania do wykonania w ramach laboratorium systemów operacyjnych:

 

Zdalna baza danych - implementacja podrêcznej
puli buforów.

 

1. Wstêp

W aplikacjach sieciowych du¿± rolê pe³ni± bazy danych. Ze wzglêdu na
rozmiary, dane znajduj± siê w jednej kopii i ka¿de odwo³anie do nich powoduje
narzut czasowy i dodatkowy ruch w sieci. Aby zwiêkszyæ wydajno¶æ systemów
bazodanowych implementuje siê buforowanie. Sztandarowym przyk³adem zastosowania
buforowania jest podrêczna pula buforów wykorzystywana w podsystemach wej¶cia-
wyj¶cia, w szczególno¶ci buforowanie odwo³añ do dysku.

 

2. Tre¶æ zadania

Zadanie polega na stworzeniu programów klienta i serwera komunikuj±cych
siê za pomoc± sieci. Poniewa¿ zak³adamy, ¿e procesy bêd± siê intensywnie
komunikowaæ, konieczne jest usprawnienie przep³ywu danych za pomoc± buforowania.
Jest jeden g³ówny zdalny serwer dostarczaj±cy dane z bazy, i po jednym
serwerze lokalnym na ka¿dej stacji roboczej na której chcemy mieæ dostêp
do danych. Klienci przekazuj± ¿±dania danych z bazy lokalnemu serwerowi
który posiada pewn± pulê buforów. Lokalny serwer dostarcza informacje pobieraj±c
je z puli buforów lub od serwera g³ównego.

 

3. Szczegó³y implementacji

Nale¿y zapoznaæ siê z konstrukcj± podrêcznej puli buforów w systemie
Linux. Dobrym ¼ród³em informacji jest ksi±¿ka Bacha. Buforowanie wymagane
w zadaniu bêdzie oczywi¶cie uproszczone.

Serwer lokalny bêdzie posiada³ pewien obszar pamiêci który bêdzie wykorzystywany
na bufory. Potrzebne bêd± cztery podstawowe struktury danych: tablica haszuj±ca
buforów z danymi, oraz kolejka LRU buforów wolnych, kolejka klientów oczekuj±cych
na bufor bêd±cy w stanie oczekiwania na dane od serwera i nag³ówek bufora.
Mo¿liwe jest zaimplementowanie trzeciej kolejki - wolnych buforów, wed³ug
uznania (wybór pomiêdzy Unixem a Linuxem). Lokalny serwer mo¿e obs³ugiwaæ
wielu klientów jednocze¶nie, ale nie jest potrzebne tworzenie nowych procesów.
Poniewa¿ chcemy minimalizowaæ ruch w sieci, lokalny serwer powinien wykrywaæ
sytuacje, gdy dwóch klientów ¿±da tych samych danych. Komunikacja pomiêdzy
procesami mo¿e byæ oparta np. na protokole TCP a nawet sensowne wydaje
siê u¿ycie RPC. Operacja ¿±dania danych wykonywana przez klienta jest blokuj±ca.
Nale¿y napisaæ funkcjê dla klienta dbread(int nr_rekordu,char* buf) która
zwróci pod adresem buf zawarto¶æ rekordu o numerze nr_rekordu z bazy danych.


Serwer zdalny ma dostêp do bazy danych podzielonej na rekordy jednakowej
wielko¶ci. Obs³uguje zlecenia serwerów lokalnych.

 

4. Testy

Zadanie wymaga równie¿ wykonania testów wydajno¶ci dla ró¿nych wielko¶ci
podrêcznej puli buforów. W tym celu nale¿y napisaæ przyk³adowego klienta
który poda statystykê wydajno¶ci.

Jaros³aw Wawszczak
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pajaa1981.pev.pl