Systemy operacyjne, Tanenbaum, Bos

0
291
Okładka wydania czwartego

Prawie równo rok temu zamówiłem zestaw książek, z których część stanowiły książki związane typowo z moim zawodem, a część z moimi pozostałymi zainteresowaniami. Najcięższą – wagowo i merytorycznie – pozycją w tamtym zestawie była książka „Systemy Operacyjne” napisana przez panów Tanenbauma i Bosa.

Wcześniej od dawna chodziła mi po głowie myśl o przeczytaniu jakiejś pozycji trochę szerzej przybliżającej problematykę związaną z systemami operacyjnymi. Dawno temu, na początku mojej kariery programistycznej, zacząłem czytać książkę Charlesa Petzolda „Programowanie Windows”, ale wstyd przyznać – byłem jeszcze zbyt świeży i nie do końca rozumiałem niektóre rzeczy, co skutecznie mnie do niej zniechęciło. Dużo, dużo później miałem okazję przekartkować jej nowe wydanie – edycję numer 7 i było już „nieco” lepiej” tak więc nie wykluczam, że Petzold będzie także jednym z przyszłych moich wyborów. Jednak on pisze o programowaniu w systemie, a ja chciałem czegoś opisującego sam system operacyjny.

Charles Petzold

Na rynku królują dwa giganty – „Podstawy systemów operacyjnych” Silberschatza oraz opisywane tutaj „Systemy operacyjne” Tanenbauma i Bosa. Obie to wielkie cegły liczące ponad tysiąc stron, po brzegi wypełnione informacjami dotyczącymi wszystkich aspektów działania „silnika” każdego komputera, czyli właśnie systemu operacyjnego. Nie będę mówił jak wyglądają „Podstawy…” ponieważ tego tak naprawdę nie wiem. Owszem, widziałem PDFa, ale nie miałem cierpliwości wgłębiać się w niego bardziej. Zamiast tego przeczytałem mnóstwo opinii na temat obu ksiażek i na ich podstawie wybrałem swoją cegłę.

Okładka konkurencyjnej cegły

Tu należy powiedzieć, dlaczego w ogóle systemy operacyjne? Otóż specjalizuję się, jeżeli można tak powiedzieć, w tworzeniu aplikacji biznesowych. Tak naprawdę oznacza to, że mogę nie interesować się niczym, znać kilka podstawowych konstrukcji języka, kilka bibliotek .Net i śmiało mogę kosić kasę na rynku – niedobór programistów sprawia, że nawet leszczyna znajduje swojego amatora. Jednak moje podejście jest odrobinę inne i mimo, że wiem, że raczej nigdy nie będę rzeczywiście potrzebował wiedzy dotyczącej wewnętrznych mechanizmów działania, czy to .Net, czy to systemu, to jednak interesuje mnie to z czysto ludzkiego punktu widzenia. Dokładnie tak samo jak interesuję się zasadą działania lodówki czy silnika spalinowego. Tamta wiedza także mi się do niczego nie przydaje, a jednak czuję, że w jakiś sposób wzbogaca mnie. To, że wiem jak działa świat, który mnie otacza, sprawia że lepiej się czuję – i z tą właśnie myślą postanowiłem tym razem rozszerzyć swoje spojrzenie na systemy operacyjne i zobaczyć co kryje się pod ich maskami.

Spis treści „Systemów…” przedstawiony jest na podlinkowanej wyżej stronie Heliona. Książka składa się z ogromnych rozdziałów traktujących kolejno o podstawowych założeniach systemów, ich przeglądzie, strukturze itp. Następnie idą procesy i wątki, zarządzanie pamięcią, systemy plików, wejście-wyjście, zakleszczenia, wirtualizacja i przetwarzanie w chmurze, systemy wieloprocesorowe, bezpieczeństwo, szczegóły dot. UNIXa, Androida i systemu Windows 8, projektowanie systemu operacyjnego oraz multimedialne systemy operacyjne.

