Monolithic kernel (jądro monolityczne) to architektura jądra systemu operacyjnego, w której wszystkie kluczowe usługi systemowe — sterowniki urządzeń, system plików, stos sieciowy, zarządzanie pamięcią i obsługa procesów — działają razem w jednej, uprzywilejowanej przestrzeni adresowej zwanej kernel space. Wszystko mieli się w tym samym trybie procesora (ring 0) i ma pełny dostęp do sprzętu. Przeciwieństwem jest microkernel, gdzie w jądrze zostaje absolutne minimum, a reszta wędruje do osobnych procesów w przestrzeni użytkownika.
Jak to działa i po co
Skoro cały kod siedzi w jednej przestrzeni, poszczególne komponenty komunikują się przez zwykłe wywołania funkcji, a nie przez kosztowne przekazywanie komunikatów między procesami (IPC). To daje konkretną przewagę: wydajność. Sterownik karty sieciowej, który chce coś przekazać do stosu TCP/IP, po prostu wywołuje funkcję — bez przełączania kontekstu, bez kopiowania danych między procesami. Dlatego monolityczne jądra zwykle są szybsze niż mikrojądra w typowych obciążeniach.
Cena? Izolacja. Skoro wszystko dzieli jedną przestrzeń, błąd w jednym sterowniku może przewrócić cały system. W mikrojądrze padający sterownik to często tylko restart jednego procesu; w monolicie to kernel panic albo niebieski ekran. Nowoczesne monolity łagodzą to ładowalnymi modułami — kod nie musi być wkompilowany na sztywno, można go dorzucać i wyrzucać w locie.
Przykład z praktyki
Najbardziej znany monolit to jądro Linuksa — choć precyzyjniej mówi się o nim „modular monolithic kernel”, bo wspiera Loadable Kernel Modules (LKM). Zobaczysz to na własnej maszynie. Listę załadowanych modułów wyświetlisz przez lsmod, a ręcznie dorzucisz albo usuniesz sterownik komendami modprobe nazwa_modulu i modprobe -r nazwa_modulu. Każdy taki moduł — np. sterownik karty Wi-Fi — działa wewnątrz przestrzeni jądra, z pełnymi uprawnieniami. Inne monolity to klasyczne BSD czy starsze Uniksy. Po przeciwnej stronie barykady stoją MINIX i seL4 (microkernel), a macOS używa jądra XNU, które jest hybrydą.
Częste mity
Pierwszy mit: „monolityczne znaczy, że nie da się nic dorzucić bez rekompilacji”. Nieprawda — moduły rozwiązały to dawno temu. Drugi: „Linux to mikrojądro”. Nie, i to właśnie o ten spór poszło w słynnej wymianie zdań między Linusem Torvaldsem a Andrew Tanenbaumem w 1992 roku. Trzeci mit: „monolit jest przestarzały”. Też nie — najpopularniejsze jądro świata jest monolityczne i ma się świetnie. To kompromis między wydajnością a odpornością, nie błąd projektowy.
Pojęcia powiązane
Microkernel, kernel space i user space, system call, Loadable Kernel Module, kernel panic, jądro hybrydowe (XNU), ring 0.