Ďalšie smery vývoja FreeBSD

Ako sa s časom menia požiadavky používateľov kladené na operačné systémy a na počítače celkovo, je potrebné prehodnocovať vhodnosť a odôvodnenosť algoritmov a technológií používaných tak v jadrách operačných systémov ako aj na ich rozhraniach s používateľským priestorom; FreeBSD nie je totiž zďaleka jediným operačným systémom, ktorý v súčasnosti prechádza väčšími zmenami – úspešnú cestu nastúpilo nové jadro operačného systému Linux s poradovým číslom 2.6 a veľmi zaujímavo vyzerá aj zoznam noviniek v pripravovanej verzii OpenBSD 3.5. Horlivo sa údajne pracuje aj v Redmonde, ale o tom budú používateľov informovať skôr ľudia z oblasti marketingu ako technici či nadšení používatelia. A kam smeruje – alebo môže smerovať – operačný systém FreeBSD?

FreeBSD 5

Vetva 5 operačného systému FreeBSD je novou vetvou vývoja, ktorá prináša množstvo nových čŕt a zahŕňa tiež niektoré zmeny v architektúre systému. Táto vetva zatiaľ nie je oficiálne určená na produkčné nasadenie; v porovnaní s vetvou FreeBSD 4 môže byť menej stabilná, nakoľko má menej používateľov a je teda menej otestovaná, a zatiaľ sa zdá byť v niektorých prípadoch menej výkonná. Označenie vetvy 5 operačného systému FreeBSD za stabilnú a jej odporučenie na produkčné nasadenie sa však blíži. Čo prináša?

Najdiskutovanejšou vlastnosťou novej vývojovej vetvy operačného systému FreeBSD je symetrický multiprocesoring novej generácie (SMPngSymetrical MultiProcessoring "new generation"). Jeho implementácia má za cieľ priniesť jemnejšie uzamykanie procesov v jadre operačného systému a tým zvýšiť počet programových vlákien, ktoré môžu súčasne vykonávať kód jadra, čo prinesie lepšiu škálovateľnosť FreeBSD systémov na viacprocesorových počítačoch. Vzhľadom na komplikovanosť zásahov do jadra systému, ktoré s implementáciou SMPng súvisia, napreduje vývoj len pomaly a stále sa vynárajú nové a nové súvisiace problémy. Napriek tomu, že veľký kus práce bol už urobený a vetva -CURRENT sa začína čím ďalej tým viac objavovať na produkčných systémoch, zoznamy vecí, ktoré treba na SMPng dokončiť, sú stále dlhé a FreeBSD verzie 4 sa ešte nejaký čas bude tešiť obľube.

Vetva 4 operačného systému FreeBSD je považovaná za výkonnú a stabilnú. Jej základy však vznikli v časoch, keď viacprocesorové počítače neboli bežne používané, a teda i jadro tohto operačného systému bolo stavané na beh na jednoprocesorovom počítači. Časom sa však začali viacprocesorové – najmä dvojprocesorové – systémy objavovať čoraz viac aj medzi klasickými počítačmi triedy PC, pre ktoré je operačný systém FreeBSD primárne určený, a preto bolo jadro tohto operačného systému prispôsobené tak, aby umožňovalo používateľským procesom využívať všetky procesory v systéme. Operácie jadra však boli synchronizované pomocou jediného centrálneho zámku (Big Giant LockBGL). Proces, ktorý potreboval vykonať kód jadra, uzamkol BGL, vykonal požadovanú operáciu v jadre a následne BGL odomkol. Ostatné procesy museli s vykonaním operácií v jadre počkať na odomknutie centrálneho zámku BGL; v jadre tak mohol súčasne operovať iba jeden proces.

Problém s uzamykaním jadra pomocou BGL bol na FreeBSD 4 riešený pomocou viacerých jednoduchých zámkov (angl. simple lock), ktoré umožňovali uzamknúť iba časť jadra (i keď to nerobili príliš efektívne), a teda umožňovali v kóde jadra pracovať viacerým procesom súčasne. Tento prístup však umožnil odstrániť použitie BGL len na niektorých miestach a množstvo operácií v jadre bolo stále synchronizovaných pomocou centrálneho zámku. Vo FreeBSD 5 simple lock-y nahradili tzv. mutex-y (z anglického mutual exclusion locking object). Z hľadiska blokovania procesov sú efektívnejšie ako simple lock-y (nevynucujú si čakanie procesu na uvoľnenie v nekonečnej slučke, čo simple lock-y robili).

Nakoľko je čiastočné uzamykanie jadra bežiaceho na viacprocesorovom systéme veľmi komplikované, bol vo verzii FreeBSD 5 do jadra pridaný ladiaci kód, ktorý umožňuje za cenu značného zvýšenia réžie uzamykania a odomykania mutex-ov tieto operácie kontrolovať a v prípade problémov presne identifikovať časť kódu, ktorá problémy spôsobila. Tento ladiaci kód je samozrejme možné z jadra odstrániť podmieneným prekladom, a tak odstrániť spomalenie, ktoré spôsobuje.

