Microkernel, L4, HURD

1. Opis różnych kerneli
2. Systemy operacyjne oparte na microkernelu
3. Historia Debiana
4. L4
5. Coś o systemie
6. Komu Hurd

Kernel? Z czym to się je?


Jądro monolityczne – to rodzaj jądra systemu operacyjnego, w którym większa część funkcji jądra zaimplementowana jest w pojedynczym obrazie pamięci, który ładowany jest na stałe do pamięci komputera przez bootloader. Zdarza się jednak, że do jądra monolitycznego (zwanego wtedy modularnym) dopisywana jest możliwość ładowania modułów, które jednak nie realizują najbardziej podstawowych funkcji jądra.

Jądro monolityczne cechuje się wyższą wydajnością niż mikrojądro, zwłaszcza w systemach jedno-procesorowych oraz przy obciążaniu systemu tylko jednym dużym procesem.

Jądro hybrydowe jest jądrem opartym o zmodyfikowane architektury jądra monolitycznego oraz mikrojądra używanych w systemach operacyjnych. Ten rodzaj jądra budzi kontrowersje w porównaniu do podobnego jądra monolitycznego, pojęcie to, przez niektórych specjalistów zostało odebrane jako marketing.

Exokernel jest typem jądra, który nie ‘przyczepia’ hardwaru do teoretycznych modeli. Zamiast to przydziela fizyczne zasoby hardware takie jak karty pamięci, klastry dysku, takt procesora. System działający na exokernelu może łączyć się do bibliotek systemu operacyjnego, czego używa do symulowania abstrakcyjnego obrazu systemu operacyjnego, lub może rozwijać rdzenne aplikacje w celu otrzymania lepszej wydajności.

Nanokernel oddelegowuje praktycznie wszystkie usługi – w tym nawet najbardziej podstawowe, np. przerwanie kontrolerów czy licznik – co do sterowników, jądra pamięci. Wymagania ma nawet mniejsze niż tradycyjne mikrojądra.

Microkernel to rodzaj jądra systemu operacyjnego zawierającego tylko najpotrzebniejsze elementy systemu. W informatyce mikrokernel jest jądrem, który zaopatruje mechanizmy potrzebne do utrzymania systemu operacyjnego takie jak niski poziom adresacji przestrzeni, zarządzanie procesami, komunikacja miedzy procesami. Jeśli hardware wyposażony jest w różne stopnie uprzywilejowania, wtedy microkernel jest tylko oprogramowaniem zarządzającym na najbardziej uprzywilejowanym poziomie. Obecnie system operacyjny obsługuje sterowniki, stosy protokołów, system plików, interfejs użytkownika, które są zawarte w przestrzeni użytkowania. Mikrokernel jest blisko związany z exokernelem. Mają też wiele wspólnego z Monitorem Maszyny Wirtualnej (VMM), ten ostatni nie dąży do miniaturyzacji. Microkernele są wyspecjalizowane do wspierania maszyn wirtualnych. Microkernel L4 jest często używany jako VMM.

L3
L3 jest microkernelem działającym pod komputerami Intela x86. L3 jest zaprojektowany by był chudym jądrem, a cechuje go głównie szybkość, łatwość użycia mechanizmu stronicowania i mechanizm ochrony domen systemowych. L3 jest poprzednikiem L4 oba jądra zostały zaprojektowane przez Jochna Liedtka.

L4
Po kilku próbach na L3, Liedtke przeszedł do realizacji kilku innych projektów Mach, których koncepcje także były źle urzeczywistniane. Przez uproszczenie koncepcji mikrojądra, wciąż rozwijał pierwszy L4, który był początkowo zaprojektowany z uwagą na wysoką wydajność.
w celu wyciągnięcia najwyższej wydajności cały kernel został napisany w assemblerze. Jego praca spowodowała rewolucję w projektowaniu systemów operacyjnych.

Był on krótko badany przez uniwersytety i instytuty badań, także przez IBM. Liedtke rozpoczął prace w 1996. W IBM w Centrum Badań Liedtke Thomas John Watson i jego i koledzy kontynuowali badania nad L4 i microkernelami bazującymi na L4.


Microkernel nie jedno ma imię.


W podejściu do projektowania systemu operacyjnego opartego na microkernelu podkreślany jest podział na mniejsze moduły, co lepiej spełnia podstawowe funkcje jądra systemu i daje większe możliwości konfiguracyjne daje większą elastyczność systemu.

W rzeczywistości wydajność microkernela nie często jest wysoka, za to realizacja projektu jest skomplikowana i do dzisiaj większość systemów operacyjnych jest oparta ja jądrze monolitowym.

