Jądro systemu operacyjnego
Jądro systemu operacyjnego (ang. kernel) – 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[1][2]. Funkcjonalnie jądro systemu jest jedynym programem działającym na uruchomionym komputerze przez cały czas[a] i przy jego pomocy uruchamiane są inne programy (procesy) a także dodatkowe funkcje jądra (np. sterowniki urządzeń)[3].
Budowa jądra
[edytuj | edytuj kod]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[4].
Cechy jądra
[edytuj | edytuj kod]Z budowy jądra wynikają jego cechy, takie jak:
Zastosowanie systemów operacyjnych
[edytuj | edytuj kod]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 embedded (osadzone), które charakteryzują się wysoką skalowalnością.
Przykłady jąder systemów operacyjnych
[edytuj | edytuj kod]Jądra monolityczne:
- Tradycyjne jądra UNIX, jak np. jądra systemów BSD
- Linux
- MS-DOS
- Microsoft Windows
Hybrydowe:
Mikrojądra:
Uwagi
[edytuj | edytuj kod]- ↑ po 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)
Przypisy
[edytuj | edytuj kod]- ↑ Roman Grabowicz, Janusz Zalewski. Czym jest UNIX? Jądro. „Mikroklan”. 2/87. s. 22-23. ISSN 0860-1941.
- ↑ Silberschatz i Galvin 2006 ↓, s. 489-496.
- ↑ Silberschatz i Galvin 2006 ↓, s. 5.
- ↑ Torvalds, L. (maj 2006). Hybrid kernel, not NT.
Bibliografia
[edytuj | edytuj kod]- Abraham Silberschatz, Peter B. Galvin: Podstawy systemów operacyjnych. Wydawnictwa Naukowo-Techniczne, 2006. ISBN 83-204-3215-4. (pol.).