Prideľovanie procesorového času procesom je ďalšia z vecí, na ktorej sa horlivo pracuje. V tejto oblasti sa dosiahli dobré výsledky implementáciou ULE plánovača (angl. scheduler). Zatiaľ čo plánovač vo FreeBSD 4 je považovaný za veľmi dobrý (spravodlivý rozdeľovaním času medzi procesy vzhľadom na ich priority) a s dobrou dobou odozvy interaktívnych procesov na jednoprocesorových systémoch aj pri veľkej záťaži, jeho použitie na viacprocesorových systémoch nie je ideálnym riešením, a to najmä v prípade, že v systéme existuje veľké množstvo procesov či vlákien. Zložitosť plánovania procesov klasickým plánovačom je totiž lineárne závislá od množstva procesov, zatiaľ čo zložitosť plánovania ULE plánovačom je konštantná, nezávislá od počtu procesov.

Zatiaľ čo väčšina plánovačov (vrátane klasického plánovača FreeBSD) sa snaží nejakým spôsobom agregovať prioritu procesu, jeho nice hodnotu a mieru interaktivity (interaktivitu procesu pri prideľovaní procesorového času procesorom dokážu zohľadňovať len niektoré plánovače) a mieru aktuálneho zaťaženia systému (load average) a použiť jediný mechanizmus na určenie množstva procesorového času a moment jeho pridelenia procesu na základe tejto agregovanej hodnoty, ULE plánovač všetky tieto parametre zohľadňuje oddeleným spôsobom, čo vedie k tomu, že jeho vlastnosti sú ľahšie konfigurovateľné a kontrolovateľné, a je ich teda možné lepšie prispôsobiť špecifickým požiadavkám. ULE plánovač dokáže odhadnúť, ktorý z procesov je interaktívny, a podľa toho dokáže s prideľovaním procesorového času procesom manipulovať tak, aby čas odozvy interaktívnych procesov veľmi nevzrástol ani pri silnom zaťažení počítača inými procesmi.

ULE plánovač ďalej disponuje dvomi algoritmami vyvažovania záťaže (load balancing) medzi viacerými procesormi v systéme. Jeden z nich sa uplatňuje pri nízkom a strednom zaťažení systému, keď existuje v systéme aspoň jeden nečinný procesor, ktorý jednoducho odoberie nejaký proces zaťaženému procesoru. V prípade, že v systéme neexistuje žiadny nečinný procesor, prichádza na rad druhý algoritmus vyvažovania záťaže, ktorý je komplikovanejší, pretože zabezpečuje čo najspravodlivejšie rozdeľovanie procesorového času procesom a zároveň nerobí príliš časté prepínanie jedného procesu medzi rôznymi procesormi, pretože to vedie k značnej réžii pri presune informácií o procese medzi procesormi ako aj k presunu a premazávaniu obsahu vyrovnávacích pamätí. Táto vlastnosť sa nazýva afinita, t.j. akási "priľnavosť" procesu k procesoru. Príliš časté premiestňovanie procesov medzi procesormi by síce zdanlivo mohlo viesť k spravodlivejšiemu prideľovaniu výpočtovej kapacity procesom, ale v konečnom dôsledku by bola réžia na premiestňovanie procesov medzi procesormi väčšia, ako čas strávený "užitočnými" výpočtami v samotných používateľských procesoch a doba potrebná na ich vykonanie by bola niekoľkonásobne väčšia, ako keby bežali sekvenčne.

Okrem vylepšení týkajúcich sa behu operačného systému FreeBSD na viacprocesorových počítačoch, prináša vetva 5 aj ďalšie nie tak výrazné zmeny. Kompilátor GCC, ktorý je základnou súčasťou FreeBSD sa bude používať vo verziách 3.3.x, na rozdiel od vetvy 4, kde sa doteraz používala jeho verzia 2.95.x. Okrem architektúr i386, pc98 a Alpha budú podporované aj architektúry sparc64, ia64 a amd64. Pre používateľov operačného systému FreeBSD na desktopoch a notebookoch môže byť zaujímavá podpora technológie Bluetooth, zatiaľ čo administrátori severov privítajú možnosť kryptovania celých diskových partícií, nový formát súborového systému UFS2 či možnosť behu fsck(8) na pozadí. FreeBSD 5 používa devfs, čo je dynamická náhrada statického vytvárania uzlov zariadení v adresári /dev/.

Prechod na verziu FreeBSD 5 môže mať aj obmedzenia. Kvôli zjednodušeniu vývoja systému bola odstránená podpora binárneho formátu a.out, zo základného systému bola odstránená väčšina hier a úplne bol odstránený Perl; programy, ktoré boli dosiaľ obsiahnuté v základnom systéme a boli napísané v Perle, boli prepísané do shell-u alebo do jazyka C. Nakoľko boli menené štruktúry jadra, v ojedinelých prípadoch došlo k zmenám jeho API (application programming interface) a/alebo ABI (application binary interface), čoho následkom môžu prestať fungovať napríklad binárne ovládače zariadení a pod. Ani dokumentácia nemusí vždy odrážať zmeny medzi vetvami 4 a 5, i keď vidieť snahu projektu FreeBSD vlastnú udržiavať dokumentáciu aktuálnu a korešpondujúcu so stavom aplikácií.

