Wybierz Stronę

W 1992 roku Andrew Tanenbaum — profesor informatyki z Amsterdamu, twórca systemu MINIX — napisał na grupie Usenet zdanie które przeszło do historii: "Linux jest przestarzały". Jego argument był techniczny i brzmiał przekonująco: Linus Torvalds budował monolityczne jądro w stylu lat 70., podczas gdy cały postęp badań nad systemami operacyjnymi zmierzał w kierunku mikrojądra. Tanenbaum miał rację co do architektury. Mylił się co do wszystkiego innego.

Ta debata — znana dziś jako Tanenbaum-Torvalds debate — była tak naprawdę starciem dwóch wizji przyszłości systemów operacyjnych. Wizja mikrojądra była elegancka, teoretycznie lepsza i poparta dekadą badań akademickich. Wizja monolitu była pragmatyczna, szybka i działała teraz, nie za kilka lat.

Trzydzieści lat później mikrojądro wygrało — tylko nie w miejscu gdzie miało wygrać. Jest w każdym iPhonie, w każdym nowym samochodzie, w sercu Windows NT. Jest wszędzie. Tylko nie w GNU, gdzie zostało zaplanowane.

Carnegie Mellon i pomysł który zmienił wszystko

Żeby zrozumieć GNU Hurd, trzeba najpierw zrozumieć czym jest mikrokernel i dlaczego w latach 80. wszyscy poważni badacze systemów operacyjnych uważali że to jest przyszłość.

Tradycyjne jądro systemu operacyjnego — monolityczne — to jeden wielki kawałek kodu działający z najwyższymi uprawnieniami. Zarządza procesami, pamięcią, systemem plików, sterownikami urządzeń, siecią. Wszystko w jednym miejscu. Wadą jest oczywista: jeden błąd w sterowniku karty dźwiękowej może zabrać ze sobą cały system. Niebieski ekran śmierci w Windows przez lata był właśnie tym.

Mikrokernel to inne podejście. Jądro robi absolutne minimum — zarządza procesami, pamięcią i komunikacją między procesami. Nic więcej. Sterowniki urządzeń, system plików, stos sieciowy — wszystko to działa jako oddzielne procesy w przestrzeni użytkownika. Jeśli sterownik zawiedzie, ginie tylko sterownik. Reszta systemu działa dalej.

Na Uniwersytecie Carnegie Mellon w Pittsburghu Richard Rashid i jego zespół przez lata 80. rozwijali Mach — prototypowe mikrojądro które stało się punktem odniesienia dla całej branży. Mach udowodnił że idea działa. Wyniki badań były fascynujące. Stabilność, izolacja błędów, możliwość uruchamiania wielu różnych systemów operacyjnych na tym samym jądrze. Akademicy byli przekonani że przyszłość należy do mikrojądra. Microsoft Windows Insider

Richard Stallman był przekonany razem z nimi.

GNU bez serca

Stallman uruchomił projekt GNU w 1984 roku z jednym celem: stworzenie w pełni wolnego systemu operacyjnego kompatybilnego z Unixem. Do końca lat 80. projekt miał praktycznie wszystko — kompilator GCC, bibliotekę C, edytor Emacs, setki narzędzi systemowych. Brakowało jednej rzeczy. Jądra.

Rozwój Hurd zaczął się w 1990 roku po porzuconym wcześniej podejściu z 1986 roku. Według Thomasa Bushnella — pierwszego architekta Hurd — oryginalny plan zakładał adaptację jądra 4.4BSD-Lite. Z perspektywy czasu Bushnell powiedział: "Teraz jest mi absolutnie oczywiste że to by się znakomicie udało i świat wyglądałby dziś zupełnie inaczej." Cyberwebspider

Ale Stallman w 1987 roku zaproponował inne podejście. Mach z Carnegie Mellon był dostępny, był nowoczesny, był architektonicznie czysty. Zamiast adaptować BSD — budujemy na Machu. Oszczędzimy czas. Mach zrobi za nas większość roboty.

Prace zostały opóźnione o trzy lata z powodu niepewności czy CMU wyda kod Macha na odpowiedniej licencji. Kiedy w końcu się zaczęły — napotkały na problem którego nikt w pełni nie przewidział. Cyberwebspider

