Podsumowanie

Wyniki pierwszej części pracy, poświęconej algorytmom szeregowania, są bardzo obiecujące. Udało się poprawić efektywność działania systemu, co znalazło odbicie nie tylko w wynikach testów, lecz także w codziennej pracy: kilka z testowanych algorytmów planowania zdecydowanie poprawia komfort użytkowania systemu. Dużo część pracy została poświęcona temu, by system poddany modyfikacjom pozostał stabilny (nie zawieszał się).

Niejako przy okazji pracy nad oprogramowaniem do tej części pracy, stworzone zostało wygodne środowisko. Po pierwsze, umożliwia ono szybką implementację własnych algorytmów planowania przydziału procesora, a po drugie błyskawiczną podmianę takiego algorytmu w trakcie działania systemu. Dzięki temu czas testowania i "`strojenia'' parametrów algorytmu szeregowania skraca się kilkakrotnie w porównaniu z metodą kodowania algorytmu szeregowania bezpośrednio do jądra Linuksa. Oprogramowanie i opisy algorytmów mogą zostać wykorzystane jako praktyczne przykłady do celów edukacyjnych, np. na przedmiocie Systemy operacyjne.

Możliwych jest wiele rozszerzeń niniejszej części pracy. Jednym z nich jest na przykład przystosowanie projektu zewnętrznych modułów planisty do architektur wieloprocesorowych. Sprawna obsługa symetrycznej wieloprocesorowości jest w chwili obecnej jednym z najważniejszych kierunków rozwoju jądra Linuksa.


Druga część pracy, dotycząca jednego z algorytmów zarządzania pamięcią, nie objęła innych ciekawych algorytmów związanych z zarządzaniem pamięcią. Jako przykład tematu dalszych badań można zaproponować modyfikację algorytmu przydzielania pamięci dynamicznej w jądrze. W Linuksie stosowana jest pewna odmiana algorytmu bliźniaków. Istnieje wiele modyfikacji tego algorytmu, np. leniwy algorytm bliźniaków (ang. lazy buddy) czy algorytm McKusicka-Karelsa. Opis tych algorytmów znajduje się w [5], rozdz. 12.


W stosunkowo młodym systemie operacyjnym, jakim jest Linux, istnieje wiele miejsc, gdzie można podjąć próby usprawnienia działania. Wiele algorytmów zostało zaimplementowanych głównie ze względu na swoją prostotę. Takie podejście ma pewną zaletę: dużo łatwiej jest testować jądro systemu i dbać o to, by zawierało jak najmniej błędów. W wielu zastosowaniach najważniejszym wymaganiem jest stabilność systemu, natomiast mniejszą wydajność oprogramowania można próbować zastąpić szybszym sprzętem.

Linux jako system młody ma też wiele zalet: zastosowano w nim najnowsze idee i pomysły z dziedziny systemów operacyjnych w takim zakresie, w jakim było to możliwe.

Jądro Linuksa jest niestety monolityczne i niewywłaszczalne, co stanowi jego bodaj największą wadę. Obecnie prowadzone są prace nad podzieleniem jądra na kilka bloków funkcjonalnych tak, aby wykonywały się niezależnie od siebie i współpracowały używając mechanizmów synchronizacji -- jest to uzasadnione koniecznością efektywnego wykorzystania wieloprocesorowości. Jednym z kierunków badań jest też dobra implementacja wsparcia dla procesów ścisłego czasu rzeczywistego (ang. hard real-time).



Tomek Blaszczyk
1999-05-21