Informatyka dla gimnazjum/Jądro systemu operacyjnego

Z Wikibooks, biblioteki wolnych podręczników.

Jak już powiedzieliśmy sobie na początku, trudno jest stwierdzić jednoznacznie co należy do systemu operacyjnego, a co już nie. Jeśli już coś do niego należy, to jest to jego jądro (ang. kernel). Jądrem nazywamy kluczowy dla działania systemu zbiór funkcji. To właśnie jądro wykonuje wszystkie zadania, które ustaliliśmy wcześniej. Istnieją różne techniki pisania tego podstawowego programu - programu bardzo specyficznego z racji tego, że nie korzysta on, tak jak programy użytkownika (np.: gry), z żadnych gotowych funkcji, tylko sam je udostępnia.

Niektórzy programiści postanowili, że napiszą jeden duży program, który będzie odpowiadał za wszystkie zadania systemu operacyjnego. Tak napisane jądro nazywa się monolitycznym lub jednolitym. Taka technika jest dość łatwa, a tak napisane jądra są szybkie i stabilne. Problemem może być w tym przypadku rozwijanie projektu oraz wyszukiwanie błędów (ang. debugging - "odpluskwianie"). Ta technika jest już troszkę przestarzała.

Inną metodą jest stworzenie malutkiego jądra - mikrojądra (ang. microkernel) odpowiadającego tylko i wyłącznie za najprostsze zadania, oraz kilku programów odpowiadających za pozostałe funkcje. Ta metoda bardzo elegancko "porządkuje" kod, ale z kolei problemem staje się zapewnienie szybkiej komunikacji między owymi częściami jądra (przy układzie monolitycznym jest to proste, wręcz naturalne - tutaj już nie).

Nanojądrem nazywamy super-małe jądro, w którym wyrzucono wszystko, co nie jest niezbędne.

Mówiąc o małych, średnich i dużych kernelach zahaczamy o pojęcie skalowalności. System możemy nazwać skalowalnym, jeśli potrafi przystosować swoje wymagania do sprzętu na jakim działa. Najczęściej podawanym przykładem - pół żartem, pół serio - jest przykład ekspresu do kawy i wielkiego, kilkuprocesorowego serwera. Jeśli system zmieści się na ekspresie i jednocześnie będzie w stanie wykorzystać możliwości wielkiego serwera - to jest (wysoce) skalowalnym. Systemem skalowalnym jest np.: system QNX.

Nie każdy komputer posiada tylko jeden procesor, tak jak jest to w przypadku popularnych komputerów. Aby móc wykorzystać więcej niż jeden procesor należy odpowiednio zaprojektować system operacyjny, a w szczególności jego jądro, ponieważ to ono bezpośrednio współpracuje ze sprzętem. Istnieją dwa sposoby korzystania z maszyn wieloprocesorowych, takich jak duże serwery:

  • AMP (ang. Asymmetric Multiprocessing) - kiedy jeden procesor odpowiedzialny jest za działanie systemu, a aplikacje działają na pozostałych,
  • SMP (ang. Symmetric Multiprocessing) - tutaj celem jest wyrównanie obciążenia wszystkich procesorów - "obowiązki" są dzielone "po równo".