• Nie Znaleziono Wyników

Symulacja bł˛edów w badaniu niezawodno´sci systemów komputerowych

2. Analiza wpływu bł˛edów na działanie systemu komputerowego

2.4. Symulacja bł˛edów w badaniu niezawodno´sci systemów komputerowych

Podstaw ˛a bada´n niezawodno´sci systemów komputerowych jest analiza produkcyjnych systemów. Wykonywana jest ona na podstawie raportów o awariach. W [69, 70, 71, 94, 97, 113]

przedstawione s ˛a przykładowe projekty maj ˛ace na celu zbieranie tego typu danych. Jest to najbardziej warto´sciowe ´zródło wiedzy ze wzgl˛edu na mo˙zliwo´s´c zbierania informacji o działaniu systemu w warunkach jego rzeczywistego u˙zytkowania. Istotnym problemem opisanym w [113] jest trudno´s´c w interpretacji zebranych w ten sposób danych – wynika to z faktu, ˙ze raporty o bł˛edach oprogramowania mog ˛a by´c wywołane zarówno bł˛edami programów, bł˛edami konfiguracyjnymi, a tak˙ze usterkami sprz˛etu.

W celu umo˙zliwienia szczegółowych bada´n nad efektami bł˛edów opracowane zostały techniki wstrzykiwania bł˛edów umo˙zliwiaj ˛ace prowadzenie bada´n w warunkach laboratoryjnych. S ˛a to mi˛edzy innymi metody takie jak celowe eksponowanie układów cyfrowych na niekorzystne warunki – pole elektromagnetyczne, promieniowanie cz ˛astek alfa, na´swietlanie laserem, modyfikowanie ´scie˙zek drukowanych układu, czy te˙z akceleracja procesów starzenia si˛e układów poprzez podwy˙zszon ˛a temperatur˛e (patrz [8, 59, 92]). Badania tego typu s ˛a warto´sciowym narz˛edziem weryfikacji odporno´sci układów przed u˙zyciem ich w produkcji, niemniej obarczone s ˛a one pewnymi ograniczeniami: du˙zy koszt aparatury koniecznej do przeprowadzania tego typu eksperymentów, mała kontrola nad procesem wstrzykiwania bł˛edów oraz potencjalne ryzyko trwałego uszkodzenia testowanych układów.

W zwi ˛azku z opisanymi trudno´sciami popularno´s´c zdobyły techniki programowego wstrzykiwania bł˛edów – SWIFI. Techniki te rozwijane s ˛a od kilkudziesi˛eciu lat [8, 19, 75], jednak wci ˛a˙z pozwalaj ˛a na uzyskiwanie nowych, warto´sciowych rezultatów. Instytut Informatyki Politechniki Warszawskiej posiada bogate do´swiadczenie w tej dziedzinie nauki (m.in. [40, 41, 42, 96]).

W [8] przedstawiono studium nad porównaniem technik fizycznego wstrzykiwania bł˛edów oraz SWIFI. Autorzy przedstawiaj ˛a przypadki, gdy zastosowanie obu metod skutkuje podobnymi efektami, oraz takie gdzie rezultaty si˛e ró˙zni ˛a. Rozbie˙zno´sci pojawiały si˛e

przede wszystkim w zwi ˛azku z ograniczeniem modeli bł˛edów wstrzykiwanych metod ˛a SWIFI – w jednym z eksperymentów fizycznego zaburzania zaobserwowano zgłaszanie przez sprz˛et niemaskowanych przerwa´n, które nie były obserwowane przy bł˛edach symulowanych metod ˛a SWIFI. Oznacza to komplementarno´s´c technik fizycznych oraz SWIFI. Zaletami technik fizycznych jest odwzorowanie rzeczywistych bł˛edów, natomiast SWIFI pozwala na przeprowadzanie eksperymentów z wi˛eksz ˛a sterowalno´sci ˛a, obserwowalno´sci ˛a oraz mo˙zliwo´sci ˛a powtarzania przebiegu eksperymentu – niemniej modele SWIFI powinny by´c uzupełniane o nowe modele bł˛edów i zaburzane komponenty w celu pokrycia mo˙zliwie szerokiego spektrum przypadków testowych. O popularno´sci metod SWIFI mo˙ze ´swiadczy´c pojawianie si˛e prac zmierzaj ˛acych do ujednolicenia metod opisu profili wstrzykiwania (patrz [9, 55]) rozumianych jako sposób odtworzenia charakterystyki bł˛edów rzeczywistych urz ˛adze´n przez narz˛edzia SWIFI. Dodatkowo opracowywane s ˛a uniwersalne formaty konfiguracji eksperymentów (patrz [31, 36]), które maj ˛a na celu uniezale˙zni´c definicj˛e eksperymentu od konkretnej platformy SWIFI umo˙zliwiaj ˛ac uruchamianie tych samych eksperymentów na ró˙znych platformach w celu weryfikacji uzyskiwanych rezultatów.

