W ostatnim artykule wyjaśniliśmy, czym jest jądro systemu Linux, a teraz szczegółowo omówimy zadania funkcjonalne, które wykonuje. Monolityczne jądro systemu operacyjnego Linux wykonuje najszerszy zakres zadań. Przetwarzanie przychodzących wywołań systemowych odbywa się na najwyższym poziomie. Wywołania te stanowią interfejs między jądrem a aplikacjami użytkownika. Sygnały sprzętowe i przerwania są obsługiwane na niższym poziomie.
Zadania jądra to jednak nie tylko obsługa przerwań. Zawiera ono również programy sterujące urządzeniami. Sterowniki są potrzebne do przetwarzania sygnałów pochodzących z urządzeń. Przeznaczono na nie większą część jądra. Niektóre z nich mają postać plików binarnych. Wersja jądra bez zamkniętych sterowników to Linux-libre, w praktyce nie jest ona tak łatwa w użyciu, ponieważ nie zawsze jest możliwe zbudowanie komputera opartego na komponentach tylko z otwartymi sterownikami.
Inne zadania funkcjonalne jądra to praca z abstrakcjami. Wirtualne wątki są generowane przez wirtualny wątek, menedżer pamięci przydziela i izoluje część pamięci RAM specjalnie dla procesu, wirtualny system plików tworzy pojedynczą przestrzeń do przechowywania plików, gniazda są tworzone przez moduł sieciowy. W ten sposób tworzone są warunki do zapewnienia wysokiego poziomu bezpieczeństwa. System interakcji międzyprocesowych zapewnia brak konfliktów podczas uzyskiwania dostępu do tych samych zasobów komputera, a także zapewnia wymianę danych między procesami.
Od strony oprogramowania użytkownika wygląda to jak fizyczny sprzęt z tą różnicą, że procesor i pamięć RAM nie komunikują się bezpośrednio, ale poprzez wywołania systemowe. Katalog /dev
zawiera symboliczne i blokowe odniesienia do urządzeń peryferyjnych. Charakterystyczną cechą odwołań blokowych jest to, że działają one tylko z blokami o określonym rozmiarze.
Pomimo kontroli jądra nad wszystkimi procesami, ono samo nic nie robi, potrzebuje oprogramowania użytkownika i procesów wykonywanych przez to oprogramowanie. Wśród podstawowego oprogramowania znajdują się narzędzia GNU: trudno wyobrazić sobie jakąkolwiek dystrybucję Linuksa bez nich. Jednym z przykładów jest powłoka Bash
, która umożliwia wprowadzanie poleceń w konsoli.