Hlavní navigace

Vyšel HelenOS 0.4.1

4. 8. 2009

Sdílet

V noci vyšla verze 0.4.1 operačního systému HelenOS. Od předešlých verzí se liší zejména vylepšenou podporou architektury ARM, změnami na poli souborových systémů a ovladačů blokových zařízení a také zdokonaleným uživatelským rozhraním. Podrobnější popis změn lze nalézt v oficiálních poznámkách k vydání.

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?
  • Aktualita je stará, nové názory již nelze přidávat.
  • 4. 8. 2009 20:12

    Jakub

    BLEK. ma s HelenOSem spolecneho toliko to, ze mi oponoval diplomku (port HelenOSu na sparc64). Hezky jsme si pri te prilezitosti popovidali na tema budoucnost HelenOSu.

    Opravdu by me zajimalo, proc je podle Vas HelenOS hovadinka. Zrejme jste dospel k nazoru, ze pokud clovek neni BLEK., tak nemuze navrhnout a naimplementovat radny operacni system. Jak jste ale k takovemu zaveru dospel mi zustava zahadou.

  • 4. 8. 2009 22:20

    Biktop (neregistrovaný)

    Pro mě je zase záhadou, jak jste dospěl k tomu hypotetickému logickému řetězci, jenž mi připisujete.

    HelenOS jsem nazval „hovadinkou“ (záměrně jsem neřekl „hovadina“), protože dle mého mínění je zbytečným. Má se jednat o didaktickou pomůcku? Nebo o experimentální OS? Nebo se na něm testují nějaké nové přístupy okolo systémových technologií? Jako výukový nástroj mi to zrovna nepřipadá (v takovém případě bych očekával mnohem větší čistotu, přímočarost a jednoduchost) a na obě zbylé možnosti zní odpověď celkem jednoznačně: NE (neobjevil jsem na něm nic, čím by kvalitativně vybočoval; kdybych měl použít analogii, bylo by to, jako by na strojní fakultě z neznámého důvodu vyvíjeli čtyřdobý motor, který má tu vlastnost, že vůbec v ničem není inovativní, ani ničím zajímavý a jako palivo používá směs, kterou si vymysleli tamtéž a nikdo jiný ji nepoužívá a nikdo vlastně neví, k čemu by se kdy mohl komu na co hodit).

    Klidně mne vyveďte z případného omylu, ale zatím to na mne působí přesně tak, jak jsem napsal.

  • 4. 8. 2009 22:46

    Jakub

    Na vsechny Vase vicemene recnicke otazky lze odpovedet kladne. Jako didaktickou pomucku HelenOS klidne pouzit muzete. Naznacujete, ze HelenOS neni pro tento ucel dostatecne cisty. Samozrejme ani HelenOS neni v zadnem smeru dokonaly, ale chtelo by to ukazat na nejakou konkretni, obzvlaste necistou cast HelenOSu, ktera se Vam nelibi, zacpat si nos a rict: „Fuj!“. Nastesti cistota a prehlednost kodu je jednim z nasich cilu a troufam si rict i prednosti. Kdyz se treba podivate na to, co si o HelenOSu mysli ohloh.net, tak uvidite, ze HelenOS je „extremely well commented“. To samo o sobe jeste nemusi nic znamenat, ale verim, ze po podrobnem prostudovani, byste k podobnemu zaveru, a po zvazeni vsech pro i proti, dospel take. Experimentalni OS? A proc ne? Zkuste mi najit nejakou publikaci o tom, jak optimalne navrhnout VFS v prostredi mikrokernelu (kterou jsem nenapsal ja :-). Zkuste najit libovolny OS (krome Solarisu, Linuxu a OpenBSD), ktery ma lepsi podporu procesoru sparc? Nebo microkernelovy OS, ktery ma dynamicke linkovani (o jednom vim, ale ten neni opensource)? Uz jste nekdy zkousel snapshotovat microkernel? Nam na toto tema vznika diplomka. Koneckoncu mnozstvi HelenOS-diplomek je jasnym argumentem pro HelenOS jako didaktickou pomucku i jako experimentalni OS.

  • 5. 8. 2009 1:17

    Biktop (neregistrovaný)

    Myslím, že v archivu diplomek, disertací a článků týmu okolo Andyho Tanenbauma by se jistě něco našlo. Resp. zcela určitě jsem na toto téma již něco od tohoto týmu četl. (a docela rád bych to i porovnal s Vaší prací, kterou se mi ovšem bohužel najít nepodařilo)

    Podpora sparc – obávám se, že tu já příliš neocením; a byl-li bych v situaci, kdy ji oceňovat mám, velmi pravděpodobně by mi příliš nepomohlo, že ji má HelenOS, ale ke spokojenosti by mi asi stačilo, že je na slušné úrovni třeba v Solarisu, Linuxu nebo OpenBSD. :-)

    Množstvím diplomek bych se právě moc neoháněl – na mnou zmíněném hypotetickém motoru by se jistě taky dalo obhájit množství diplomek, přesto to na jeho smysluplnosti nepřidá vůbec nic. :-)

    Budiž – berme to jako hračku pro studenty. Ale hra a experiment jsou přeci jen trochu rozdílné věci. ;-)

  • 5. 8. 2009 9:21

    mm (neregistrovaný)

    Kdybyste tady zbytečně nežvanil, uděláte lépe. Autor píše HelenOS, protože se chce něco naučit. To jste nepochopil? Lidí, schopných psát operační systém zase tolik není, zato plácalů-teoretiků, kteří v diskusích kritizují, jak „je to nečisté“ je celá řada. HelenOS má určitě svůj praktický význam – třeba v tom, že řadě dalších srozumitelně odkryje, jak se to dělá, jak některé věci fungují atd… Co je špatného na tom, že to někdo zkusí? Bude mít nějaký základ na kterém pak může začít experimentovat a původní návrh vylepšovat. Já jsem si také kdysi psal OS pro mikrokontroléry AVR ATMega třebaže podobné již tehdy existovaly (Od AT Mega32 výše už se v tomto směru dá dělat dost zajímavých věcí…), hrál jsem si s PID regulací a podobnými věcmi (regulace je moje původní profese, která mě dnes bohužel neživí – jsem síťař a Unix admin – přesto si s tím hraju…no a co?) atd… Žvanil jako vy by mě asi také kritizoval, proč to dělám, když je to někde dávno hotové. Jenže já se na tom naučil plno věcí a MCU AVR mně díky tomu tak nějak zalezly pod kůži. A nedá se úplně zanedbat i ten pocit, že funguje něco netriviálního, co jsem sám navrhl a odladil…Prostě to za to stojí.
    Autorovi HelenOS přeji mnoho úspěchů a ať se nenechá otrávit. Velmi dobře jeho motivaci rozumím.

    Mimochodem – jeden zajímavý web pro lidi, kteří chtějí začít s OS na intelských PC:

    http://www.os­dever.net/ (tady je spousta tutoriálů atd.)
    http://www.os­dever.net/bker­ndev/ (tady je velmi srozumitelný příklad, jak si vytvořit nějaké startovací prostředí na kterém pak začnete psát OS)

  • 5. 8. 2009 10:56

    Jakub

    Myslím, že v archivu diplomek, disertací a článků týmu okolo Andyho Tanenbauma by se jistě něco našlo. Resp. zcela určitě jsem na toto téma již něco od tohoto týmu četl. (a docela rád bych to i porovnal s Vaší prací, kterou se mi ovšem bohužel najít nepodařilo)

    Patrne mate na mysli diplomku Balazse Gerofiho (omlouvam se za to sklonovani) Design and Implementation of the MINIX Virtual File System. A na HelenOSim webu se Vam nepodarilo najit odkaz na muj odlehceny prispevek pro konferenci Europen.cz '08 s nazvem Implementation of filesystem in HelenOS operating system (clanek samotny je psan cesky).

    Problem te diplomky je, ze se ani tak nejedna o popis toho, jak co nejlepe naimplementovat VFS pro Minix/mikrokernel, ale jak naimplementovat POSIXovou vrstvu systemu souboru s VFS. Ja jsem se s tou diplomkou seznamil jeste predtim, nez jsem zacal psat HelenOS VFS a nektere veci se mi nelibily. Napr. mi prislo, ze pri prevodu cesty na nejakou vnitrni reprezentaci dela Minix prilis mnoho IPC volani (~ dvakrat vice nez by bylo potreba). To jsem napriklad zohlednil v designu HelenOS VFS, overil jsem si to v implementaci (kdyz uz jste se ptal, co ze to jako overujeme) a popsal ve vyse zminenem clanku. Ten clanek samozrejme rovnez nelze chapat jako navod na to, jak „spravne“ psat VFS pro mikrokernel.

  • 5. 8. 2009 1:19

    BLEK. (neregistrovaný)

    No, mně hlavně přijde divný ten neustálý apel na „novost“. Uvedu příklad. Programovací jazyk C. Většina konstrukcí toho jazyka jsou obšlehnuté z nějakého předchozího jazyka. Konkrétně:

    proměnné,výra­zy,pole,podmín­ky,cykly,funkce — Fortan vnořené řídící bloky — Algol struktury,řetězce znaků,pole dynamické velikosti — Cobol ukazatele — LISP, PL/I

    Čili je otázka, jakto, že tyhle jazyky, které opravdu přišly s něčím inovativním, nejsou moc používané a C, které moc inovativní není, se drží? Protože C se programátorům používá snadněji než zmíněné jazyky.

    Netvrdím, že pro HelenOS se bude programovat snadněji než pro jiné systémy. To neví nikdo. Pouze na příkladě jazyka C vyvracím tvrzení, že když něco není inovativní, tak je to zbytečné.

    Mně naopak přijde zbytečný ten vědecký přístup, kdy vědec si vybere nějakou inovativní vlastnost, vyvine „research system“, kde je tato vlastnost dobře implementována, během vývoje úplně ignoruje všechny ostatní požadavky, které lidé na danou třídu programů mají (protože je to „nothing new“), napíše o tom článek (kde vychválí svou inovativní vlastnost a mlčí o všem, co neimplementoval; recenzent si to nestáhne a tak není možnost, jak by mohl přijít na to, že je to nefunkční), „inovativní“ systém se vyhodí a nezbyde z něj nic jiného než položka na seznamu publikací.

    Příkladem této zhoubné posedlosti novostí je třeba ten Minix 3, který sice umí restartovat spadnuvší driver disku (inovativní vlastnost), ale když driver disku čeká na data z disku, tak to zablokuje celý systém (naposledy jsem něco takového pozoroval na Windows 3.1). Proč by Tanenbaum řešil překrývání I/O a jiných syscallů, když to není nic nového? Spousta lidí to řešilo před ním. Jenže pokud se „neinovativními“ vlastnostmi zabývat nebude, tak mu Minix nepoužije nikdo. A nutno dodat, že takovéhle neinovativní vlastnosti jsou pro úspěch důležitější než ty inovativní.

    Ad. ten čtyřdobý motor — můžeme si samozřejmě říct, že čtyřdobý motor vyvíjet nebudeme, protože to není nic nového, máme už vyvinutý spolehlivě fungující motor do Škody 120. A pak nezbyde než zavřít výrobu úplně, protože za nějakou dobu všichni ostatní budou vyrábět lepší auto než Škoda 120 a nikdo si ji nekoupí.

  • 5. 8. 2009 10:38

    Biktop (neregistrovaný)

    Jenže u toho motoru je problém v tom, že obvykle existuje nějaký požadavek na jeho vývoj – „potřeboval bych čtyřdobý motor, který bude aspoň o tolik a tolik lehčí, efektivnější, levnější, spolehlivější atd. do nového auta, které bychom chtěli vyrábět. Dokážete s tím nějak pohnout?“ Nebo si můžete říct – „mám skvělou myšlenku, co takhle zkusit udělat motor bez mechanické vačkové synchronizace, řízený plně počítačově“ a vyvíjet inovativní věc jen tak, „kvůli ničemu, jen s vírou, že se vám to povede a lidem se to bude hodit“. A klidně ať mu netěsní válce, to řešit umíme a pro účely případné praktické implementace taky vyřešíme. Naproti tomu si říct „budeme vymýšlet klasický motor po svém“ – no je to přesně jak píšeš – jediný důvod, který to omlouvá, je, abychom nezakrněli a zjistili, jestli to ještě vůbec svedeme.

    Ale inovace spočívá i v nalezení optimální množiny vlastností. A v tomto bylo C opravdu inovativní, úplně stejně, jako Unix – „sestavit operační systém s minimálními nároky, co nejjednodušší a tak, aby umožňoval to, to, to, protože soudobé operační systémy touto kombinací vlastností neoplývají, nebo je realizují nešikovným/náročným způsobem“. Nevím, jestli vývoj Minixu je zrovna motivován použitím v praxi, nebo spíše jako experimentální prostředí. Nicméně, přinejmenším, na něm použitelnost několik inovativních myšlenek byla úspěšně předvedena.

    Co je ale motivací HelenOS, kromě „pojďme si zkusit napsat vlastní operační systém“? Chápal bych to u kluků ze střední, ale na naší nejlepší univerzitě??? WTF? To je jako obhajovat diplomky na úlohách v praktiku.

    Ostatně celá tahle diskuse je zbytečná. Na začátku stála moje nevinná a řekl bych, že celkem pravdivá poznámka (nebo snad ne, BLEK.u?).

  • 5. 8. 2009 11:19

    Jakub

    Co je ale motivací HelenOS, kromě „pojďme si zkusit napsat vlastní operační systém“? Chápal bych to u kluků ze střední, ale na naší nejlepší univerzitě??? WTF? To je jako obhajovat diplomky na úlohách v praktiku.

    Jaksi Vam uslo, ze HelenOS sice na MFF UK vznikl a v soucasne dobe se vyuziva jako zdroj zajimavych temat pro diplomky, ale hlavni vyvojari uz davno MFF UK nestuduji (kdyz pominu doktorandske studium u nekterych) nebo dokonce nikdy nestudovali (tj. vystudovali neco jineho).

    Vy jste na stredni skole navrhl a napsal multiplatformni OS zalozeny na mikrokernelu s radou high-end vlastnosti? Tak se pochlubte, jsem na to strasne zvedavy. Z Vasich reakci mam ale pocit, ze si vubec neumite predstavit, co obnasi vymyslet a naimplementovat OS nad mikrokernelem.

  • 5. 8. 2009 13:08

    BLEK. (neregistrovaný)

    Ano, C je v tomto inovativní. Jenomže v době vzniku C nebylo možno tuto inovativnost žádným způsobem prokázat.

    Dnes „kvalitu“ C prokážeme jednoduše, můžeme si udělat statistiku, kolik procent programátorů programuje v C a kolik v jiných jazycích a z toho usoudit, že C je dobré.

    V době vzniku C ho však používalo možná tak 5 programátorů a tisíce ostatních psali ve Fortranu, Cobolu či PL/I. Takže takhle to nejde.

    Kdybychom chtěli vědecky správně dokázat, že v C programátor programuje efektivněji, tak bychom si museli studenty rozdělit na poloviny, půlku učit C, druhou půlku třeba PL/I, až se to za několik let naučí a stanou se z nich profesionálové, tak jim dát za úkol vyvinout stejný projekt a měřit, jak rychle ho vyvinou. Pak stanovit hypotézu, že C je efektivnější než PL/I, a testovat ji na určité hladině průkaznosti.

    Jenomže nikdo do takového experimentu dobrovolně nepůjde. A práce programátora je tak drahá, že ti nikdo nezaplatí, aby několik desítek programátorů psalo tentýž projekt, a pak bylo možno statisticky testovat hypotézu.

    Testovat to, že C je efektivní, je o řád dražší než samotný vývoj toho jazyka C (což dělali jen dva lidi, nebylo na to potřeba žádný statisticky významný vzorek). Takže lidi vyvíjejí C i ostantí jazyky „jen tak“ s vidinou že buď uspěje nebo zkolabuje.

    Stejně tak nelze prokázat efektivitu programování pro Unix, HelenOS nebo pro můj operační systému, co píšu. A taky to vyvíjím „jen tak“.

    Operační systém vyvíjím, ale ne HelenOS, chci, aby to něco dělalo, a tak v něm nemám desítku architektur, ale zato můj systém má dost funkcí na to, že ho vyvíjím sám na sobě a píšu z něj i tento příspěvek.

  • 4. 8. 2009 23:13

    BLEK. (neregistrovaný)

    Ahoj

    Koukal jsem na ten zbrusu nový ovladač ATA v HelenOSu a připomínky:

    – neresetuj ty disky na začátku. Resetem přijdeš o obsah cache (pokud např. bootloader něco zapsal a zapsalo se to do cache v disku a resetuješ to dřív než se ta cache zapíše fyzicky, tak se to ztratí). Reset by se měl používat jen tehdy, když ti nějaká operace timeoutuje (t.j. v disku spadnul firmware).

    – do {
    status = pio_read8(&cmd->status); } while ((status & SR_DRDY) == 0);

    Toto je blbě, pokud je BUSY bit nastaven, obsah ostatních bitů je nedefinován. Navíc se správně čeká na DRQ a nikoli na DRDY. Takže by tam mělo být „while ((status & (SR_BSY | SR_DRQ)) != SR_DRQ)“. Tento blok by se měl strčit nad ten cyklus, není třeba to testovat po každém slově, stačí jednou, zbytečně to snižuje přenosou rychlost na polovinu.

    – ata_bd_write_block – po zapsání sektoru musíš počkat na interrupt resp. (když interrupty nepoužíváš) na to, než BUSY bit bude nula.

    U nějakejch divnejch disků musíš počkat na nulový BUSY i po skončení čtení (u většiny to není třeba).

    Správně říkáš — rozhodně by to nikdo na fyzickém disku neměl používat, protože s těmito bugy opravdu riskuje ztrátu dat. Zas na druhou stranu, když se to bude používat jen v emulátoru, tak na ty bugy nepřijdeš :)

  • 5. 8. 2009 14:11

    Jiří Svoboda (neregistrovaný)

    Díky za připomínky k ATA ovladači! Problém je, že ATA specifikace (resp. ta verze, kterou jsem četl) je velmi nejasná a dost věcí v ní chybí. Tak jsem to prostě napsal podle nejlepšího svědomí a masíroval tak dlouho, až to chodilo v Qemu. O disk bych se tak nebál, protože reálný disk to ani nenadetekuje :-). Rozchodit to na reálném disku mám v plánu v nejbližší době, připomínky určitě zapracuji a jsem za ně moc vděčný. Asi si prostuduji další materiály (ovladače, implementace ATA v emulátorech), abych tomu lépe porozuměl.

Byl pro vás článek přínosný?

Autor zprávičky