Tanenbaum víziója a "nagymama-biztos" operációs rendszerről

Címkék

Andrew S. Tanenbaum az ausztrál Linux konfon vezette elő új mértékegységét, a "Lifetime Failures"-t, amely azt számolná, hogy egy szoftver, pontosabban egy operációs rendszer mennyiszer omlik össze a felhasználó élete alatt. Ha egy felhasználó vásárol egy szórakoztató elektronikai berendezést, akkor azt várja tőle, hogy ha bekapcsolja, akkor az megbízhatóan működjön. Miért ne várhatnánk ezt el egy számítógéptől is? A TV-n sincs reset gomb.

Tanenbaum szerint a mostani operációs rendszerek bonyolultak. Hogy illusztrálja, elmondta, hogy a Windows NT 3.5 6 millió sor kóddal indult 1993-ban. Az NT 4 1996-ban 16 millió kódsort, a Windows 2000 29 milliót, az XP pedig már 50 millió sort tartalmazott.

Mivel egyes helyeken az átlagos bug ráta 10-75 / 1 000 sor közt van, a hibára futás esélye jelentősen megnőtt. Tanenbaum kritikus a jelenlegi szoftver tervezési módszerekkel szemben. Szerinte hogy elérhető legyen a 0-ás "lifetime failure", ahhoz a rendszereknek - egyebek mellett - kicsiknek és modulárisnak kell lenniük. Tanenbaum szerint a MINIX 3-nak megvan számos olyan tulajdonsága, amely ennek a célnak az eléréséhez kell.

Tanenbaum megemlíti, hogy talán a Linuxnak is abba az irányba kellene haladnia, hogy ultra megbízható legyen, mindig működjön, és a felhasználó ne kaphassa azokat a hibákat, amelyeket a Windows-tól kap.

A cikk itt.

Hozzászólások

Érdekes felvetés. De ezt csak célgépeken, előre összerakott hardvereken lehetne megoldani, ahogy az Apple csinálja. Akkor az összeomlás veszélye csökken.
A Minix3 lehet hogy kicsi és stabil, ámde teljesíti-e azokat a követelményeket, amiket egy átlagos felhasználó elvár tőle? Lehet-e könnyen telepíteni bármely átlagos hardverre, lehet-e könnyen használni, van-e támogatása hardverekhez, szoftverekhez, amik fontosak, népszerűek? Ahogy megvalósítanánk a minixben a felhasználók teljeskörű kiszolgálását, úgy lenne az is egyre bugosabb.

Azért ne felejtsük el hogy a Minix 3 mikrokernelt használ. Tehát tényleg stabilabb. A rendszer valószínű sose fog összeomlani. Ne érts félre én is Linuxot használok, de ha lenne olyan mikrokerneles distro ami legalább azt tudná amit egy kisebb Linux distro akor lehet hogy azt használnám (Plusz lenne hozzá megfelelő driver támogatás).

"ha lenne olyan mikrokerneles distro ami legalább azt tudná amit egy kisebb Linux distro"

Ha meg öreganyám villamos lenne...

Nyilván nem véletlen, hogy nincs. És senki ne jöjjön összeesküvéselméletekkel.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

ez meg a dvorak mindig gondoskodnak a könnyes szemről és a térdcsapkodásról

"Mivel egyes helyeken az átlagos bug ráta 10-75 / 1 000 sor közt van, a hibára futás esélye jelentősen megnőtt. "

Ekkora FUD-t, már Open source korökben is divat a FUD :)

Ezt azért én nem állítanám egy kiadott kernel kódra, még a kicsipuhájé sem lehet ennyire bugos.

------
gentóhuszár

Nekem a digitalis tv vevo fagyot mar le, sima kihuzom bedugom nem volt neki eleg, vagy 5 percig kihuzva kellett hagyni es csak utan indult ujra. szep uj vilag mar a tv is fagy ...

Már futottam olyan szituációba, amikor kellett volna a TV-re (nem ATV-re, hanem a TV-re - éééérteeed?) is a reset gomb. Behalt a menüje. Maradt a kikapcs-bekapcs.

Üdv,
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Nekem mindig az az érzésem, hogy Tannenbaum-nak savanyú a szőlő. Évek óta hirdeti, hogy a Minix mennyivel jobb, mint minden más, mégis a Linux terjed.

A kis modulos dologban pedig nem értek vele egyet. Ha szabadon értelmezzük, akkor a mostani Linux/Windows/... disztribúciók gépi utasítás méretű modulok sokaságából állnak. Azt akarom ezzel érzékeltetni, hogyha olyan kis méretű modulokat írunk, amik biztosan hibátlanok, akkor rengeteg kell belőlük egy normális disztróhoz, és ilyenkor már a modulok összeillesztése lesz nehezebb, mint azok megírása.

Nem az a lényeg, hogy "kicsi" modulok, hanem hogy közöttük a hibahatárolás rendesen meg legyen valósítva.

A Minix-ben ha egy driver úgy dönt, hogy végtelen ciklusba esik, attól még nem száll el az egész rendszer(nem próbáltam, csak olvastam :-)). Máshol a kernelen belül ilyen szintű hibaelhatárolás nincsen.

Hogy nem terjed annak az oka szerintem az, hogy egy ennyire szigorú rendszerbe nem olyan egyszerű - összeütöm és megy dolog dirvert írni, és a meglévő drivereket beleimportálni sem nagyon lehet. Ergó mindent újra kellene írni, de egy másik dimenzióban lépkedve. Szóval óriási munka lenne, níilván nem fog ilyet senki önként csinálni.