WindowsNtKernel, Minix, BeOS, QNX, GNU/Hurd, XNU, Mach bazują na micorkernelu i są to bardzo szybkie i dość niezawodne systemy. W zasadzie XNU nie bazuje na microkernelu, tylko na microkernelu z elementami jądra BSD i częściami specyficznymi dla Darwin, wszystko działa w przestrzeni kernela.

WindowsNtKernel nie jest także microkernelem, chociaż został oznaczony jako microkernel, gdy były one popularne… Dla przykładu w NT warstwa wykonawcza jest wdrożona nad warstwą obsługującą hardware. W prawdzie microkernel sam jest warstwą jadra, teraz odkąd GUI zostało przeniesione do przestrzeni jądra NT jest mniejszym systemem.

BeOS microjądro tego systemu zostało podzielone na mniejsze moduły. System nie jest już rozwijany.

QNX system, którego głównym przeznaczeniem są obliczenia w czasie rzeczywistym, polega to mniej więcej na tym, że jest “wbudowany” w sprzęt jaki obsługuje(pokłady samolotowe, statki, rakiety, kuchenki, pokłady samochodowe…), daje mu to doskonałą precyzją działań, niezawodność i możliwości konfiguracyjne zależne są od sprzętu na jakim działa.

XNU – inaczej jądro systemu Mac OS X, stworzony i rozwijany przez Apple Inc. zarezerwowany dla systemów Mac OX S oraz Darwin. Nazwa powstała z akronimu rekurencyjnego XNU is Not Unix”.

 

Historia Debiana


Projekt Debiana (nazwa utworzona od imienia fundatora OS [Ian] i jego żony [Debra]) został oficjalnie założony przez Ian Murdock’a 16 kwietnia 1993 roku. Na początku cała koncepcja dystrybucji Linuxa była nowością. Ian przeznaczył Debiana na dystrybucję która miała być ‘otwarta'(kod źródłowy), w duchu Linuxa i GNU. Tworzenie Debiana było sponsorowane przez FSU GNU przez rok (koniec 1994 – – koniec 1995).

Debian oznaczało bycie bezpiecznym i sumiennym jednocześnie, w obu kierunkach rozwijany był w podobnym tempie. Wystartowało jako mała grupa hakerów popierających ruch wolnego oprogramowania i stopniowo stawało się coraz większą, lepiej organizowaną społeczność developerów i użytkowników.

Kiedy to się zaczynało, Debian był tylko dystrybucją, która była otwarta dla każdego developera i użytkownika gotowa do ich pracy. Pozostaje najbardziej znaczącą dystrybucją Linuxa i nie jest skomercjalizowana. Jest to duży projekt z konstytucją, grupą społeczeństwa tworzącą go i zasadami, którymi kieruje się przy organizacji projektu. Debian jest także dystrybucją, która zachowuje ścisłą niezależność zapewniającą zwięzłość ze wszystkimi dodatkowymi paczkami.

HURD to zbiór serwerów uruchamianych na platformie microjądra GNU Mach. Obecnie HURD Debian jest dostępny tylko na Linuxa, ale Debian GNU/HURD staje się dostępny dla GNU/HURD jako dystrybucja dla serwerów i platform domowych. Debian GNU/HURD nie został jeszcze oficjalnie wydany i w najbliższym czasie nie będzie.

 

Początek ważna rzecz.


Richard Stallman zapoczątkował GNU w 1983 jako projekt kompletnie wolnego (od “wolności”) systemu operacyjnego. Wolność ta polegała na jawnym kodzie źródłowym, prawie użytkownika to ingerowanie w działanie programu także możliwość modyfikacji kodu źródłowego. Wspomniał, że będzie to prymitywne jądro. Podczas pierwszej konferencji GNU w lutym 1986 powiedział, że kernel będzie się nazywał TRIX, będzie rozwijany przez Instytu Technologii w Massachusetts. W grudniu 1986 FSF ujawniono “zaczęto prace potrzebne do zmiany TRIXa“, Niewiele potem, FSF “negocjujemy z Profesorem Rashid o rozwoju Mach’a“. W krótkim czasie FSF szukano więcej osób, które byłby w stanie wspomóc rozwój TRIX’a.

Następnym krokiem rozwoju było wprowadzanie nowego systemu plików:
-RMS: “częściowo zastąpimy system Berkley Unix”
Sześć miesięcy później FSF: “jeśli nie przerobimy Mach’a, użyjemy TRIXa lub BS“. Zaprezentować też wtedy gotowego kernela i system plików.

