Dziś jest sobota, 31 lipca 2010 roku (z kalendarza...)

Osz ten Linux wredny

Icon

20.10.2009, 23:05

Arch Linux

Komentarze (10)

Powrót

Na forum php.pl pewien człowiek zadał wczoraj pytanie, jak się sprawuje Linux, jeśli chodzi o kodowanie w PHP, odnosząc się do małej liczby ofert wymagających znajomości tego systemu. Oczywiście, jak nietrudno się domyślić, po kilku postach temat zmienił się w wyliczankę pt. "Zainstalowałem Linuksa i system mi się wieszał tu, tu, tu i tu, a to mi nie działało, a niby to taki stabilny system". Postanowiłem dlatego krótko rozjaśnić, czym jest pad systemu operacyjnego.

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...

Powrót

Komentarze

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 ;)

Napisał eXtreme w środę, 21 października 2009 o 10:19

" jak ważący 100 MB sterownik do myszki (JEDNEJ!), a wyczynu tego udało się dokonać Logitechowi."
Sam sterownik to tylko ułamek wagi takiej paczki. Reszta to dodatkowe oprowamowanie sterujące, panele kontrolne, inne cuda na kiju, ja np. nie wyobrażam sobie posiadania np. Deathaddera bez sotfu sterującego od Razera.
Natomiast jeśli to "po prostu" myszka od "wielkiego" producenta, to takich driverów na upartego wcale nie musisz instalować, bo nic one nie zmienią. :P

Napisał megawebmaster w środę, 21 października 2009 o 17:08

eX, ja zawsze używam swojego Diamondbacka 3G bez sterowników - i tak nic wielkiego nie dają :P A rozdzielczość początkowa mi odpowiada ;)

Napisał ArekW w środę, 21 października 2009 o 18:39

Popieram ten wpis! Ci co narzekają na Linuxa, że się zawiesza to moim zdaniem tacy "Laicy" na 200%. Ja mam postawionego Debiana Etch na Dell'u OptiPlex GX270 - Ubuntu 8.04 całkowicie mi się sypało - problem sprawiał głównie framebuffer, który przy ładowaniu powodował na starcie krytyczny błąd, ale po zainstalowaniu Debiana wszystko śmiga stabilnie. Używam go od roku i nigdy mi się nie miałem zawiechy. Dell to części Intela, a jak z mojego własnego doświadczenia wiem Linuxy kochają Intela więc ze sterownikami nie mam żadnych problemów. Jedyna rzecz jaka wysypywała mi Debiana to wybrzuszone kondensatory - problem znikł gdy je wymieniłem.

Napisał m_gol w środę, 21 października 2009 o 23:15

No, aż tak różowo to nie jest. Ja się na tym nie znam, ale wiele osób się wypowiada, że API/ABI w Linuksie to fikcja - a to utrudnia przecież pisanie sterowników. Do Windowsa można napisać jeden sterownik i działa przez kolejne kilka lat życia systemu, pod Linuksem wystarczy, że wyjdzie nowa wersja Xorga i już trzeba trochę sterownik dostosować. Dla producentów nie jest to różowa perspektywa, a jeśli do tego dodać udział Linuksa w rynku...

Słyszałem też, że np. to, że zamknięte sterowniki nVidii do kart działają tak dobrze wynika głównie z tego, że są tak zaprojektowane, by... olewać jakąś 1/3 podstawowego kodu Xorga i w to miejsce wykonywać własny - nVidia sporo przepisała po swojemu...

Oczywiście pomijam już to, że przeciętnego użytkownika średnio obchodzi, dlaczego jego sprzęt nie działa - jeśli nie działa, to się wkurza. To akurat winą Linuksa nie jest, ale... gdy instaluję systemy operacyjne znajomym, nie lobbuję zbyt mocno za Linuksem - wspomnę o Ubuntu, powiem, co może, ale finalnie i tak najczęściej instaluję Windowsa. Przynajmniej wiem, że nie zostanę za miesiąc poproszony o pomoc, gdy aktualizacja do najnowszego Ubuntu wysypie system, albo gdy nowo kupiona kamera internetowa nie zadziała. Zwykły szary człowiek nie będzie marnował swego czasu na szperanie po forach by się upewnić, czy każdy komponent kupowanego laptopa pod Linuksem będzie działał.

