Jądro systemu operacyjnego: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Michal134 (dyskusja | edycje)
m Wycofano edycje użytkownika Michal134 (dyskusja). Autor przywróconej wersji to Masti.
Linia 1:
{{Dopracować|źródła=2012-08}}
{{wikisłownik|jądro}}
'''Jądro systemu operacyjnego''' (ang. ''kernel'') – podstawowa część [[system operacyjny|systemu operacyjnego]], która jest odpowiedzialna za wszystkie jego zadania.
 
== Budowa jądra ==
{{fakt|data=2012-10|Wyróżnia się kilka podstawowych metod konstrukcji jąder}}:
[[Plik:Kernel-pl.svg|thumb|right|300px|Model funkcjonowania jądra monolitycznego.]]
* ''[[jądro monolityczne]]'' – często stosowane w systemach typu [[Unix]]. Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym [[oprogramowanie|programem]] działającym w [[tryb jądra|trybie jądra]]. Przykładami takiego jądra mogą być: [[Linux]], [[OpenBSD]], [[FreeBSD]], chociaż większość posiada umiejętność dołączania i odłączania modułów (najczęściej zawierających kod [[sterownik urządzenia|sterownika urządzenia]] lub obsługi potrzebnego w danej chwili [[system plików|systemu plików]]). Zaletą tej techniki jest prostota, stabilność{{fakt|data=2010-03}}, łatwość komunikacji pomiędzy różnymi członami jądra (jedna [[przestrzeń adresowa]]). Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu programu oraz w znajdywaniu błędów{{fakt|data=2010-03}}.
[[Plik:Kernel-micro-pl.svg|thumb|right|300px|Model komunikacji mikrojądra z aplikacjami.]]
* ''[[mikrojądro]]'' – w tej technice z monolitycznego jądra zostaje tylko jego podstawowa część, a części odpowiedzialne za bardziej wyrafinowane funkcje są wydzielone do funkcjonalnych bloków albo realizowane jako zwykłe [[proces (informatyka)|procesy]] w [[tryb użytkownika|trybie użytkownika]].
* ''[[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. Przykładem systemu korzystającego z tego typu jądra jest system [[XOK]], zbudowany w [[Massachusetts Institute of Technology|MIT]] Laboratory for Computer Science, pracujący na komputerach PC. Wyposażony on został w bibliotekę [[ExOS]], która implementuje system [[Unix|UNIX]] i umożliwia uruchamianie większości aplikacji tego systemu.
* ''[[cachekernel]]'' – w tej technice jądro systemu buforuje obiekty systemowe takie jak wątki czy [[przestrzeń adresowa|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.
[[Plik:Kernel-hybrid-pl.svg|thumb|right|300px|Model komunikacji jądra hybrydowego z aplikacjami.]]
* ''[[jądro hybrydowe]]'' – kompromis między architekturą jądra monolitycznego i mikrojądra. W krytycznych usługach - np. [[stos sieci]] - 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. Klasyfikacja ta budzi kontrowersje niektórych programistów<ref>[http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11] Torvalds, L. (Maj 2006). "Hybrid kernel, not NT".</ref>.
 
== Cechy jądra ==
Z budowy jądra wynikają jego cechy, takie jak: