Codezero 0.1
- Dodano: 17 czerwca 2009
- Wprowadził: kocio
- Komentarze: 41
Codezero to nowa implementacja mikrojądra z rodziny L4, przeznaczona głównie dla urządzeń wbudowanych. Licencjonowana jest na GNU GPLv3.
Ta rodzina jąder zawiera już m.in. L4Ka::Pistachio, L4/MIPS i Fiasco. Twórcy Codezero chcą jednak stworzyć coś bardziej eleganckiego i prostszego niż te istniejące już implementacje.
Codezero 0.1 składa się z mikrojądra, biblioteki przestrzeni użytkownika libL4 oraz zestawu kilku usług POSIX (to tylko przykładowy zestaw — można będzie nawet zaimplementować wiele równoległych interfejsów). W wersji 0.2 ma się pojawić wirtualizacja i izolacja w kontenerach, rozszerzenie obsługi POSIX-a oraz wywołanie L4_PLATFORM_CONTROL (zarządzanie standardowymi parametrami kości typu SoC).
W dalszej perspektywie projekt ma obsłużyć architektury ARM11MPCore, ARM v6 i x86, a także dostosować Linuksa jako wirtualne jądro na bazie mikrojądra Codezero.
Więcej informacji: http://www.osnews.com/story/21659/Codeze...1_Released
Znalazłeś literówkę? Zgłoś ją używając formularza!
Jeśli uważasz, że ten nius jest nieobiektywny, przedstawia nieprawdziwe wydarzenie, jest spamem lub nie spełnia standardów serwisu, napisz raport.
Niusy na podobny temat:
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.
41 komentarzy
Wszystkie autorskie niusy w serwisie publikowane są na licencji Creative Commons Uznanie autorstwa 2.5 Polska.


