Kernel
Kernel (pol. jądro) jest centralną częścią systemu operacyjnego, odpowiedzialną za zarządzanie zasobami komputera oraz udostępnianie ich procesom i wątkom działającym w systemie. To właśnie kernel zapewnia abstrakcję sprzętu, kontrolę nad pamięcią, planowanie procesów, obsługę przerwań i interfejsy systemowe.
Definicja
Kernel to najniższy poziom oprogramowania, który działa w trybie uprzywilejowanym (tryb jądra) i ma bezpośredni dostęp do procesora, pamięci operacyjnej, urządzeń I/O oraz innych elementów fizycznych komputera.
Historia
Początki koncepcji kernela sięgają wczesnych lat 1960 i 1970, kiedy powstawały pierwsze systemy wielozadaniowe, takie jak Multics i Unix. W 1984 roku Linus Torvalds rozpoczął pracę nad projektem Linux, tworząc monolityczny kernel, który stał się podstawą jednego z najpopularniejszych systemów operacyjnych.
Rodzaje architektur kernela
W zależności od sposobu organizacji kodu i podziału funkcji, wyróżnia się trzy główne typy architektur:
- Monolityczny – wszystkie podstawowe usługi (zarządzanie pamięcią, system plików, sterowniki) są zintegrowane w jednym dużym obrazie binarnym.
- Mikrokernel – minimalny zestaw funkcji (głównie obsługa przerwań i komunikacji międzyprocesowej) pozostaje w przestrzeni jądra; pozostałe usługi działają w trybie użytkownika.
- Hybrydowy – łączy zalety obu podejść; elementy krytyczne są częścią monolitu, a niekrytyczne – moduły działające w przestrzeni użytkownika (np. Windows NT).
Główne funkcje kernela
| Funkcja | Opis |
|---|---|
| Planowanie procesów | Decyzje o przydziale czasu procesora poszczególnym procesom i wątkom (proces, wątek). |
| Zarządzanie pamięcią | Alokacja i zwalnianie pamięci, wirtualizacja pamięci (pamięć wirtualna), ochrona pamięci. |
| Obsługa systemu plików | Interfejsy do odczytu i zapisu danych na nośnikach (systemy plików). |
| Komunikacja międzyprocesowa (IPC) | Mechanizmy wymiany danych pomiędzy procesami (potoki, kolejki, semafory, pamięć współdzielona). |
| Obsługa przerwań | Reagowanie na sygnały sprzętowe i programowe, delegowanie ich do odpowiednich sterowników. |
| Bezpieczeństwo i izolacja | Kontrola dostępu, tryby ochronne, sandboxing. |
Przykłady popularnych kernelów
- Linux Kernel – monolityczny kernel rozwijany jako projekt open‑source od 1991 roku.
- Windows NT Kernel – hybrydowy kernel używany w systemach Windows 10 i nowszych.
- XNU – hybrydowy kernel stosowany w systemach macOS i iOS (bazuje na mikrokernelu Mach).
- FreeBSD Kernel – monolityczny, rozwijany od 1993 roku jako część rodziny BSD.
- MINIX 3 – przykład czystego mikrokernelu wykorzystywanego w edukacji i systemach wbudowanych.
Kernel w systemach wbudowanych i czasu rzeczywistego
W systemach wbudowanych oraz systemach czasu rzeczywistego (RTOS) kernel musi spełniać dodatkowe wymagania: deterministyczny czas reakcji, małe zużycie pamięci oraz możliwość działania na ograniczonych zasobach. Przykłady: FreeRTOS, VxWorks.
Rozwój i przyszłość
Obecnie trwają prace nad dalszym modularizowaniem kerneli, zwiększaniem bezpieczeństwa (np. SELinux, AppArmor) oraz integracją z technologiami wirtualizacji (KVM, Hyper‑V). Wspólnota open‑source kontynuuje rozwój kernelu Linuksa, wprowadzając nowe architektury procesorów (ARM, RISC‑V) oraz funkcje takie jak eBPF.
Powiązane pojęcia
System operacyjny • Proces • Wątek • Pamięć wirtualna • Sterownik urządzenia • Komunikacja międzyprocesowa • Bezpieczeństwo systemu
Bibliografia
- Andrew S. Tanenbaum, Operating Systems: Design and Implementation, 3. wyd., Prentice Hall, 2006.
- Robert Love, Linux Kernel Development, 3. wyd., Addison‑Wesley, 2010.
- Microsoft Docs, Windows NT Architecture, dostępny w wewnętrznej bazie wiedzy Microsoft.