Jądro systemu operacyjnego(ang. Kernel) – podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania.
Wyróżniamy kilka podstawowych konstrukcji jąder:
Jądro monolityczne – 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. Zaletą tej techniki jest prostota i 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 znajdowaniu 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.
Nanokernel – technika zbliżona do techniki mikrojądra, różnica w wielkości – Nanokernel jest 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 zabezpieczenia zasobów. Przykładem systemu korzystającego z tego jądra to system XOK. Wyposażony on został w bibliotekę ExOS, która umozliwia uruchamianie większości aplikacji 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 w kompilowane w główny kod jądra, inne usługi pozostają oddzielone od głównego jądra i działają jako serwery. 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 systemowego:
Wielozadaniowość
Wielobieżność
Skalowalność
Wywłaszczalność
Wielowątkowość
Przykłady jąder systemów operacyjnych:
Jądra monolityczne:
Tradycyjne jądra UNIX, jak np. jądra systemów BSD
Linux
Hybrydowe:
Windows
Mac OS
Mikrojądra:
Microsoft Singularity
Phoenix-RTOS
Etapy uruchamiania systemu Windows:
Ustanowienie środowiska pracy - w pierwszym sektorze dysku twardego znajduje się główny rekord rozruchowy oraz tablica partycji, informacje w nich zawarte umożliwiają wczytanie plików systemowych oraz opisują fizyczne rozmieszczenie plików na dysku twardym.
Uruchomienie modułu ładującego - program ładujący system przełącza procesor z trybu rzeczywistego w do trybu wirtualnego 32 - bitowego, a następnie uruchamia sterowniki mini systemu.
Wybór systemu operacyjnego - moduł ładujący wyświetla listę zainstalowanych na dysku twardym systemów operacyjnych znajdujących się w pliku BOOT.INI oraz daje możliwość wyboru uruchomienia dowolnego z nich.
Wykrywanie i diagnostyka sprzętu – w tym momencie następuje wykrycie sprzętu oraz stworzenie listy zainstalowanych urządzeń
Wybór konfiguracji - Umożliwia uruchomienie systemu w kilku trybach, np. tryb awaryjny.
Ładowanie jądra systemu - s tym miejscu następuje załadowanie pliku Ntoskernl.exe zawierający jądro systemu.
Inicjalizacja jądra systemu - Jest to etap końcowy uruchomiania sytemu, kontrola nad komputerem zostaje przekazana systemowi operacyjnemu. W tym etapie wykonywane są następujące czynności:
inicjalizacja sterowników niskiego poziomu
ładowanie i inicjalizacja sterowników pozostałych urządzeń
uruchomianie programów diagnostycznych
tworzenie pliku stronnicowego na dysku
uruchomianie podsystemów systemu operacyjnego
Logowanie – wyświetla konta wszystkich użytkowników komputera.