Jsem mozna fakt divnej, ale proc dalsi operacni systemy? :)
Nebylo by lepsi, kdyby se autor (ktery je zjevne dobrej programator) podilel na vyvoji Linuxu? Chapu, ze by tim nemohl dosahnout vseho, co chce (tj. treba vystrilet textmode, coz me osobne pripadne dost hodne crazy), nicmene dost velke procento zmen by IMHO prosadil. Pokud maji smysl.
Takhle je zjevne dobry produkt nechci rict neperspektivni (co vsechno se tvrdilo o Linuxu v jeho zacatcich, treba jenom kvuli monolitickemu jadru :), ale... Jedna vec je treba vyjit z Linuxu a druha vec potom v naznacenem smeru pokracovat. Az vyjde novejsi kernel Linuxu, tak se bude zurive portovat? Nebo se bude zurive vyvijet kod paralelne?
Kdyz jsou nektere aplikace horko tezko prenosne mezi distribucemi, jak to asi bude tady?
Dalo by se pokracovat. Nechci to zatratit, jenom by mel zajimal pomer snaha/vysledek.
To je jednoduchý - plně autora AtheOSu chápu. Proč by měl Linux převálcovat všechno ostatní ? Při vývoji Linuxu byla učiněna některá nešťastná rozhodnutí, makrokernelový systém pro běžné desktopové využití by například mohl mít grafiku v jádře.
Takový klon jádra Linuxu by byl zároveň X serverem, grafické aplikace by na něm běžely rychleji, ale byl by méně stabilní. Jestli AtheOS míří tam, to nevím, očividně zatím nepřišel z vlastná náhradou za Xlib, navíc větší rychlost Apache naznačuje, že asi jde i o jiná zlepšení než jen o akceleraci grafiky.
Jinou možností jsou mikrokernelové a bezkernelové systémy. Ano, operační systémy opravdu nemusí mít kernel - sám jsem se podíle na portování mého browseru Arachne do jednoho takového bezkernelového systému, který vivinula jitá francouzská firma. Bezkerelové systémy jsou rychlejší variantou mikrokernelových: zatímco mikrokernelové systémy jsou pomalé, protože všechny objekty systému si mezi sebou musí přes mikrojádro posílat zprávy, bezkernelové (komponentové) systémy neuznávávají žádné API, ale všechny komponenty (aplikace) jsou navzájem dynamicky slinkovány, asi jako
Linuxové aplikace jsou dynamicky slinkované se sdílenými knihovnami v /lib a /usr/lib. Kernel je v případě bezkernelových systémů pouze jednou z mnoha sdílených knihoven, aplikace jsou taky knihovnami, které exportují funkci main, kterou je možné zavolat z nějakého ekvivalentu shellu. Při zavedení systému nějaký zavaděč
prostě dle určitého seznamu navzájem slinkuje počáteční
množinu komponent. Podmínkou psaní komponent pro takový systém je samozřejmě reentrantnost (thread safety) každé komponenty, zejména těch "kernelových". Nicméně jakmile systém jednou běží, můžeme za chodu měnit všechno - filesystémový komponent, apod. Důležitější než filsystém je v tomhle případě aktuální hierarchický strom komponent zavedených do paměti - "kořenovým adresářem" je v tomhle případě pointer na "začátek" operačního systému v paměti, což je také jediný údaj, který startující komponent dostane při startu; není to adresa,
která by se volala jako vstupní bod jádra systému, ale adresa, na které začíná mapa všech dostupných komponent ve formátu natvrdo zakompilovaném v kažém komponentu.
Proto je systém "bezkernelový" - komponenty volají samy sebe navzájem, neposílají si žádné zprávy, pouze každá komponenta musí znát základní pravidla, podle který je slinkována se všemi ostatními komponenty. Kompatibilita s DOSem na úrovni zdrojového kódu je 100% ní, protože DOS je jendotaskový; horší to je s portováním Linuxových programů, protože tento systém nemá oddělené tasky, pouze thready. Dvě běžmé "aplikace" ale můžete "spustit najednou", pokud je pojmenujete každou jinak a všechna paměť se alokuje dvakrát; pro skutečný multithread ale musíte splnit řadu podmínek, hlavně se vzdát používání globálnách proměnných.
Opakuji, že to není fantazije, takový systém jsem viděl v akci. Bohužel byl proprietární, ne open source.
To, že o něm píšu, je tak trochu porušení Non Disclosure
agreement, kterou jsem tam podepsal ;-)
Opravdu nevím, proč by unixová makrokernelový přístup
musel nutně přežít věčně. Zajímavou otázkou je kompatibilita: jednou z chyb Linuxu bylo, že nabídl pouze Unixové API, kdyby jako rozšíření volitelně nabídl i API MS-DOSu, alespoň na úrovni knihoven umožňujících
jednoduchý překlad aplikací vyvinutých pro Borland C, Watcom, nebo třeba DOS4GW akcelerátor, tak by na začátku
cca okolo roku 1995-1996, kdy byl odpor uživatelů DOSu
proti Windows 95 nejsilnější, portovalo do Linuxu svoje existující aplikace bez velkého úsilí řada firem. Myslím, že do budoucna se každý nový free či open source projekt pokusí být zpětně kompatibilní se všemi aplikacemi pro Linux, samozřejmě s výjímkou kernelu. Nějaký OS s lepším kernelem, ovšem binárně kompatibilní s kernelovými moduly pro Linux, by měl automaticky podporu pro spoustu hardwaru podporovaného Linuxem...
Bezkernelovy system je podla mna nezmysel. Dolezite pre pochopenie mojho tvrdenia je uvedomit si, co je ulohou kernelu - je to riadenie pristupu k zdrojom (CPU, pamat, disky, IO zariadenia, ...) a riadenie samotnych procesov. Je to "nadproces", ktory dohliada na ostatne procesy. Samozrejme sa to tyka pocitacov Von Neumanovskeho typu, nie napr. neuronovych sieti...
Z Vasho popisu som pochopil, ze ten "bezkernelovy" system, ktory popisujete obsahuje nejaky "zavadzac", multitasking procesov a pridelovanie pamati. Akym sposobom sa proces linkuje alebo ako vola ostatne knihovny je nepodstatne. Mozno sa moze zdat, ze to je "bezkernelovy" system, ale to je naozaj len zdanie.
Alfa omegou pri tvorbe operacneho systemu je, ako vyriesit zdielanie zdrojov efektivne. V tom je cely problem, a existuje vela ciest, ako to riesit.
Samozrejme je mozne, ze zdielanie zdrojov takmer vylucime a preferujeme vyhradny (exclusive) pristup k zdrojom. Tu sa ale stratilo zakladne hladisko efektivity vyuzitia zdrojov a vlastne sa nimi plytva.
Mam ten dojem, ze na tema makrokernel vs zbytek sveta se napsalo dost a (pokud se pletu, opravte me) jeste jsem nevidel funkcni a pouzivany mikrokernel OS (natoz bezkernel OS).
Ohledne kompatibility: proste se Linux vydal jistym smerem. Zajimalo by me, nakolik by vyvoj zbrzdila snaha o kompatibilitu s DOSem, pripadne necim podobnym. (tomuhle nerozumim, takze by me to skutecne pouze zajimalo) Pokud se nepletu, jedna z krasnych veci treba na BeOSu je jeho "nesnaha" o zpetnou kompatibilitu. Kam dotahla zpetna kompatibilita Windows myslim vsichni vidime.
Ohledne grafiky v jadre: Jestli preferujete rychlost pred stabilitou...
Pristi Open Source systemy si kompatibilitu s Linuxem muzou dovolit, protoze POSIX. Ovsem to zdaleka neplati o vztahu DOS-Linux.