blog.michalt.pl

Jądra systemów operacyjnych

18.06.2019 22:17 - Tech

Mikrojądro, jądro monolityczne, hybrydowe… O co chodzi? Dziś króciutka kontynuacja tematyki systemów operacyjnych. Tym razem chciałbym przyjrzeć się nieco ich głównemu komponentowi - jądru. W tym wpisie z pewnością nie wyczerpię tematu. Z pewnością będę do niego jeszcze wielokrotnie wracał w przyszłości. Myślę, że ta notka będzie dobrym wstępem do dalszych artykułów poświęconych zagadnieniu systemów operacyjnych.


Mikrojądro

W tym wypadku mamy do czynienia z jądrem, które odpowiedzialne jest jedynie za najbardziej elementarne zadania, np. zarządzanie wątkami, zarządzanie pamięcią, obsługa procesów, komunikacja międzyprocesowa, obsługa przerwań i wyjątków. Wszelkie inne zagadnienia, takie jak np. obsługa sprzętu lub plików, realizowane są w ramach zewnętrznych procesów działających w przestrzeni użytkownika i są traktowane na równi z innymi aplikacjami działającymi w tym trybie. Atutem tego typu jądra jest niezawodność. Jeśli jedna z usług ulegnie awarii, nie ulegnie jej całe jądro. Minusem natomiast jest narzut wydajnościowy wynikający z komunikacji pomiędzy usługami. Przykładowym systemem opartym na mikrojądrze jest niedawno opisywany na łamach bloga HelenOS.


Jądro monolityczne

Tu mamy do czynienia z rozwiązaniem, w którym większość podstawowych usług systemu operacyjnego, np. obsługa sprzętu, sieci, plików itp., realizowana jest w ramach jądra systemu. Na tym jednak nie koniec. Często okazuje się, że jądro wraz z jego usługami działa w obrębie jednego procesu. Mimo monolityczności, możemy zetknąć się tu również z modularnością. Moduły mogą być ładowane do jądra systemu i działać w jego ramach. Przykładem jądra monolitycznego z zastosowaniem modułów jest jądro Linux. W tym rozwiązaniu mamy w teorii do czynienia z większą wydajnością, jednak jeśli dojdzie do awarii któregoś z modułów lub usług, np. sterownika, awarii ulega całe jądro.


Jądro hybrydowe

Jak można się domyślić, mamy tu miks dwóch poprzednich rozwiązań. Część usług jest elementem jądra systemu, np. stos sieciowy, i działa w ramach jego procesu, a część nie, np. część sterowników. Rozwiązanie to wydaje mi się nieco rozmyte. Przykładem systemu działającego w oparciu o jądro hybrydowe jest Windows.