Rozpatruj ˛ac metody typu SWIFI nale˙zy zaznaczy´c, ˙ze metody te s ˛a ukierunkowane na wstrzykiwanie bł˛edów według zdefiniowanych modeli w ´sci´sle okre´slon ˛a przestrze´n testowania.

Oznacza to wi˛eksz ˛a kontrol˛e nad procesem wstrzykiwania bł˛edów w porównaniu z metodami wykorzystuj ˛acymi fizyczne zaburzanie działania układów, niemniej zdefiniowana przestrze´n testowania jest zazwyczaj ograniczona i charakterystyczna dla ka˙zdego z opracowanych narz˛edzi. W celu ilustracji tego zagadnienia opisane zostały przykłady ró˙znych narz˛edzi typu SWIFI.

Podstawow ˛a rodzin ˛a narz˛edzi typu SWIFI s ˛a narz˛edzia operuj ˛ace na modelach testowanych urz ˛adze´n. Modele te mog ˛a by´c opracowane m.in. w j˛ezykach takich jak VHDL23, czy Matlab.

Opis narz˛edzi tego typu mo˙zna znale´z´c w pracach [43, 47, 63, 90, 95, 102, 104, 105, 110].

Wspóln ˛a cech ˛a tych rozwi ˛aza´n jest modelowanie układów i oprogramowania wbudowanego o

´sci´sle okre´slonych funkcjach. Rozwi ˛azania te s ˛a rzadko stosowane do badania niezawodno´sci komponentów COTS z uwagi na du˙zy stopie´n ich skomplikowania, co znacz ˛aco spowalnia proces przeprowadzania eksperymentów.

Osobn ˛a rodzin ˛a narz˛edzi SWIFI s ˛a narz˛edzia ukierunkowane na konkretn ˛a platform˛e sprz˛etow ˛a lub programow ˛a. Do nich mo˙zna zaliczy´c oprogramowanie FITS opracowane w Instytucie Informatyki Politechniki Warszawskiej (patrz [40, 41, 42]). Proces wstrzykiwania bł˛edów zaimplementowany w tym rozwi ˛azaniu polega na wykorzystaniu mechanizmów debuggowania dost˛epnych w systemach operacyjnych (np. Windows API24, ptrace25) do kontroli i zaburzania wykonania testowanego oprogramowania.

23 J˛ezyk opisu układów cyfrowych.

24 http://msdn.microsoft.com/en-us/library/ms809754.aspx

25 http://linux.die.net/man/2/ptrace

W [112] przedstawione zostało porównanie trzech metod modelowania bł˛edów w SWIFI: modyfikacja warto´sci parametrów wywoła´n procedur, zamiana warto´sci zwracanych przez procedury oraz przekłamania pojedynczych bitów w dowolnych miejscach pami˛eci.

Przekłamania parametrów wywoła´n procedur imituj ˛a propagacj˛e bł˛edów wygenerowanych w rejestrach urz ˛adze´n do programów. Zaburzanie warto´sci zwracanych symuluje bł˛edy programistyczne. Natomiast zaburzanie pami˛eci stanowi model nieprawidłowo´sci wyst˛epuj ˛acych w pami˛eci RAM. Badania te ilustruj ˛a ró˙zne podej´scia do wstrzykiwania bł˛edów i autorzy wskazuj ˛a na najwi˛eksz ˛a skuteczno´s´c (w sensie liczebno´sci typów zgłaszanych awarii) metody zaburzania losowych komórek pami˛eci.

W [115] opisany został eksperyment wykorzystuj ˛acy przekłamania na poziomie pojedynczych bitów do zaburzania ró˙znych typów danych składowanych w pami˛eci w celu porównania ich wra˙zliwo´sci na bł˛edy. Wyniki uzyskane przez autorów wskazuj ˛a, ˙ze dane alokowane dynamicznie s ˛a wielokrotnie bardziej wra˙zliwe na zaburzenia, ni˙z dane statyczne.

Zagadnieniem wartym uwagi jest stosowanie SWIFI do ewaluacji niezawodno´sci systemów operacyjnych, poniewa˙z nie jest mo˙zliwe wykorzystanie mechanizmów debuggowania i konieczne jest opracowywanie rozwi ˛aza´n innego typu. Wiele koncepcji testowania systemów operacyjnych wi ˛a˙ze si˛e z testowaniem sterowników obsługiwanych urz ˛adze´n (patrz 2.1.2).