Összegezve: a savanyú a szőlővel egyetértek, de az még nem jelenti azt, hogy semmi igazság nincs abban, amit mond.

Én az alacsonyabb teljesítmény, miatt agódnék, nem hiszem, hogy tényleg nehezebb minix -et írni, mint linuxot :)
Mindennek ára van, itt erőforrással kell fizetni a nagyobb stabilitásért. (A nagyobb stabilitás, valójában azt jelenti, hogy bizonyos típusú kernel bugok, nem robbannak rögtön az arcodba)

Az más kérdés, hogy ha borul egy fontos feladatot ellátó driver, könyen borul az alkalmazás is ami használj --> tv-nk megint nem válaszol. De a kernel még simán, tudja pingetni a localhostot :)
------
gentóhuszár

Nono, azert nem kell ferditeni. Nem azt allitja, hogy a Minix jobb, mint minden mas. Ezt sosem allitotta. Pusztan arrol van szo, hogy amikor az olyan oprendszerek elonyet igyekszik kihangsulyozni, amelyek microkernelre epulnek, akkor mindig a Minix kerul elo a tarsolyabol. Ez azert lassuk be ertheto, hiszen az a sajat "gyermeke", nyilvanvaloan olyannak igyekezett megformalni, amilyennek szerinte lennie kell. De a tisztanlatas vegett: a Tanenbaum - Torvalds vita, nem Minix - Linux vita ;)

"A kis modulos dologban pedig nem értek vele egyet"
Nem is kell, sokan nem ertenek vele egyet, de ennek ellenere nem egy microkerneles oprendszer kering a piacon. Hogy csak a desktopot emlitsem, itt van mindjart a Mac OS X, ami a Mach 3.0-as microkernelen eleg jol elzotyog ... a beagyazott/real-time oprendszerek felsorolasat pedig inkabb melloznem most ;)

tanitja azokat, akik majd csinaljak ;) Egyebkent Tanenbaum tanar es kutato egy szemelyben, tehat nem "csak" tanit es vmit mar elert a szamitastechnika teruleten ;) fuggetlenul attol, hogy igaza van-e a fenti vitaban vagy sem. Mindenesetre, azt allitani, hogy nem ert ahhoz amit csinal, azert eleg meresz ...

"A gyakorlati és az elméleti oldal közti különbségre értettem"
OK, ez vilagos, de o nem csak elmeletben alkotott meg egy operacios rendszert, hanem a gyakorlatban is. Az mar mas kerdes, mennyire lett "eletkepes" az altala megvalositott rendszer es itt, ezen a ponton, tenyleg igazad van, vhol az egesz puszta elmelette valik ;)

"Mondjuk amit itt levezetett az elég, hmm "érdekes". "
Ezt en is igy latom, biztos rossz napja volt ... LOL

a beagyazott/real-time oprendszerek felsorolasat pedig inkabb melloznem most

Pedig tanulságos lenne ám, ugyanis kiderülhetne belőle, hogy nem mind mikrokernel szerkezetű. Pl. az egyik legelterjetteb, a VxWorks, nemhogy nem mikrokernel, de még a kernel space-t meg a user space-t sem feltétlenül választja szét.

