Wykres porównania
Podstawa do porównania | Mikrokernel | Monolityczne jądro |
---|---|---|
Podstawowy | W usługach użytkowników jądra mikro i jądrze usługi są przechowywane w oddzielnej przestrzeni adresowej. | W jądrze monolitycznym zarówno usługi użytkownika, jak i usługi jądra są przechowywane w tej samej przestrzeni adresowej. |
Rozmiar | Mikrokernel są mniejsze. | Jądro monolityczne jest większe niż mikrojądro. |
Wykonanie | Powolne wykonanie. | Szybkie wykonanie. |
Rozsuwany | Mikrokernel można łatwo rozszerzyć. | Monolityczne jądro jest trudne do przedłużenia. |
Bezpieczeństwo | Jeśli usługa ulegnie awarii, działa ona na działanie mikrojądra. | Jeśli usługa ulegnie awarii, cały system ulega awarii w monolitycznym jądrze. |
Kod | Aby napisać mikrojądro, wymagane jest więcej kodu. | Aby napisać monolityczne jądro, potrzeba mniej kodu. |
Przykład | QNX, Symbian, L4Linux, Singularity, K42, Mac OS X, Integrity, PikeOS, HURD, Minix i Coyotos. | Linux, BSD (FreeBSD, OpenBSD, NetBSD), Microsoft Windows (95, 98, Me), Solaris, OS-9, AIX, HP-UX, DOS, OpenVMS, XTS-400 itd. |
Definicja mikrokernela
Mikrokernel będący jądrem zarządza wszystkimi zasobami systemowymi. Jednak w mikrojądrze usługi użytkownika i usługi jądra są zaimplementowane w innej przestrzeni adresowej. Usługi użytkownika są utrzymywane w przestrzeni adresowej użytkownika, a usługi jądra są przechowywane w przestrzeni adresowej jądra . Zmniejsza to rozmiar jądra i dodatkowo zmniejsza rozmiar systemu operacyjnego.
Oprócz komunikacji między aplikacją i sprzętem systemu, mikrojądro zapewnia minimalne usługi zarządzania procesami i pamięcią. Komunikacja między programem / aplikacją klienta a usługami działającymi w przestrzeni adresowej użytkownika jest ustanawiana poprzez przekazywanie komunikatów. Nigdy nie wchodzą w bezpośrednią interakcję. Zmniejsza to szybkość wykonywania mikrojądra.
W mikrojądrze usługi użytkownika są odizolowane od usług jądra, więc jeśli jakakolwiek usługa użytkownika zawiedzie, nie ma to wpływu na usługę jądra, a zatem system operacyjny pozostaje niezmieniony . Jest to jedna z zalet mikrojądra. Mikrokernel można łatwo rozszerzyć . Jeśli nowe usługi mają zostać dodane, są dodawane do przestrzeni adresowej użytkownika, a zatem przestrzeń jądra nie wymaga żadnych modyfikacji. Mikrokernel jest również łatwy do przenoszenia, bezpieczny i niezawodny.
Definicja jądra monolitycznego
Monolityczne jądro zarządza zasobami systemu między aplikacją a sprzętem systemu. Ale w przeciwieństwie do mikrojądra, usługi użytkownika i usługi jądra są zaimplementowane w tej samej przestrzeni adresowej. Zwiększa to rozmiar jądra i dodatkowo zwiększa rozmiar systemu operacyjnego.
Monolityczne jądro zapewnia planowanie procesora, zarządzanie pamięcią, zarządzanie plikami i inne funkcje systemu operacyjnego poprzez wywołania systemowe. Ponieważ zarówno usługi użytkownika, jak i usługi jądra znajdują się w tej samej przestrzeni adresowej, powstaje szybko działający system operacyjny.
Jedną z wad monolitycznego jądra jest to, że jeśli jedna usługa nie działa, cały system ulega awarii. Jeśli ma zostać dodana nowa usługa w jądrze monolitycznym, cały system operacyjny powinien zostać zmodyfikowany.
Kluczowe różnice między mikrokernelem a jądrem monolitycznym
- Podstawowym punktem, w którym rozróżnia się jądro mikrojądra i monolityczne, jest to, że mikrojądroel wdraża usługi użytkownika i usługi jądra w różnych przestrzeniach adresowych, a jądro monolityczne implementuje zarówno usługi użytkownika, jak i usługi jądra w tej samej przestrzeni adresowej .
- Rozmiar mikrojądra jest mały, ponieważ tylko usługi jądra znajdują się w przestrzeni adresowej jądra. Jednak rozmiar monolitycznego jądra jest stosunkowo większy niż mikrojądra, ponieważ zarówno usługi jądra, jak i usługi użytkownika znajdują się w tej samej przestrzeni adresowej.
- Wykonanie monolitycznego jądra jest szybsze, ponieważ komunikacja między aplikacją i sprzętem jest ustanawiana za pomocą wywołania systemowego . Z drugiej strony, wykonanie mikrojądra jest powolne, ponieważ komunikacja między aplikacją a sprzętem systemu jest ustanawiana poprzez przekazywanie komunikatów .
- Łatwo jest rozszerzyć mikrojądro, ponieważ nowa usługa ma zostać dodana w przestrzeni adresowej użytkownika, która jest odizolowana od przestrzeni jądra, więc jądro nie wymaga modyfikacji. Przeciwny jest przypadek monolitycznego jądra, jeśli nowa usługa ma zostać dodana w jądrze monolitycznym, wtedy całe jądro musi zostać zmodyfikowane.
- Mikrokernel jest bezpieczniejszy niż jądro monolityczne, jak gdyby usługa zawiodła w mikrojądrze, system operacyjny pozostaje nienaruszony. Z drugiej strony, jeśli usługa zawiedzie w monolitycznym jądrze, cały system zawiedzie.
- Monolityczne projektowanie jądra wymaga mniej kodu, co dodatkowo prowadzi do mniejszej liczby błędów. Z drugiej strony, projektowanie mikrojądra wymaga więcej kodu, który prowadzi do kolejnych błędów.
Wniosek:
Mikrokernel jest wolniejszy, ale bezpieczniejszy i bardziej niezawodny niż monolityczne jądro. Jądro monolityczne jest szybkie, ale mniej bezpieczne, ponieważ każda awaria serwisu może doprowadzić do awarii systemu.