W styczniu 1990 powiedzieli “nie robimy żadnego kernela. Bezsensem jest zaczynanie teraz nowego jadra, powierzamy nadzieją w używaniu Macha.”

Nic nie zapowiada;o się do 1991, kiedy to opublikowano bardziej szczegółowy plan:

Wciąż jesteśmy zainteresowani wielowątkowością kernela działającego pod Mach. Prawnicy CMU właśnie decydują czy możemy wydać Macha jako dystrybucje. Jeśli się zdecydujemy żeby to zrobić, to prawdopodobnie zaczniemy pracować. CMU ma dostępne te same warunki co Mach – jednoklastrowy serwer oparty na Unix Emulator nazwany Poe, to jest raczej powolne i dostarcza minimalnej funkcjonalności. Moglibyśmy prawdopodobnie zacząć rozwijać Poe żeby dostarczać wszystkie funkcje. Później mamy nadzieje, żeby miał wieloprocesowy emulator procesów.

Pomysł użycia L4 jako microkernela dla Hurd’a został podany przez Okuji Yoshinori w społeczności Hurd, którego celem było stworzenie L4-Hurd. Obecnie rozwój L4-Hurd zatrzymał się, jednak Neal Walfield przeniósł prace nad nowo zaprojektowanego kernela nazwanego viengoos.
Rok później było mnóstwo dyskusji nad L4-Hurd na listach mailowych, które do dzisiaj są miejscami gdzie dyskutuje się o Hurdzie.”

Rozwój L4-Hurd zakończył się gdy Hurd był zawarty w repozytorium HURD CVS. L4 był microkernelem drugiej generacji, uznano by zawierał on paczki szybszego kernela, szczególnie że były to czasy krytycznych paczek IPC. Także L4 został przygotowany dla kilku architektur. Starano się by Hurd wspierał jak najwięcej platform, niż istniejące systemy.“.
Wzór chudego L4 był nadal aktualny, gdyby nie rosnąca liczba sterowników.

Projekt GNU został zapoczątkowany w 1984 roku w celu stworzenia kompletnego, podobnego do Unix-a systemu operacyjnego, będącego wolnym oprogramowaniem: systemu GNU. Nazwa GNU to rekurencyjny akronim zdania „GNU’s Not Unix” – „GNU to Nie Unix”. Obecnie szeroko wykorzystywane są różne odmiany systemu operacyjnego GNU używające jądra Linuksa. Mimo że o systemach tych często mówi się „Linux”, bardziej precyzyjnie nazywane są systemami GNU/Linux.

Słowo „free” w określeniu „free software” odnosi się do wolności, nie ceny. Można zapłacić za oprogramowanie GNU lub nie. Tak czy inaczej, oprogramowanie to wiąże się z trzema szczególnymi aspektami wolności. Pierwszy polega na tym, że mamy swobodę kopiowania, możemy je rozdawać przyjaciołom i współpracownikom. Drugi polega na tym, że mamy swobodę zmieniania programu według własnych upodobań dzięki pełnemu dostępowi do kodu źródłowego. Trzeci zaś to swoboda dystrybucji ulepszonych wersji, dzięki czemu pomaga się tworzyć wspólnotę. (Jeśli dystrybuuje się oprogramowanie GNU, można pobierać opłaty za akt fizycznego przekazania; można też je rozdawać za darmo.)

Jakie są ograniczenia wolnego oprogramowania? Nie ma żadnych ograniczeń, oprócz tych, które tworzy prawo, np. system patentowy, który całkowicie blokuje rozwój wolnego oprogramowania. Ostatecznym cel zostanie osiągnięty wtedy, kiedy wolne oprogramowanie będzie spełniało wszystkie zadania, o których pomyśli użytkownik — w ten sposób oprogramowanie prawnie zastrzeżone stanie się przestarzałe.

Oczywiście zgodnie z głoszoną ideą GNU kod źródłowy programu, czy całego systemu operacyjnego jest jawny.
Do GNU/HURD źródło znajdziemy pod tym linkiem.

 

Coś o systemie


Jądro systemu operacyjnego stanowi ramy dla programów do udostępniania zasobów sprzętowych komputera bezpiecznie i wydajnie. Takie ramy zawierają mechanizmy dla programów by komunikowały się bezpiecznie, nawet jeśli ze sobą kolidują.

