Wszyscy narzekają na Microsoft

W świecie komputerów panuje moda na narzekanie na Microsoft. Powodem narzekania jest wiecznie wieszajacy się windows (obecnie Windows XP jest bardzo stabilny, ale jak ktoś kilka lat temu używał windowsa 95, czy 98 to pewnie wie o czym mówię). Po dłuższych przemyśleniach doszedłem do wniosku, że windows wcale nie jest taki zły…

Napisanie systemu operacyjnego wcale nie jest takie proste. Mamy przecież bardzo dużo różnego sprzętu a taki system operacyjny musi ze wszystkim współpracować. Sama dokumentacja byle procesora ma kilka tysięcy stron. Ile czasu by zajęło Tobie przeczytanie tak grubej ksiażki? A ile czasu jej zrozumienie? A teraz sobie pomyśl, że taki Intel co chwilę wypuszcza nowe procesory. Oprócz Intela jest jeszcze AMD. Do procesora trzeba też płytę główną (tutaj też są różne modele płyt głównych) a do każdej płyty głównej jest masa innego sprzętu (masa różnych kart muzycznych, masa kart graficznych itp.). Tutaj mała dygresja – obsługa dwóch procesoprów jest jeszcze bardziej zakręcona 😉 Oczywiście jest coś takiego jak standard, ale standardy mają to do siebie, że ciągle się zmieniają, ciągle wychodzą nowe wersje różnych protokołów komunikacyjnych itp. Mało tego – system operacyjny pisze się kilka lat (przypomnij sobie ile razy była przekładana premiera Windows Visty), więc zanim powstanie nowy system operacyjny, powstanie też nowy sprzęt, który ten system musi obsługiwać a nie był on znany dla projektantów windowsa. Pół biedy, gdy ten nowy sprzęt działa na starych standardach, ale co by było, gdyby np. płyta główna miała jakieś nowe wejścia na pamięci RAM?

Innym problemem przy napisaniu systemu operacyjnego jest zachowanie na różne niespodziewane czynniki. Załóżmy, że włączasz komputer a tu karta muzyczna jest uszkodzona (albo się uszkodzi w czasie działania). Jak powinien zareagować system operacyjny?

Kolejny problem już dotyczy tylko strony programistycznej. Windows to system wielozadaniowy, czyli mogę jednocześnie pisać tą notkę na blogu, słuchać winampa a w tle program pocztowy ściąga pocztę. Tak naprawdę to nie jest to w pełnym tego słowa znaczeniu system wielozadaniowy, gdyż mam tylko jeden procesor a windows czuwa nad tym, aby każdy program działał ułamek sekundy, po czym przełącza się na następny a my mamy wrażenie, że wszystko chodzi jednocześnie (przypomina to sytuację, gdy 10 osób pije orenżadę z jednej butelki jednocześnie, ale dostępna jest tylko jedna słomka). Taki windows działa na tej zasadzie, że przed przełączeniem się na następny program zapamiętuje wszystkie dane dotyczące aktualnie wykonującego się programu (odkłada wszystkie rejestry na STOS), pobiera ze STOSu rejestry programu który w następnej kolejności ma się wykonywać i „przełącza”. Niby prosta zasada, ale pomyśl sobie co by było, gdyby ten inny program wykonał nieprawidłową operację (na skutek jakiegoś błędu w tym programie?) System operacyjny musi nad tym czuwać i „tak kombinować”, aby zawieszenie się jednego programu nie wpłynęło na zawieszenie się całego systemu.

Kolejny problem wynikający ze strony programistycznej to zachowanie kompatybilności. Pod windowsem mogę uruchomić program napisany dla DOSa. Kiedyś pod windowsem XP uruchomiłem Painta z windowsa 3.11 (premiera XP była chyba w 2001 roku a 3.11 w 1990). Pomyśl sobie – udało mi się uruchomić aż tak archaiczny program. Ba.. mamy teraz rok 2007 a ja sam czasami uruchamiam program (napisany pod windows 3.11) w 1994 roku!
Takie trzymanie się kompatybilności powoduje to, że wszystko staje się jeszcze bardziej zakręcone. Przykładowo podstawą programowania pod DOSem były przerwania a pod windowsem są to funkcje API. Tutaj windows musi pilnować, aby np. niedopracowany program DOSowy nie grzebał w pamięci RAM co do której nie ma uprawnień.

Tak więc zanim zaczniemy narzekać na windows, zrozummy, że wcale nie tak łatwo jest napisać system operacyjny. A niedowiarkom proponuję zapoznanie się z książką Anatomia PC. Książka ma zaledwie 1200 stron i opisano w niej kupę różnych protokołów, standardów itp. Czytając tą książkę cały czas się zastanawiałem jak to się dzieje, że wszystko się trzyma kupy…

9 komentarzy to “Wszyscy narzekają na Microsoft”

  1. Krzysztof Lis napisał(a):

    Co do kompatybilności XP z DOSowymi programami nie jest aż tak kolorowo. Zresztą mam wrażenie, że niedociągnięć można oczekiwać po darmowym systemie operacyjnym typu Linux, ale nie po czymś, za co płacisz kilkaset złotych…

  2. Damian Daszkiewicz napisał(a):

    Odnośnie kompatybilności to wcale nie musi być wina Microsoftu. Przykładowo: aby wyświetlić na ekranie jakiś znak, albo punkt należy wywołać jakąś tam funkcję przerwania 10h. Jednak jest to wolne i programiści stosują taki trik, że bezpośrednio modyfikują pamięć ekranu. Tutaj jest problem, bo windows musi przechwytywać takie odwołania i coś z tym robić (zauważ, że w windowsie możesz nie mieć okna MSDOS na całym ekranie, tylko tuż obok okna z Paintem i windows musi pilnować, aby głupia aplikacja DOSowa nie mazała tak swobotnie po ekranie (ponieważ okno jest mniejsze, więc musi jakoś poprzeliczać adresy stawianych punktów)).
    Poza tym jak zminimalizujesz w danej chwili okno programu DOSowego a w tej chwili program DOSowy chce coś wypisać na ekranie (poprzez odwoływanie się do pamięci ekranu) to windows musi coś z tym zrobić 😉

    Pisząc programy DOSowe w dawnych czasach programiści stosowali różne tego rodzaju sztuczki (ze względu na wydajność), niektóre wcale nie musiały być udokumentowane. Trudno winić Microsoft że nie przewidział wszystkich sztuczek jakie stosowali w dawnych DOSowych programach programiści. Poza tym część programów może nie działać z tego powodu, że korzystał z jakiejś nieudokumentowanej sztuczki która działała na starym procku, ale na nowym już nie działa.

  3. Bellois napisał(a):

    Powiem jeszcze tylko jedno odnośnie najnowszej wersji OS-u Microsoftu: DRM. Czy coś więcej trzeba dodawać? 😀

  4. Damian Daszkiewicz napisał(a):

    Nie miałem do czynienia z Vistą, więc się nie wypowiadam na ten temat

  5. Krzysztof Lis napisał(a):

    Co do DOS, nie wiem, czemu on nie jest uruchamiany po prostu w trybie zbliżonym do emulatora. 😀

  6. Dariusz napisał(a):

    Nie jestem zawodowym programistą (piszę tylko proste programiki), więc trudno mi się wypowiadać w kwestii technicznej działania programów, ale jestem również pod wrażeniem działania systemów Microsoftu, nawet tak ośmieszane poprzednie wersje Windows (95 i 98) były rewolucyjne jak na tamte czasy (lata 2000-2002) a ludzie którzy narzekali na nie i tak z chęcią korzystali z tych systemów. Zresztą większość narzekających najczęściej nie miała pojęcia o czym mówi oczekując po systemach operacyjnych że będą idealne i na dodatek nie będą nic kosztowały – takie podejście do Microsoftu mnie zawsze raziło.
    Gdy piszesz nawet niezbyt skomplikowany program komputerowy działający trybie tekstowym możesz się przekonać ile kosztuje trudu napisanie go tak aby działał stabilnie, wykrycie i usunięcie ukrytych błędów i uodpornienie go na ewentualne bezmyślne używanie (tak by wciskanie czegokolwiek nie powodowało szkód w komputerze).

  7. daniel napisał(a):

    Ja tam nie uważam żeby windows xp był złym systemem.Owszem ma wiele niedociągnięć, ale i tak będę go używał bo moim zdaniem jest o wiele bardziej przyjaźniejszy dla użytkownika niż linux.Co najdziwniejsze zauważyłem że większość osób krytykujących windowsa sama korzysta z tego systemu i nie zamierza wcale przesiąść się na linuxa. 😀

  8. Damian Daszkiewicz napisał(a):

    Pamiętam pierwsze wersje windowsa jak się wieszały. A taki XP może u mnie na laptopie chodzić kilka dni bez restartu (czesto na noc hibernuje komputer aby rano nie tracić czasu na uruchamianie programów 🙂

  9. Łukasz napisał(a):

    No w koncu ktoś nie krytykuje Windowsa.
    Dla mnie windows jest niezastąpiony – kilka razy instalowałem linuksa, ale mogłem wytrzymać 😉
    Na XP bez problemu grałem w DOSowe gry (np. Settlers II).
    A tera Vista działa bez problemów, a starsze programy po prostu działają.