Jako że systemy Linuksowe nie są najczęściej projektowane przez wielkie korporacje (mówię o GUI, nie o jądrze), to i nie są najczęściej do końca przemyślane. Żadna dystrybucja linuksowa nigdy nie dorówna łatwością obsługi produktom Apple. Należy też do tego dodać, że twórcy oprogramowania Linuksa traktują, jak wspomniałeś, po macoszemu. Na moim nowym laptopie mogę pod Windowsem 7 oglądać filmiki HD w YouTubie na pełnym ekranie bez przywieszek; to samo na Ubuntu jest niemożliwe. Sam Firefox odpalany przez Wine działa szybciej, niż natywna linuksowa wersja (sic!). Końcowego użytkownika nie interesuje, dlaczego - jego interesuje, że w ogóle.

Nawet natywne oprogramowanie jest problemem. Aero pod Win7 zżera zasoby, ale działa. Compiz pójdzie na nawet słabszym sprzęcie, ale powoduje masę problemów. Z kolei całkowite wyłączenie Compiza (czy też w KDE4 efektów Kwin) powoduje zmniejszenie funkcjonalności - Compiz to nie tylko kostka sześcianu czy też "wobbly windows", ale też przezroczystość (przydaje się przy systemowych notyfikacjach), lepsze odświeżanie ekranu, podgląd nieaktywnych okien po najechaniu na ikonę na pasku zadań i wiele innych. Przydaje się, ale nie działa tak dobrze, jak powinno. To akurat jest przyczyną braku centralnego planowania - rozwój Compiza to jeden wielki fork...

Podoba mi się uniksowa hierarchia plików, wielokrotne pulpity (pod Windowsem to tragedia); to, że mogę edytować/usuwać plik otwarty przez inną aplikację, a faktycznie usuwany jest dopiero po jego zwolnieniu; to, że są centralne repozytoria, w których jest masa przydatnego oprogramowania. Dlatego też Linuksa używam. Z rekomendowaniem go nietechnicznym znajomym mam jednak problemy.

Zajrzyjcie na http://linuxhaters.blogspot.com/ - autor bloga pisze w stylu "flejmowym", ale zarzuty przez niego kierowane w kierunku Linuksa są konkretne i uzasadnione. Niestety, nie sądzę, by to się kiedyś zmieniło. Chyba że jakaś korporacja weźmie kod i napisze na tej podstawie coś swojego. Może Google Chrome OS? Sama społeczność Open Source na pewno przełomu nie dokona.

Napisał Tuner w sobotę, 24 października 2009 o 10:31

@m_gol, popieram niestety

Napisał m_gol w sobotę, 24 października 2009 o 14:36

A, oczywiscie zapomnialem o najwazniejszej rzeczy, dla ktorej uzywam Linuksa - konsola! Laikow to nie przekona, ale dla mnie to b. wazne. Z powodu braku sensownej konsoli Windows mnie denerwuje, gdy czasami na nim siedze. Z tego co wiem Mac OS X ma sensowny terminal, wiec pod nim moze tez by mi sie wygodnie pracowalo. :)

P.S. Sorry za brak polskich liter, siedze w tej chwili na jakims LiveCD, ktore najwyrazniej ma z nimi problem. ;)

Napisał bigZbig w poniedziałek, 26 października 2009 o 21:34

Prawda leży jak zawsze po środku. Kiedy poznawałem "odkrywałem" Linuksa szybko przekonałem się, że jego niezawodność bywa zawodna. Abstrahuję teraz od powodów braku stabilności. W przypadku Windowsa też mało kto dochodzi przyczyn wyskakiwania przysłowiowego blue screena.

Powiedzmy sobie szczerze, że Linuks puki co jest po prostu systemem wymagającym większej wiedzy od użytkownika. Nawet tak przyjaznym dystrybucjom jak Ubuntu trudno jest dziś konkurować z Windowsem na gruncie multimediów, grafiki, czy też wielu innych codziennych programów użytkowych. Siła Linuksa ujawnia się dopiero w zastosowaniach zawodowych.

Podobnie jak jeden z moich przedmówców kocham konsolę i nie wyobrażam sobie pracy bez niej, ale gdyby Windows miał taki przyjazny terminal, kto wie czy bym nie wrócił do Windowsa.

U mnie w firmie pracodawca nie narzuca środowiska pracy. Panuje w tym względzie pełna swoboda i dzięki temu trafiają się zarówno programiści pracujący na linuksach jak i na Windowsach (żaden jeszcze nie wpadł na to aby pracować na Mac-u ;)). Powoduje to czasami pewne utrudnienia, z drugiej jednak strony daje możliwość porównania w zakresie wygody i efektywności pracy, dostępności profesjonalnego oprogramowania, dostępności pomocniczego oprogramowania itp.