bardzo interesujaca informacja!
sam nieco wypadlem z obiegu w kwestii l4, tak wiec chetnie doczytam co sie zmienilo w przeciagu ostatniego rocku
moze to kolejna szansa dla hurda? ;P
@jellonek: Pytanie, po co ktokolwiek mialby chciec uzywac Hurda, skoro sa inne, lepsze systemy – takze oparte o mikrojadro.
to byl tylko taki zart
btw. o ktorych systemach piszesz? bo mam nadzieje ze nie o macosx
@trasz: Pytanie na pytanie, po co ktokolwiek miałby chcieć używać Linuksa, skoro były inne, lepsze systemy – także odmiany Uniksa? Odpowiedź: widocznie były takie powody, skoro Linux zyskał przez te lata istnienia na popularności i wciąż się dynamicznie rozwija
Tak samo może, ale nie musi, być w przypadku Hurda. Sięgną po niego osoby, które lubią eksperymenty techniczne i chcą się nauczyć czegoś nowego, które nie lubią ani Linuksa ani *BSD albo którym po prostu się nudzi
Powodów może być o wiele więcej.
@jellonek: OSX nie jest oparty o mikrojadro. Bazuje na Machu, ale wszystko chodzi w jednej przestrzeni adresowej.
wlasnie dlatego mialem nadzieje ze nie miales go na mysli
dobrze wiem jak wyglada wnetrze macosx
ciekaw tylko jestem – ktore systemy (procz qnx) miales na mysli?
@jellonek: Z darmowych? Chociazby MINIX3. Z komercyjnych? Cala masa systemow zagniezdzonych – QNX, VxWorks, LynxOS.
@trasz: a wiesz ile kosztują licencje na VxWorks? :]
QNX używałem jeszcze na studiach. ceny nie znam (ciekawe, czy podobnie jak VxWorks :]), ale system zrobił na mnie naprawdę dobre wrażenie…
@Przemek: Troche wiecej, niz na Montaviste.
To, ze cos dziala w jednej przestzeni adresowej nie znaczy, ze nie jest mikrojądrem. Chociazby Singularity. Tam kernel, i wszystko inne moze byc wrzucone w te sama przestrzen adresowa, mimo wszystko dalej jest to jak najbardziej micorkernel. Chyba czas przedefiniowac, czym jest microkernel.
@iniside: Singularity to insza inszosc, bo to chodzi w managed code. Cos jak w OS/400, mniej wiecej. I nie uwazam, zeby to byl mikrokernel.
Tylko, ze to jest mirkokernel. Wszystko, zgadza sie ogolna specyfika takowego, poza tym ze zrezygnowano ze sprzetowej izolacji procesorw (nie ma przelaczania kontekstu). No moze nie do konca. NAdal istnieje jako opacja, wiec jak ktos chce wprowadzic dodatkowa warstwe sprzetowa zeby izolowac proces to ma taka mozliwosc.
A tak pozatym ? jest jadro ktore wykonuje, tylko podstwowe czynnosci, sa sterowniki, ktore sa kompletnie odizolowane od jadra itd. Micokernel jak sie patrzy. To ze zbudowany na zuplenie innej zasadzie, niz tradycyjne systemy, nie jest w stanie temu zaprzeczyc ;p.
ja widze ze koligen @trasz wszedzie swoje 13 groszy musi wepchac.
A czy nie ma racji? Bo ja też uważam, że nie warto zawracać sobie głowy systemem, który tworzony jest 25 lat i jeszcze go nie ukończono, i jest powodem koszmarów pewnego biegającego boso brodatego hakera, który nie może przeboleć, że taki Torvalds dołożył do systemu GNU najważniejszą część.
Słusznie – więc po prostu nie zawracaj sobie nim głowy.
nikt nie broni Ci tak uwazac
"A czy nie ma racji?"
Nie ma racji. Standardowo dla niego.
> Nie ma racji. Standardowo dla niego.
Czasem ma rację, ale niezwykle rzadko.
Z niecierpliwością czekamy na implementację YAL4HI (Yet Another L4 Hyperimplementation). Ta implementacja w końcu zmiecie z powierzchi Ziemii niedorobione monolity – ot co!
Czy historia HURD-a i kolejnych jego mikrojąder nie jest najlepszym dowodem na to, że teoria z praktyką czasami jest nie do pogodziena, a Torvalds miał po prostu rację?
Fajna nazwa ;]
Nie zastanawiam się, czy rację miał Torvalds czy Tannenbaum. Ważne, że obaj zrobili coś sensownego.
Jeden zrobił popularną implementację modularną (bo to nie jest czyste jądro monolityczne!), a drugi na MINIX 3 pokazał, jak dobrze mieć system, który nie tylko się nie przewróci, jak mu np. sterownik sieciowy nabruździ i na koniec przestanie działać, ale jeszcze w ułamku sekundy, nie przerywając reszty swoich funkcji, podniesie sieć na nowo.
I to nie znaczy, że nie da się łączyć tych pomysłów — jest koncepcja podobnego odseparowania całej warstwy sterowników od jądra Linux, żeby uzyskać podobny efekt. W tym sensie monolity chyłkiem się wycofują i powoli modularyzują.
@kocio:
1. To, ze Linux obsluguje moduly, tak naprawde nic juz dzis nie znaczy. Chyba kazdy system "monolityczny" je obsluguje. A modularyzacja Linuksa nie jest posunieta tak daleko, jak modularyzacja Windows czy Solarisa, gdzie w modulach masz niemal wszystko.
2. Historia o sterowniku sieciowym jest urocza, ale pomija jeden, kluczowy element – w typowej maszynie zgodnej z x86 kazde urzadzenie PCI moze robic, co mu sie zywnie podoba. Wiec jesli sterownik karty sieciowej zle zaprogramuje silnik DMA sieciowki, to cala mikrokernelowatosc nic na to nie poradzi.
1. I czego to dowodzi?
2. Skąd pomysł, że mikrojądra załatwiają wszystkie problemy informatyczne?
@kocio:
Moduł w Linuksie jest integralną częścia przestrzeni jądra, modularyzacja polega tylko na tym, że nie musi być załadowany jeśli nie jest używany jego kod. Jest to ten sam monolit, tylko efektywniej wykorzystujący pamięć – nota bene – dzisiaj przydaje się to głównie w zastosoanich embedded, bo co mi z dodatkowych 200kb przestrezni adesowej jeśli mam 2-4GB?
Owszem, jest FUSE i mechanizmy do wspierania sterowników w przestrezni użytkownika, ale to tym dobitniej pokazuje, że monolity są pod tym względem po prostu bardziej elastyczne.
Wracając do kwestii "stabilności" mikrojąder, powiedz co mi z tego, że mikrojądro będzie działać stabilnie jeśli wykrzaczy się demon z systemem plików albo, jeszcze lepiej, obsługa konsoli? Będę sobie mógł tak samo gwizdnąć, jak w *BSD gdy wyskoczy mi kernel debugger i wysłać grzecznie raport deweloperom, że mają zrąbany system, a potem zapuścić po bożemu fsck (no chyba że jest coś lepszego z journalingiem – w HURD-zie, od dłuższego czasu, cała para idzie w tak wydawało by się z definicji niewielki komponent jak mikrojądro…)
Z punktu widzenia użytkowego nie widzę specjalnej różnicy w stosunku do kernel panic – tam też można sobie wysłać raport…
Po początkowych zachwytach, jeszcze 10 lat temu, patrzę na tego HURD-a z coraz większym zażenowaniem, jest to dla mnie powoli klasyczny przykład tego jak praktyka weryfikuje różne pomysły, z pozoru wyglądające sensownie, ale w dalszej perspektywie nieco utopijne. Owszem są niszowe zastosowania dla tych systemów, ale zapowiadanej rewolucji jak nie było tak wciąż nie widać na horyzoncie, czy to był Mach (tu jeszcze MacOS X coś pokazał, ale też jak przyszło co do czego to wyszło marnie w zastosowaniach serwerowych), czy L4…
> demon z systemem plików albo, jeszcze lepiej, obsługa konsoli?
Oh to proste, reszta kernela (czyt. caly system) nie leci na pysk.
Czyli jak posypie Ci sie driver do konsoli, nadal Twoj serwer www
serwuje kontent czy router/firewall przerzuca pakiety. Jesli poleci
Ci system plikow moze byc gorzej, ale nadal jest szansa, ze
polecial system plikow nie krytyczny i reszta systemu, Twoje www
na przyklad dziala, a juz na pewno przewalanie pakietow bedzie dzialac.
W obu przypadkach masz szanse zalogowac sie przez SSH i cos
z tym zrobic, albo nawet automat w kernelu moze probowac
podniesc dany serwis / driver.
@kocio:
1. Dowodzi tego, ze Linux to jak najbardziej _jest_ czyste jadro monolityczne.
2. Demonstruje ci po prostu, ze na rzeczywistym sprzecie zalety mikrokerneli wcale nie sa specjalnie zauwazalne.
@wojtekm: Jest restarter. Przynajmniej w niektorych systemach.
@jarek: Jak czesto system wywala ci sie przez blad w czyms, czego nie uzywasz? ;->
> serwuje kontent
Aż taki zadowolony jest?
wojtekm: problemem hurda bylo to, ze oparli sie o bardzo malo wydajny microkernel (mach3 – ten sam z ktorego bazy wyrosl macosx). l4 to calkiem inna klasa. podobnie jak komercyjne jadra qnx.
@jarek: Jest też coś takiego jak watchdog i nie trzeba do tego mikrokernela.
@jellonek: Tylko wciąż nie widać wyraźnego progresu, przecież na L4 nie zdecydowali się wczoraj.
> @jarek: Jest też coś takiego jak watchdog i nie trzeba do tego mikrokernela.
Tak i jesli przekreci sie monolityczny kernel, zgadnij
co sie stanie z tym watchdogiem?
No chyba, ze mowisz o sprzetowym, ale to chamskie rozwiazanie
i wprowadza niekotrolowany downtime.
wojtekm: bo na l4 nie zdecydowali sie w ogole… niby byla przymiarka, ale l4hurd umarl chyba z 2 lata temu (jak nie wiecej)
@jarek:
Jakby kernel byl jednowatkowy to bys mogl tak pisac, ale tak sie sklada, ze sa jeszcze przerwania i zwiazane z nimi niezalezne sciezki wykonania.
Prezentujesz typową ignorancje przejawiajaca sie myśleniem o kernelu monolitycznym jak o zwyklym programie "hello world" – jak sie przekreci to pewnie zrzuci jeszcze pamiec na dysk i umrze. Tymczasem kernel monolityczny różni się od mikrojadra nie tym, że się przekręca zawsze w całości, tylko tym, że ma wspólną przestrzeń adresową dla swoich wątków, co pozwala mu działać w sposób najbardziej efektywny bez ograniczeń pośrednich interfejsów i dodatkowego, większego często o rząd wielkości narzutu związanego ze zwiększoną ilością przełączeń kontekstu. Oczywiście to zwieksza ryzyko ew. "powikłań", ale nie implikuje w prosty sposób błędnego działania całego systemu w razie awarii, któregoś z podsystemów. O "Ooops-ach" słyszałeś? To właśnie takie awarie wewnątrz systemu, nie powodujące jego zwisu.
Nie bardzo mam czas się włączyć do tego wątku, ale znalazłem ten tekst a propos izolowania sterowników:
http://lwn.net/Articles/217366/
Nie żeby to dodawało argumenty z jednej albo drugiej strony sporu, po prostu wydaje mi się to bardzo sensowna idea.
@wojtekm
Prezentujesz typowa ignorancje pomijajaca fakt, ze monolit
po prostu obsluguje wszytko w kernelspace, czyli to, ze masz
niezalezne sciezki wykonania dla przerwan nie chroni Cie przed
rozwalka przestrzeni adresowej kernela przez skopany driver.
> Oczywiście to zwieksza ryzyko ew. “powikłań”, ale nie implikuje w
> prosty sposób błędnego działania całego systemu w razie awarii,
> któregoś z podsystemów.
Odkrywcze, zupelnie jak to, ze nie kazdy blad konczy sie segfault.
@kocio
Ładowanie modułów nijak ma się do monolityczności kernela.
A implementację zakończy YASD.
"W dalszej perspektywie projekt ma obsłużyć architektury ARM11MPCore, ARM v6 i x86"
a na jaką architekturę jest obecnie to jądro?
wystarczy zajrzec do systemu kontroli wersji by sie przekonac ze obecnie jedynie armv5 jest zakodowany w stopniu podstawowym.
Nie ma sensu pisać osobnego niusa, ale jeśli kogoś interesują mikrojądra na wolnych licencjach to polecam:
http://www.osnews.com/story/21685/Jari_OS_0_0_1_A…
Najlepsza opcją by byłsystem który umożliwiłby bezproblemowe kompilowanie i uruchamianie programów z linuxa , bsd , Osolarisa czy mac os
Jest taki, nazywa się wirtualizacja
. Hint: nie wystarczy móc uruchomić binarkę, trzeba jeszcze mieć często całe środowisko uruchomieniowe.