Jądro systemu operacyjnego

Jądro systemu operacyjnego () – podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania.

Budowa jądra 
Wyróżnia się kilka podstawowych metod konstrukcji jąder:

 jądro monolityczne – często stosowane w systemach typu Unix. Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra. Przykładami takiego jądra mogą być: Linux, OpenBSD, FreeBSD, chociaż większość posiada umiejętność dołączania i odłączania modułów (najczęściej zawierających kod sterownika urządzenia lub obsługi potrzebnego w danej chwili systemu plików). Zaletą tej techniki jest prostota, stabilność, łatwość komunikacji pomiędzy różnymi członami jądra (jedna przestrzeń adresowa). Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu programu oraz w znajdywaniu błędów.

 mikrojądro – w tej technice z monolitycznego jądra zostaje tylko jego podstawowa część, a części odpowiedzialne za bardziej wyrafinowane funkcje są wydzielone do funkcjonalnych bloków albo realizowane jako zwykłe procesy w trybie użytkownika.
 nanojądro – technika zbliżona do techniki mikrojądra, różnica w wielkości – nanokernel jest jeszcze mniejszy.
 exokernel – architektura będąca odmianą nanojądra. Cechą wyróżniającą jest możliwość zarządzania zasobami systemu przez nieuprzywilejowanego użytkownika, a rola jądra sprowadza się do zabezpieczania zasobów. Przykładem systemu korzystającego z tego typu jądra jest system XOK, zbudowany w MIT Laboratory for Computer Science, pracujący na komputerach PC. Wyposażony on został w bibliotekę ExOS, która implementuje system UNIX i umożliwia uruchamianie większości aplikacji tego systemu.
 cachekernel – w tej technice jądro systemu buforuje obiekty systemowe takie jak wątki czy przestrzenie adresowe tak jak sprzęt komputerowy buforuje pamięć. Jądra aplikacji trybu użytkownika są odpowiedzialne za ładowanie tych danych i ponowne ich zapisanie, stosując specyficzne dla danej aplikacji mechanizmy.

 jądro hybrydowe – kompromis między architekturą jądra monolitycznego i mikrojądra. W krytycznych usługach – np. stos sieci – usługi są na stałe wkompilowane w główny kod jądra, inne usługi pozostają oddzielone od głównego jądra i działają jako serwery (w przestrzeni jądra). Dzięki temu rozwiązaniu możliwe jest zachowanie wydajności jądra monolitycznego dla kluczowych usług. Klasyfikacja ta budzi kontrowersje niektórych programistów.

Cechy jądra 
Z budowy jądra wynikają jego cechy, takie jak:
 wielozadaniowość (wieloprocesowość),
 wielowątkowość,
 wielobieżność,
 skalowalność,
 wywłaszczalność.

Zastosowanie systemów operacyjnych 
Zastosowanie systemów operacyjnych wynika ściśle z ich budowy, a to przeważnie sprowadza się do budowy ich jądra. Tak więc:
jako serwery lub zapory sieciowe używa się przeważnie systemów z jądrem monolitycznym, czyli np. systemów uniksowych,
w telekomunikacji i wszędzie tam, gdzie należy spełnić duże wymagania czasowe, decydującą rolę odgrywają systemy operacyjne czasu rzeczywistego, takie jak na przykład QNX,
w wielu urządzeniach działają systemy określane mianem  (osadzone), które charakteryzują się wysoką skalowalnością.

Przykłady jąder systemów operacyjnych 
Jądra monolityczne:
 Tradycyjne jądra UNIX, jak np. jądra systemów BSD
 Linux
 MS-DOS
 Microsoft Windows
Hybrydowe:
 Windows NT/2000/XP/Vista/7/8/10/11
 Mac OS

Mikrojądra:
 AIX
 Amoeba
 ChorusOS
 Extremely Reliable Operating System (EROS)
 K42
 LSE/OS (nanojądro)
 KeyKOS (nanojądro)
 L4
 Mach, wykorzystywany w systemach GNU/Hurd i Mac OS X
 MERT
 Minix
 MorphOS
 NewOS
 Phoenix-RTOS
 QNX
 RadiOS
Microsoft Singularity

Przypisy 

!