Randy Fort David Shao CS 249 Kernel Support for Distributed Systems
Total Page:16
File Type:pdf, Size:1020Kb
Randy Fort David Shao CS 249 Kernel Support for Distributed Systems November 22th, 2005 Randy Fort The Torvalds/Tanenbaum Debate November 22th, 2005 TThhee TToorrvvaallddss//TTaanneennbbaauumm DDeebbaattee •WWhhaatt iiss tthhee TToorrvvaallddss//TTaanneennbbaauumm DDeebbaattee,, aanndd wwhhaatt ddooeess iitt hhaavvee ttoo ddoo wwiitthh DDiissttrriibbuutteedd SSyysstteemmss?? – AA sseerriieess ooff ppoossttiinnggss oonn ccoommpp..ooss..mmiinniixx iinn wwhhiicchh AAnnddrreeww TTaanneennbbaauumm ssttaarrtteedd aa tthhrreeaadd ssaayyiinngg ““LLiinnuuxx iiss OObbssoolleettee”” – PPoosstteedd ffrroomm 2299 JJaannuuaarryy ttoo 1100 FFeebbrruuaarryy ooff 11999922 – SSttaarrtteedd aa lloonngg ddiissccuussssiioonn ooff MMiiccrroo vvss.. MMoonnoo kkeerrnneellss – DDiiffffiiccuulltt ttoo ppiieeccee ttooggeetthheerr tthhee mmoossaaiicc ooff tthhee wwhhoollee ssttoorryy – SSttaarrtteedd aa lloonngg ddiissccuussssiioonn ooff MMiiccrroo vvss.. MMoonnoo kkeerrnneellss – WWaass pprroobbaabbllyy tthhee ffiirrsstt sseerriioouuss ppuubblliicc ccrriittiicciissmm ooff mmiiccrrookkeerrnneellss TTyyppiiccaall MMaacchh qquuootteess ooff tthhee eerraa •““OOppttiimmiizziinngg tthhiiss oonnee [[IIPPCC]] ppaatthh ccaann rreessuulltt iinn ssiiggnniiffiiccaanntt ppeerrffoorrmmaannccee ggaaiinnss..”” [[77]] •““…aallll ppaaggeerrss ccaann bbee iimmpplleemmeenntteedd eexxtteerrnnaallllyy aanndd ccaalllleedd bbyy tthhee kkeerrnneell ffoorr tthhee uusseerr..”” [[77]] •““AAnn uunnuussuuaall ffeeaattuurree ooff MMaacchh,, aanndd aa kkeeyy ttoo tthhee ssyysstteemmss eeffffiicciieennccyy iiss tthhee bblleennddiinngg ooff mmeemmoorryy aanndd IIPPCC ffeeaattuurreess”” [[77]] •FFuurrtthheerr eexxppeerriimmeennttaall rreesseeaarrcchh oonn MMaacchh aappppeeaarrss eennddeedd [[33]] TToo ppuutt tthhiiss ddiissccuussssiioonn iinnttoo ppeerrssppeeccttiivvee:: When iit occurred iin 1992: DOS and Windindows 3.1 were the common Operatinging SSystemss.. O/S 2 was a viaiable contender for the desktop market. Windindows as a standallone product was 3+ years away. The 386 was the domiinatiing chiip. And the 486 had not come oouut oon tthe maarket. Micicrosoft was stiillll a smallll company sellliling DOS and Word for DOS. Lotus 123 rulled the spreadshheett space. And WordPerfect ruleled the word processining market. Netscape, Yahoo, Excitite, Googlele, EBay--siimplly didid not exisist [2]. Liinus was under pressure because hhee abaanddoned the ididea of micicrokernelsls inin acadeemiaia [2]. HHooww DDiidd tthhee DDeebbaattee SSttaarrtt?? – LLIINNUUXX iiss OObbssoolleettee -- AAnnddrreeww TTaanneennbbaauumm • MMiiccrrookkeerrnneellss • PPoorrttaabbiilliittyy • MMiinniixx//AAmmooeebbaa – CCOONN:: • ““YYoouurr jjoobb iiss bbeeiinngg aa pprrooffeessssoorr aanndd rreesseeaarrcchheerr:: TThhaatt’’ss oonnee hheellll ooff aa ggoooodd eexxccuussee ffoorr ssoommee ooff tthhee bbrraaiinn-- ddaammaaggeess ooff mmiinniixx.. II ccaann oonnllyy hhooppee ((aanndd aassssuummee)) tthhaatt AAmmooeebbaa ddooeessnn’’tt ssuucckk lliikkee mmiinniixx ddooeess..”” AA BBrriieeff MMaacchh KKeerrnneell HHiissttoorryy •FFrroomm 11998855 ttoo 11999944,, CCaarrnneeggiiee--MMeelllloonn UUnniivveerrssiittyy ((CCMMUU)) ddeevveellooppeedd tthhee ttoo ssuuppppoorrtt ddiissttrriibbuutteedd aanndd ppaarraalllleell ccoommppuuttaattiioonn •MMaaiinn ddeessiiggnn ggooaall wwaass ttoo ddrraammaattiiccaallllyy rreedduuccee tthhee ssiizzee aanndd ccoommpplleexxiittyy ooff tthhee kkeerrnneell •TThhee rreesstt ooff tthhee OOSS wwoouulldd rruunn aass ssyysstteemm sseerrvviicceess iinn uusseerr lleevveell pprroocceesssseess •““FFoorr ssoommee ttiimmee iitt aappppeeaarreedd tthhaatt eevveerryy ooppeerraattiinngg ssyysstteemm iinn tthhee wwoorrlldd wwoouulldd bbee bbaasseedd oonn MMaacchh bbyy tthhee llaattee 11999900ss..””[[33]] •MMaacchh wwaass wwaass aann ““aaccaaddeemmiicc ddaarrlliinngg””,, aanndd wwaass eevveerryytthhiinngg sshhoorrtt ooff aa ccuurree ffoorr ccaanncceerr aanndd wwoorrlldd hhuunnggeerr.. WWhhaatt iiss aa MMoonnoolliitthhiicc KKeerrnneell?? •AA mmoonnoolliitthhiicc kkeerrnneell iiss aa ssiinnggllee eexxeeccuuttaabbllee hhaannddlliinngg aallll kkeerrnneell ffuunnccttiioonnss.. – MMeemmoorryy iiss ddiivviiddeedd iinnttoo kkeerrnneell ssppaaccee aanndd uusseerr ssppaaccee.. – SScchheedduulliinngg – PPrroocceessss mmaannaaggeemmeenntt – SSiiggnnaalliinngg – DDeevviiccee II//OO – PPaaggiinngg – SSwwaappppiinngg •BBeeccaauussee mmaannyy ooff tthheessee ffuunnccttiioonnss hhaavvee llooww lleevveell ccooddee,, iitt mmaayy aappppeeaarr ttoo bbee mmoorree aarrcchhiitteeccttuurree ssppeecciiffiicc.. WWhhaatt aarree tthhee PPrrooss//CCoonnss ooff MMoonnoolliitthhiicc KKeerrnneellss – PRO: • Sininglele executablele works finine iif you have the memory • Easy imimpllementatioion of threadining for fiilele I/O • Very efficicieient • Easieier to iimplelement ??? – CON: • Memory footpriint inincreases inin ddiirect proportiion to codde siize • More complliicated monolilithhiicc sstrruucture reqquiirrees connsiiderraabblyly more timime and effort to understand • Harder to maiintainin ??? ““MMoosstt uusseerrss ccoouulldd pprroobbaablybly ccaarree lelessss iiff tthhee inintteerrnnaalsls ooff tthhee ooppeerraattiningg ssyyssttemem tthheeyy uussee iiss obobssoleolettee.. ThTheeyy aarree rrigighhttlyly mmoorree iinntteerreesstteded iinn iittss ppeerrffoorrmmaannccee aandnd ccaappaabbililititiieess aatt tthhee uusseerr lelevveell.. II wwoouulldd gegenneerraallllyy aaggrreeee tthhaatt mmicicrrookkeerrnneellss aarree pprroobbaabbllyy tthhee wwaavvee ooff tthhee ffuuttururee.. HHoowweevveerr,, itit isis inin mmyy ooppininiioonn eeaassiieerr ttoo iimmpplleememenntt aa mmoonnoolilitthhicic kkeerrnneell.. IItt iiss aallssoo eeaassieierr ffoorr iitt ttoo ttuurrnn intintoo aa memessss inin aa hhuurrrryy aass itit isis mmoodifdifiieedd.. ”” [[22]] –– KKeenn TThhoommppssoonn WWhhaatt iiss aa MMaacchh//MMiiccrrookkeerrnneell KKeerrnneell?? •MMoosstt ooff tthhee OOSS rruunnss oouuttssiiddee tthhee kkeerrnneell.. •TThheessee pprroocceesssseess ccoommmmuunniiccaattee bbyy mmeessssaaggee ppaassssiinngg.. •TThhee KKeerrnneell’’ss jjoobb iiss ssiimmppllee:: hhaannddllee mmeessssaaggee ppaassssiinngg aanndd llooww lleevveell pprroocceessss mmaannaaggeemmeenntt.. •PPrroocceesssseedd oouuttssiiddee tthhee kkeerrnneell iinncclluuddee:: –FFiillee ssyysstteemm –MMeemmoorryy mmaannaaggeemmeenntt –II//OO ddrriivveerrss •SSiinnccee tthhee kkeerrnneell iiss vveerryy ssmmaallll,, aanndd aallll ootthheerr pprroocceesssseess rruunn oouuttssiiddee ooff iitt,, iitt mmaayy aappppeeaarr mmoorree ppoorrttaabbllee.. WWhhaatt aarree tthhee PPrrooss//CCoonnss – PPRROO:: • SSimmpplleerr ttoo uunnddeerrssttaanndd • GGoooodd ddiissttrriibbuutteedd ssttrruuccttuurree • OOtthheerr ““sseerrvveerrss”” aarree eeaassiillyy rreeppllaacceedd – CCOONN:: • 2200--2255%% sslloowweerr tthhaann mmoonnoolliitthhiicc • CCoommpplliiccaatteedd mmeessssaaggee ppaassssiinngg iinnffrraassttrruuccttuurree • SSysstteemm sseerrvviicceess ccrreeeepp bbaacckk iinnttoo kkeerrnneell • MMoorree ccoommpplleexx eexxcceeppttiioonn hhaannddlliinngg iinn tthhee kkeerrnneell WWhhaatt aarree ssoommee mmoorree CCoonnss – CCOONN:: • SSeeppaarraattiioonn ooff pprroocceesssseess ccoouulldd nnoott bbee rreeaalliizzeedd:: – “Development of Mach showed that performance problems forces services originally implemented on top of a microkernel back into the kernel, increasing size…” [6] • TThhee ssiizzee aanndd ssppeeeedd bbeenneeffiittss nneevveerr mmaatteerriiaalliizzeedd.. – In fact, they were “larger and slower than monolithic kernels partially because of the complications of modern virtual memory system (copy-on-write facility)” [6] WWhhaatt aarree ssttiillll mmoorree CCoonnss •HHUUGGEE Overhead due to IPC mechanisms –““OOnn aa 448866 ((5500 MMHHzz)),, aa ““nnuullll”” ssyysstteemm ccaallll wwoouulldd hhaavvee aa rroouunndd ttrriipp ooff aabboouutt 4400 μμSS.. OOnn MMaacchh 33,, tthhee ccaallll aalloonnee wwaass 111144 μμSS,, wwiitthh tthhee ttoottaall ccaallll ttaakkiinngg 550000 μμSS”” [[88]] –AA ssttuuddyy bbyy CChheenn aanndd BBeerrsshhaadd ddeetteerrmmiinneedd tthhaatt ppeerrffoorrmmaannccee wwaass 6666%% wwoorrssee tthhaatt aa mmoonnoolliitthhiicc kkeerrnneell [[33,,88]] WWhhaatt aarree eevveenn mmoorree CCoonnss In a micicrokernell, the kernell isis supposed to be isisolalated from the server processes, proviidining and elelegant separatioion and mainintaiinabiilility advantagges. Thhisis mmeeanns thhe kernell, whiicchh isis inin theeorry a message and hardware handleler, has not idideea what tthe OS consisists of. What iimportant biit of iinformatiion wouldld you rreeallllyy realllyly realllyly lilike to know about those processes??? MMEMEMOORRYY PPAAGGIINNGG !!!!!! Witith no iintimaimate knowleledge of kernell iinteractioion (whicich iis easy on a monoollitithic kernel)l), you must adopt a one sizize fititss aallll memory pagining solulutioion.. HHooww iiss iitt DDiiffffeerreenntt iinn PPrraaccttiiccee?? MMoonnoolliitthhiicc:: KKeerrnneell ssyysstteemm ccaallllss ((ttrraappss)) wwhheenn aa ssyysstteemm ccaallll iiss iinnvvookkeedd,, tthhee ccooddee ““ttrraappss”” iinnttoo tthhee kkeerrnneell aanndd tthhee ccooddee iiss eexxeeccuutteedd,, tthhee ffllooww ooff eexxeeccuuttiioonn rreettuurrnnss ttoo tthhee ccaalllliinngg ffuunnccttiioonn.. MMiiccrrookkeerrnneell:: SSyysstteemm ccaallllss ppoosstt mmeessssaaggeess,, aanndd aa ccoonntteexxtt sswwiittcchh ooccccuurrss ppaassssiinngg ccoonnttrrooll bbaacckk ttoo tthhee mmiiccrrookkeerrnneell vviiaa IIPPCC mmeessssaaggeess.. SShhaarreedd mmeemmoorryy uusseedd