T: Jądro systemu operacyjnego.
Główne elementy systemu operacyjnego:
- jądro systemu - realizuje wszystkie zadania systemu operacyjnego,
- powłoka - program umożliwiający na komunikację użytkownika z systemem operacyjnym,
- system plików - sposób zapisu danych.
Jądro systemu operacyjnego (ang. kernel) - podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania. Główny interfejs między podstawowym sprzętem maszyny a systemem operacyjnym stanowi jądro systemu, które jest najbardziej wewnętrzną warstwą SO. Zadaniem jądra systemu jest stworzenie pewnego środowiska, w którym mogą występować procesy. Jądro mieści w sobie obsługę przerwań, przełączanie procesorów od procesu do procesu, realizację mechanizmów służących do komunikacji między procesami.
Jądro systemu składa się z trzech programów:
- programu wstępnej obsługi przerwań, który inicjuje obsługę wszystkich przerwań;
- programu zwanego dyspozytorem, który przełącza CPU od jednego do drugiego procesu;
- procedur, które realizują operacje podstawowe służące do komunikacji między procesami. Te procedury wywołuje się w procesach za pośrednictwem odwołań do systemu.
Ponieważ jądro systemu buduje się bezpośrednio na podstawie sprzętu, więc jest ono najbardziej zależną od maszyny częścią systemu operacyjnego. W rzeczywistości jest to jedyna część systemu operacyjnego, która bywa napisana w języku asemblerowym. Oprócz kilku niewielkich wyjątków, głównie związanych z wejściem-wyjściem, pozostałe warstwy systemu można najwygodniej (i niezawodnie) napisać w języku wysokiego poziomu.
Wyróżniamy kilka podstawowych metod konstrukcji jąder:
- Monolityczne - wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra. Stosowane w systemach Linux. Można dołączać i odłączać moduły (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 (jeden program). Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu programu oraz w znajdywaniu błędów.
- Mikrojądro - zadania podstawowe są wykonywane przez jądro, a bardziej wyrafinowane funkcje są realizowane jako procesy.
- Nanokernel - 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.
- Cachekernel - 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.
- Hybrydowe - kompromis między architekturą jądra monolitycznego i mikrojądra. Krytyczne 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. Stosowane w systemach Windows.
Zadanie1:
Zapoznaj się z informacjami na temat jądra systemu operacyjnego publikowanymi w serwisie:
Cechy jądra systemu operacyjnego:
- wielozadaniowość (wieloprocesowość),
- wielowątkowość,
- wielobieżność,
- skalowalność,
- wywłaszczalność.
Zadanie2:
Wykorzystując serwis internetowy Wikipedii odszukaj informacje na temat powyższych cech jądra systemu operacyjnego.

Model funkcjonowania jądra monolitycznego.
W systemie operacyjnym Windows XP jądro systemu zapisane jest w pliku c:\windows\system32\ntoskrnl.exe.