Mikrokernel Mach był elegancki w teorii. W praktyce komunikacja między procesami przez przesyłanie wiadomości — zamiast bezpośrednich wywołań funkcji — była dramatycznie wolna. IPC było wielokrotnie wolniejsze niż wywołania funkcji. Monolityczne jądro mogło wywołać funkcję systemu plików bezpośrednio. Mikrokernel musiał wysyłać wiadomości między procesami, angażując wiele przełączeń kontekstu. Wydajność była często pięć do dziesięciu razy gorsza. Microsoft Windows Insider

Hurd utknął. Lata mijały, system nie był gotowy. Nie do użytku produkcyjnego, nie do zastąpienia Linuksa jako fundament GNU. Stallman przyznał wprost: "Biorę pełną odpowiedzialność za decyzję techniczną żeby rozwijać jądro GNU na bazie Macha — decyzję która jak się wydaje była odpowiedzialna za powolność developmentu. Myślałem że użycie Macha przyspieszy pracę oszczędzając nam dużą jej część. Myliłem się." Pureinfotech

W 2025 roku, na FOSDEM, główny opiekun projektu Samuel Thibault przedstawił roadmapę z konkretnym i ambitnym celem — dostarczenie wsparcia dla 64-bitowego x86_64 do 2026 roku. To miałoby być największe techniczne osiągnięcie w czterdziestoletniej historii projektu. Projekt nadal żyje. Nadal nie nadaje się do codziennego użytku. Nadal jest "prawie gotowy". Windows Central

QNX — mikrokernel który po cichu podbił przemysł

Podczas gdy GNU Hurd tkwił w architektonicznych problemach Macha, dwie osoby w Kanadzie robiły z mikrojądrem to samo — tylko że działało.

Gordon Bell i Dan Dodge zbudowali QNX w 1980 roku jako czysty mikrokernel od zera. Nie na bazie akademickiego prototypu — własna implementacja, od początku zaprojektowana pod kątem wydajności i deterministycznego czasu odpowiedzi. QNX rozwiązał problem wolności IPC przez precyzyjne projektowanie protokołów komunikacyjnych i scheduler który gwarantował czasy odpowiedzi z nanosekundową precyzją.

Efekt był odwrotny od Hurd. Mikrokernel który działał — i który działał tam gdzie inne systemy sobie nie radziły. Fabryki, systemy telekomunikacyjne, aparatura medyczna, reaktory jądrowe. Wszędzie tam gdzie "zazwyczaj działa" nie wystarczyło.

Różnica między QNX a Hurd sprowadza się do jednej kwestii: QNX nie próbował być czystym akademickim mikrojądrem za wszelką cenę. Był pragmatycznym mikrojądrem zaprojektowanym żeby działać w realnym świecie z realnymi ograniczeniami. Hurd przez lata gonił architektoniczną doskonałość kosztem ukończenia projektu.

Steve Jobs, NeXT i Mach który trafił do każdego iPhone'a

W 1985 roku Steve Jobs opuścił Apple i założył NeXT. Budował komputery dla uczelni i naukowców — drogie, piękne, z systemem operacyjnym który miał być fundamentalnie nowoczesny. Wybór jądra był oczywisty: Mach z Carnegie Mellon.

NeXTSTEP, wydany w 1989 roku, był zbudowany na jądrze Mach 2.5 z podsystemem BSD Unix na wierzchu. Ale NeXTSTEP nie był czystym mikrojądrem z serwerami w przestrzeni użytkownika. Zamiast tego kod BSD został zintegrowany w przestrzeń adresową jądra dla wydajności. To była kluczowa decyzja: wziąć architekturę Macha, jego abstrakcje i mechanizmy IPC, ale zrezygnować z radykalnej separacji procesów która powodowała problemy z wydajnością. gHacks Tech News

Hybryda. Nie czyste mikrojądro, nie monolitu — coś pomiędzy.

Kiedy Apple kupił NeXT w 1997 roku za 429 milionów dolarów i Jobs wrócił do Apple, NeXTSTEP stał się fundamentem nowego systemu operacyjnego. Darwin, otwartoźródłowy fundament macOS, zawiera jądro XNU — skrót od "X is Not Unix". Computerworld

XNU jest hybrydowym jądrem łączącym Mach 2.5 z Carnegie Mellon z komponentami BSD i API dla sterowników napisanym w C++ nazwanym I/O Kit. Działa na ARM64 i x86-64. Jest podstawą macOS, iOS, iPadOS, watchOS, tvOS i visionOS. Gadget Review