Każdy z tych rozdziałów ustrukturyzowany jest w bardzo podobny i przejrzysty sposób. Na początku przedstawione są ogólne pojęcia i problemy związane z tematem przewodnim, przy czym „przedstawione” nie oznacza „zasygnalizowane” a rzeczywiście – przedstawione. Dogłębnie, w stopniu doskonale dopasowanym do moich potrzeb, a często nawet je przekraczającym.  Im dalej w las, tym więcej drzew i tym bardziej książka staje się niezrozumiała – lub inaczej – zrozumienie jej wymagałoby zbyt dużego wysiłku w stosunku do otrzymanych korzyści (patrz wyżej – dlaczego w ogóle czytam tę książkę). Potrafię zauważyć, czasem subtelną, granicę oddzielającą wiedzę ogólną od, nieistotnych z mojego punktu widzenia, szczegółów.

Muszę pochwalić styl pisania autorów. Jest jasny, klarowny, zwięzły i okraszony odrobiną humoru. Tłumacz też się sprawił – nie zauważyłem rażących błędów związanych z tłumaczeniem, ale jednak korekta powinna wyłapać niektóre pomniejsze lapsusy. Całość nie przeszkadza w odbiorze, co w nawale totalnie skopanych tłumaczeń wyróżnia się bardzo pozytywnie.

Pierwsze wydanie „Systemów” ujrzało światło dzienne w 1992 roku, więc nawet mimo pewnej inercji tak konserwatywnego oprogramowania jakim jest system operacyjny wiedza byłaby już mocno zdeaktualizowana. Na szczęście co kilka lat książka jest poprawiana i obecnie na rynku można jeszcze dostać wydanie III z roku 2007 oraz najnowsze wydanie IV z roku 2015. Zawiera ono m.in. studium przypadku systemu Windows 8 a także informacje związane z przetwarzaniem w chmurze, a zatem porusza w miarę nowe kwestie.

Okładka wydania trzeciego

Oczywiście dla osób chętnych do dalszego rozwijania swojej wiedzy w tej dziedzinie autorzy umieścili bogatą bibliografię, a na końcu każdego rozdziału znajduje się lista pytań i zagadnień do samodzielnego przemyślenia, to także duży plus. Minusem jest brak przykładowych rozwiązań, ale większość pytań jest tak skonstruowanych, że nie da się na nie odpowiedzieć nawet w kilku zdaniach, a należy raczej przestawić całe wypracowania 🙂

Niestety, nie jestem osobą zdolną do ocenienia tej książki pod kątem merytorycznym. Uwzględniając przekrój pozytywnych opinii zakładam, że wiedza tu zawarta jest poprawna i zgodna z rzeczywistością, ale nie potrafię tego potwierdzić samodzielnie – większość była dla mnie nowa i naprawdę cieszę się, że znalazłem plan na przeczytanie tej publikacji i przebrnąłem przez wszystkie rozdziały. Każdy z nich zawierał ogrom ciekawostek – człowiek nie ma najmniejszego pojęcia jakie problemy związane są choćby z prostymi z pozoru plikami na dysku. Podobnie podstawy systemu Android – nie spodziewałem się, że jest on tak różny koncepcyjnie od Windowsa. To tylko dwa z dziesiątek koncepcji, o których dopiero tutaj usłyszałem i nie żałuję ani chwili spędzonej na czytaniu tej książki mimo, że tak jak wspomniałem, bezpośrednio ta wiedza nigdzie mi się nie przyda.

Tak naprawdę największym i najcięższym minusem tej cegły były jej wymiary oraz waga. Czytanie jej jest niewygodne, trudno się ją trzyma a przenoszenie jest kłopotliwe. Moje wydanie waży 1.5 kilograma i jest formatu ca. B5 – gdybym miał kupić tę książkę raz jeszcze, wybrałbym tańsze, elektroniczne wydanie, tym bardziej że nie ma tu wielu skomplikowanych rysunków, których wyświetlanie byłoby uciążliwe na Kindle’u.

Podsumowując – ta książka jest adresowana przede wszystkim do osób, które zamierzają się zajmować systemami operacyjnymi, ale z wiedzy w niej zawartej może skorzystać każdy programista zainteresowany rozwijaniem swoich horyzontów czy umiejętności. Wg mojej skali od ośmiu punktów w górę, w zależności od nastawienia czytającego.