Zacznijmy od procesora
Współczesne procesory to majstersztyki elektroniki cyfrowej. W przeciwieństwie do układów z początku lat 80. wyposażone są w ogromną liczbę specjalistycznych mechanizmów oraz zabezpieczeń, bez których człowiek nigdy nie wyszedłby z ery DOS-a łupanego, a "niezawodność" byłoby jednym z wielu słów w słowniku, o którym informatyk nie miałby zielonego pojęcia. Jednym z takich zabezpieczeń są pierścienie wykonywania (ang. rings of execution). Nie należy ich mylić z trybami procesora: rzeczywistym oraz chronionym, gdyż jest to zupełnie co innego. Pierścienie reprezentują różne poziomy uprzywilejowania wykonywanego kodu, przy czym zwyczajowo trybem boskim jest pierścień 0, a najbardziej zniewolonym - pierścień n. Architektura x86 definiuje cztery pierścienie.
Stabilność
Stabilność oprogramowania zapewniana jest poprzez ograniczenie możliwości wykonywania niektórych operacji w wyższych trybach oraz obsługiwanie pojawiających się tam błędów przez kod pracujący z większym poziomem uprzywilejowania. Założenie jest takie, że błąd w kodzie wykonującym się np. w pierścieniu 2 powinien wpłynąć wyłącznie na ten oraz pierścienie o wyższych numerach, podczas gdy bardziej krytyczne części systemu powinny dalej pracować, w szczególności zająć się obsługą błędu i przywrócić wszystko do jakiegoś przyzwoitego stanu. Niestety, najmniejsza pomyłka w trybie 0 jest też najbardziej kosztowna. Nie ma już żadnego niższego poziomu i dlatego systemy operacyjne przeważnie wyświetlają wtedy ekran śmierci lub zawieszają się na amen.
Systemy operacyjne
W celu uproszczenia kodu i kompatybilności wieloplatformowe systemy operacyjne starają się wykorzystywać jak najmniejszą liczbę pierścieni. Zazwyczaj wymaga się jedynie obecności dwóch, a jeżeli dana platforma oferuje więcej, są one niewykorzystywane. Dotyczy to zarówno Windowsa, jak i większości klonów Uniksów. Używają one pierścienia 0 jako tzw. trybu jądra oraz pierścienia n jako trybu użytkownika, w którym wykonuje się kod uruchamianych aplikacji.
Musimy pamiętać, że jądro systemu operacyjnego nie jest normalnym programem, jak np. przeglądarka internetowa. Jest to raczej zbiór procedur podstawionych pod określone przerwania procesora generowane przez sprzęt (ruch myszki), cyklicznie (zegar systemowy) lub na życzenie użytkownika (funkcje systemowe). Procedury te wykonywane są w trybie jądra i mają nieograniczony dostęp do zasobów systemowych. Po zakończeniu działania przełączają się z powrotem do trybu użytkownika, kontynuując wykonywanie normalnych aplikacji. Przykładowym błędem, jaki może się tu pojawić, jest odwołanie do nieistniejącego wskaźnika w źle napisanej aplikacji. Procesor widząc, że nastąpiło to w kodzie pracującym w trybie użytkownika, generuje odpowiednie przerwanie dla systemu operacyjnego, który najczęściej przerywa taki krnąbrny i gnuśny proces. Analogiczny błąd w kodzie jądra zawiesza system.
Stabilność systemu operacyjnego
Zawieszanie się systemu nie musi wcale oznaczać, że sam w sobie jest źle napisany. Zapominamy bowiem o jednym istotnym szczególe, a mianowicie - sterownikach, tworzonych najczęściej przez zewnętrzne firmy. Sterowniki to zestawy procedur systemowych przeznaczone do obsługi konkretnego sprzętu. Ponieważ wykorzystujemy tylko dwa tryby, a one potrzebują dostępu do sprzętu, siłą rzeczy ich kod wykonuje się w uprzywilejowanym i niebezpiecznym trybie jądra. W tym momencie jesteśmy skazani na łaskę i umiejętności programistów producenta naszego urządzenia. O wpływie sterowników na stabilność wypowiadał się sam Microsoft, twierdząc, że 70% awarii systemu spowodowanych jest właśnie przez niedopracowane sterowniki. Zastanawia mnie tylko, co w takim razie z pozostałymi 30-ma procentami, ale to temat na inną dyskusję :).
Windows, jako prawie monopolista na rynku biurkowych systemów operacyjnych, jest w tej dobrej sytuacji, że od jakości sterowników często zależy być lub nie być danego urządzenia. Większa stabilność jest wręcz wymuszana przez dostęp do dużo większej liczby królików doświadczalnych i ich różnorodnych konfiguracji :). Niestety Linux ze swoim niskim udziałem w rynku często nie stanowi atrakcyjnego miejsca do lokowania czasu pracy programistów. Część firm rzecz sobie olewa i jeszcze na dokładkę rzuca kłody pod nogi (ATI!), inne relegując potężną ekipę do pracy nad sterownikiem windowsowym, biorą jedną czy dwie osoby i każą im zmajstrować jakiś dodatkowy sterowniczek dla Linuksa, by się ludzie cieszyli. Z pewnością każdy przyzna, że nie jest to dobra atmosfera do produkowania dobrych sterowników. Jeśli więc po instalacji Linux odrzuci Cię częstymi zwiechami, powinieneś raczej skierować swą frustrację ku producentom Twego ulubionego sprzętu, którym zaufałeś, decydując się na wybór właśnie ich produktu. Po prostu miałeś pecha.
Mądre zakupy
Sprzęt to kluczowa rzecz mająca wpływ na stabilność. Na serwerach nie jest to jeszcze tak widoczne, gdyż tutaj z kolei sytuacja ma się odwrotnie i to Windows jest w zdecydowanej mniejszości. Ponadto sam sprzęt projektuje się z myślą o niezawodności, a nie bajerach, co ułatwia pisanie sterowników. Sprzęt domowy to inna liga i tutaj aby móc przyjemnie korzystać z Linuksa, trzeba po prostu wiedzieć, co kupować. Gdy dwa lata temu zabierałem się za kupno komputera, a później również laptopa, podstawowym kryterium była dostępność i jakość sterowników. Z miejsca wykosiło to ATI i kilka innych niesolidnych firm, ale dzięki temu system nie sprawia żadnych problemów. Jedynie z drukarką nie do końca trafiłem (HP), ale bardziej przez częściowe złamanie tej zasady i kierowanie się marką, a nie głosem rozsądku :).
Zakończenie
Mam nadzieję, że wpis wyjaśnił nieco, skąd się biorą zwiechy systemu i gdzie może leżeć przyczyna, dodatkowo podając wpływ zwyczajnej polityki na jakość i dostępność oprogramowania, czego ofiarą pada Bogu ducha winny Linux, sam w sobie niezawodny. Jednak muszę przyznać, że ma to też swoje plusy. Przynajmniej nie zdarzają się tu takie absurdy, jak ważący 100 MB sterownik do myszki (JEDNEJ!), a wyczynu tego udało się dokonać Logitechowi. Ostatecznie zbyt duża ilość najczęściej niepotrzebnych śmieci z kolei negatywnie wpływa na bezpieczeństwo...






Napisał megawebmaster w środę, 21 października 2009 o 10:02
Bardzo ciekawy wpis, muszę przyznać, że nie miałem pojęcia o tych pierścieniach procesora.
Z jakością sterowników od ATi muszę niestety przyznać Ci rację,z ograniczonymi funduszami i chęcią posiadania jak najwydajniejszego sprzętu zapomniałem o tak prozaicznej rzeczy jaką jest sterownik i przez pierwsze 2 miesiące użytkowania laptopa irytowałem się brakiem sterowników dla Linuksa.
Co do sterowników HP - od zawsze miałem drukarki tej firmy i nie miałem z nimi problemów (zauważ, że też korzystam z Archa) - może miałeś po prostu pecha trafić na nieco felerny egzemplarz, albo może gorszej jakości sterowniki? (BTW. Korzystam z foomatica i hplips chyba tak się zwie ten sterownik :D)
Na koniec dorzucę jeszcze, że o ile miałem potężne problemy ze sterownikami ATi, to po uporaniu się z nimi system jest stabilny i nie mam problemów z ciągłym korzystaniem z niego ;)