Jądro systemu operacyjnego () – podstawowa część systemu operacyjnego, odpowiedzialna za wszystkie podstawowe jego funkcje. Zwykle w zakres ten wchodzą: zarządzanie operacjami wejścia-wyjścia (w tym układami oraz urządzeniami), zarządzanie pamięcią (w tym – pamięcią operacyjną oraz masową) oraz zarządzanie procesami. Funkcjonalnie jądro systemu jest jedynym programem działającym na uruchomionym komputerze przez cały czaspo tym gdy zostanie już ono wczytane do pamięci i uruchomione, wcześniej może działać np. oprogramowanie typu BIOS (które pozwala tylko na bardzo ograniczone operacje, m. in. wczytanie do pamięci operacyjnej oprogramowania uruchamiającego jądro systemu operacyjnego) i przy jego pomocy uruchamiane są inne programy (procesy) a także dodatkowe funkcje jądra (np. sterowniki urządzeń).

Budowa jądra Wyróżnia się kilka podstawowych metod konstrukcji jąder: thumb|300px|Model funkcjonowania jądra monolitycznego. 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. thumb|300px|Model komunikacji mikrojądra z aplikacjami. 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. thumb|300px|Model komunikacji jądra hybrydowego z aplikacjami. 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 Torvalds, L. (maj 2006). Hybrid kernel, not NT..

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

Uwagi

Przypisy

Bibliografia

!