Uczciwość każe mi stwierdzić, że praca na Linuksie nie zrobi z człowieka zawodowca, a na Windowsie lamy, przez sam fakt wybrania tego lub tamtego systemu operacyjnego.

Napisał NIXin w środę, 4 listopada 2009 o 04:42

Z m_gol zgadzam się w 99%. ;-)
Bo pod Windowsem 7 jest świetna konsola, nazywa się PowerShell 2 i dorównuje, o ile nie przerasta takiego shella jak np. bash, także polecam się zainteresować :)
Co do Mac OS X'a, próbowałem się "przekonwertować" na ten system. O ile core to jest Darwin, co jest pochodną *nixową (więc i terminal taki sam) i większość opensourceowych aplikacji ma swoje porty, można używać np. fink tak samo jak apt-get pod Debianem, to już z GUI wcale nie jest tak cudownie jak by się wydawało. Niby jest intuicyjne, ale czy wygodne? Dla Power Usera kolorowo nie jest - sensownej alternatywy dla Total Commandera nie ma (jest port Midnight Commandera, ale to i tak nie to samo co TC), a Finder jest IMHO gorszy od Explorera w Windowsie. Na plus dam to, że aplikacje w sferze audio/wideo działają dobrze i jest ich trochę dostępnych, czego o linuxie nie można powiedzieć (brak sensownych, profesjonalnych odpowiedników np. Photoshopa, Premiere, Audition, Final Cut, Cubase, Pro Tools, Logic, Max/MSP, etc.).
Tym sposobem, Windows zapewnia mi najlepsze z dwóch światów ("best of both worlds") - więszkość dobrych aplikacji stosowanych w profesjonalnym świecie i masa narzędzi w trybie GUI dla Power Usera (putty, total commander, tunnelier, foobar2000, nero).

Przykre jest jedynie to jak traktowane są sterowniki, i to w każdym systemie, również Windows. Sprzęt drogi, a sterowniki często nie warte pół złotego. A przecież dobre sterowniki+firmware to pół sukcesu urządzenia i mogą wycisnąć ósme poty z urządzeń (co widzimy w różnych opensourceowych przedsiemwzięciach, choćby 'hackowany' dodatek firmwareowy do aparatów Point and Shoot firmy Canon). Krew mnie zalewa jak widzę, że moja zewnętrzna karta dźwiękowa za 1500zł powoduje losowe BSODy pod Windowsem, a 64-bitowy sterownik nawet nie chce się zainstalować (jeśli sterownik istnieje w systemie po popięciu urządzenia - instant BSOD). I setki użytkowników dzwoniło, wysyłało maile do supportu firmy, a oni wciąż to samo powtarzają i tylko mówią żeby "sprawdzić swój system". Grrr.

Nie mówiąc o tym, że otwarte projekty linuxowych sterowników istnieją (i mogłyby ruszyć trochę rynkiem w stronę linuxa), a firma nie chcę nawet udostępnić podstawowej dokumentacji na użytek dopisania obsługi do urządzenia (nie mówię tu o dogłębnej wewnętrznej firmowej dokumentacji, tylko o rozdziale o tym jak urządzenie komunikuje się z komputerem).
A sterownik czasami i tak powstaje, z zreverse engineeringowanych danych. I zwykle paradoksalnie działa lepiej niż oryginał.

Napisał m_gol w środę, 4 listopada 2009 o 20:21

@NIXin
Mam PowerShella na swoim Windowsie 7 z MSDN AA, ale jakoś nie zauważyłem, by był bardziej funkcjonalny od basha. :) Już nawet podstawowe komendy, jak ls są za mało elastyczne w porównaniu do bashowych komend. Jednak wolę basha, wirtualne pulpity itp. itd.

Ech, dlaczego w repozytoriach 64-bitowego Ubuntu nie może być trochę 32-bitowych aplikacji? 64-bitowy Flash sprawia problemy, a nie rozumiem, co by komu zaszkodziło, gdyby przeglądarka była 32-bitowa...

Pamiętaj, dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Skomentuj

NickInformacja
E-mailNa wypadek potrzeby kontaktu z autorem (niepublikowany)
BlogNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wikiKomentarze są moderowane - przeczytaj zasady!

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2010 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia