total descendants:: total children::1 |
este by som upresnil ze moduly v linuxe su len 'akoze' moduly kedze nejde o nic ine ako obycajne dynamicke linkovanie (obohatrene o plne dynamicke tabulky funkcii v pripade driverov co umoznuje zavadzat aj novoskompilovane moduly a autdetekciu zariadeni atd.) - modprobe (resp. kmod) je vp odstate ako dlopen() pre kernel - architektura je vsal plne monolitna - cely kernel tvori jednu binarku v jednom adresovom pristore - ked sa nad tym clovek zamysli je to pre rok 2004 fakt dost brain-damaged :)) - avsak funguej to pomerne dobre pretoze avcsina systemov nejak akutne nepotrebuje velku flexibilitu/skalovatelnost takze si vystacim s tym ze si skomplikujem drivery co potregbujem a hotovo, zaroven tym ze je to vsetko do seba zakompilovane je lahke optimalizovat na vykon (presne pripad linuxu - vzdy bol optimalizovany na rychlost -a je to aj vidno) co sa tyka mikrokernelov su jednoducho o modularie a dobre definovanych rozhraniach - podobne ako cele oop a komponentove technologie a vselijake ine buzzwordy :)) - da sa povedat ze mikrokernel je vtedy mikro ak obsahuje spravu/definicu (globalneho) namespace, rutiny umoznujuce komunikaciu a synchronizaciu medzi ostatnymi modulmi/servermi/cimkolvek, nevyhnutne inicializacne rutiny a nejaky ten memory management aby to cele malo kde bezat (keby sme posledne vynechali mozno by sa to dalo nazvat nanokernel :) - kdesi som take videl, cize veci, ktore su nevyhnutne na to aby sa dal robit nejaky modularny/distribuovany system, a cele je to zabalene v nejakom rozumonom ABI vlastne vobec neviem preco tak dlho trvalo kym sa zacali robit nejake normalne mikrokernely - a preco sa vo velkej skale na PC a serveroch v podstate nepouzivaju (asi najmikrokerneloidnejsi bezne pouzivany OS su windows NT - ale ani to nie je celkom ono), v mensinovych (vedeckych, priemyselnych) aplikaciach sa pouzivaju bezne (spominana amoeba, qnx, tron) - ked si to vazmame do dosledkov monolitny kernel je obycajny hack - situacia kedy poterbujem rychlo nakodit nejaky nie velmi zlozity software takze kaslem na design a bleskovo to spravim ako pride (poznate to :) ), takze seriozni programatori by vlastne nikdy ziadny monolitny kernel nemali z klavesnice vypustit :) mozno je to kvoli mytu o pomalosti ale myslim ze to nebude az take zle ak sa to spari vtipnym sposobom - rozhodujuci bottleneck moze byt prave messaging, kedze jednotlive komponenty medzi sebou v kuse komunikuju - toto bol problem mozno v roku 1980 ale dnes ma uz aj kavovar skvelu MMU, takze akykolvek lokalny messaging moze byt pri dobrej implementacii vecou odovzdania adresy a namapovania prislusnych stranok (ono to takto spominane moderne os uz aj robia samozrejme), len tak pre zaujimavost - v skvelom a fakt eychlom monolitnom linuxe sa napr. pri posielani dat na siet data raz zbytocne kopiruju (z user-space do nejkeho kernel network bufferu - ak to uz napravili v 2.6 opravte ma nepozeral som - ale pochybujem), cize dobre spraveny mikrokernel ho musi tromfnut, messaging po siet je potom uz ina story a tam su vsetci podobne pomali |
|
|||||||||||||||||||||||