Nem megoldhatatlan feladat.
Csak ahhoz olyan együttműködés kell a hardware és a software piac terén, ami pénzügyi okok, licensz, vagy piaci részesedések miatt nem kivitelezhető. Ha sikerülni is, akkor meg a gyártó cégek még az eddigi helyzetnél is jobban monopól hatalomhoz jutnának, ami teljesen ellehetetlenítené a piacot.
Ha meg mindere nyilt szabványt alkalmazunk, akkor meg olyan nagy volna a választék, hogy kiválasztani a megfelelőt, megint csak problémákba ütközne.
Szerintem nincs semmi rossz a zárt fejlesztésben. Csak akkor a gyártó biztosítsa a megfelelő felületet. A jó példa az NVIDIA. Mind Windows mind *nix alá nagyon jó drivereket készítenek. Könnyen telepíthető és kezelhető.
A minix-nek is talán akkor volna létjogosultsága.
De a piac nem erre hajlik sajnos. :-(
A Linux alatt is nagy problémám, hogy igazán nincsenek egységesítve a dolgok, persze, ha az ember használ egy disztrót, akkor ami benne megvan program biztos működni fog, de ha már egy olyan progi kell ami nincs benne. És esetlegesen a fejlesztő olyan technikákat használ, ami a disztribúcióban sincs benne, akkor ott kezdődnek az egyszerű ember fejfájásai. Linux alatt nem egy hétköznapi feladat Mari néni számára, hogy felrakjon egy programot forrásból, csak azért mert nincsen benne az XY linux disztróban. És akkor még ha függőségek merülniek fel, no akkor jön a pánik és teljesen jogosan.
Persze van, hogy a szóban forgó programot már valaki elkészítette az adott csomagban, hogy könnyű legyen felrakni csomagkezelővel, de még ott is a halandók számára nem könnyű az élet. Mondjuk ha fedora alatt akarsz mp3-at hallgatni. Akkor hack-eld meg a yum file-ait, stb, stb, stb..., és ha jól ügyeskedtél akkor a hangszóró kipréseli magából a megfelelő dallamot.
Persze sokan mondják, hogy a Windows legnagyobb gyengesége, hogy egységes. Az összes Windows-nak ugyanaz a hibája meg stb..., de ahhoz, hogy tökéletesen biztonságos rendszert alkossunk kell az egységesség. És ha bele is akarunk tenni valami újat, akkor annak könnyen elérhetőnek, telepíthetőnek és kezelhetőnek kell lennie. Ami a jelenlegi OpenSource társadalomban még nem áll a helyzet magaslatán.
De ezek csak a szerény meglátásaim.

A céleszköz is lehet bugos, ezt "konstrukciós hibának" hívták már 50 éve is, javasolt javítása egy ököllel az eszközre kifejtett pillanatnyi, heves erőhatás (ezt követően opcionálisan a garancia érvényesítése).

Kommersz informatikai eszközöktől pedig szinte elvárható hogy ilyenekkel legyen tele, gondoljunk csak a házi "DSL router" szrokra (amelyik véletlenül nem melegszik túl 2percenként/döglik meg tervezési hiba miatt, annak a firmware-je bughalmaz).

Ez elsosorban elektronikai problema. Biztos meg nem talalkozott olyan muszaki cikkel, amiben tulmelegedett egy aramkor gyartasi hiba miatt. Mondjuk allva kell hagyni egy gepet ugy jo negyed orara, mert nem butol be, mert osregi a chipje es ha bemelegszik, akkor esetleges reboot utan nem is tud magarol. Cserelni nem lehet, mert mar legalabb 15 eves es reg bezuztak a fajtajat, viszont hasznalni meg kell, mert nincs ember aki atirja a szoftvert mas architekturara. A koporso gorbebol minden tisztan latszik.

Nekem is a modularis mikrokerneles elgondolas a szinpatikus. Mondjuk hatrany, hogy az IPC lassabb, mint a monolitikus kernelen beluli foggvenyhivas. Olyan architektorat kell kifejleszteni, amin gyors es hatekony IPC-t lehet megvalositani. Esetleg nem kell minden kis szirszart kulon processzbe tenni (pl. az osszes networking mehet 1 processzbe, azon belul a egyes funkciok kulon-kulon pluginekbe, stb.) (talan a BeOS hasonlo?)

A linux kernel.... hat... Ilyen osszetett dolog installalasahoz szerintem jo volna egy olyan cucc, mint a gentoo portage-e. Vhogy nem jo egyenkent a millio config opci kozzul kivalasztgatni, hogy nekem melyik kell es melyik nem.

Q 0-as lifetime meg szerintem nem csak az OS felepitesetol fugg. A bug-ok fuggetlenek a szep ideologiaktol, ha a filerendszer szerver hibazik pl. akkor nagy bajok lehetnek.

Arrol nem is beszelve, hogy mekkora csusztatas egy oprendszert osszehasonlitani egy TV-vel. Johogynem kalapacsot hozott fel peldanak.

jut eszembe: emlekszik meg valaki a Color Star-ra? :)

A hülye hasonlatok teszik az egész számítástechnikai kérdést gügyögő idióták szintjén történő beszélgetéssé.

Talán Tanenbaum tudhatná, hogy mi a számítógép, ha már oktat és ír róla. A számítógép egy bonyolult, komplex, összetett, kifinomult mérnöki eszköz. Több tízezer matematikai, fizikai, informatikai és gyártástechnológiai tudása, évtizedes munkája tette azt lehetővé, hogy egyáltalán eljusson a számítógép odáig, hogy most ezt a hozzászólást megírjam és mások esetleg lássák is.

Ha már hasonlítgatunk, akkor a tv a számítógéphez képest olyan mint a zsebkés az atommeghajtású tengeralattjáróhoz képest.

Nem az a célom, hogy azt mondjam, csak mérnökök használjanak számítógépet, vagy aki az átlagosnál jobban érti mi megy "belül", mert attól, hogy a számítógép micsoda, még roppantul hasznos az olyan emberek kezében akik azt hiszik, a számítógép ugyanolyan mint a tv és ugyanolyanok az elvárásaik is - "csak működjön".

A cél az lenne, hogy az ilyen veterán oktatók illetve informatikusok mint Tanenbaum ne tagadják le a tényeket, hanem kezdjenek azon filozofálni, hogy hogyan lehet valamit azzal a ténnyel kezdeni, hogy a felhasználók soha nem fogják tudni megérteni azt az eszközt amit használnak illetve hogy mit lehet tenni annak érdekében, hogy egy átlagember - a hasonlatnál maradva - biztonsággal elvezesse azt az atomtengeralattjárót és közben ne lője ki a rakétákat.

Az nem megoldás, hogy akkor butítsuk le a számítógépet a tv szintjére. Van egy mondás, hogy a biztonság egészen a használhatatlanságig fokozható. Ez szerintem igaz a "megbízhatóságra" is. Lehet mikrokernelt írni, meg beépíteni háromszázmillió ellenőrzést, ezt meg is teszik pl a NASA-nál. Ott ez gazdaságos és indokolt. A személyi számítógépek kategóriájában ez lehetetlen, mivel nem gazdaságos. Ha ez megtörténne, akkor az informatikai fejlődés nem lelassulna, hanem évtizedekkel visszapörögne. A perfekcionizmusomat bántja, de a gányhalom a gazdaságos.

Lehet azért sokmindent tenni annak érdekében, hogy a számítógép és az átlagember közti szakadékot kisebbítsük. Az első az oktatás. A második az informatikai rendszerek nyitottsága. Nyílt protokolok, semmi DRM, kumulatív fejlesztés. A diverzitás jót tesz az informatikának, de csak addig amíg a diverzitás nem jelent teljes elszigeteltséget. A tv-s hasonlatokkal meg a francba.

Szerény véleményem szerint kifejezetten jót tenne az informatikának ha a hardver fejlődés üteme lelassulna, mert a szoftver oldal éretté tudna válni. Szigorúan informatikai szempontból persze, ez nem jelenti azt, hogy ezt kivánom vagy akár esély lenne erre. Így az informatikának marad a lag, ahogy megpróbál a technológiai fejlődéssel lépést tartani.

az nem a "szamitogep" hibaja volt, hanem a kulso beszallito mas mertekegysegben irta a programot (Mars Climate Orbiter), szerencsere azota a NASA atallt a metrikus egysegekre. Vagyis a szamitogep megfeleloen mukodott, az ember hibazott.

hibak mindenutt vannak, de ugy erzem ez a mennyiseg meg az urkutatasba is belefer. gondoljal csak bele a Huygens kuldetesbe (leszallt egy szonda a Szaturnusz egyik holdjan, akkor, ott, amikor terveztek), Cassini, Voyagerek, a Mars roverek (tobb, mint 10-szer hosszabb ideig mukodnek, mint a nevleges elettartamuk volt)... felsorolni is tereh. ez mind a szamitastechnika diadala is egyuttal.

Oktatás: pl. Jucika a titkárnő a sz?páson kívül mindenre tökéletesen alkalmatlan, viszont informatikaicikk-fogyasztó (hogy csetelhessen), így nem gazdasági érdek olyan sw-t írni, amit oktatni kell, sokkal inkább olyan, ami elhiteti magáról hogy a TV-hez hasonlóan "csak működik", annak ellenére hogy tudjuk, ez nem ilyen egyszerű.
hw-fejlődés lassulása: szintén gazdaságtalan, mint a kompakt-fénycső 197x-ben (10 évig működik? Energiatakarékos? Igen? Na megy is a fiókba, ne is lássam többet!!)

Úgyhogy, marad a végletekig butítás.

Szerintem pl. egy műhold, vagy hasonlóan nehezen javítható eszköz esetén lehet értelme egy ilyen oprendszernek. Ott nem számít az elterjedtség, gondolom van pénz egyedi meghajtót fejleszteni, stb. viszont a magas szintű rendelkezésre állás és a hibatűrés fokozottan szükséges.

Ha már a műhold szóba került ...
Volt egy másik hiba is: Mars Pathfinder priority inversion
Emlékszel még rá? Na az egy tipikus interface hiba volt, kerneltől független. Minden modul faszán működött, tulajdonképpen az egész rendszer is, csak éppen adat nem jött a Pathfinder-től.
Ha 100%-ig igaz lenne Tannenbaum érvelése, akkor az a hiba elő sem fordulhatott volna.

(Infósok segítsenek! A Pathfinder típusú prioritás inverzióra jobb oprendszerekben létezik az a megoldás, hogy ha magasabb prioritású taszk vár egy olyan szemaforra, amelyiket alacsonyabb prioritású taszk birtokol, akkor az alacsonyabb prioritást az ütemező fölemeli a magasabb szintjére, amíg a szemafort vissza nem adja. Milyen oprendszer/ütemező tud ilyet? A VMS?)

Tortenetesen a Mars Pathfinder expedicioban hasznalt oprendszer is nyujt ra megoldast, pusztan a programozok felejtettek el hasznalni az adott mutex letrehozasakor ;) Van ez igy. Viszont korrigalni tudtak a hibat, egy apro kis C programocska feltoltesevel, ami aztan a megfelelo globalis valtozot felulirta. Az oprendszer neve egyebkent: VxWorks ;)

"Ha 100%-ig igaz lenne Tannenbaum érvelése, akkor az a hiba elő sem fordulhatott volna."
Ezt elmagyarazhatnad ...

Ha már fel lett emlegetve a TV fagyás: nagybátyám dvd lejátszója szokott fagyni. Rendszerint hibás lemeznél. (Pl. karcos) Egyszercsak megáll a kép, és onnantól kezdve nem tudsz csinálni semmit. A kijelzőjén pedíg a lenyomott gombok számát írja ki. Szóval még ki se lehet kapcsolni szabályosan. Ha kihúzzuk majd visszadugjuk, akkor meg nem kapcsol be, mivel bennemaradt a lemez. Ha kivesszük a lemezt csavarhúzóval, akkor megjavul... :)

Kicsit pontosítanám azt a TV reset gombot, ha jól értelmezem a kapcsolási rajzot (sikerűlt olyat venni, amihez adnak ilyesmit), van olyan TV, ahol van reset gomb, csak nincs kivezetve. Felirat: "For Software Development only - (RES)".
Fejlődik még egy kicsit a technika és előbb-utóbb ki lesz vezetve, idővel meg az lesz a legnagyobb gomb...

Sokat gondolkodtam beírjak-e ide valamit. Végül is mindegy, legfeljebb leugatnak. Szóval a következőket tudom mondani a témáról (bár nekem úgy tűnik, hogy itt már mindenki tud mindent és feleslegesen koptatom az ujjaimat).

Monolitikus kernel

Kernel módban rendszerint az alábbi komponensek futnak:
- megszakításkezelés (interrupt manager)
- MMU (Memory Management Unit),
- ütemező (scheduler),
- folyamatok közti kommunikáció (IPC - Inter Process Communication),
- eszközmeghajtók (drivers),
- hálózatkezelés (network management),
- memóriakezelés (memory management),
- fájlkezelés (file system).

Felhasználói módban általában az alábbi komponensek futnak:
- parancssori környezet (shell),
- fordítóprogramok (compilers),
- felhasználói programok (user programs),
- stb.

Nézzük tehát mi a probléma a monolitikus kernellel?
- szinte a teljes operációs rendszer és annak érdemi része kernel módban fut,
- a komponensek közös memória címterületet használnak,
- nincsenek elszigetelve egymástól az esetleges hibás modulok,
- minden kód (a driver is) a legmagasabb jogosultsági szinten fut,
- a nagyméretű kódhalmaz miatt sokkal több a rejtett (programozói) hiba,
- harmadik gyártótól származó, megbízhatatlan kódok vannak a kernelben (pl.: különféle eszköz-driver),
- az összetettsége és egymásra utaltsága miatt nagyon nehéz karbantartani (programozási szempontból).

Mikrokernel

Itt kernel módban rendszerint az alábbi komponensek futnak:
- megszakításkezelés (interrupt manager)
- MMU (Memory Management Unit),
- ütemező (scheduler),
- folyamatok közti kommunikáció (IPC - Inter Process Communication).

Felhasználói módban általában az alábbi komponensek futnak:
- eszközmeghajtók (drivers),
- hálózatkezelés (network management),
- memóriakezelés (memory management),
- fájlkezelés (file system).
- parancssori környezet (shell),
- fordítóprogramok (compilers),
- felhasználói programok (user programs),
- stb.

Az látszik, hogy a monolitikus kernellel ellentétben egy mikrokerneles operációs rendszer magjában csak a legfontosabb komponensek találhatók. Kizárólag ezek használhatják a közös memóraterületet, csak ezeknek lehet teljes joguk, ezen kívül moduláris a felépítésük és nem utolsó sorban nagyon kevés kódsort (ezáltal kevés hibát) tartalmaznak. Minden "veszélyes" modul átkerült a felhasználói módba, ahol elkülönített memóriaterületen, minimális és ellenőrzött jogosultságokkal futhatnak. Ha ezek közül bármelyik megadja magát, akkor bizony mi egy csepp könnyet se ejtünk értük. A hiba a többieket , de főleg az operációs rendszert egyáltalán nem befolyásolja, miáltal a megbízhatósága drámaian növekedhet.

Azért mikrokernelnek is van hátránya, az pedig a sebesség. Ugyanis a felhasználói módban futó moduloknak, folyamatoknak is kell kernel funkciókat használniuk.

Példa egy driver kernel és felhasználói módú rendszerhívásaira (a idő mikromásodpercben van megadva):

 Rendszerhívás   Kernel   Felh.   Veszteség   % 
 getpid           0.831    1.011  0.180      22
 lseek            0.721    0.797  0.076      11
 open+close       3.048    3.315  0.267       9
 read 64k+lseek  81.207   87.999  6.792       8
 write 64k+lseek 80.165   86.832  6.667       8
 creat+wr+del    12.465   13.465  1.000       8
 fork            10.499   12.399  1.900      18
 fork+exec       38.832   43.365  4.533      12
 mkdir+rmdir     13.357   14.265  0.908       7
 rename           5.852    6.812  0.960      16
                               -----------------
 Átlag                          (1.12), azaz 12%

A példából látszik, hogy átlagosan 12% lehet a hívási időveszteség. Valójában ennek csak akkor van számottevő hatása, ha a hívások ciklikusan, több milliószor ismétlődnének (egyébként észrevehetetlen maradna). Így tehát pl.: 10 db. egymás utáni folyamat létrehozása (Minix-fork) mindössze 19 mikromásodperccel lassúbb a mikrokerneles megoldás esetén, a monolitikus kernelhez képest.

Példa egy lemez I/O kernel és felhasználói módú rendszerhívásaira (a idő mikromásodpercben van megadva):

  Fájl olvasás   Kernel    Felh.    Veszteség   %
    1 KB          2.619     2.904    0.285     11
   16 KB         18.891    20.728    1.837     10
  256 KB        325.507   351.636   26.129      8
    4 MB       6962.240  7363.498  401.258      6
   64 MB         16.907     17.749   0.841      5
                                  ----------------
  Átlag                            (1.08), azaz 8%

Látható, hogy ezesetben még kevesebb, mindössze 8% az átlagos időveszteség. Ez persze kritikus alkalmazásoknál, ismétlődő műveletek esetén nem elhanyagolható. Azonban a biztonság oltárán 8%-ot feláldozni nem olyan nagy feladat.

Példa egy alkalmazás kernel és felhasználói módú rendszerhívásaira (a idő mikromásodpercben van megadva):

  Program           Kernel   Felh.  Veszteség  %
  Build image        3.630   3.878  0.248      7
  Build POSIX teszt  1.455   1.577  0.122      8
  Sort              99.2   103.4    4.2        4
  Sed               17.7    18.8    1.1        6
  Grep              13.7    13.9    0.2        1
  Prep             145.6   159.3   13.7        9
  Uuencode          19.6    21.2    1.6        8 
                                  ---------------
  Átlag                           (1.06), azaz 6%

Itt is észlelhető legalább 6%-os időveszteség. Egyéni döntés kérdése, hogy ez vajon sok vagy kevés.

A minimum kernelméret jó példájaként érdemes felemlíteni a már oly sokszor hivatkozott, Tanenbaum-féle Minix mikrokernelének esetét. A Minix3-ban a kernel 45 db. fájlból, 2947 sor C, és 778 sor assembly-ből áll, amelyek összesen 1729 utasítást tartalmaznak. Ezek azok, melyek kernel módban futnak. Minden másnak irány a biztonságot jelentő felhasználói mód. Ez azért már teljesítmény3 nem igaz?

A moduláris mikrokernel és/vagy a felhasználói mód kiterjesztésének alkalmazásával kapcsolatban a következő megoldások fordulnak elő:
- fejlesztői nyelv által létrehozott biztonsági mechanizmusok (pl.: OKE - Open Kernel Environment),
- ellenőrzött felhasználói módú meghajtók monolitikus kernelen belül,
- minimális kernel méret (kevesebb kód, kevesebb hiba),
- virtuális gépekben és exokernelekben futtatott meghajtó szoftverek,
- stb.

Ezekre nézve voltak is már kísérletek, pl.:
- a Mach kernel a Berkley UNIX-on,
- a University of New South Wales linux kísérleti meghajtó szoftverei (csak diszk és Ethernet driver),
- a Brinch Hansen-féle RC4000 rendszer,
- a 80-as években készült Amoeba, Chorus és V. rendszerek,
- a QNX - UNIX (valós idejű rendszer minimum kernel megoldással),
- Jochen Liedtke által készített L4 (assembly), L4/Fiasco és L4Ka::Pistachio (C++) - Univeresity of Karlsruhe.

Mindezekről egyébként épp Tanenbaum írt egy tanulmányában, melynek címe: "A Lightweight Method for Building Reliable Operating Systems Despite Unreliable Device Drivers".

Ami pedig magát Tanenbaumot illeti: személy szerint nem hiszem, hogy különösebben zavarná a linux térnyerése a Minixszel szemben, hiszen a Minix elsősorban oktatási céból készült. Ezen kívül ő nem csak az operációs rendszerek témában járatos, hanem az elosztott rendszerek, hálózatok, számítógép architektúrák tárgykörökben is. Rengetegen nála tanultak (egy darabig Torvalds maga is). A tudása megkérdőjelezhetetlen. Bár csak a tizede az én fejemben lenne.

Akit érdekel a téma részletesebben, vagyis aki nem csak a másikat akarja szekálni, az kérem, hogy olvassa el ezt a két könyvet:
- Tanenbaum: Modern Operating Systems
- Tanenbaum-Steen: Elosztott rendszerek - Alapelvek és paradigmák

PutAbout

Nem leugatás, de:

- memóriakezelés (memory management),
- fájlkezelés (file system)

Ha ezek közül bármelyik megadja magát, akkor bizony mi egy csepp könnyet se ejtünk értük. A hiba a többieket , de főleg az operációs rendszert egyáltalán nem befolyásolja

Ezt most komolyan gondolod?

2007-01-26 10:10-kor zebra azt a költői kérdést tette fel, hogy: "Ezt most komolyan gondolod?"

Igen, elismerem, a mondat kissé félreérthető volt, de komolyan gondoltam (csak nem fejtettem ki teljesen az igazságot, ahogy ezt mostanság mondani kell).

Arról nem írtam (mert szerintem szegény trey így is rohamot kapott a terjengős hozzászólásom miatt), hogy az általam említett Tanenbaum-féle megoldás tartalmaz egy központi, úgynevezett "Reincarnation Server" szolgáltatást. Ennek az a feladata, hogy mindentől és mindenkitől függetlenül menedzselje az összes meghajtószoftvert és szolgáltatást (Tanenbaum elnevezés szerint: "szerver szoftvert"), ami csak az operációs rendszeren belül létezik.

Ez az említett "Reincarnation Server" folyamatosan figyeli a környezetet, az összes kritikus folyamatot, és ha baj van, akkor időben felismeri azt (pl.: végtelen ciklus, hibás mutató címzés, rendszerösszeomlás, stb). Amennyiben valami összeomlott, akkor azt azonnal újraindítja, ha végtelen ciklusba esett és nem válaszol az üzenetekre, akkor pedig előbb kinyírja és utána újraindítja. Például így képes I/O művelet nélkül újratöltenia fájlrendszer meghajtó szoftvert (shadowed in RAM).

És még sok más is van, de most már nem untatok senkit se ezekkel. További részletek miatt keressétek prof. Tanenbaumot :-)

PutAbout

Azert ugye azt belatod, hogyha a fileszerver hibazik es a vegtelen ciklus elott vagy kozben szetkurja a filerendszert, akkor nem sokmindent er, ha a reinkarnacios szerver ujrainditja a processzt :)
Megha ugy kurja szejjel, hogy nem is kerul vegetelnciklusba es nem is crash-el el akkor mi van?

Ha a memoria management-ert felelos processz osszekeveri a lapokat, mappeleseket, es nem is kerul vegetelen ciklusba es nem is crash-el el direktben, akkor mi van?

Jo dolognak tartom a mikrokernelt, de amiket Tanenbaum osszehord rola, az egyszeruen nem igaz. Komplex rendszereknel, ahhol a szerverprocesszek kapcsolatai nagyon szovevenyesek meg a hiba lokacio sem egyszerubb.

Azert ugye azt belatod, hogyha a fileszerver hibazik es a vegtelen ciklus elott vagy kozben szetkurja a filerendszert, akkor nem sokmindent er, ha a reinkarnacios szerver ujrainditja a processzt :)

jo hat nyilvan a vmlinuz csinalja jol, mikor elszall az egesz a picsaba.

Ha a memoria management-ert felelos processz osszekeveri a lapokat, mappeleseket, es nem is kerul vegetelen ciklusba es nem is crash-el el direktben, akkor mi van?

hogy MIT csinal?

Jo dolognak tartom a mikrokernelt, de amiket Tanenbaum osszehord rola, az egyszeruen nem igaz.

ahah. azert mert?

"jo hat nyilvan a vmlinuz csinalja jol, mikor elszall az egesz a picsaba."

Nezd, en nem vagyok oda a linuxert (sem). Egy nagy maszlag amit felkapott az ipar, ennyi.

Na de mi is van azzal a kurva jo MacOS X-el? Ha jol tudom egy nagy elcseszes kernel szinten, egy mikrokernelhez hozzadrotoztak egy monolitikus BSD kernelt monolitikusan.
Szal a MacOS X kernele semmivel nem mikrokernelebb a vmlinuznal :)

Meg mas kerdes, hogy konnyu stabilabbnak maradnia egy olyan platformon, amihez szinte csak 1fele hardver van. Majd ha annyi fele kinai harvert fog kezelni, mint a linux, akkor megnezzuk, hogy mennyire stabil.

"hogy MIT csinal?"

Ugy omlik ossze az egesz OS mikrokernelestul es szerver processzaival egyutt, hogy orom nezni.
Ja, hogy mi az a lapozas, mappeles? Nezz utanna vmelyik processzor doksijaban az MMU resznel.

"ahah. azert mert?"

Azert, mert ha egy gepen fut egy mikrokernel, amiben nincs bug, attol meg siman szarra omolhat az egesz rendszer, ha bugok vannak a driverek vagy szerverek processzeiben.

szokasos, "hu a GABUCINO valaszolt, akkor keverjuk ide a MAKOSIKSZET" ugyhogy ezt a rantot tobbre nem is meltatom mert szornyen offtopic

viszont amellett hogy mac platformon "szinte csak" (wtf?) egyfele hardver van, na ezen tudatlan ostobasagod utan a mikrokerneles megjegyzeseid mar igazan nem meltoak valaszra (nincs is mit, mert komplett faszsag mind).

"viszont amellett hogy mac platformon "szinte csak" (wtf?) egyfele hardver van"

Nem tudom, OS-X-et nem is lattam meg eloben. De biztos vagyok benne, hogy igen sok drivert ken ahhoz kalapalni, hogy elfusson annyi x86 laptopon es desktopon, amin a Linux probal :)

"a mikrokerneles megjegyzeseid mar igazan nem meltoak valaszra (nincs is mit, mert komplett faszsag mind)."

Szerintem nem :) Mondhatnal konkret peldat, hogy mi a faszsag es miert? Pl. ha a memoria management kulon processzkent van implementalva es bugos, akkir mi arra a biztositek, hogy nem hasal el az egesz rendszer. Szerintem, ha rosszul mappeli be a stacket, shared library-ket vagy akarmiket a processzekhez, akkor kurvara mind1, hogy a memory management izolalva van a networkingtol vagy sem.

A mikrokernel, szerintem fokent 1 fele vedelemrol gondoskodik, nem engedi, hogy a kulon processzekbe pakolt szolgaltatasok direktben elcsesszek egymas adatait.

Tehat tenyleg, ha elcrashel az egyik szolgaltatas, akkor nem huzza maga utan direktben a tobbit, de mivel ezek a szerverek/szolgaltatasok komplexebb rendszerekben fuggosegben vannak egymassal (es meg bugokat is tartalmazhatnak, vagy nem tartalmaznak bizonyos hibag lekezeleseket) ezert jo eselye van annak, hogy a tobbi szerverben is zavart okoz a crash vagy egyebb hibas mukodes.

Engem az zavar, hogy Tanenbaum csak azzal a varazsszoval, hogy mikrokernel es MINIX olyan rendszereket iger amik marhara hibaturoek, ami pedig szerintem nem igaz. Lehet egy monolitikus kernel alapu rendszer is hibaturu es egy mikro kerneles rendszer is instabil.

Nem tudom, OS-X-et nem is lattam meg eloben. De biztos vagyok benne, hogy igen sok drivert ken ahhoz kalapalni, hogy elfusson annyi x86 laptopon es desktopon, amin a Linux probal :)

az valoban latszik, hogy nem vagy biztos abban amit mondasz, foleg ha a linuxot hozod fel alternativ peldakent mint "sok" mukodo drivert tartalmazo OS
mindenesetre pls csak arrol beszelj amit mar jol ismersz thx

Mondhatnal konkret peldat, hogy mi a faszsag es miert? Pl. ha a memoria management kulon processzkent van implementalva es bugos, akkir mi arra a biztositek, hogy nem hasal el az egesz rendszer. Szerintem, ha rosszul mappeli be a stacket, shared library-ket vagy akarmiket a processzekhez, akkor kurvara mind1, hogy a memory management izolalva van a networkingtol vagy sem.

FUD-ra meg kicsit ra kell gyurni

A mikrokernel, szerintem fokent 1 fele vedelemrol gondoskodik, nem engedi, hogy a kulon processzekbe pakolt szolgaltatasok direktben elcsesszek egymas adatait.

jezus. ehhez minek mikrokernel? /o\

Engem az zavar, hogy Tanenbaum csak azzal a varazsszoval, hogy mikrokernel es MINIX olyan rendszereket iger amik marhara hibaturoek, ami pedig szerintem nem igaz.

egeszen pontosan hol latod a "marhara hibaturo" kitetelt?

Lehet egy monolitikus kernel alapu rendszer is hibaturu

de megse az, hatistenem

2007-01-27 13:40-kor lazyone azt írta: "Azert ugye azt belatod [...] Jo dolognak tartom a mikrokernelt, de amiket Tanenbaum osszehord rola, az egyszeruen nem igaz."

Bármit belátok, amit csak óhajtasz. Mellesleg nem az a lényeg, hogy én mit látok be vagy mit se, sőt az is mindegy, hogy mit gondolok. Mégcsak nem is én állítottam azt, amit te kétségbe vontál (huhh, ebbe most jól belebonyolódtam azt hiszem).

Viszont amit írtam azt nem csak Tanenbaum állította, hanem két másik kollégája is, név szerint: Jorrit N. Herder és Herbert Bos. Mindhárman az amszterdami Vrije egyetem számítógéptudományi tanszékén dolgoznak, amitől ugye minek hasra esni, végül is csak az életüket szentelik ennek a témának. Azt persze nem tudom, mennyire okosak, de olvasva az írásaikat abban biztos vagyok, hogy a számítógép architektúrák, az operációs rendszerek és azok megvalósítása terén alighanem több ismeretük van, mint itt mindannyiunknak ezen a helyen.

Továbbá létezik egy kézzelfogható, élő példa, amit Minix3-nak hívnak. Ebben állításuk szerint megvalósították azt, amiről én is beszéltem. Valószínűleg nem tökéletes, és az is biztos, hogy ipari alkalmazásra még ebben a formában nem lenne alkalmas (bár ki tudja), de legalább van valami, ami kipróbálható.

A továbbiakban már ehhez a témához nem kívánok hozzászólni. Az állításod szerint "összehordott" dolgok miatt inkább ezeken az email-címeken reklamálj: jnherder@cs.vu.nl herbertb@cs.vu.nl ast@cs.vu.nl

PutAbout

Igen :) A Sun pl. vmikor focimben kiirta a site-jara, hogy "Solaris 10 is the most advanced operating system in the planet."
Szerintem ilyeneket a MS is mond az IBM is a HP is, stb. stb. stb.
Meg Tanenbaum is.
Meg emlexem az idokre, amikor a Win95 volt a vilag legjobb operacios rendszerenek kikialtva :)

"de olvasva az írásaikat abban biztos vagyok, hogy a számítógép architektúrák, az operációs rendszerek és azok megvalósítása terén alighanem több ismeretük van, mint itt mindannyiunknak ezen a helyen."

Olvastam mar en is konyvet Tanenbaumtol. De egyaltalan nem vagyok az allitasodban biztos :)

Igen, komolyan gondolja.

Ez pont olyan, hogy ne használd root jogokkal a rendszered, mert teszemazt elindítasz valami olyan genyóságot, ami nekiáll ész nélkül törölni, akkor nem szedi szét az egész rendszert, csak a home könyvtáradat teszi /dev/nullal egyenértékűvé. Lehet, hogy téged nem fog meghatni az, hogy a rendszered megmaradt, viszont az évek óta gyüjtött fájlaid, amitől az életed függött, már a múlté, viszont a rendszer maradt.

Itt is hasonló: lehet választani, hogy megdögöljön az egész, vagy csak egy része és akkor legalább van lehetőség arra, hogy megpróbálunk kezdeni valamit az adott szituációban. (Pl: elindítunk valami fájl-visszaállító progit.)

(Most ne menjünk bele a példa mélyebb elemzésébe, csak példa volt.)

Ha a teljesítmény probléma nem lenne valóságos, akkor nem sértenék meg az operációs rendszer gyártók folyamatosan a mikrokerneles elveket (sajnos!). Lásd NT 3.51 -> NT 4 le a grafikai alrendszer kernel módba, és nem futna a DirectX 10 fele még mindig kernel módban a Vistában is, bár a hírek szerint a grafika nagyrésze visszakerült userspace-be. (Lassú is mint a dög.)

Persze jobban örülnék én is ha a Minix (vagy egy Minix-szerű, mikrokerneles rendszer) vált volna elterjedté a Linux helyett az opensource játéktéren. Így csak idő és bonyolultság kérdése a minőség és a biztonság tragikus romlása.

init();

Jelenleg ugy nez ki, hogy az MS egy ideje elkezdett figyelni a Tanenbaum kategoriaju emberekre es olyan technologiakba invesztalni, amelyeket nagymegbizhatosagu szoftverek letrehozasara hasznalnak. Szoval lehet el kene kicsit gondolkodni...

Ezen már rég túl vannak azt hiszem. Mindenki azt hiszi, hogy ott csupa debil ember dolgozik, pedig dehogy.

Jelenleg az alábbi Tanenbaum kategóriájú emberek ügyködnek a sátán árnyékában:
- Richard Rashid (ő volt a Mach kernel atyja)
- Dave Cutler (ő volt a VMS egyik alapítója)
- Dave Probert (ő egy öreg Unix-motoros)
- David Solomon (szintén Unixos volt)
- Rob Short (nini, még egy öreg Unix-motoros)

PutAbout