GNU/Hurd przełamali zasady pracy tradycyjnego jądra, implementowanego w odrębnych programach. Hurd formalnie definiuje komunikacje protokołów, którymi porozumiewa sią z serwerami, więc jest możliwe dla innych serwerów zawarcie porozumienia tymi samymi stosami protokołów, dla przykładu: NFS i FPT ą w tej samej warstwie stosu TCP/IP. NFS, FTP i TCP/IP są oddzielone przestrzenią programów użytkownika.

Biblioteka GNU C (glibc) przewiduje środowisko POSIX dla Hurd’a przez tłumaczenia standardowych wywołań systemowych z odpowiednika HURD.

HURD zawiera POSIX standard dla Portable Operating System Interface (przenośny interfejs systemu operacyjnego gwarantujący powłokę systemu, interfejs programistyczny interfejsy użytkownika). Słyszeliśmy wiele o terminie POSIX jako o normach ustanawianych przez IEEE. Systemy Unixo-podobne mają być z tym zgodne lub częściowo zgodne. GNU/Hurd jest zgodny z wszystkimi systemami Unixo-podobnymi. Dlatego przeportowane aplikacje są dostępne pod GNU/Hurd. Jednak proszę pamiętać “GNU is not Unix”, GNU/Hurd jest raczej zgodny z POSIX, jednak wciąż rosną adresacje Hurda do grupy systemów Unixo-podobnych.


Komu Hurd?

Na początek notka dla młodszych użytkowników: jeśli nie uważasz się za znawcę komputerowego, definitywnie nie będziesz chciał używać Hurda. Nie ma jeszcze oficjalnej wersji Hurda, więc system wciąż nie jest stabilny. Jeśli uruchomisz Hurda – napotkasz wiele błędów. Dla ludzi, którzy używają komputerów do surfowania w sieci, przekazywania e-maili, pisania itp. i chcą po prostu maszyny do pracy, błędy Hurda będą bardzo denerwujące.

Dla takich ludzi, lepszy będzie system w wersji stabilnej. Niestety, obecnie system GNU w stabilnym stanie z Linuxem zastępują Hurda jako jądro, więc dla zaawansowanych użytkowników jest możliwe używanie potężnego, stabilnego i darmowego Unixopodobnego systemu. Debian GNU/Linux wysokiej jakości dystrybucja jest dostępna, sumując: wiele spółek handlowych sprzedają pakowane dystrybucja GNU/Linux z wydrukowaną ich dokumentacją o różnym stopniu szczegółowości ich opisu przystosowane dla wielu użytkowników. Należy pamiętać, że GNU/Hurd nie jest systemem do surfowania, wymiany e-maili, pisania tekstów i innych podobnych zadań. To jest system, który będzie używany do tych zadań w przyszłości.

Jeśli uważasz się za geeka ale nie programistę, możesz wciąż rozważać używanie GNU/Hurd. Zadania dla nie-programistów obejmują prowadzenie do GNU/Hurd systemów i testowanie ich do pojawienie się błędu, pisanie dokumentacji także tłumaczenie istniejących dokumentacji do innych języków. Obecnie znaczna większość dokumentacji jest dostępna tylko po angielsku i francusku.

Każdy kto może być zainteresowany Hurdem: student badający system, programista pomagający rozwijać serwery Hurda, inni użytkownicy szukający błędów czy piszący dokumentację, będąc zainteresowanym jak GNU/Hurd jest podobny i czym różni się od innych systemów z rodziny Unix.

Dla wszystkich zainteresowanych i wytrwałych: Hurd jest nowoczesnym systemem Unixopodobnym, jak Linux i BSD. GNU/Hurd używa bibliotek GNU C, które są rozwijane blisko standardów jakich jak ANSI/ISO, BSD, POSIX, SU, SVID i X/Open. W ten sposób większość programów dostępne są dla GNU/Linux, a paczki BSD mogą zostać przeportowane by działały podn GNU/Hurd.

Korzyści płynące z wszystkich tych systemów – GNU/Hurd, GNU/Linux i BSD: nie są podobne do wielu popularnych systemów operacyjnych np. darmowe oprogramowanie.

Każdy może używać i dystrybuować te systemy pod prawem obowiązującym w GNU GPL w przypadku GNU/Hurd i GNU/Linux i BSD w przypadku systemów *BSD. W fakcie, GNU system jest całkowicie Unixopodobny, system jest na licencji GNU GPL.

Chociaż jest podobny do innych darmowych Unixopodobnych projektów, Hurd ma zadatki na najlepszy tego typu system. W odróżnieniu od innych projektów, Hurd ma zorientowaną obiektowo strukturę, która pozwala ewoluować bez kompromisu w projekcie. Taka struktura będzie pomagała