Np. w [33] przedstawiono rozwi ˛azanie wprowadzaj ˛ace bł˛edy do sterowników DMA, a w [38, 58] opisano metody zaburzania danych pochodz ˛acych z sieci. Rozwi ˛azania skupiaj ˛ace si˛e na zaburzaniu parametrów wywoła´n procedur wykonywanych w przestrzeni j ˛adra systemu operacyjnego opracowano w [5, 38, 61, 62]. Jednak˙ze niewiele jest opracowa´n pozwalaj ˛acych cało´sciowo bada´c systemy operacyjne. W [34] zaprezentowane jest nast˛epuj ˛ace podej´scie: do symulowania bł˛edów wykorzystywany jest moduł systemu operacyjnego, natomiast kontrola eksperymentu powierzona jest osobnej maszynie, która rejestruje wynik symulacji bł˛edu na maszynie realizuj ˛acej eksperyment. Podej´scie to ma szereg wad: konieczne jest opracowanie modułu symuluj ˛acego bł˛edy zale˙znego od testowanego systemu komputerowego, wymagany jest dodatkowy system komputerowy wykorzystywany jako nadzorca (wi ˛a˙ze si˛e to z kosztami i utrudnia skalowalno´s´c) oraz ograniczone s ˛a mo˙zliwo´sci badania efektów awarii. W [78]

przedstawiono rozwi ˛azanie niewymagaj ˛ace implementacji dedykowanego modułu systemu operacyjnego symuluj ˛acego bł˛edy – praca opisuje badanie systemu wbudowanego opartego o FPGA26 działaj ˛acego pod kontrol ˛a systemu GNU/Linux i wyposa˙zonego w mo˙zliwo´s´c symulowania bł˛edów poprzez modyfikacj˛e konfiguracji układu FPGA. W przypadku ch˛eci równoległego przeprowadzania eksperymentów rozwi ˛azanie to równie˙z wymaga nakładu kosztów na dodatkowe jednostki układów przeprowadzaj ˛acych testy. Wymienione problemy s ˛a cz˛e´sciowo rozwi ˛azane przez dwa projekty opisane w [18] oraz [93]. W [18]

26 Ang. Field Programmable Gate Array.

wykorzystany został emulator systemu operacyjnego User Mode Linux27, gdzie odpowiednio zmodyfikowane j ˛adro systemu operacyjnego uruchamiane jest jako proces u˙zytkownika, a wstrzykiwanie bł˛edów odbywa si˛e poprzez interfejs ptrace. Wad ˛a takiego rozwi ˛azania jest konieczno´s´c modyfikowania testowanego oprogramowania (´zródeł j ˛adra systemu operacyjnego) w celu uruchomienia na platformie testowej oraz mo˙zliwo´s´c testowania wył ˛acznie jednego systemu operacyjnego na jednej z dwóch obsługiwanych architektur sprz˛etowych: x86 i AMD64. Natomiast w [93] opisano prób˛e stworzenia w pełni deterministycznego emulatora systemu komputerowego, wzbogacaj ˛ac go o mo˙zliwo´s´c integracji z modułami sprz˛etowymi modelowanymi w j˛ezyku VHDL. Proces wstrzykiwania bł˛edów polega na zaburzaniu pracy wspomnianych modułów sprz˛etowych i obserwowaniu zachowania systemu operacyjnego uruchomionego w emulowanym ´srodowisku. Rozwi ˛azanie to jest bardzo obiecuj ˛ace, jednak ogranicza si˛e tylko do testowania układów.

Reasumuj ˛ac, narz˛edzia typu SWIFI s ˛a uznan ˛a w ´srodowisku naukowym metod ˛a ewaluacji niezawodno´sci oprogramowania, jednak konieczne jest ci ˛agłe rozwijanie scenariuszy testowych oraz metod analizy wyników. Według autora, na podstawie przeanalizowanej literatury, istotnym brakiem we współczesnych narz˛edziach SWIFI s ˛a ograniczone mo˙zliwo´sci ewaluacji niezawodno´sci oprogramowania systemu operacyjnego. Oprogramowanie systemu operacyjnego jest krytyczne dla prawidłowego działania systemu komputerowego, a jego ewaluacja jest wielopłaszczyznowa: m.in. wra˙zliwo´s´c na bł˛edy pami˛eci, wra˙zliwo´s´c na bł˛edy urz ˛adze´n, stabilno´s´c systemu, czy porównanie cech kodu tego samego systemu operacyjnego skompilowanego na ró˙zne platformy sprz˛etowe. Opracowana na potrzeby niniejszej rozprawy metodyka symulacji bł˛edów wsparta przez opracowany przez autora system QEFI (patrz rozdział 3) stanowi prób˛e stworzenia narz˛edzia typu SWIFI umo˙zliwiaj ˛acego ewaluacj˛e oprogramowania systemu operacyjnego poprzez zastosowanie emulacji systemu komputerowego.