Każdy iPhone który trzymasz w dłoni ma w środku Mach — ten sam Mach z Carnegie Mellon który Stallman wybrał dla GNU Hurd w 1987 roku. Tyle że Apple zbudował na nim działający system operacyjny używany przez miliardy ludzi, a GNU Hurd pracuje nad wsparciem 64-bit.

Windows NT i hybryda którą zna każdy

Dave Cutler dołączył do Microsoftu w 1988 roku. Za sobą miał VMS — system operacyjny dla minikomputerów DEC VAX który był wzorcem stabilności i projektowania. Microsoft dał mu zadanie: zbuduj nowy Windows od zera. Nie evolution DOS-a — prawdziwy nowoczesny system.

Jądro Windows NT zostało zaprojektowane jako zmodyfikowany mikrokernel — było pod wpływem mikrojądra Mach z Carnegie Mellon, ale nie spełnia wszystkich kryteriów czystego mikrojądra. Tech2Geek

Projekt Windows NT zawierał wiele tych samych celów co Mach — strukturę jako zbiór modułów komunikujących przez dobrze zdefiniowane interfejsy, małe mikrojądro ograniczone do podstawowych funkcji jak obsługa przerwań, szeregowanie wątków i prymitywy synchronizacji. Inne wspólne cele to wsparcie dla różnych architektur i jądro z abstrakcjami wystarczająco ogólnymi żeby pozwolić na implementację wielu osobowości systemu operacyjnego na wierzchu. Both.org

Ale — podobnie jak Apple z XNU — Cutler nie poszedł w czysty mikrokernel. Powodem dla którego NT nie jest systemem mikrojądra jest to że większość komponentów systemowych działa w tej samej przestrzeni adresowej co jądro, jak w projekcie monolitycznym. W typowym monolitycznym projekcie nie byłoby mikrojądra per se, ale jądro implementowałoby zbliżoną funkcjonalność. Both.org

Wynik: hybryda która wzięła elegancję architektury mikrojądra — izolację modułów, komunikację przez interfejsy, Hardware Abstraction Layer — i połączyła z wydajnością monolitu. Windows NT trafił do produkcji w 1993 roku. Stał się fundamentem wszystkich późniejszych wersji Windows: 2000, XP, Vista, 7, 8, 10, 11. Każdy Windows który kiedykolwiek uruchomiłeś po 1993 roku ma w środku echo Macha z Carnegie Mellon.

Idea wygrała. Projekt przegrał.

Jest w historii mikrojądra pewna filozoficzna ironia której nie sposób przeoczyć.

Richard Stallman wybrał Mach bo wierzył że to właściwa architektura. Miał rację. Mach jest w każdym iPhonie, w każdym macOS, w Windows NT, w QNX który steruje Twoim samochodem. Mikrojądro — lub jego hybryda — jest architekturą która zwyciężyła w najważniejszych systemach operacyjnych na świecie.

Tyle że nie w GNU, gdzie miało zwyciężyć.

Linux — ten "przestarzały monolitu" który Tanenbaum krytykował w 1992 roku — napędza dziś 90% serwerów w internecie, każdego Androida, większość superkomputerów, systemy wbudowane od routerów po telewizory. Linux wygrał rynek przez pragmatyzm i tempo, nie przez elegancję architektury.

GNU Hurd po trzydziestu czterech latach developmentu wciąż nie nadaje się do codziennego użytku. Stallman powiedział w jednym z wywiadów że "zajęło wiele, wiele, wiele lat żeby ten jądro w ogóle uruchomić, a nadal nie działa dobrze, i wygląda na to że mogą być fundamentalne problemy z tym projektem których nikt nie znał w 1990 roku." Pureinfotech

To jest lekcja którą historia systemów operacyjnych powtarza raz za razem: doskonała architektura która nie trafia do użytkowników przegrywa z niedoskonałą architekturą która działa jutro. CP/M przegrał z DOS-em. OS/2 przegrał z Windows. GNU Hurd przegrywa z Linuksem od 1991 roku.

A mikrojądro Mach — ta czysta, elegancka idea z Carnegie Mellon — żyje w każdym urządzeniu które masz w kieszeni. Tylko pod innymi nazwami i z innymi kompromisami niż Stallman planował.

Czasem masz rację co do pomysłu i przegrywasz wojnę. Czasem twój pomysł wygrywa wszędzie — tylko nie u ciebie.