Hurdowi podlegać głównym zmianom konstrukcyjnym i modyfikacjom bez ponownego przepisania całego kodu. Taka elastyczność czyni Hurda atrakcyjna platformą do nauki jak stać się hackerem czy jak zawierać nowe pomysły w technologii, jak każda część systemy jest zaprojektowana do modyfikacji i rozbudowy. Dla przykładu: system plików MS-DOS FAT nie był wspierany przez GNU/Hurd dopóki deweloper napisał translator, który pozwalał na dostęp do takiej partycji. W standardzie systemy Unixopodobne mają środowisko programistyczne, jak w przyszłości może być ono wbudowane w jądro. W GNU/Hurd jest to zrobione w inny sposób i dzięki temu rekompilowanie jądra nie jest konieczne, odtąd gdy system plików jest zawarty jako program w przestrzeni użytkownika.

Skalowalność została tradycyjnie zrobiona w bardzo odmienny sposób by osiągnąć miano systemu rodziny Unix. Wiele aplikacji wymaga wsparcia dla przetwarzania symetrycznego (SMP). Implementacja Hurda jest nastawiona na wieloprocesorowość, więc działa na komputerach jedno i wielu rdzeniowych. Interfejs Hurda został zaprojektowany by zezwalał na przezroczystość warstw, jednak ten moduł nie został jeszcze zaimplementowany (2009).

Oczywiście Hurd ma obecnie ograniczenia. Wiele z nich jest spowodowane przez jądro systemu – GNU Mach. Dla przykładu choć Hurd ma zadatki na bycie świetną platformą SMP, nie jest to obecnie GNU możliwe, od kiedy GNU Mach nie jest wspierany w kierunku SMP. Hurd ma wsparcie mniejsze niż inne Linuxy dla hardwaru, ponieważ GNU Mach używa sterowników hardwaru zawartych w Linux kernel wersjii 2.0. Ostatecznie, GNU Mach jest bardzo wolnym jądrem i przyczynia się do ogólnego spowolnienia systemów GNU/Hurd.

Mach jest znany jako microkernel pierwszej generacji, mnóstwo pracy zostało włożone do ulepszenia go do drugiej generacji, mikrokernel jest obecnie wciąż rozwijany. Długoterminowym zadaniem jest przeportowanie Hurda do L4, bardzo szybkiego jądra drugiej generacji. W krótkim terminie deweloperzy Hurda planują przenieść go do OSKit Mach, ulepszona wersja Macha będąca rozwijana na Uniwersytecie Utah.

Hurd jest wciąż rozwijany, lecz nie pojawiła się jeszcze stabilna wersja. To znaczy, że źródło Hurda jest o wiele mniej dojrzałe niż te w Linux czy BSD. Są bugi w systemie, które wciąż są nieznalezione czy nie naprawione.. Także, wiele cech jakich jest kilent DHCP, wsparcie dla kilkunastu systemów plików jest wciąż rozwijane.

Braki w Hurdzie są bezustannie poszukiwane, dla przykładu: ostatnio znaleziony został znaleziony brak wątku POSIX. To znaczy, że kilkanaście głównych aplikacji, włączając GNOME, KDE i Mozille nie mogły działać pod GNU/Hurd. Teraz Hurd ma wstępnie zaimplementowany ten wątek, dzięki czemu możemy wkrótce zobaczyć te aplikacje działające na systemach GNU/Hurd.

Hurd jest bardzo nowoczesny. Jest nowocześniejszy niż Linux lub *BSD, ponieważ używa microkernela zamiast jądra monolitycznego. Jest także nowocześniejszy niż Darwin Appl’a czy NT Microsoftu, od kiedy ma wielostanowiskowy projekt, w przeciwieństwie do jednostanowiskowych Darwina czy NT. To czyni Hurda idealną platformą dla studentów zafascynowanych systemami operacyjnymi, od kiedy wygląd bliżej przypomina rekomendacje obecnej teorii systemów operacyjnych.

 

GNU/Hurd jest także wyśmienitym systemem na programistów. Podczas gdy Linux i BSD są stabilne, jest mnóstwo pracy do wykonania by Hurd stał się stabilnym systemem.

Przykład:

GNU/Hurd oferuje możliwość stworzenia ważnych zasług dla systemu ponieważ jest w stosunkowo wczesnym stadium rozwoju.

W ostatnim czasie udało się uruchomić GNOME na systemie GNU HURD, co jest dużym osiągnięciem jak na ten system.

[Total: 0    Average: 0/5]