DragonFly

The DragonFly BSD Project je logickým pokračovaním vývoja vetvy FreeBSD 4, ktorý si kladie za cieľ starostlivým výberom a implementáciou vlastností a algoritmov použitých v operačnom systéme dosiahnuť vysokú stabilitu, robustnosť a laditeľnosť v širokom spektre použitia od jednoprocesorových počítačov po veľké klastre. DragonFly má v úmysle upravovať tak kľúčové funkcie jadra operačného systému ako sú virtuálna pamäť, vsupno-výstupný model, správa vlákien a procesov v jadre a správa vyrovnávacích pamätí, ako aj robiť zmeny v používateľskom priestore týkajúce sa inštalácie aplikácií a kompletnej zmeny rozhrania medzi jadrom systému a aplikáciami, t.j. systémových volaní. Tieto volania majú byť založené na asynchrónnom posielaní správ, ktoré má byť kľúčovou technológiou v operačnom systéme DragonFly.

Prvá verzia operačného systému DragonFly je ohlásená na prvý jún 2004. Je však otázne, do akej miery to bude DragonFly spĺňajúci deklarované ciele; podľa changelogov a stavu vývoja uverejneného na webových stránkach www.dragonflybsd.org len do veľmi malej. Znie až príliš neuveriteľne, že tak malý tím ľudí – menej ako dvadsať, a to vrátane prevádzkovateľov mirrorov – by dokázalo v rozumnom čase naplniť vytýčené ciele. Tieto potom vyznievajú len ako zamyslenie nad tým, ako by mohol operačný systém vyzerať. Nepripomína to tak trochu prakticky neexistujúci operačný systém GNU/Hurd?

FreeSBIE

Talianske združenie používateľov operačného systému FreeBSD si dalo ďaleko skromnejšie ciele ako projekt DragonFly: vytvoriť súbor programov, ktoré umožnia používateľovi vytvoriť si vlastnú tzv. live verziu operačného systému FreeBSD. Sami chcú aj poskytnúť viacero iso obrazov live verzií FreeBSD pre rôzne účely použitia. Pred nejakým časom uvoľnená verzia FreeSBIE 1.0 funguje celkom uspokojivo, i keď trpí niektorými nedostatkami: ako každá live verzia operačného systému je pomalá, rýchlosť spúšťania programov je závislá od kvality CD média a CD mechaniky, preklady textov v používateľskom prostredí sú nekompletné, takže popri angličtine sa tu možno na mnohých miestach stretnúť s taliančinou (vlastne vôbec nie je jasné, či sa tvorcovia pokúšali preložiť FreeSBIE-ho zo svojej rodnej taliančiny do angličtiny, alebo sa im ešte nepodarilo preložiť všetky časti do taliančiny). Nakoniec, keďže konfigurácia systému počas štartu nie je možná, spúšťajú sa rozličné služby, aby sa vyhovelo čo najširšiemu okruhu používateľov (napr. firewall a pod.). Keď však bude možnosť vytvoriť si live verziu FreeBSD podľa svojich požiadaviek, môže sa stať FreeSBIE veľmi obľúbeným operačným systémom.

Čo sa týka útrob FreeSBIE-ho, sleduje -CURRENT vetvu vývoja FreeBSD. FreeSBIE 1.0 je postavené na FreeBSD 5.2.1-RELEASE. Vďaka pokročilejšej detekcii hardvéru v tejto vetve FreeBSD sa hodí napr. na otestovanie počítača pri kúpe, záchranu údajov pri havárii systému a pod. Domovská stránka live operačného systému FreeSBIE sa nachádza na adrese http://www.freesbie.org, ktorá je však zatiaľ pomerne strohá a skúpa na špecifické informácie.

Záver

Stabilná vetva operačného systému FreeBSD je síce veľmi populárna, ale nemôže zostať nemennou. Tlak tak zo strany konkurenčných operačných systémov ako aj zo strany používateľov núti vývojárov stále napredovať. Postup prác na FreeBSD 5 je síce pomalý, dôležité však je, že napriek zásadným zmenám, ktoré sa v tomto operačnom systéme dejú, je stále udržiavaný vo vysoko použiteľnom stave. CURRENT vetva FreeBSD je obľúbená napríklad v čoraz viac sa rozrastajúcej skupine používateľov notebookov, pretože má lepšiu podporu nového hardvéru a jeho detekciu. Napriek tomu sa vývojári nehodlajú ponáhľať s označením vetvy FreeBSD 5 za stabilnú, pokiaľ ju za takú nebudú skutočne považovať. Latka stability, spoľahlivosti, robustnosti a funkcionality je totiž vetvou FreeBSD 4 nastavená veľmi vysoko.

FreeBSD Project Home