4. Badania eksperymentalne
4.4. Porównanie wra˙zliwo´sci ró˙znych systemów operacyjnych
W [21] mo˙zna znale´z´c porównanie wra˙zliwo´sci na bł˛edy ró˙znych systemów operacyjnych, ale nie jest ono w pełni satysfakcjonuj ˛ace, poniewa˙z systemy operacyjne były uruchamiane na ró˙znych architekturach sprz˛etowych. W eksperymencie opisanym poni˙zej zestawiono wyniki zaburzania pami˛eci systemów działaj ˛acych pod kontrol ˛a: GNU/Linux, kFreeBSD oraz
Minix działaj ˛acych na jednej architekturze sprz˛etowej. Dzi˛eki temu zbadano, czy systemy wykorzystuj ˛ace mikroj ˛adro lub j ˛adro monolityczne (patrz 2.1.2), b ˛ad´z ró˙zne implementacje systemów operacyjnych opartych o j ˛adro monolityczne ró˙zni ˛a si˛e pod wzgl˛edem podatno´sci na bł˛edy.
Konfiguracja eksperymentu
Badaniom zostały poddane nast˛epuj ˛ace systemy operacyjne: Debian Lenny oparty o j ˛adro GNU/Linux w wersji 2.6.26, Debian Squeeze oparty o j ˛adro kFreeBSD w wersji 7.2 oraz Minix w wersji 3.2. Obraz systemu opartego o j ˛adro kFreeBSD został pobrany ze stron projektu Debian10, natomiast stworzenie obrazu systemu Minix wymagało przeprowadzenia procesu instalacji systemu w nowo utworzonej instancji emulowanego systemu komputerowego. Wybór tych systemów operacyjnych jest uzasadniony nast˛epuj ˛acymi czynnikami:
— wszystkie systemy działaj ˛a na architekturze x86,
— zestawienie systemów GNU/Linux oraz kFreeBSD pozwoli porówna´c podatno´s´c na bł˛edy ró˙znych implementacji systemów opartych o architektur˛e j ˛adra monolitycznego (patrz 2.1.2),
— wł ˛aczenie do zestawienia systemu Minix opartego o architektur˛e mikroj ˛adra pozwoli porówna´c jego podatno´s´c na bł˛edy wzgl˛edem systemów opartych o architektur˛e j ˛adra monolitycznego.
Scenariusz testu w ramach eksperymentu jest identyczny ze scenariuszem przeprowadzonym w eksperymencie opisanym w podrozdziale 4.2 z wyj ˛atkiem systemu Minix, gdzie zamiast programu wget został u˙zyty program curl o podobnym działaniu.
Było to spowodowane brakiem kompilacji programu wget dla systemu Minix. Znacz ˛acym utrudnieniem jest fakt, ˙ze system Minix jest systemem ci ˛agle rozwijanym i nie było mo˙zliwe skonfigurowanie testowanej wersji systemu tak, aby komunikaty j ˛adra systemu operacyjnego były wypisywane na konsol˛e operatora dost˛epn ˛a przez port szeregowy. Powoduje to, ˙ze niemo˙zliwe było wyznaczenie procentowego udziału bł˛edów, które zamanifestowały si˛e komunikatami j ˛adra systemu operacyjnego dla tego systemu, niemniej jednak mo˙zliwe jest zebranie informacji o rezultacie wykonywanego zadania oraz dost˛epno´sci systemu.
Konfiguracja typu bł˛edu, momentu wstrzykni˛ecia bł˛edu oraz rozmiaru pami˛eci RAM jest identyczna z eksperymentem przeprowadzonym dla ró˙znych architektur sprz˛etowych (patrz 4.3). Dzi˛eki temu wyniki dla systemu operacyjnego Debian Lenny opartego na GNU/Linux s ˛a rezultatami uzyskanymi w eksperymencie opisanym w podrozdziale 4.2. Tak jak w przypadku porównania ró˙znych architektur sprz˛etowych przeprowadzono 50 000 testów w pojedynczym eksperymencie.
10 http://people.debian.org/˜aurel32/qemu/kfreebsd-i386
kFreeBSD GNU/Linux Minix Testy % 0.00.20.40.60.8
kFreeBSD GNU/Linux Minix
Testy % 0.00.20.40.60.8
PU+PS
NU+NS
Rysunek 4.10: Warto´s´c współczynnika Fsdla ró˙znych systemów operacyjnych
Wyniki
Wyniki przedstawiaj ˛ace odsetek eksperymentów zako´nczonych zamanifestowaniem bł˛edu (współczynnik Fs) zostały zamieszczone na rysunku 4.10. Klasyfikacja wyników procentowych udziałów typu manifestacji bł˛edu według klasyfikacji opisanej w 2.5.2 jest przedstawiona na rysunku 4.11. Dost˛epno´s´c systemu dla testów, w których wynik przeprowadzenia scenariusza był nieprawidłowy zobrazowano na rysunku 4.12. Rysunek 4.13 przedstawia współczynnik manifestacji bł˛edów w pami˛eci fizycznej dla obszarów pami˛eci wielko´sci 1 MB. Natomiast tabela 4.3 zawiera rozkład najcz˛e´sciej zgłaszanych komunikatów systemu operacyjnego.
Wnioski
Wstrzykiwanie bł˛edów w oparciu o emulator systemu komputerowego pozwoliło na równie łatwe porównanie systemów operacyjnych jak w przypadku architektur komputerowych. Nie było konieczne tworzenie osobnych mechanizmów wstrzykiwania bł˛edu dla ka˙zdej platformy.
Zestawienie procentowe zamanifestowanych bł˛edów (rysunek 4.10) wyra´znie pokazuje dwie tendencje: zarówno implementacja, jak i architektura mikroj ˛adra/j ˛adra monolitycznego systemu operacyjnego maj ˛a wpływ na stopie´n wra˙zliwo´sci na wstrzykni˛ete bł˛edy. System oparty o j ˛adro kFreeBSD nie tylko cz˛e´sciej manifestował bł˛edy, ale te˙z wynik ko´ncowy rzadziej był prawidłowy (tylko 5% wyników w porównaniu z 12% dla GNU/Linux) i system w wi˛ekszej liczbie przypadków stawał si˛e niedost˛epny (rysunki 4.11, 4.12). Zdecydowanie wyró˙znia si˛e system Minix, któremu najcz˛e´sciej udało si˛e wykona´c powierzone zadanie.
kFreeBSD GNU/Linux Minix
Testy % 020406080100
PU
PS
NU
NS
kFreeBSD GNU/Linux Minix
Testy % 020406080100
Rysunek 4.11: Rozkład typów zamanifestowanych bł˛edów w systemach operacyjnych
kFreeBSD GNU/Linux Minix
Testy % 020406080100
kFreeBSD GNU/Linux Minix
Testy % 020406080100
DU
DS
NDU
NDS
Rysunek 4.12: Dost˛epno´s´c systemów operacyjnych
Testy %
4 8 12 16 20 24 28 32 36 40 44
0510
Testy %
kFreeBSD Testy %
4 8 12 16 20 24 28 32 36 40 44
0510
Testy %
GNU/Linux Testy %
4 8 12 16 20 24 28 32 36 40 44
0510
Testy %
Minix
MB
Rysunek 4.13: Współczynnik Fs / MB pami˛eci fizycznej dla ró˙znych systemów operacyjnych
Komunikat % kFreeBSD GNU/Linux
Bad page state 0,84 2,43
Bad PC value 0 7,74
Null dereference 0 16,83
Null dereference 0 0 6,87
Paging request failed 79,83 34,04
Sched while atomic 0 0,3
Double fault 4,2 1,83
EXT FS error 0 0,43
General protection 2,52 11,87
I/O error 0 0,17
Panic in interrupt 0 12,43
Panic - kill init 0 4,74
Privileged instruction 2,52 0
Segfault 0 29,35
Undefined instruction 0 7,61
Unclassified 10,08 1,39
Tabela 4.3: Komunikaty o bł˛edach zgłaszane przez systemy operacyjne
Prawdopodobnie wynika to z faktu, ˙ze system Minix jest projektowany pod k ˛atem zwi˛ekszonej odporno´sci na bł˛edy [52, 53, 54]. W´sród mechanizmów, które zwi˛ekszaj ˛a tolerancj˛e na bł˛edy jest zredukowany rozmiar kodu wykonywanego w przestrzeni j ˛adra systemu operacyjnego, a tak˙ze koncepcja reinkarnacji usług systemu operacyjnego w przypadku awarii. Koncepcja ta polega na ponownym uruchomieniu usług (np. obsługi stosu sieciowego), które uległy awarii, w sposób przezroczysty dla u˙zytkownika (maskowanie bł˛edów). Niestety sprawno´s´c tych mechanizmów nie mogła zosta´c sprawdzona w opisanym eksperymencie z uwagi na trudno´sci ze skonfigurowaniem systemu Minix tak, aby komunikaty j ˛adra systemu operacyjnego były wypisywane na konsol˛e operatora podł ˛aczon ˛a przez port szeregowy.
Analiza podatno´sci zakresów pami˛eci fizycznej (rysunek 4.13) pozwala stwierdzi´c, ˙ze ka˙zdy z systemów ma inn ˛a charakterystyk˛e podatno´sci na bł˛edy. Systemy GNU/Linux oraz kFreeBSD maj ˛a zbli˙zone charakterystyki, jednak kFreeBSD wykazuje znacznie wi˛eksz ˛a podatno´s´c w niskich adresach pami˛eci fizycznej. Natomiast w przypadku Minix nie wyst˛epuj ˛a rejony o znacznie podwy˙zszonej podatno´sci, przy czym nale˙zy podkre´sli´c, ˙ze dla tego systemu przedstawione s ˛a wył ˛acznie wyniki dotycz ˛ace testów zako´nczonych nieprawidłowym wynikiem z uwagi na trudno´sci w konfiguracji systemu Minix do wydruku komunikatów systemu komputerowego przez konsol˛e dost˛epn ˛a przez port szeregowy.
Interesuj ˛ace jest zró˙znicowanie komunikatów zgłaszanych przez GNU/Linux w porównaniu do kFreeBSD, gdzie wi˛ekszo´s´c wstrzykni˛e´c bł˛edów manifestuje si˛e jako Paging request failed.
´Swiadczy to o lepszej jako´sci oprogramowania GNU/Linux. Komunikaty te stanowi ˛a cenn ˛a wskazówk˛e przy diagnozowaniu awrii systemu i podejmowaniu procedur naprawczych.
Pomimo dobrych wyników systemu Minix warto zaznaczy´c, ˙ze system ten jest systemem eksperymentalnym. ´Swiadcz ˛a o tym problemy konfiguracyjne oraz niedost˛epno´s´c oprogramowania. GNU/Linux jest dojrzałym systemem u˙zywanym produkcyjnie i wszelkie rozwi ˛azania zwi˛ekszaj ˛ace jego niezawodno´s´c mog ˛a mie´c szerokie grono odbiorców oraz poszerzy´c zastosowania tego systemu o dziedziny wymagaj ˛ace zwi˛ekszonej niezawodno´sci.