Projekt zadania laboratoryjnego


Do spisu treści
tematu nadrzędnego


4.12.11 Zadanie laboratoryjne "Urzadzenia wymiany"






Spis treści:



Wprowadzenie


Specyfikacja zadania


Wskazówki dotyczące implementacji


Testy i wnioski


Bibliografia









Wprowadzenie
       W systemie operacyjnym Linux 2.0.32
oraz w wersjach wcześniejszych istnieje pewna niedoskonałosć, która wydaje
się w praktyce nie mieć większego znaczenia, ale jako obiekt zainteresowania,
dla osób które by chciały coś "ulepszyć" wydaje się być dość ambitnym zadaniem.
Chodzi o maksymalny rozmiar miejsca dostępnego na urządzeniu wymiany, które
jest ograniczone przez sposób w jaki jest zarządzana pamiecią na tym urządzeniu.
Na poczatku pamięci urządzenia wymiany znajduje się tablica bitowa 
swap_lockmap, która przy inicjowaniu urządzenia przez funkcje  sys_swapon(..)
wczytywana jest jako ramka (zatem ma rozmiar 4KB ).Za pomoca swap_lockmap
ustalany jest rozmiar pamięci jaka jest dostępna na urządzeniu. Ograniczenie
wynika stąd, że za pomocą swap_lockmap moąemy reprezentować rozmiar pamięci
nie większy niz (4096 - 10) *8*4096 = 133890048 bajtów =127.6875 Mb. (pierwsza
cześć iloczynu to rozmiar pierwszej ramki na urządzeniu (lock_map) pomniejszony
o 10 bajtow przeznaczony na "flage" "SWAP_SPACE", która zostaje tam umieszczona
po prawidłowym zainicjowaniu urządzenia). Z praktycznegoo punktu widzenia
wydaje się, ze rozmiar prawie 128Mb pamięci przeznaczonej na urządzenie
wymiany jest bardzo duża, jednak może sie okazać w przyszloćci, że potrzeba
usunięcia takiego ograniczenia może okazać sie o ile nie konieczne to byc
może przydatne.  Zadanie jakie chciałbym postawić to umożliwienie
w systemie Linux 2.0.32 usunięcia ograniczenia tak, aby rozmiar pamięci
na urządzeniu wymiany byl ograniczony czynnikami wynikajacymi z ograniczeń
np.: sprzętu a nie systemu.
 





Specyfikacja zadanie
      Aby zmodyfikować system w celu osiagnęcia
zamierzonego celu przed przystąpieniem do rozwiązania zadania należy:


zapoznać się z opisem zarządzania pamięcia  - wymiana stron pamieć
- dysk.


zapoznać sić z zawartościa plików zrodłowych: ../include/linux/swap.h,
../mm/swapfile.c.


zapoznać się z opisem w manual-u Linuxa funkcji swapon( ..) - słuzacej
do dodawania urządzeń wymiany.

    Zadanie ma polegać na :


przygotowaniu wolnej partycji na dysku twardym, majacej służyć jako urządzenie
wymaiany.


przygotowanie programu, który by iniciował daną partcję (instalował struktury,dane
...).


przedefiniować funkcje z pliku ../mm/swapfile.c
w sposób umożliwiający jednoczesne korzystanie znowego sposobu obslugi
urzadzenia wymiany tj. zaproponowanego przez rozwiazujacego zadanie oraz
starego  Linuxowego.


przetestowanie rozwiazania polegające na stworzeniu nowego "dużego" urządzenia
wymiany i właczeniu go do sytemu urzadzeń wymiany.

 






Wskazowki dotyczace implementacji
      Kluczowym problemem w rozwiązaniu tego zadania
wydaje się być pogodzenie obu sposobów zarządzania pamiecią na urządzeniu
. Należy się skupić przede wszystkim na inicjowaniu partycji ,a wiec zainstalowaniu
na niej nowej struktury swap_lockmap tak , aby miała własności standartowej
a jednocześnie umożliwiała obsługe większych urządzen.
 





Testy i wnioski
 Wiadomo, że zwiększenie pamięci na urzadzeniu wymiany powoduje zwiększenie
pamięci wirtualnej. Jedynym rozsądym testem wydaje się badanie zachowania
się systemu w przypadku
uruchamiania wiekszej ilości programów tak, aby zmusic system do zwiekszonej
ilości operacji wymiany pamieć - dysk. Jednak zaleta najważniejsza tego
zadania wydaje sie być strona merytoryczna polegająca na dokładnym zapoznaniu
się z mechanizmami obsługi urządzeń wymiany.





Bibliografia



Pliki źródłowe Linuxa:



../linux/mm/swapfile.c


../include/linux/swap.h



Projekt LabLinux




Autor: Mariusz Puchalski