Ahoj chci se zepta na Vas nazor ohledne architektury linuxu. Prijde mi ze jeho monoliticke jadro (myslim tim koncepci) je zastarala oproti napr Windows ktere smeruji k mikrojadru a tim i vyhodam s nim spojenym. Vim ze je projekt GNU/Hurd ktery mikrojadro pouziva ale neslysel jsme a nevidel nikde jeho bezne pouziti. Diky za pripadne reakce.
Nezaspal Linux dobu s monolitickým jádrem?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJe to jiný přístup ke stejné problematice. Architektura mikrojádra je výrazně komplikovanější a má větší overhead. Navíc se to (podle vývojářů Hurdu) velmi špatně ladí, protože je třeba sledovat velké množství událostí a dějů v nezávislých částech jádra. U Hurdu konkrétně je problém v samotném startu projektu. Nebylo to obvyklé „od nejmenšímu k většímu“, ale rovnou se vymyslela halda skvělých a moderních věcí, ale chyběli lidé k jejich implementaci.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNo v lin jádře jsou věci které představují jisté náznaky pragmatického příklonu k některým metodám které jsou již určitou modifikací původního „čistého“ monolit. modelu. Například role tzv. vláken jádra (částí kódu v jádře které jsou plánovány podobně jako vlákna v user space) nebo ovladače v user space (FUSE) a podobně ..Ale z hlediska „hrubé“ kategorizace se stále bezpečně jedná o monolitní jádro , paměťový prostor je společný .. atd ..
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMikrokernely mají zásadní problém s výkonem. Vysoké procento volání
API totiž skončí více voláními mikrokernelu, případně hromadou context
switchů. Syscall i context switch jsou poměrně drahé operace, a jejich
velké množství systém dost zpomalí.
Existuje několik možností řešení problému:
a] Více kódu v kernelu. Tak to dnes dělají Windows. Aplikace zavolá
knihovnu s API, tam se toho provede minimum, jednou se zavolá kernel, a ten
provede vše najednou. Výhodou je zachovaná čistota a modularita
mikrokernelu.
b] Asynchronní API. Vaše volání API se ukládá do fronty, a jednou za čas
se to nasype kernelu. Tuhle techniku používají některé komerční
mikrokernely, ve Windows částečně GDI, na Linuxu snad částečně
OpenGL.
c] Oddělovat procesy úplně jinak, pomocí garantovaných vlastností kódu.
Pak vše běží v kernelu mode, a při kompilaci kódu se matematickým
důkazem vyloučí, že by kód vůbec nějak mohl hrabat tam, kam nemá
(odborníci odpustí hrubé zjednodušení). Podle všeho právě to je
nejperspektivnější cesta. Používá ji Microsoft Singularity/Midori, JX
založený na Javě, a další projekty. Například Jonathan Shapiro, který je
za projektem BitC, nyní pracuje v MS právě na této technologii. Příští
či přespříští verze Windows CE a Windows budou zřejmě založené právě
na tomhle.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknomohl bys mi prosimte dovysvetlit to c] ci pripadne uvest link?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoc] Mějme binární kód spuštěný v kernel mode. Ten může v principu
udělat naprosto cokoliv, hrábnout kamkoliv v paměti atd.
Teď se naopak podíváme na .NET a Javu, tedy managed prostředí. C# i Java
jsou navržené tak, že nemají pointery, nelze v nich docílit přetečení
bufferu, nelze číst a zapisovat mimo hranice pole atd. Při překladu programu
můžete poměrně jednoduše říci, jaká API vlastně volá, a žádné jiné
volání tam nejde ukrýt (nelze třeba napsat volání SYSCALL v ASM, zapsat
ho jako data, a provést skok na místo kde jsou data uložená, protože to
jazyk neumožňuje).
Tohle otevírá možnost zcela průkazně říci, že program zaručeně
nemůže volat řekněme funkce pro práci s file systémem. Vyjma toho to
umožňuje zjistit, jestli rutina třeba nečte data mimo vstupních dat a
interních stavových proměnných, a nezapisuje jinam než do interních a
výstupních proměnných. Jde o vhodnou konstrukci jazyka a „chytrý“
překlad. Můžete tak například vyrobit aplikaci, která sice smí
přistupovat k file systému, číst z clipboardu a klidně zasahovat do
paměti jiných procesů, ale zároveň umíte zaručit, že to ta konkrétní
aplikace nikdy nemůže udělat, protože to ve zdrojáku prostě není. C/C++
tohle neumožňuje díky pointerům, způsobu práce s poli a řadě dalších
rysů.
Teď vezeme náš „zaručený“ kód v .NETu nebo Javě, přeložíme ho do
strojáku, a nechme ho běžetv kernel mode. Na začátku jsem psal, že
binární kód spuštěný v kernelu může spáchat cokoliv. Tenhle ale ne,
protože má naše „záruky“.
Projekt Singularity dělá přesně tohle. Celý OS včetně aplikací běží
v kernel mode, v jednom adresním prostoru, s oddělením procesů právě
těmi výše uvedenými „zárukami“. Kernel je napsaný téměř kompletně
v C#, aplikace výhradně v .NETu. Aplikace se dodávají ve formě CIL (.NETu
obdoba Javového bytecode), překlad do strojáku probíhá lokálně a
ověřují se u něj požadované vlastnosti kódu.
Výhody: na kód lze dát další „záruky“ (třeba že v network stacku
nikdy nemůže dojít k deadlocku), mizí naprostá většina security bugů,
o řády vyšší spolehlivost SW, velmi nízká režie context switche, velmi
nízká režie syscallu (obojí asi jako dnes switch mezi thready jednoho
procesu, tedy pekelně rychlé).
Nevýhody: pokud OS při kompilaci (z CIL do strojáku) špatně ověří
vlastnosti kódu, sandbox lze prorazit; kompilátor by tedy měl být
zatraceně spolehlivý. Jazyky typu .NET a Java jsou také pomalejší
než C/C++, ale to je téměř vyváženo tím snížením režie správy
procesů, viz výše.
Existující projekty: Singularity (research OS od Microsoftu), SharpOS
(založený na volně dostupných zdrojácích Singularity), JX (univerzitní
projekt stavící na Javě). Microsoft Midori, což je podle všeho interní
projekt MS pro vývoj core technologií pro další generaci Windows. Prvním
komerčním nasazením zřejmě bude nějaká příští verze Windows
CE/Mobile. Jinými slovy: tady se píše historie, stejně jako při vzniku
prvního UNIXu, Windows NT, nebo při startu Challengeru. Co z toho se bude
opakovat, to zjistíme do pár let.
Linky:
http://en.wikipedia.org/wiki/Language-based_system
http://en.wikipedia.org/wiki/Singularity_(operating_system) – viz
též externí linky na konci stránky, je to moc pěkné počtení, včetně
benchmarků.
http://research.microsoft.com/en-us/projects/singularity/
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZas takove psani historie to neni, pamatuji se, ze jsem o tomto pristupu slysel ve spojitosti s bell labs a tim systemem, co delali po Planu9, a u te myslenky se tam odkazovali hluboko do minulosti. Pak si jeste vybavuji system z doby nekdy pred 10 lety, ktery se vlezl na jednu disketu a byl v nem i webovy prohlizec.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPlan 9 měl jisté zajímavé vlastnosti. Nicméně MS má obrovskou koncentraci kapitálu, lidských zdrojů i know-how. Navíc je čím dál větší procento aplikací psané v .NETu, takže půjdou na novou architekturu poměrně snadno přenést. Díky tomu má možnost projekt slušně teoreticky podložit, a uvést ho v život nejen v laboratoři, ale i na trhu. MS úspěšně uvedl na trh DOS, Windows, Windows řady NT, a řadu dalších technologií, takže to asi celkem umí.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDost pochybuji. Viděl bych to na jeden z dalších marketingových hrobečků firmy Microsoft. Ale souhlasím s tím, že je MS dost silný na to, aby mohl plýtvat prostředky na podobné nesmysly a ustál to.
BTW – DOS není vynález firmy Microsoft. DOS existoval dávno před tím, než Bill Gates vylezl ze střední školy.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAle MS na něm vyděla Prachy (s velkým P).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProč by tohle mělo být marketingovým hrobečkem firmy Microsoft? Přínosy jsou zcela zjevné. Zvýšit bezpečnost a spolehlivost SW o několik řádů, a k tomu tak mimochodem učinit SW zcela nezávislý na HW platformě, to fakt vidíte jako „nesmysl“?
MS-DOS je produktem MS. Původně to byl QDOS, který byl zase obšlehem CP/M.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoQDOS
86-DOS
Tim Paterson
Seattle Computer Products
…
To je jen pár termínů které se vztahují ke stavebnici mikropočítače prodávané od roku 1979, skoro dva roky před tím, než IBM začal prodávat Model 5150 ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPřirovnal bych to ke komunismu – myšlenka je to krásná, ale v praxi nerealizovatelná. Tedy určitě ne tak, jak bychom si představovali.
Mluvil jste ale o DOSu, ne o MS-DOSu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProř by to nebylo realizovatelné? Brání tomu něco konkrétního?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProblém je v mezikódu. Má být spíše podoben nějakému vyššímu jazyku, nebo to má být spíše bytekód?
vyšší jazyk: výhoda – snažší možnost analýzy chování kódu ultimativním překladačem, snazší optimalizace; nevýhoda – komplikace primárního překladu (překlad jednoho vyššího jazyka do jiného, zvláště jsou-li si vzdálené, je problematický; problematická je jeho optimalizace – strojový kód, jakožto produkt dvojí kompilace z vysokoúrovňových jazyků, bude mít k optimalitě daleko) bytekód: výhoda – snadný primární překlad, relativně snadná optimalizace už v průběhu primárního překladu; nevýhoda – velmi omezené možnosti analýzy chování v průběhu ultimativního překladu; spousta konstrukcí se musí přeložit v podobě makra, obsahující testy, jež by jinak byly zajištěny na hardwarové úrovni mnohem transparentněji a rychleji
V neposlední řadě je třeba připočíst také nemožnost tvořit (pod)programy v Assembleru.
Jak říkám – tohle tu už bylo, ale výsledky byly velmi problematické. Řešení, založená na a omezená jedním konkrétním jazykem (jako Smalltalk, Oberon apod.) se také neukázala jako optimální.
P.S.: poznámka o ZX Spectru v tomto kontextu vyznívá poněkud jinak, neboť k realizaci „language-based OS“ by opravdu stačila jen velmi rychlá varianta procesoru Z80.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMezikód je dávno vybraný. Je to MS CIL. Už dnes existuje řada jazyků překládaných do CIL (C#, VB.NET, J# a další). CIL byl navržený s ohledem na optimalizaci kódu i na analýzu kódu. A provedená měření (viz linky na Wiki) dokazují, že oddělení procesů je v Singularity řádově méně náročné, než jejich HW oddělení. Nemožnost tvořit podprogramy v ASM je původní záměr. Současný vývoj Singularity ale počítá s různými stupni „důvěry“ kódu. To pak umožňuje běžet i klasické procesy (podle mě je cílem kompatibilita s Win32). Detaily implementace jsem ale nestudoval.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá jsem to taky nezkoumal, jen jsem v tomhle ohledu na základě poznatků z jiných projektů skeptický. Taky je rozdíl, jak to funguje na „laboratorním stole“, a jak to může fungovat v praxi. Jak říkám – myšlenka to není ani zdaleka originální, ani zdaleka nová ani převratná, a proto bych nějak moc nejásal. Už si na tom vylámali zuby jinčí kádři, než je Microsoft. ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá bych byl opatrně optimistický. Změna je potřeba, protože bezpečnost a spolehlivost SW je na děsivé úrovni v celém IT průmyslu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoCo třeba Microsoft Bob? Taky „převratný vynález“, který je dnes jen hrobečkem.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA co má s diskutovanou tématikou společného Microsoft Bob? Dokazuje nějak jeden neúspěšný projekt firmy, že jiný naprosto odlišný projekt musí být také neúspěšný?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoBob i WinFS jsou převratné vynálezy, u kterých by bylo hezké, kdyby se nasadily, ale umřely. Naprosto stejně to vypadá se Singularity. Mimochodem Singularity není první, kdo s něčím takovým přišel, daleko pokročilejší Inferno (které umělo i běžet na jiném operačním systému nebo distribuovaně) také pohořelo.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoBob je koncept GUI, který prostě nebyl úspěšný. U WinFS byl problém v tom, že by bylo nutné upravit všechny aplikace, a navíc řešil primárně metadata. Když doba dozrála k fulltextu, ukázalo se, že lze metadata indexovat spolu s textem, a WinFS pak vůbec není potřeba. Inferno bylo napsané v C, se Singularity mělo společné jen některé rysy. A když jsme u historie, tak Apple Newton neuspěl, kdežto Windows Mobile uspěly. Jinými slovy z ničeho nevyplývá, že by se systém založený na Singularity měl stát marketingovým hrobečkem. Nabízí totiž cestu v před u problémů, které postihují celé současné IT: bezpečnosti a spolehlivosti SW. K tomu má MS velkou koncentraci kapitálu. lidských zdrojů i know-how. Pravděpodobnost úspěchu vidím jako poměrně velkou.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAno, nabízí spoustu řešení, ale také nabízí spoustu problémů. A to ještě víc problémů, než ještě nedávno prosazovaný (a daleko snáze nasaditelný) Trusted Computing, který je také marketingovým hrobečkem. Pravděpodobnost úspěchu takového projektu vidím velmi malou, zůstane z toho jen výzkumný projekt.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSystém určený do každého podniku a na každý stůl, a s GUI? To je spousta problémů. No a dnes máme Windows úplně všude :) TPM nemá s diskutovanou problematikou nic společného. To bychom jako příklad mohli uvádět také elektrické otvíráky konzerv a elektrické nože :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTrusted Computing (ne jen TPM, které z něj zbylo) řeší to samé, co Singularity (bezpečnost aplikací a systému), akorát je zpětně kompatibilní a je s ním mnohem méně problémů, než s nasazováním Singularity, které např. úplně rezignuje na zpětnou kompatibilitu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTrusted Computing může bezpečnost a spolehlivost SW vylepšit jen nepatrně. Singularity umožnuje daleko větší pokrok. Navíc Singularity je v principu kompatibilní s .NETem, a poslední známý vývoj se zabýval právě možností běžet paralelně i klasické procesy (tj Win32 kompatibilita).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„No a dnes máme Windows úplně všude :)“
Opravdu? Vy mate doma satelitni receiver, wi-fi router, home NAS a dalsi domaci zarizeni, pripadne HPC v praci (neco z Top500) s OS windows? Ja v nich mam linux aniz bych se o to nejak pricinil takze linux je na vsem a windows by byl rad ve stejne pozici jako je dnes linux ;-). Uprimne, o techto zarizenich bezicich na OS windows (wifi a receiver) jsem nikdy neslysel (vyjma nekolika NAS exotu) a to jsem hledal informace dost poctive a dlouho.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoS bezpečností a spolehlivostí se dostanou nejlépe na úroveň současných UNIXů, kde se většina problémů týká aplikací, nikoliv systému. Nezávislost na platformě je už skoro realita – webové aplikace, skriptovací jazyky, multiplatformní knihovny… a jak znám M$, tak nezávislost stejně omezí na platformu Windows. A na tom to také jako obvykle chcípne, byť si na své dolary nejspíše přijdou. Ale aspoň jim to usnadní vývoj jejich vlastního systému, ze kterého se tím vyhází pár anachronismů.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoUNIXy jsou děravé, jako cokoliv jiného v IT průmyslu. Nezávislost na platformě je fikce, ne realita. Webové aplikace jsou díky HTML interfacu ve srovnání s desktopem pořád chudými příbuznými. Multiplatformní knihovny představují kompromis, který na každé platformě vypouští část její funkcionality. Navíc uživatelé na každé platformě čekají něco jiného. Na MacOS chtějí menu jako součást horní lišty, a minimum nastavování někde ve File/Preferences (OOo/X11 je mimochodem zcela katastrofickou ukázkou mizerného portu). Ve Windows čekají menu v okně aplikace, ukládání nastavení do Registry a konfigurační dialog v Tools/Options. Na Linuxu se zase nosí komentované textové konfiguráky.
Důkazem mého tvrzení o multiplatformním SW je fakt, že úspěšného multiplatformního SW je minimum. A kde je aplikace úspěšná na více platformách, tam je zpravidla silně upravená pro cílovou platformu (viz MS Office pro Mac). Výjimek je jen pár.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNejvyšší čas, aby někdo vymyslel multiplatformní platformu …
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPokud vím, tak MS pouze přeprogramovala původní QDOS, který koupila za směšný peníz. Každopádně ten systém jsem používal a ještě si pamatuji na Win3.11 (už tenkrát jsem měl choutky ten systém celý změnit dle obrazu svého, ale mě laikovi to prostě nešlo, a nešlo jen o vzhled, jednu dobu mé Windows 3.11 vypadaly jako Win95), které se tenkrát ještě spouštěli právě přes MS-DOS. Je také zajímavé sledovat jiné projekty z té doby. Např. jsem četl o jistém poněkud lepším systému, ale bez dobrého marketingu (nemyslím Linux xD ). Na tomto příkladu je vidět, že MS má opravdu sílu prosadit i věci nedokonalé či s rizikem budoucího krachu. Neříkám, že je to špatně. Každopádně s každou novou verzí je tam čím dál více skryt příkazový řádek. Z čistě nostalgických důvodů mi docela chybí a tak vítám možnost dělat některé věci právě přes konzoli. Kolikrát si jednoduchým příkazem zkrátím čas práce – a to se vyplatí – čas jsou peníze. MS-DOS, ačkoliv je to (částečně) výtvor od MS, mě velmi inspiroval a už tenkrát jsem dělal pokusné skripty atd., dost mě bavilo dělat věci jinak, než mi systém určoval. Možná proto mám Linux tak rád. ;) No, ale nebudu se tu už opakovat. Pro LO – vím, že Win7 je úžasně dokonalý, ale zadarmo ho nedostanu, takže smůla. A ještě dotaz, bude v ČR dostupný i family-pack a jaká bude možnost lokalizace, když si kvůli tomu packu koupím Windows v zahraničí, abych ušetřil? 3 lidi v rodině (včetně mě na experimentování) by si ho totiž chtěli koupit. Jak to vidím, bude to ale jen asi ořezaná OEM verze. Tak co, LO, máš tyto informace? Věřím, že PR by to měli vědět. (PS, nesnáším nelegální verze čehokoliv)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMS koupil QDOS, včetně jeho autora (který pracuje v MS dodnes). Původní QDOS byl poměrně primitivní obšleh CP/M, ale MS-DOS verze 2.0 byl prakticky nový systém. Kompletně se přepsalo API, a to staré tam zůstalo jen pro kompatibilitu s CP/M (a pro moje tehdejší programy).
Příkazového řádku si ve Windows můžete užívat dle libosti. máte k dispozici nejen jednoduchý cmd.exe, ale také PowerShell, který přináší po desetiletích opravdové novinky.
Windows 7 jsem ještě nezkoušel. Ale jestli jste bez jejich skouknutí došel k názoru, že jsou dokonalé, tak hoši z MS PR udělali svou práci velmi dobře :). Podle dosavadních zpráv Family Pack v ČR (zatím) nebude. Když si koupíte nečeskou verzi Family Packu, tak na ní nepůjde aplikovat Language Pack, protože ten je určený jen pro Windows 7 Enterprise a Ultimate. Možná by šlo upgradovat licenci s Family Packu na Ultimate, a potom instalovat Language Pack, ale zřejmě se to finančně nevyplatí. Moje doporučení: kupujte Family Pack v UK, anglicky snad umí i vaši blízcí.
Family Pack není nijak ořezaný, a licence lze přenášet mezi počítači (vyhodíte počítač a koupíte nový – přesunete licenci). Jinak OEM verze jsou funkčně shodné s retail verzemi, jen jsou vázané na konkrétní HW, se kterým byly prodány.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOK, dejte mi prosím nějaký link na ten Powershell. Mě se na Linuxu třeba líbí, že příkazy se dokončují automaticky tabem (umí to Powershell?) a podobné příkazy lze použít napříč systémy (OpenSolaris atd.). Jinak mohu i instalovat centrálně pomocí shellu ve Windows a jiné věci, na které jsem v Linuxu již dávno zvyklý?? K Win7 – já osobně je nemám, ale kamarád je vychvaluje. A to má RC verzi. Na PR nedám, jsou to jen kecy, kecy a ještě jednou kecy. Konečně snad výzva pro Linux. ;) Jen na těch virech bude MS muset zapracovat. Je ostuda, že nenabízí vlastní antivir, který je vysoce účinný, zdarma v rámci systému. Jakési pokusy jsou, ale vždy se usmívám nad dodávaným sw s Windows. Jen trial verze docela nespolehlivých antivirů. Uživatel Ubuntu dostane systém bez virů a již nic nemusí platit a starat se o bezpečnost. Vše díky výborné bezpečností politice (ne, to co se mi chystáte odpovědět, už vím a je to blábol). Líbí se mi, že pokud se objeví bezpečností chyba, během několika hodin či dnů mi na Ubuntu dojde aktualizace, dále všude musím zadávat heslo a mnoho dalšího. Stačí jen dodržovat obecné bezpečností pravidla a dá se žít i bez antiviru. Ano, sháněl jsem nějaký pro Linux, ale všechny léčí viry jen pro Windows. No tak takový antivir je mi opravdu k ničemu, pokud ho neprovozuju na serveru. Navíc GUI otřesné (asi protože je koncipované pro servery)… Jinak díky za rady. Asi se na nákup vykašlu. ;) Stačí mi systém zdarma a technickou podporu si dělám sám.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPowerShell není o doplňování příkazů tabem. PowerShell je objektový, takže můžete vzít seznam objektů typu Service (service je obdoba deamonu; pracujeme přímo s objekty servisů, ne s textovým seznamem servisů), vyfiltrovat objekty které mají vlastnost State nastavenou jako Stopped, a zavolat na ně metodu Start. Mimo jiného můžete třeba získat seznam oken na obrazovce, vyfiltrovat je podle názvu, a zminimalizovat. Ostatní shelly (včetně cmd.exe) jsou proti tomu pravěk, který za posledních 30 let nepostoupil od konceptu „spustit utilitu, naparsovat výstup, a s výsledkem spustit jinou utilitu“.
PowerShell
Ve Windows nemůže mít antivirus součástí dodávky. Byla tu už spousta řevů kvůli tomu, že si MS „dovolil“ přibalit browser, přehrávač multimédií, IM klienta atd. Ale v současné době je v betě Microsoft Security Essentials, což je rychlý antivirus zdarma. Zdarma nabízí antivirus také minimálně Avast a AVG. A samozřejmě antivirus používat nemusíte, je to čistě dobrovolné.
U předinstalovaných antivirů naprosto souhlasím. Minule jsem si koupil notebook s Nortonem, a bylo to utrpení. Něco tak pomalého jsem ještě neviděl.
Dodržovat všeobecná bezpečnostní pravidla zní jednoduše. Kdyby měl Linux miliony uživatelů, kteří bez rozmýšlení spustí jakýkoliv executable přibalený k emailu, pokud jim řeknete, že je to srandovní efekt nebo screensaver s nahou celebritou, tak byste asi mluvil jinak. Dialog s varováním uživatelé ignorují. Když jim zakážete otevírat executables, tak s klidem rozbalí ZIP přiložený k mailu pomocí hesla z přiloženého obrázku, a poté spustí tu zabalenou aplikaci. Pak je to bez antiviru těžké, nemyslíte?
Aktualizace po hodinách či dnech nejsou špatné. Problém je, že aktualizace je nutné důkladně vyzkoušet, aby se špatnou aktualizací nepodařilo odstavit miliony strojů najednou (už se to povedlo distrům Linuxu, autorům AVG atd). Zadávat všude heslo je naopak na nic, protože 1) uživatele to štve, takže požadavek na heslo vypne (viz řada lidí, kteří tvrdí, že ve Vistě na prvním místě vypínají UAC); 2) bez dodatečných opatření: není jisté, že se vás na heslo ptá opravdu cílová aplikace; heslo lze triviálně odposlechnout (odposlech window messages nebo X11 events); heslo lze zadat automaticky (posláním window message nebo X11 eventu).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDobrý den, chtel bych se vas zeptat na osobni otazku… Podle toho co pisete v tomto topicu usuzuji ze se v operacnich systemech vyznate a Vase znalosti sahaji dost i do programatorske oblasti. Chtel bych se tedy zeptat jake je Vase povolani a jakou skolu jste vystudoval. Neni to nic osobniho jen me zajima kde jste k takovym znalostem prisel. Ja studuju telekomunikace a mam kamarady na fakulte informatiky, ale co se tyka architektur OS tak ani oni kolikrat nemaji odpoved na me otazky… Jeste bych dodal ze napatrim ani na jednu stranu(lin/win). Beru to vse neutralne…na neco je dobre to na tamto zase ono… Diky za odpoved
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMusím vás zklamat, osobní informace nepodávám. Pokud se chcete o počítačích dozvědět opravdu hodně, tak je škola dobrým základem. Ovšem skutečně zásadní je zájem o věc, samostudium a praxe; bez toho žádná škola nepomůže. Ať vás zajímají počítače nebo cokoliv jiného, tak jsou tu vždy školy, stohy literatury, a možnosti získání praxe. V Praze patří mezi dobré školy FIT ČVUT a MFF UK, jinde třeba Technion nebo TU/e. Literaturu vám doporučí ve škole, případně si najděte doporučení na stránkách jakékoliv dobré školy. K tomu doporučím Intel® 64 and IA-32 Architectures Software Developer's Manuals, Windows Internals na u-tokyo, Wikipedii, a samozřejmě spoustu šťourání v počítačích ;).
Navíc v ČR není problém si zapsat prakticky cokoliv, takže můžete ke svému současnému studiu přibrat klidně grafologii :). Na státní školy navíc může chodit na přednášky kdokoliv z ulice, bez zápisu ke studiu (a viděl jsem to i v praxi).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNeposlouchejte Laela, on nic neumí a nic vám neřekne, jen bezduché plácání, nic víc. Odkazovat na školu fakt může jen člověk, který se tu ohání školními znalosti, ale praxi má nulovou.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„Odkazovat na školu fakt může jen člověk, který se tu ohání školními znalosti, ale praxi má nulovou.“ Člověče nešťastná, už to nehulte, leze vám to na mozek. Takt jste takhle schopný odpovědět na to, co jsem napsal? „Ovšem skutečně zásadní je zájem o věc, samostudium a praxe; bez toho žádná škola nepomůže.“
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoad FIT – Odvážné tvrzení o ústavu, který existuje teprve několik měsíců. ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoFIT vznikl z FEL. Lidé zůstali a přešli, takže nevidím důvod, aby se to nějak výrazně měnilo.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoI Microsoftu se povedlo odstavit miliony stroju s jejich dokonale otestovanymi aktualizacemi a to hned nekolikrat. Nezapominejme na jejich uspechy, clovek by si mohl myslet ze zapominate zamerne :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoShell je od toho, aby primárně sloužil jako spouštěč programů s rozličnými parametry a na skriptování. Na psaní programů máme přeci tolik jazyků (C, Java, Python, PHP, atd.). Nevím, kam by se měl pohybovat. Co se týče OOP, tak tomu jsem nikdy nepřišel na chuť. Čistě osobní názor, ovšem sdílený s pár (oproti mě) pokročilejšími kolegy.
K antiviru – no, ten by měl být nabízen volitelně, aby ho šlo stáhnout přes internet bez otevření prohlížeče. Prostě obdoba výběru prohlížečů, která snad bude fungovat. Mohlo by se to zavést i na Ubuntu atd., i když tam mi výběr FF vyhovuje. Jinak nepoužívat antivir na Windows je IMHO sebevražda.
Kdyby měl linux miliony uživatelů? On je ale má ;). Jen si to nikdo nechce připustit. Vemte si velké portály, např. Seznam.cz, na čem jede? Na Linuxu, pokud mám správné informace, tak na Debianu. A kolik uživatelů má Seznam? Takže tak. Samozřejmě že srovnávat s desktopem to asi nejde, ale uživatelé to jsou IMHO. Já nevím, ale já si myslím, že Linux je velmi dobře zabezpečen (ověřené zdroje, nutnost podpisů při instalaci, rootovské akce potřebují zadání hesla a mnoho dalšího). Kdo si ukládá hesla a vypíná zadávání hesla při přihlášení a jiné lotroviny, tak ti si viry zaslouží. ;) Kolegu jsem párkrát zprdl, že si nepamatuje heslo od Google a spoléhá na paměť prohlížeče, no a teď si kvůli tomu musel dělat nový mail. Já ho naučím. ;) Už si hesla pokorně pamatuje. Jo a dialogy s upozorněním nestačí, je nutno zadat i heslo, aby to uživatele alespoň trklo. Jinak si ty viry fakt zaslouží a přeju jim to. Jinak uživatele to sice může štvát, ale pak ať si nestěžují na viry. Nesnáším ty jednoduché lidi. Kdo chce, naučí se. Můj názor je, že počítač prostě není pro každého.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProč byste měl skrptovat právě a jen spouštěním programů s parametry, a následným parsováním výstupu? Má to řadu omezení, o některých jsem psal. Objektové programování je dobrý nápad, a právě PowerShell ukazuje, jak ho velmi dobře využít i při skriptování. V praxi většinou neexistují relevantní důvody, proč se OOP vyhýbat.
Proč byste chtěl stahovat antivirus bez nutně otevření prohlížeče? I dnes asi najdete antivirus na FTP nějakého výrobce, ale uniká mi důvod.
Ten výběr prohlížečů vnucený od EK je samozřejmě pěkně nesmyslný. Za chvíli bude MS jako autor produktu mít instalační wizard o 100 krocích. Krok 21: vyberte prohlížeč, sto možností. Krok 21, vyberte přehrávač multimédií, dvě stě možností. Krok 67, vyberte kalkulačku, tisíc možností. Krok 99, vyberte instant messenger, stovky možností. Samozřejmě k tomu bude MS dotlačen, aby byl zachován svobodný trh. A samozřejmě tím nijak nebudou dotčeny svobody MS, protože v EU platí svobody jen pro toho, koho má EK zrovna v lásce. Ostatním může EK udělovat kdykoliv jakékoliv pokuty, bez pravidel, bez pevných kritérií. Fuj.
Fakt vám připadají miliony uživatelů Seznamu k věci, když se bavíme o uživatelích desktopů? Oni totiž uživatelé Seznamu na ty servery zpravidla neinstalují kdejakou blbost obsahující malware, nezakazují aktualizace atd.
Linux je zabezpečen jedinou věcí, a to je jeho zanedbatelná rozšířenost. Digitální podpisy nejsou při instalaci nutné na Windows ani na Linuxu, a podporované jsou na obou platformách. Ovšem ve Windows jsou podepsané i ty nainstalované soubory, aby bylo možné podpis v případě potřeby později ověřit. Navíc pokud změníte či smažete soubor, který je součástí Windows, tak se automaticky nahradí původní verzí. Rootovské akce sice vyžadují heslo, ale pokud víte něco o X11 events (na Windows window messages), tak jste si všiml, že lze odchytit a podvrhnout stisky kláves (a řadu jiných věcí). Ve Windows to řeší Secure Desktop, což je ta šedivá obrazovka použitá u zpráv UAC.
Počítač s unixem jistě není pro každého. Také si všimněte, že cestu na stůl uživatelů našly ty systémy, které se používají i spravují celkem jednoduše. DOS, MacOS, OS/2, Windows. Unixy se nikdy na desktopu neuchytily, protože jsou k uživatelům vysloveně nepřátelské. Linux přinesl jistá vylepšení, ale zjevně to nestačí. Nedodělky, nefungující aplikace, složitá správa, chybějící a mizerná lokalizace, GUI jako když pejsek a kočička vařili dort, nemluvě o výrazně odlišných stylech GUI pro různé aplikace (Qt vs GTK vs Java). A pro autory SW je to zjevně také problém. Několik frameworků, ale ani jeden není funkcemi srovnatelný s platformou Windows. Dokumentace ve srovnání s MSDN mizerná, školení na trhu prakticky nejsou.
Naštěatí tu ale máme i systémy jako Windows a MacOS, které jsou psané pro uživatele.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOOP sice je dobrý nápad, ale není to zázračný všelék. Ačkoliv se mi jako hračka převelice líbí (svého času jsem hodně propadl Smalltalku), přesto většina mých vážněji míněných věciček nebyla OO. Strukturovaně-modulární návrh vycházel jednodušší – odpovědně provedený OO návrh by pokaždé vycházel neuvěřitelně „ukecaný“ a nepřímočarý.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOOP samořejmě není všelék. A jako každá technologie má i své problémy.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMě vyhovuje Linux i s tím jeho špatným (dle vašeho názoru) GUI. Já si říkal, tak napíšu té holce, co jsem jí před časem nainstaloval Ubuntu. Pane, vy tu kydáte nesmysly a jste velmi zaujatý. Víte, co mi řekla??? Že je to výborné a vše jí funguje. Nic si nerozhodila a je spokojena. Řekněte mi k sakru, co je na tom user-unfriendly. Je to přehledné a lehce se to spravuje. Tak tu nekydejte špínu na něco, co neznáte. Už mě Laeli neštvěte. Jste divný člověk a velmi zaujatý. Já jsem zaujatý Linuxem, ale mám pro to své dobré důvody. U Windows je nevidím. Ani jedno plus Windows nemohu potvrdit, co jste tu napsal. Sleťte z oblak!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá Windows aktivně používal, vy Linux evidentně aktivně ne, tak raději mlčte. Jinak byste věděl, že tvůrci Ubuntu a podobných distribucí se snaží o maximální přívětivost a ono to panečku opravdu funguje. ;) Každopádně si tu pište, co chcete, mě už je to fuk. Ale nesnáším lži… Linux má dobré GUI, já mám rád přehledné GTK a pár chybiček mi ho nezprotiví. Ano, pro programátory je jeho API vskutku velký oříšek, ale myslím si, že Win API na tom není o mnoho lépe.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPowershell: http://en.wikipedia.org/…s_PowerShell Jinak dokončování tabem umí, ale to umí i původní shell.
Antivirus zdarma od MS http://www.microsoft.com/…_ESSENTIALS/ z našeho regionu nelze oficiálně stáhnout, ale z nějakého mirroru ano.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoIE8 je také psaný v .NETu? Viz tohle… Jestli takhle funguje .NET a ty lidské zdroje Microsoftu, tak radši zůstanu u BASICu, ten je podstatně bezpečnější.
P.S. Dávám přednost Sinclar BASICu, ty od MS na něj i přes několikanásobné množství příkazů neměly :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMSIE 8 není psaný v .NETu. Trident engine je psaný v C++, a je pěkných pár let starý. A ten link opravdu pobaví. Zase někdo bere do ruky debugger, místo aby četl MSDN :)
http://msdn.microsoft.com/en-us/library/bb756991.aspx
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZas někdo ladí Svobodnou Evropu, místo aby četl Rudé Právo?
Jako v tom starém vtipu, kde na schůzi chlapi poslouchají, jaké je to v tom Sovětském Svazu skvělé, jaký je tam pořádek, jak jsou plné obchody a dělníci pracují rádi a z plných sil…
Přihlásí se Franta Novák a povídá: „No víte co, já jsem v tom Sojuzu byl, a měli tam pěkný bordel, v obchodech regály prázdné, kolbeni se v pracovní době flákali po městě a chlastali vodku.“
A na to školitel: „Novák, míň cestovat, víc číst!“
Proč M$ sám ve svém NEjnovějším, NEjrychlejším a NEjbezpečnějším prohlížečí používá nějaký vykopávkový Trident a ne tolik propagovaný .NET? Možná proto že by pak byl ještě pomalejší než kdybych ho napsal v tom BASICu na Spectru ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMilý Radovane, až napíšete nějakou velkou aplikaci, budete tohle vědět sám. Kvalitně napsaný kód nemá smysl přepisovat do nového prostředí jen proto, že je nějaké nové prostředí k dispozici.
.NET je o trochu pomalejší, než nativní aplikace. Ale kdybyste o projektu Singularity něco málo věděl, tak by to bylo asi i to, že oddělení procesů pomocí invariant je výrazně rychlejší, než tradiční oddělení procesů. Takže co tratíte na pomalejším .NETu, to zase získáváte na nižší režii správy procesů. Najdete to pod heslem Singularity na Wikipedii, v jednom z linkovaných PDF dokumentů, včetně výsledků měření.
No a teď sde můžete zase vrátit ke svému ZX Spektru.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoKvalitně napsaný kód…
:-)))))))))))) IE, to je fakt ukazka „kvalitne napsaneho kodu“ jako stehno. LMAO!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMSIE je komponentový, FF je velký binární BLOB. Trident je multithreadový, Gecko pořád ne. MSIE je možné rozšiřovat na úrovni browseru i stránek, FF jen velmi omezeně. MSIE běží v sandboxu, FF ne. Zato měl FF za minulý rok více děr než MSIE. No tak nevím..
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMSIE běží v sandboxu, FF ne.
Ano, ten „sandbox“, ktery tady jiz byl popsan, to je opravdu ukazka bezpecnosti a kvalitniho programovani nejvyssi urovne. :-)))))
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNe, to není ten sandbox. To jen zase nevíte, o čem mluvíte.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoFF je komponentový, založený na XUL. FF lze rozšiřovat velmi detailně na úrovni browseru i stránek, právě díky XUL. MSIE stále s velkým odstupem vede v počtu kritických chyb a dlouhé době, než jsou dostupné opravy. Navíc MSIE dodnes neumí správně vykreslovat stránky a nepodporuje XHTML ani SVG.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoFF NENÍ komponentový, je to velký binární BLOB. Rozšiřovat ho lze, ovšem doplňky nejsou kompatiblní ani mezi minor verzemi. Spolu s pomalým XUL je to dohromady velká hrůza.
MSIE umí vykreslovat stránky správně. Naopak řada stránek pořád nejde korektně ve Firefoxu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoFF NENÍ komponentový, je to velký binární BLOB
Prosimte, bez si o tom neco precist a do te doby uz mlc, svou blbost jsi tady ventiloval jiz dostatecne.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoFF je komponentový, jediný „binární blob“ je jádro, které zpracovává XUL.
XUL je zpětně kompatibilní. Nekompatibilní jsou některé doplňky, které spoléhají na nedokumentované vlastnosti (což je ale i spousta aplikací ve Windows a doplňků pro IE). Navíc XUL je (na rozdíl od doplňků do IE) multiplatformní.
MSIE neumí vykreslovat stránky správně: http://www.gtalbot.org/BrowserBugsSection/MSIE8Bugs/ Ve FF je oproti tomu bugů naprosté minimum (v současné verzi jeden) a řada stránek nejde korektně ve FF, protože ta řada stránek je špatně napsaná (spoléhá na chybné chování IE místo na standardizované chování).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoU MSIE není problém použít komponentu HTML rendereru Trident, XML Parseru nebo třeba toolbaru v jakékoliv jiné aplikaci. Pokud jsem si všiml, tak u FF tahle možnost není. Gecko je použito jako komponenta tak, že autoři FF použili cut and paste zdrojáku. Takhle si komponenty nepředstavuji. Opět pokud jsem si všiml, tak prakticky vše co je psané v XUL má problémy s novějšími verzemi FF. Multiplatformnost je uživateli ukradená, protože uživatel používá jen jednu platformu. MSIE zobrazuje stránky tak, jak je popsané v jeho dokumentaci na MSDN. Doporučení W3C se úplně nedrží řádný browser, a Firefox není výjimkou. Pro uživatele je pak důležité, aby se mu webu zobrazovaly správně. V tom je pro něj FF daleko horší. Navíc velké procento stránek ani není W3C validní.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMultiplatformnost neni uzivateli ukradena od chvile co zjisti ze jim poptavane reseni domaci site je proveditelne pouze na platforme PPC/Arm. Sales odorniky MS doporucuji neposlouchat, ti vam zdarma nepredelaji windows a aplikace na tento HW ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOMFG, desitky tisic rozsireni FF svedci o jeho nerozsiritelnosti a nedostatku rozsireni :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVelice zalezi, co Vam tam bezi. Syscally jsou uz dost optimalizovane a k castemu prepinani kontextu dochazi jen u nektere zateze. Napriklad u nfsd (a podobnych), ktere bezi v kernel mode, zmenou na diskutovanou architekturu 100% prodelate.
IMO to uspech mit nebude, stejne jako ho nemel Plan9, ktery mel nahradit UNIXy – ty ale byly proste dostatecne dobre, takze do prechodu se nikomu nechtelo.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNezapomínejte, že cílem není zrychlení stroje. Zrychlení dosáhnete třeba i prostým použitím OS bez oddělení procesů. U Singularity je cílem zvýšení spolehlivosti a bezpečnosti SW, plus možnost zaručení nějakých parametrů. A je snahou to realizovat zároveň s co nejlepším výkonem. Současná implementace ukazuje, že i když některé věci budou díky kontrolám nutně pomalejší než u klasického OS, tak zisk výkonu díky nižší reřii správy procesů dovede tuhle ztrátu výkonu snížit, smazat, nebo v některých případech obrátit ve výhodu.
Jaká je alternativa k systémům stylu Singularity? Patlat další desítky let kód v C/C++? Ono je něco jiného psát kernel prapůvodního UNIXu, a něco jiného psát ve stejně nebezpečném prostředí SW pro rok 2020. Už řadu let celý IT průmysl trápí záplava bezpečnostních a funkčních chyb SW. MS má navíc kapitál, lidské zdroje i know-how. K tomu má dlouhou řadu partnerů po celém světě. A navíc úspěšně zvládl přechod od DOSu na Windows, od Windows na Windows NT, od Xenixu k OS/2 a Windows NT atd. Plan9 neodpovídal na existující problémy, ani neměl podobné předpoklady pro úspěch.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDalsi desitky let se stejne bude v C/C++ programovat, stejne, jako se dnes porad jeste programuje v cobolu. Pochybuju, ze vsichni zakrici hura a s radosti prepisou svuj software.
Ja osobne fandim Erlangu.
Prechod od DOSu k win byl uspesny po marketingove strance, technologicky to byla hruza.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOvšem aplikace v C/C++ budou takoví exoti a technologický pravěk, jako dnes aplikace v COBOLu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPochybuji, na urovni blize k hw se Ccko udrzi jeste hodne dlouho.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA zároveň bude důvodem děr a nespolehlivosti většiny SW :/. To si pak můžete vybrat. Mít systém „na urovni blize k hw“, nebo bezpečný a spolehlivý?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAle pokud jsem se správně dočetl, tak základ Singularity je napsaný v C a assembleru, ne v Javě ani C#. Může te mi laskavě vysvětlit, jak napíšete kernel třeba pro x86 bez jediného použití assembleru třeba v Javě.
Nebo jste spolu s Microsoftem oběvil způsob jak napsat OS, který nepotřebuje žádný hardware.
Navíc Singularity bude právě tak splolehlivý OS, jak spolehlivé bude jádro a nějaký ten runtime enviroment. Vzhledem k spolehlivosti jiných produktů MS si dovolím tvrdit, že tento OS bude rájem rootkitů. Přetečení bufferu toho analizátoru CIL kódu, díra v síťové komunikaci (vše napsané v tom zlém C)… A hurá jsme v kernel space, geniální.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoČetl jste špatně. Text na wiki začíná slovy „The lowest-level x86 interrupt dispatch code is written in assembly language and C“. To je pochopitelné, protože zrovna tohle se v managed jazycích dělá blbě. Jenže text také pokračuje. Naprostá většina Singularity je psaná v C# (resp. Sing#, což je rozšíření C# s invarianty a podporou paralelního programování), Hardware Abstraction Layer je v Managed C++. Jinými slovy prakticky nic ze Singularity není napsané v „tom zlém C“ nebo ASM. Výjimkou je těch pár výše zmíněných řádek. Doporučuji k přečtení následující:
http://research.microsoft.com/pubs/69431/osr2007_rethinkingsoftwarestack.pdf – úvod do Singularity
http://research.microsoft.com/pubs/81154/helios.pdf – Helios, další research OS postavený na Singularity. Je schopen vzít aplikaci psanou v CIL (.NETu), a rozsázet ji na různé výpočetní jednotky, které váš systém má. Network stack může běžet na chytré síťové kartě (pokud ji máte), kus aplikace na GPU Intel Larrabee atd. Kde co poběží, to se určí dynamicky podle parametrů vašeho stroje. Takhle bude možné využít výkon desítek nebo stovek různých CPU jader, které v počítači máte či budete mít. Testy ukazují na nárůstvýkonu o desítky procent. Pěkné, nebo ne?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoKaždý teoretik vám řekne, že C(++) je v současnosti (nad)užíváno i v projektech, pro něž by byl vhodný jiný jazyk. Ale těžko můžete někomu nařizovat, v čem má programovat; navíc je třeba brát v úvahu schopnosti většiny programátorů – znají C/C++, ale nezvládají je suverénně. V jiných věcech odmítají vyvíjet a v tom v čem vyvíjejí to obvykle pořádně nezvládají. Pochybuji, že Microsoftu se podaří tyto zvyky změnit.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoKaždý OS má jazyk, který je pro něj nativní. Například unixy mají definici interfacu v C (POSIX). Pokud má OS typu Singularity API kompletně v .NETu, tak vývojáři asi nebudou psát aplikace v C. Problém není v tom co programátoři (ne)zvládají. Problémem je fakt, že programátoři v principu dělají chyby. C/C++ jednak svádí k chybám, a potom ty chyby často končí tichým vyhnitím aplikace (Valgrind a podobné nástroje řeší malý kousek problému).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoValgrind resi znacnou cast problemu, ale spousta programatoru o takovych nastrojich ani neslysela.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTa dokumentace nic nemění na tom, že je to hnusný hack (jako kdyby se to nedalo vyřešit při resolvení symbolů, sám jsem už udělal několik takových knihoven – nebo Windows nic jako LD_PRELOAD neumí?), který navíc lze velmi snadno obejít.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTak na prvním místě je třeba opakovat, že je blbost brát do ruky debugger a patlat s ním, když je věc zdokumentovaná. Na Linuxu je to pravda s dokumentací mizerné, a proto se časato leze do zdrojáků. Naštěstí jiné systémy mají lepší dokumentaci.
Detaily implementace Protected Mode mě moc nezajímají. Pracuje to podle dokumentace, a to je důležité. Navíc autor nijak neprokázal, že dochází k modifikaci kódu knihovny. Jedná se jen o jeho odhad. Klidně může jít o běžný API hooking.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNejde o API hooking, který funguje přes exportované symboly (= změna adresy funkce), jde o hnusný hack, při kterém se mění kód knihovny, resp. se přepisuje prolog funkce, který lze navíc jednoduše obejít (= fakt super zabezpečení) a je úplně jedno, jestli je to zdokumentované a prodávané jako „super technologie“ (což MS dělá).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo nema cenu… s nim se neda debatovat, jen tady mele svoje marketingova moudra, FUD a blaboli o vecech, kterym nerozumi.
Minule jsem mu tady uvadel skvely priklad „zabezpeceni“ vypnutim kusu kodu, ktery zpusobuje zbesile spamovani aplikacniho logu ve Windows prostym klikanim v napovede (CHM soubory). Reseni MS? No, popiseme to v KB a je to vyreseno. Zdokumentovana chyba jiz neni chyba, to je vlastnost! Je dira v ActiveX? Naco to opravovat, proste to pres killbit „vypneme“, chyba „zmizi“, opraveno! Ze tam ten nebezpecny kod porad je a kdokoliv ho muze kdykoliv zase zapnout, to je jedno. Hlavne ze uz to neni videt, zametli jsme to pod koberec, opraveno!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA k věci?
O killbits jsme už mluvili. A ukázalo se, že opět netušíte, která bije.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAno, to jsme mluvili… nic rozumneho z tebe nevypadlo. Pokud nadale zastavas nazor, ze se vadny deravy kod opravi tim, ze zmenim hodnotu v registru, tak je opravdu zbytecne se bavit dal. Normalni clovek si muze tak jedine poklepat na hlavu nad takovymhle „opravovanim“ bezpecnostnich der.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJe mi líto, že nechápete. 1) Zablokované GUID blokuje instalaci konkrétního balíčku, který je jinak zcela správně podepsaný. Tím se brání nové instalaci děravého (ale správně podepsaného) SW. 2) Brání se exploitu díry. MS nemůže opravit řeknemě Adobe Flash, ale může zabránit zneužití díry v něm. A teď mi řekněte, jestli jde z vaší strany o nechápavost, nebo o trollování.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJeště jednou: ten link nijak nedokazuje, že došlo ke změně kódu knihovny. Jde pouze o domněnku. Na tom opakování té domněnky nic nezmění :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZajímavé, že najednou ani neumíte číst v dokumentaci: Detours intercepts Win32 functions by re-writing the in-memory code for target functions ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTak potom to dokázáno asi je :). Otázkou je důvod. Hooking se dá obejít, kdežto detours se obcházet nedají. Že by tohle byl důvod?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA ještě detail. Změny zavedeného kódu se používají i v jiných situacích. Například syscall se ve Windows realizuje použitím instrukcí INT 2E nebo SYSENTER/SYSCALL, podle typu procesoru. To se řeší tak, že se do paměti namapuje stránka se správnou verzí kódu. V tomhle případě je to forma optimalizace.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPodle typu procesoru se to dělá za běhu systému?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDynamicky při spuštění OS.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoV tom případě ale nejde o změnu kódu za běhu aplikace jako u detours, ne?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZjistil jsem něco o detours. Jsou produktem MS Research, který je rutinně používá při svých pokusech na Windows. Dali dohromady detours jako framework, kde označíte funkci, poskytnete pre-processing code (běží před původní funkcí), post-processing funkci (běží jako poslední), a máte k dispozici pointer na původní funkci (včetně zachování těch prvních pár instrukcí).
Běžný hooking má proti detours nevýhody. Konkrétně neřeší interní volání přesměrované funkce v rámci knihovny, a navíc se dá obejít (calls on pointers obtained from the LoadLibrary and GetProcAddress APIs early in an applications execution). Viz kapitola 4 linkovaného dokumentu, kde se porovnává více metod.
http://research.microsoft.com/pubs/68568/huntusenixnt99.pdf
Při troše znalosti věci to nakonec není prasárna, ale poměrně elegentní a dokumentovaná technika ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPřesměrované funkce v rámci knihovny může řešit mov edi,edi, které lze snadno přepsat krátkým jumpem a kvůli kterému to tam vůbec je. Ale stejně daleko čistší řešení je int 3.
Detours se dají obejít ještě jednodušeji, stačí přepsat kus paměti předem známou hodnotou. U hookingu stačí navíc při startu aplikace zahookovat jmenovanou funkci GetProcAddress – a zkuste to obejít.
Při troše znalosti věci je to prasárna, ze které se dělá ctnost. Dobré je to tak na debugging (nicméně to dobře mate backtrace, takže ani tam bych to nepoužíval – od toho máme int 3), ale ne pro produkční nasazení, jak to udělal a propaguje MS.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPřečtěte si ten link. The major drawback to breakpoint trapping is that debugging exceptions suspend all application threads. In addition, the debug exception must be caught in a second operating-system process. Interception via break-point trapping has a high performance penalty. Konkrétně je Breakpoint Trap je 17× pomalejší, než detour, viz table 1 v kapitole 4.
Zahookováním GetProcAddress určitě nedocílíte přesměrování volání, které provádí interně daná knihovna (hook na messagebox nebude fungovat u volání messageboxu přímo z knihovny).
Short jump místo mov edi,edi je samozřejmě možný. Jenže musíte být schopen umístit cíl skoku do vzdálenosti povolené short jumpem. A zkuste něco nacpat do –128 až +127 bytů od vstupního bodu. V kapitole 2.2 uvidíte, jak se u detours řeší skok (far jump), a kam se umisťuje kód hooku (sekce .detours).
Osobně nevidím důvod, proč by detours nešly používat v produkci. Vidíte nějaký konkrétní důvod?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> Konkrétně je Breakpoint Trap je 17× pomalejší, než detour, viz table 1 v kapitole 4.
Což mě při debuggování určitě bude strašně štvát.
> Zahookováním GetProcAddress určitě nedocílíte přesměrování volání, které provádí interně daná knihovna (hook na messagebox nebude fungovat u volání messageboxu přímo z knihovny).
Proč bych měl hookovat interní věci nějaké knihovny v produkčním prostředí?
> Osobně nevidím důvod, proč by detours nešly používat v produkci. Vidíte nějaký konkrétní důvod?
Protože debuggování do produkčního prostředí nepatří a k ničemu jinému než debuggování to není dobré, navíc v produkci má být z bezpečnostních důvodů aplikační kód chráněný proti přepisu (ano, vím, že to Windows nedělají, ale potom se nesmí divit, že je v nich tolik snadno zneužitelných bugů – srovnejte s PaX v BSD) a rozhodně nejde o fungující bezpečnostní opatření, jak to MS v IE prezentoval.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDetour NENÍ nástroj debugging. V produkčním prostředí můžete potřebovat změnit funkcionalitu existující aplikace. Není to nijak neobvyklý požadavek. Jedna z možností je použití detours při „živém“ patchování, kdy se nahradí příslušná funkce v knihovně (nebo kernelu) bez nutnosti zastavit aplikaci, službu nebo OS.
Operační systémy zpravidla nebrání aplikaci přepsat vlastní kód. Důvodem jsou například techniky dopředné modifikace kódu, které mohou aplikace používat.
Protected Mode je funkční opatření, které zahrnuje víc prvků. Jedním z nich je i omezení některých akcí doplňků browseru. Dalšími jsou omezení přístupu k disku a k registry, a omezení možnosti posílat některé window messages. Tato opatření zjevně mají smysl.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> Operační systémy zpravidla nebrání aplikaci přepsat vlastní kód. Důvodem jsou například techniky dopředné modifikace kódu, které mohou aplikace používat.
Operační systémy Linux, BSD, QNX, MacOS X a další (prakticky všechny běžně používané až na Windows) běžně aplikaci brání přepisovat vlastní kód (případně dovolí přepsat kód, ale zabrání jeho spuštění). Pokud potřebuje dopřednou modifikaci nějaké části kódu, může tu část označit jako přepisovatelnou a potom ji může přepsat (tohle v Linuxu dělají třeba ovladače na nVidii), obecně to povolit je vážné bezpečnostní riziko. Kdyby se tak chovaly i Windows, byli bychom ušetřeni hodně bezpečnostních děr.
> Protected Mode je funkční opatření, které zahrnuje víc prvků. Jedním z nich je i omezení některých akcí doplňků browseru. Dalšími jsou omezení přístupu k disku a k registry, a omezení možnosti posílat některé window messages. Tato opatření zjevně mají smysl.
Jenže ani jedno z toho nedělají detours. To, co dělají detours, lze velmi jednoduše obejít a rozhodně to není bezpečnostní opatření, i když to tam MS prezentuje.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTakhle bych to viděl já:
Aby zloděj nemohl otevřít dveře šperhákem, nechá Microsoft klíče v zámku – zvenku!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMoje chyba, ovšem vaše také. Jde o nastavení linkeru. Sekce kódu je ve Windows by default execute/readonly. Omezení doplňků browseru je realizováno pomocí detours. Smysl to samozřejmě má.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDetours se obcházet nedají? Ha ha ha, to je přímo PR vytržené od MS, přitom si to stačí zkusit a zjistíte, že obejít to je velmi jednoduché, protože tam je vždy prolog funkce, čili ani není potřeba někde hledat v paměti, je tam vždy to samé:
mov edi,edi
push ebp
mov ebp,esp
A jen tak mimochodem by mě zajímalo, jak obejdete hooking, aniž byste musel dělat analýzu kódu toho hooku?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPoznámka k tomuto vláknu: Detours samozřejmě je špatné proto, že se řeší následek, nikoliv příčina. Od kdy má prohlížeč spouštět binární kód stažený z internetu? Pokud jde o doplňky, je chybou spíš to, že uživatele někdo neupozorní, že se mu do počítače něco instaluje a spouští. Že to nemohu jako správce sítě zakázat, nebo třeba selektivně povolovat. Jakmile se nějaký kód někde aktivuje, je už prakticky pozdě a řešit to nějakými detours, které jsou navíc lehce obejitelné.....
Mimochodem, ten původní článek jsem psal já a spíš šlo o postřeh z praxe, nikoliv o bouchání se do prsou. Několikrát jsem dokonce ve svém programu musel chtěnechtě Detours obejít, zrovna u toho MessageBoxu pomocí volání funkce MessageBoxTimeout, která nemá „objížďku“.
Co je zajímavý, IE také maskuje přístup do registru. Zajímavější je to, že to nedělá přes detours, ale nějak jinak. Osobně jsem nepřišel na to jak, pravděpodobně patchuje tabulku symbolů. Jakékoliv volání funkcí registruj lezou přes nějaké jeho vlastní DLL, kde requesty filtruje. To se obchází opravdu blbě.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZkusme oddělit fakta od urban legends. Prohlížeč spouští kód stažený z internetu. Například pokud nemáte nainstlovaný Flash, a narazíte na stránku s Flashem, tak vám nabídne jeho instalaci. Tedy spustí kód stažený z internetu. Jako uživatel i správce to samozřejmě můžete zakázat, případně povolovat na několika úrovních. A dokonce to můžete přes Group Policy nastavit vybraným skupinám uživatelů či počítačů.
Detours jsou opatření navíc, které zafunguje až pokud se někdo snaží exploitovat díru v nainstalovaném doplňku browseru (třeba ve Flashi).
MSIE nemaskuje přístup k Registry. Možná byste si měl přečíst dokumentaci k browseru, pro který píšete doplněk. V Protected Mode běží browser v sandboxu. Browser ani doplňky nemají přístup k disku, Registry atd. Dlvod je zřejmý: úspěšný exploit browseru neznamená, že útočník bude mít veškerá práva uživatele. Naopak nezapíše na disk, nezapíše do Registry. Technicky je to zajištěno běžným Win32 sandboxingem. K tomu je tam wrapper běžící v kontextu uživatele, který umí například ukládat stažené soubory na disk apod. Technické detaily jsem nestudoval, protože browser používám jako uživatel. Ale kdo chce, má informace k dispozici. Vy ovšem zjevně raději než dokumentaci používáte debugger.
http://msdn.microsoft.com/…ary/bb250462(VS.85).aspx
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVážený pane. Nedělejte ze mne blbce. Dokumentaci samozřejmě znám zpaměti. Vy se oháníte MSDN a berete ji za Bibli, já, který o tom vím mnohem víc než Vy vím, že je psána i s nádechem marketingu, protože je veřejně dostupná. Microsoft Vám tam rozhodně nenapíše, že celý ten jeho slavný Protected Mode je implementovan pomocí crackerských technik (a technik používanými počítačovými viry ještě z dob MS-DOSu).
Veškerá implementace toho Vámi vyzdvihováného „sandboxingu“ je řešena v user space. Prakticky není problém jej obejít a jak už jsem napsal, několikrát jsem to i musel dělat. Také píšete nesmysly. Browser i doplňky mají přístup k disku. Pokud už to nejde přímo, jde to obskurdní metodou pomocí broker procesu. Broker Proces může byt povolen v uživatelském profilu, není potřeba mít práva administrátora.
Celý ten sandboxing je k smíchu. IE úspěšně zablokuje posílání zpráv do normálního procesu a duplikování handlů mapované paměti, už ale neblokuje přístup do sdílené paměti přes její jméno (což se mi zrovna hodilo). Není taky problém umožnit doplňku pracovat s okny cizích aplikací, třeba je schovávat, nebo z ních získávat data. V konečném důsledku není problém pro doplněk malovat po obrazovce dle libovůle a tak různě maskovat svou činnost. Co mě dost překvapilo, je třeba to, že doplněk IE může instalovat hooky, což je zásahy do celého systému a používají je třeba keyloggery.
Shrnuto podtrženo: – detours používají crackerské techniky a techniky virů – pouze otravují slušné návrháře, kteří si při produkci nemohou dovolit obcházet oficiální API – naopak ochrana proti podvratnému kódu je nulová, protože Detours lze snadno obejít. – Detours také řeší jen následek, nikoliv příčinu. Možná to je ochrana proti spuštění nechtěného kódu došlého třeba přes buffer overrun, na druhou stranu, je to řešení vedoucí spíš k problémům, než k vyřešení daného problému. Konečně, proč by přes buffer overrun nemohl přijít kód, který řeší i obcházení Detours.
A ještě k vašemu nesmyslu k „urbans legends“. Prohlížeč nespouští kód stažený z internetu. Prohlížeč pouze vytvoří process, který obsahuje kód stažený z internetu. A předtím se samozřejmě má zeptat uživatele, jestli to tak chce. A v ideálním OS by ten proces samozřejmě měl mít limitovaná práva. Já vím, že lidé jsou hlupáci a odklepnou kde co, ale tímto způsobem to fakt řešit nelze.
MSIE maskuje přístup k registru. Viděl jsem to na vlastní oči. Přímo v debuggeru. Když najdu čas, pošlu vám „Call Stack“, abyste to viděl taky
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMSDN Library je dokumentace, a jako každá oficiální dokumentace je to obdoba bible pro křesťany. Autoritativně popisuje chování systému. Chování v MSDN nepopsané se může kdykoliv změnit. Odchylku od popsaného chování je možno považovat za chybu produktu. Takhle totiž funguje dokumentace (seznamte se). Jinak kolik víte o vývoji demonstruje dostatečně dobře fakt, že místo přečtení dokumentace řádíte s debuggerem. Předpokládám, že kdybyste opravoval auta, tak byste používal místo dokumentace raději šrobovák a rentgen, a pak po nocích pak luštil ze snímků, jak má ta převodovka asi fungovat :)
Veřejně přístupné dokumenty jsou obecně psány s vědomím, že budou čteny veřejností. Jestli tomu říkáte marketing, tak je to sice smyšlenka, ale klidně tomu dál věřte.
Win32 sandboxing je řešený v user space? Já neznám implementační detaily, ale mám za to, že při spouštění binárky NT provedou srovnání nějakých metadat (cesta, hash atd) s databází, a na základě výsledku pak případně pustí kód s access tokenem, který má ořezaná práva. Pokud je to jinak, prosím vysvětlete (nemluvíme o filtrování zobrazování messageboxů, ale o přístupu k souborům a Registry). A zkuste to doložit spíš dokumetací, než to zkoušet s debuggerem :)
Browser spuštěný v Protected Mode NEMÁ přístup k disku a Registry (to je věc sandboxingu). Broker process tam samozřejmě být musí, protože jinak byste z takového browseru nemohl třeba uložit soubor. Design je to dobrý, protože snižuje dopady případného exploitu. Spuštění nežádoucího kódu v kontextu browseru (děravý doplněk nebo browser) pak totiž neznamená automaticky možnost provádět veškeré akce, které může provádět uživatel. Broker process by malware mohl využít, ale broker nemusí umožnit browseru každou blbost (třeba zápis do existujícího souboru).
Filtrování messageboxů je pokud jsem si všiml opatření navíc k Win32 sandboxingu.
MSIE Protected Mode samozřejmě řeší následek, a ne příčinu. Příčinou případného exploitu je chyba v kódu, a tu před jejím zjištěním těžko řešit. Takže pak není od věci se zabývat i následky, nemyslíte?
Prohlížeč samozřejmě spouští kód stažený z internetu. Když si stáhnete executable, nabídne vám jeho spuštění. Když si stáhnete Adobe Flash (na stažení se by default zeptá), spustí ho pak klidně automaticky. A i když jsem nepsal doplňky MSIE, tak mám za to, že mohou běžet v procesu browseru (viz třeba in-process ActiveX komponenty).
v ideálním OS by ten proces samozřejmě měl mít limitovaná práva – vítejte ve Windows. MSIE má nižší práva, než ostatní aplikace spuštěné uživatelem. Mimo jiné nesmí na disk, nesmí do Registry atd. Kupodivu se vám to nelíbí, a naopak to krizitujete. Není to trochu nekonzistentní? Možná se vám jen v daném případě nehodilo do krámu, že má MSIE ořezaná práva. Sice to není špatný nápad, ale protože jste neuměl přečíst sekci What's New v dokumentaci, tak jste zjištěním fakt úplně zbytečně trávil dlouhé hodiny s debuggerem. To asi naštve ;)
předtím se samozřejmě má zeptat uživatele – chcete, aby se vás browser při vstupu na každou druhou stránku ptal, jestli opravdu chcete spustit Adobe Flash? LOL, to by bylo zábavné. Ještě lépe by se vás měl ptát pro každý jednotlivý objekt. Chcete spustit objekt Adobe Flashe, první ze třiceti na stránce? Ano. A druhý ze třiceti? Ano. A třetí? … Prohlížení Youtube by pak byla celkem výzva :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoKončím tuto trapnou diskuzi. Připomínáte mi studenta fyziky, který vysvětluje jadernému fyzikovi princip štěpné reakce. Být profesor na vysoké škole, vyhodím vás ze zkoušky s nedostatečnou, po první větě.
Maucta.
PS: Opravdu netušíte o čem píšete,… a vaříte z vody. Možná jste si přečetl MSDN a možná se ho pokoušel pochopit, ale ono to je právě všechno úplně jinak. Můj cíl nebyl debuggerem pošpinit IE nebo Microsoft, ale upozornit pouze na určitý „fenomén“. Předchozí dva roky jsem každý den pracoval jen na doplňcích pro IE, a v debuggeru jsem ho viděl každý druhý den. Nechtějte, abych vám ukazoval a popisoval třeba chyby v jeho HTML parseru, kolikrát mi to žuchlo v nějakém šíleném DOM stromu jen proto, že jsem do DOM zasahoval v době, kdy IE neměl náladu. A co je horší, že to co fungovalo v IE6, nefungovalo v IE7 a už vůbec ne v IE8. Zákazníka… tohle většinou vůbec nezajímá
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPřekvapí vás chyba v HTML parseru? Mě by naopak překvapilo, kdyby nějaký HTML parser ani jednu chybu neměl.
Mě například překvapilo, že byste jako vývojář doplňků chtěl zobazit dialog při každém použití doplňku. Nepraktické vám to asi nepřijde, a další komentář k tomu nemáte. Nebo byste na jedné straně chtěl běžet doplňky s limitovanými právy, ale když MSIE běží s limitovanými právy, tak to o pár řádků jinde kritizujete. U MSIE Protected Mode kupodivu nevidíte omezení dopadů případného exploitu, i když je to celkem zjevné.
K tomu začátku s dokumentací jen tolik, že zřejmě nechápete princip, na kterém stojí dokumentace systému. Jinak byste nepsal nesmysly o vyhazování studenta po první větě.
Nechcete diskutovat? No dobře, jestli nemáte co říci k věci…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSorry, opravdu nemám k Vašemu nesmyslnému tlachání nic co dodat.
Přeji hezký den.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoŠkoda, že píšete o nesmyslném tlachání, ale nedovedete napsat nic konkrétního. Samozřejmě pěkný den i vám.
Pro Laela a Nováčiska
celé vláknoPřečtěte si oba tohle: http://uninformed.org/index.cgi?…
Re: Pro Laela a Nováčiska
celé vláknoDěkuji. Takhle vypadá informovaný člověk. Nemarní čas stykem se ženami, a proto pak ví, o čem mluví ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknokdyz mate problem na linuxu, google vam pomuze (reseni jsou tuny) a kdyz chcete zarucenou odpoved tak si zaplatte support ale rozhodne nesirte sproste lzi o nedokumentovanem linuxu!
Je to holt jiny obchodni model, sw zdarma a podpora za $$$.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSrovnejte si nápovědu ve Windows s nápovědou v Linuxu, a bude to silně ve prospěch Windows. Srovnejte lokalizaci, a srovnejte vývojářskou dokumentaci MSDN s čímkoliv na Linuxu. Opět zůstává Linux o míle pozadu.
Ten obchodní model je fajn, ale má jeden zásadní problém. Support totiž neuživí vývoj. Abyste dostal ze supportu stejné peníze jako z prodeje licencí, muselo by 100% uživatelů koupit support pro svůj open source, v ceně vyšší než když dostanou jen licenci (musíte zaplatit i ten vlastní support). Jenže support si koupí jen velmi malé procento uživatelů. Když si ho koupí velmi optimistických 10% uživatelů, tak by museli na supportu zaplatit v průměru více než 10× tolik, na kolik by je vyšla licence. A support jednoho desktopového OS za 20000 Kč? To asi ne :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo jsem se před časem dočetl že Microsoft vydává 90% peněz na reklamu, takže, za předpokladu že těch zbývajících 10% jde jen na vývoj, těch 10% uživatelů by mohlo za support zaplatit stejně tolik jako za licenci, kdyby nebylo potřeba pořád dokola lidi přesvědčovat že Windows je nejlepší, nejvýkonnější, nejbezpečnější a nejstabilnější.
Jó, lidi se musejí oblbovat co se do nich vejde, dřív na to byly kostely, dnes…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo, ze support neuzivi vyvoj je vyplod vasi fantazie, nebo trimate v ruce nejaky nezvratny dukaz?
Mozna to bude o efektivite, napriklad jako vrazit miliony USD do tvorby 5vterinoveho „songu“.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo je fakt, když jeden MS programátor celý rok vyvíjel tu vypínací tabulku v XP, musel na ní nějak logicky rozmístit tři ikony, protože dřívější čtyři byly pro průměrného uživatele Windows už moc složité! V Ubuntu jich mám šest :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA bude mi tedy Word 2015 startovat rychleji ?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVidím v tom microsoftí přístup k bezpečnosti. Spolehnou se na jednu z dostupných cest k zaručení bezpečnosti a doufají, že to opravdu bude fungovat. Když už mají jazyk, který je schopen zaručit vlastnosti kódu, nechají už všechno běžet pro jistotu v jednom prostoru, místo toho, aby bezpečnostních ochran použili více… Už vidím za 25 let ty zprávičky na cdr o měsíčních balících oprav na bezpečnostní chyby v produktech MS :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoBohužel to zajištění bezpečnosti jazykem (to zní fakt hrozně :) ) si vezme daň na výkonu. Výkon srovnatelný s dnešními systémy to může přinést jen díky tomu, že na druhé straně odbouráte režii hardwarového oddělení procesů.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVzdyt vira je nejdulezitejsi!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno.Net ma unsafe code vcetne pointeru, Java ma native knihovny…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMikrojádro nemá jen výhody, ale i nevýhody – autoři GNU/Hurd by mohli vyprávět, kdyby ještě dokázali souvisle mluvit :)
Ale zpět k otázce: mikrojádra jsou úplně super věc, ale na PC značně nevhodná kvůli velké režii přepínání kontextů. Existují dva přístupy, co s tím: redmondský přístup, kdy je co nejvíce toho oddělit (lépe se vytvářejí ovladače třetím stranám, ale je pomalejší a v podání Windows ztrácí výhodu mikrojádra v oddělených rinzích); a helsinský přístup, kdy je snaha mít co nejvíc v jádře a do user space dát jen to nebytné (je rychlejší, ale není tak moderní a není moc bezpečný)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJa bych snad k tomu dodal ze pri dnesnich vykonech PC a uz neni potreba hledet na to kolik to sezere. Vemte si ze v horizontu pristich par let tu mame ja nevim kolik jadra takze s tim vykonem by to nemel byt problem podle me.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProblém to bude nejspíše neustále, neboť režie je percentuální, nikoli absolutní, jak ukazují dosavadní empirické poznatky. Je to jako ten známý vtip, že MS Word startuje stále stejnou rychlostí už od dob 286tek.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoProblém (na PC) je v tom, že ta režie roste rychleji než výkon. Jednak s vyšším výkonem většinou chceme, aby rostl i počet context switchů, a potom vyšší výkon často znamená další registry a ty se taky musí někam uložit, což context switch ještě zpomaluje.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNeni lepsi pouzivat vykon CPU na neco jineho, nez na reziji jadra, OS a podobnych veci? Podivejte se, kam to dopracovala Vista.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„pri dnesnich vykonech PC“
– ono je to spíš tak, že výkon PC roste a rychlost syscallu a context-switche je pořád skoro stejná. Čili relativně vůči rychlosti počítače klesá. Třeba Pentium 1 mělo syscall za 120 tiků, Pentium 4 za 900.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA proč si myslíš, že zrovna mikrojádro je to pravé? Tato koncepce už je na světě dost dlouho, aby mohla ukázat svoje silné stránky, a zatím se jí to moc nedaří. Čím to asi je? Mikrojádro je dle mého názoru problematickou koncepcí nejen z praktického hlediska (vyšší režie), ale i toho teoretického – systém založený na mikrojádře je totiž inherentně systémem distribuovaným. A kdo měl někdy co do činění s distribuovanými systémy, ten ví svoje… ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZdravím,
Pokud si pamatuji, tak jak na Wikipedii, tak i v odborné literatuře se člověk dočte, že Linux je (nebo bývá nazýván) „hybridní“ kernel. To z toho důvodu, že nejnutnější základ je založen na monolitické struktuře a spousta dalších věcí (nejen ovladače) jsou ve formě modulů, které lze prostě do jádra načíst (i za plného provozu) až je to požadováno (a naopak, když už jej není potřeba, lze jej z jádra vyjmout).
Myslím, že není vůbec nutné trvat na zavedených architekturách jader, ale spíš vybírat a implementovat z nich ty nejužitečnější vlastnosti. A mám dojem, že přesně o to se Linux (respektive, jeho vývojáři) snaží. :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„Hybridní kernel“ je novotvar-patvar. Jakmile nemá kernel všechny rysy a žádné jiné rysy než vybrané, je z něj hybrid. Taková kategorizace je na nic. To bychom také mohli 75% prodaných vozů říkat „mezitřídní vozy“.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno… nebo se tomu bude rikat tak, jak se to dneska prodava, hybridni automobil… Ale ouha, dle tve teorie to je vlastne na nic… Vyhrab hlavu z pisku a oplachni si ksicht…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno…a hybridní automobil říkat Trabantu, protože má akumulátor…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoHybridní kernel není novotvar ani patvar, to jen vy nechápete, co znamená. Nejde o jakékoliv jádro nevyhovující vybraným rysům, jde o jádro, které je navržené tak, že se částečně chová jako monolitické a částečně jako mikrokernel. Typický příklad je jádro Windows NT, kde část ovladačů běží v user space (á la mikrokernel) a část v kernel space (á la monolitický kernel).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZásadními rysy mikrokernelových systémů je modularita a oddělený běh serverů (modulů). Tradiční monolitické kernely kombinují v procesu kernelu prakticky vše, bez modulů (a navíc původní unixy například mísily kód file systému, cache manageru a správy paměti). Windows NT byly od začátku koncipované modulárně, ale z důvodu výkonu běží servery (moduly) v kernel mode. Linux byl od začátku psaný jako monolitický, později se naučil nahrávat moduly. Ani jeden z těch systémů není čistým obrazem žádného designu. Ovšem vytvořit kvůli tomu uměle kategorii „hybridní kernel“, a do ní naházet tak rozdílné věci, jako je modifikovaný mikrokernel, a monolitický kernel s nahráváním modulů, to je naprosto zcestné. To bychom také mohli jako hybridní automobil označovat Trabant (protože má akumulátor), Toyotu Prius (protože má dvojí pohon), a elektrický Mitsubishi Lancer Evolution MIEV (protože konstrukčně vychází z benzínového Lancer Evolution).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNikdo nevytvořil umělou kategorii. ntoskrnl není jedniný hybridní kernel, třeba Plan 9 je také hybridní. Mimochodem prý je to kontroverzní a marketingové označení, protože ve skutečnosti je to de facto monolitické jádro, obzvlášť u Windows, protože ovladače v user space nemají přímý přístup k HW, jako je tomu u mikrojader, tedy de facto jsou to knihovny.
Toyota Prius je hybridní automobil ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNooo… Mikrojádro je taková architektura jádra, v němž se privilegovaná část uživatelského procesu omezuje prakticky jen na IPC a případně plánovač. V tom se liší od monolytického jádra, kde se v podstatě všechny služby provádějí v rámci privilegovaného běhu uživatelských procesů. Nebo-li modularita je pouze jedním z důsledků mikrojádrové architektury. Linuxové moduly jsou něčím naprosto jiným a s koncepcí mikrojádra to nemá vůbec nic společného. Stejně tak u mikrojader není nikde řečeno, že by všechny jeho součásti s výjimkou samotného mikrojádra musely běžet v uživatelské úrovni. Podstatným rysem mikrojádra je orientace na servery – tedy zajišťování systémových služeb pomocí sady systémových procesů. To je to podstatné. Monolytické jádro s možností přidávat moduly není ani o píď blíže ke koncepci mikrojádra, stejně jako mikrojádro se servery bežícími v privilegovaném režimu není díky tomu ani o píď blíže k monolytickým jádrům. Čistota koncepce bývá obvykle narušena u monolytických jader – tím, že některé služby jsou dislokovány do serverů. Stále ale podle mne záleží na tom, o jaké služby se jedná – je přeci jen rozdíl, je-li i k vytvoření nového procesu nebo alokaci paměti třeba poslat příslušnou zprávu nějakému systémovému serveru, nebo takovéto záležitosti probíhají systémovým voláním a zprávy je třeba zasílat jen kvůli tisknutí na tiskárně nebo GUI.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá v podstatě souhlasím. S tím že Windows jsou prakticky mikrokernelový systém, kde servery běží z důvodu výkonu v kernel mode (u klasického mikrokernelu zabije výkon to obrovské množství volání mikrokernelu). Jinak česky se píše monolit, polsky dost možná monolyt. No offense, ale upozornit musím ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWindows nejsou mikrokernel, prave to oddeleni jednotlivych subsystemu je definicni vlastnost architektury. Windows toto oddeleni nabizi pouze pro nektere subsystemy, proto to je hybridni kernel. (Coz je vpodstate linux taky, protoze v userspace muzete nechat bezet ovladace souborovych systemu, USB a dalsich).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPokud pominu to, že servery nemají běžet v kernel space, ale v user space, tak ve Windows „kernel-space servery“ volají metody jiných „kernel-space serverů“ přímo, což je věc, která v mikrojádře být nesmí a kterou se udělal monolitický kernel s tím nepatrným rozdílem, že se linkuje až u uživatele a ne u distributora.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAha. Takže NT kernel je vlastně velký binární BLOB, bez pevně definovaného interfacu jednotlivých částí, a bez modularity. Tak totiž vypadá klasický monolitický kernel. Padají z vás pěkné nesmysly.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNT jsou modulární monolitické jádro, stejně jako je Linux – tolik k tomu, že nemá modularitu. A ano, po načtení a slinkování (tedy za běhu) se jedná o velký binární blob, protože všechno běží v jednom adresním prostoru a není nijak oddělené.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoModulární monolitické jádro je protimluv. Zkuste se podívat na význam slov monolit a modul.
BLOB? Vy zase perlíte. Na jedné straně BLOB se zadrátovanými funkcemi, se kterými nic neuděláte. Na druhé straně komponentový systém s definovaným interfacem, který lze modifikovat a rozšiřovat. Podle vás je obojí binární BLOB, protože běží v jednom adresním prostoru? Aplikaci složená z desítek komponent je ve vašem světě také binární BLOB?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNeřekl bych, že je to protimluv – alespoň vycházeje z definic pojmů „monolitické jádro“ a „modul“. Bylo by to jádro sestavené z modulů, jejichž provázání a vnější presentace odpovídá jádru monolitickému – zkrátka pouze „otevření“ na binární úrovni toho, co je běžné na úrovni zdrojových textů.
Spousta lidí si to zřejmě vůbec neuvědomuje, ale to, čím se mikrojádro liší od monolitického jádra diametrálně a nejzásadněji, je právě vzájemné provázání jednotlivých komponent – u monolitického jádra analogické klasické knihovně, ale u mikrojádra analogické distribuovanému systému!
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVšechny kernely se z vnějšku chovají stejně. Konkrétně se starají o správu zdrojů, a poskytují nějaké další služby vyšším vrstvám SW.
U mikrokernelu je otázku, který rys je nejdůležitější. Jako nejužitečnejší vidím rozdělení kernelu na komponenty, a používání definovaného interface pro jejich komunikaci. Samotné oddělení komponent do samostatných procesů a způsob jejich komunikace je samozřejmě také rys typický pro mikrokernel, ale bohužel zabíjí výkon.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNo to právě ne – leda až na úrovni nějaké standardní knihovny. Ale je rozdíl, jestli kvůli alokaci paměti provedu něco jako INT 0×80 nebo musím poslat zprávu – která obecně skončí v nějaké frontě, zablokuje proces do doby, než na odpovídající server dojde řada, nebo způsobí přepnutí na daný server – podle implementace. Vazby v takové architektuře jsou odlišné od těch „monolitických“ – není třeba řešit race conditions, protože servery obecně nejsou (protože nemusejí být – jeden z rysů mikrojader) řešeny jako reentrantní, naopak je třeba spravovat rozsáhlé fronty požadavků (jež jsou v monolitických jádrech buď zamaskovány do front synchronisačních mechanismů, nebo jsou řešeny částečnou či úplnou nepreemptivitou jádra). Oba přístupy mají své klady a zápory.
V monolitickém jádře se systémové služby chovají jako knihovna, zatímco v mikrojádře jde spíše o peer-to-peer komunikaci nezávislých objektů pomocí formalizovaného univerzálního protokolu. Podstatným rysem mikrojader není rozdělení na komponenty (to může být i monolitické jádro – moduly), podstatným rysem mikrojader je fakt, že tyto komponenty _musejí_ mít formu procesů, jejichž hlavní (v ideálním případě jediné) rozhraní je tvořeno mechanismem asynchronních zpráv. Právě tato myšlenka stála u zrodu architekury mikrojádra a je její nosnou ideou.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSamozřejmě konkrétní interface a sada poskytovaných služeb se liší. Ale obecně interface kernelu nemusí mít nic společného s jeho implementačními detaily. Klidně můžete s monolitickým kernelem komunikovat přes frontu zpráv, když to tak někdo napíše, a RTOS může používat INT 0×80 nebo SYSENTER.
Monolit znamená jednolitý. Tedy jediný binární BLOB, který obsahuje veškeré funkce jádra, a jediným definovaným interfacem je interface vnější. Kernel Linuxu ten koncept modifikuje možností zavést moduly, i když kernel nemá stabilní interface ani ABI.
Používání IPC je u mikrokernelů technická nutnost, protože jsou servery v seperátních procesech. Ovšem syscall je také formou IPC.
Jednou z nectností klasických mikrokernelů je jejich slabý výkon. Právě proto se koncept mikrokernelu nedostal do mainstreamových OS.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNení to technická nutnost, je to vlastnost, na níž je ta architektura založená. I systém s mikrojádrem může být ve výsledku jediný veliký, jednolitý binární soubor – viz např. MINIX. Součástí kódu jádra jsou i kódy serverů, jež se po jeho spuštění stanou samostatnými procesy. Tyto servery spolu vůbec – čistě technicky – nemusejí komunikovat přes zprávy, protože spolu sdílejí adresový prostor (dokonce nic nebrání tomu, aby sdílely i symboly). Přesto si posílají zprávy – protože to je myšlenka mikrojader – univerzální protokol založený na zprávách. Přičemž vůbec nejde o nějaký hybrid – je to plně v souladu s myšlenkou mikrojader: samostatné procesy, posílající si zprávy; jejich hardwarové oddělení (mechanismy MMU) _není_ požadováno, může to být pouze výhoda, pokud se podaří (ale nemusí – protože to povede ke snížení průchodnosti).
Jinak výkon mikrojader sice je principiálně vždycky nižší, než u monolitických jader, ale průměrně připadá na režii spojenou s tím cca 12–14%, tj. není to zas taková tragédie. Na platformách bez ochrany paměti (dnes nejčastěji v embedded branži) je to podstatně méně – v těchto případech je totiž přepnutí procesu zhruba stejně náročné, jako vyvolání syscallu.
Osobně bych architekturu mikrojader označil za sice zajímavou, ale z praktického hlediska problematickou. Zatím přináší více nevýhod, nežli výhod. Je to taková obdoba objektově orientovaného programování pro oblast operačních systémů, ale vzhledem k povaze této oblasti se zde projevují hlavně ty zápory.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPokud nemáte servery HW oddělené, tak přicházíte o proklamovanou spolehlivost mikrokernelů. Stačí jeden špatný zápis do paměti v libovolném serveru, a celý systém je dole. Designeři NT ke sdílení adresního prostoru uvedli, že výkonová cena oddělení serverů by byla příliš vysoká, a i mikrokernelový systém je stejně v praxi odstaven pádem FS, IPC či dalších kritických komponent.
U MINIXu vemte v úvahu, že se jedná o výukový systém.
Na nezpůsobilosti mikrokernelů pro mainstreamové nasazení se shodneme my dva, a zjevně i velká většina IT světa.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoBinarni BLOB to vlastne je, protoze k nemu nemate (bezne) dostupne zdrojove kody. To, jestli je k tomu definovany interface, na tom nic nemeni – bez interface by totiz kazdy BLOB byl k nicemu.
Klasicky monoliticky kernel pro bezne pocitace uz je historii, na UNIXech se ji stal s prichodem VFS (odhadem pred 20 lety) – Veritas FS je hezkym prikladem.
V dnesni dobe je proto nejlepsi chapat pojem monoliticky kernel jako „jednotlive casti jadra bezi ve spolecnem pametovem prostoru“.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZlomenina nohy to vlastně je, protože s ní nemůžete hýbat :)
Ani v dnešní době nemůžete okecem v diskuzi na rootu změnit definici monolitického kernelu :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoModuly ale vůbec nesouvisí s mikrojádry, moduly v Linuxu jsou jen forma zpožděného linkování. (zhruba řečeno, mikrojádro by to bylo, kdyby chyba v jednom filesystému nemohla ovlivnit data jiného fs. Tak funguje FUSE – a dejme tomu sítové FS – ale ne moduly)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> … kdyby chyba v jednom filesystému nemohla ovlivnit data jiného fs
to je dobře řečeno.
K tomu mám historku z praxe:
Psal jsem pár modulu, jeden z nich pro obsluhu RS485, další pro touch screen. Některé části (konkrétně funkce pro FIFO) jsem použil metodou CUT&PASTE z předchozího modulu. Jaké bylo moje překvapení, že z touch screenu lezla nějaká data i když se na něj nesahalo. To rozhodně nebylo dobře. Navíc ta data neměla správný formát pro touch screen. Ale přesto byla nějaká povědomá. Až po té mi došlo, že ze /dev/exptouch lezou data co přicházejí po RS485!
Potíž byla v tom, že buffer pro fifo měl stejné jméno v obou modulech a v obou modulech nebyl deklarován jako static. Žádná chyba při překladu ani při insmod, ale modul pro touchscreen mi vracel data ze seriálky!
Chci tím říct, že jednotlivé moduly se MOHOU ovlivňovat, ale co hůř, může být problém jenom s určitou kombinací modulů. Samotný modul může být odladěný jak chce, může u 1000 uživatelů fungovat naprosto korektně. Ale může tam být globální proměnná xyz a 1001. uživatel bude mít naprosto unikátní modul, ve kterém je také globální proměnná xyz a super odladěný modul pro VGA který všude funguje, nebude fungovat.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAno, a proto profi správci modulů neakceptují patch, jehož globální proměnné nemají v názvu specifickou identifikaci modulu. Výjimky se samozřejmě mohou vyskytnout, může jít i o historickou záležitost.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoHybridní kernel jsou Windows NT, Linux je tvrdě monolitický, protože všechny moduly běží v kernel space.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOK. domnival jsem se, ze se to tyka tez stavby a navrhu jadra. Presto, ale…
" Na druhou stranu v linuxovem jadre existuji i nektere rysy archytektury mikrojadra – archytektury kde je jadro pouze prostrednikem pro komunikaci samostatnych procesu (serveru), implementujicich jednotlive funkce. I kdyz nejde o nejvyznamejsi cast, jadro ma nektere soucasti, ktere implementuji takovou archytekturu. Je to predevsim FUSE …, Dalsim prikladem jsou ovladace zarizeni pripojenych pres USB, ktere se v praxi pouzivaji hlavne pro ovladace scaneru… "
Citovano z knihy Lukas jelinek; Jadro systemu Linux; Computer press. Kapitola 3 Architektura jadra.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoChcete opravdu tvrdit, že je Jelinek natolik negramotný, že v jednom odstavci 3× napíše archytektura s tvrdým Y? Tomu nevěřím.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNe, ta „Y“ nebyla prace pana Jelinka. Nicmene, tezko neco vysvetlovat autorvy takto hodnotneho protiargumentu…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTeda vy jste na ta ypsilon skutečně vysazený :)
vysvětlovat autorOVI, proboha…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNo ale vždyť to pan Jelínek píše – jedná se o nedůležité součásti jádra. Navíc tato řešení jsou spíš znouzectnost (vytvořená z různých dvodů), než něco, co by do architektury jádra nějak extra zapadalo.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOdpovim na obe reakce.
Nejprve kernel : Ano, s tim nepolemizuji (I kdyz pokud je FUSE jen nouzove reseni, tak tedy smekam klobouk…). Obhajuji jen oznaceni „hybridni“. A to z nekolika duvodu. Jednak jak jsem rikal, podle meho nazoru totiz nezalezi na pouzitem vzoru archytektury, ale na tom, aby se jednak z tech existujicich tezily ty nejlepsi mozne vlastnosti a jednak aby se uplatnovaly i ty nove. Take proto, ze Lael tady porad dokola tvrdi, ze vzor microkernelu je pro Linux nepouzitelny – coz prave pan Jelinek vyvraci.
Ad pravopis. Budte rad, dnes mam docela dobry den. Pise se mi relativne lehce, a je to porad citelne. byva to i horsi. Vynechavam pismena, slova, nebo je nevedomky komolim. Bohuzel, ja tyto chyby nedelam schvalne a ani pri dukladne kontrole je nevidim. Nepouzivam dnes ani svou oblibenou diakritiku, nemohu dokonce v tuto cvily vyuzit ani slovniky pro opravu pravopisu. takze se sice omlouvam, ale tesit vas muze ze dnes je to jeste ke cteni …
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo si nerozumíme. Linux není mikrokernelový systém. Udělat z něj takový systém by byla OBROVSKÁ spousta práce. Přitom i nesrovnatelně jednodušší úkoly (rentrance kernelu, multithreading) trvaly mnoho let. Takže by autoři strávili pár let změnou koncepce, a de facto stavbou nového kernelu s použitím kusů stávajícího kódu. To není realistické. Navíc čisté mikrokernely mají závažné problémy s výkonem. Proto se do mainstreamových OS nikdy nedostaly. Nejblíž jsou jim asi Windows, kde jsou z architektury mikrokernelu použity jen vybrané rysy.
Zcela bez urážky si upřímně myslím, že jako se vám matlají pravidla pravopisu, porušujete je a nedetekujete jejich porušování, tak se vám podobně matlají i jiné věci. Při uvažování si hlavě vyrábíme mentální modely, které je třeba stavět podle pravidel. Je třeba detekovat chyby v tom modelu, a neshody modelu s realitou. Podle mého názoru v tomhle selháváte v důsledku stejné poruchy, jakou demonstruje váš pravopis. Pokud jste přesto šťastným a úspěšným člověkem, považoval bych to samo o sobě za úspěch. Znovu opakuji, že tohle je můj názor, a nesnažím se vás nijak urážet.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTak to pro zmenu prohodime. Kecy vypovidajici o inteligenci houpajiciho kone ve stylu narazek na muj hadicap v pisemnem projevu me mohou tezko urazit. Zvlast od cloveka ktery je evidentne zas handicapovany ve cteni, nebo dokonce chapani.
Nikde jsem totiz nic nepsal o tom, ze by Linuxove jadro byl microkernel. Ja tvrdim – ted uz doufam ve shode s kolegou Stenem – ze Linux je hybridni jadro, coz – jak vam uz Sten vysvetloval (a ja se snazil dolozit citatem z perfektni knihy pana Jelinka v kontextu Linuxu) – znamena ze v jeho archytekture jsou pouzity modely a vlastnosti ze dvou typu jader – monolityckeho jadra a mikrojadra. (PS. je mi uplne jedno jak to nazyva MS. Odbornici takove jadro pojmenovaly hybridni, tak je hybridni i kdyby se vas chlebodarce na hlavu stavel :-P ) A nikde ani nepisu nic o tom, ze se ma jeho koncepce menit, prave naopak… ;)
To je taky duvodem pro me vyroky, ze zvanite nesmysly (jake to prekvapeni), kdyz tvrdite ze model microjadra je pro Linux nepouzitelny. Hmmm… Ano. Asi stejne jako pro NT.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAle já nenapsal, že jste psal, že Linux je mikrokernelový systém. Na tom že není mikrokernelový se shodneme. Zřejmě vás vůbec nenapadlo, že by konstatování „Linux není mikrokernelový systém“ mohlo být něco jiného, než nesouhlas s vaším názorem. To bohužel předvádíte pravidelně. Prostě to nevidíte, tak jako nevidíte Y ve slově monolYt.
Tradiční mikrokernelový design není použitý v ŽÁDNÉM mainstreamovém OS. Důvodem jsou problémy s výkonem. To se tu ale probíralo mnohokrát.
FUSE je wrapper na straně kernelu, který do něj byl přidán poměrně nedávno, a být by tam vůbec nemusel. S mikrokernelem má FUSE společnou jednu jedinou věc, a to že kód FS pak běží v user space (a s mizerným výkonem). Nakonec ale můžeme tvrdit, že Windows 3.0 také měly mikrokernelové rysy. FS totiž běžel v user space :). Že je nesmysl kvůli takové věci hovořit o mikrokernelových rysech OS? Jistě, to u Linuxu a FUSE také.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo jste zase něco vyplodil Človíčku :-D
Vy jste to nenapsal? Aha, Takže výrok " <citte>To si nerozumíme. Linux není mikrokernelový systém. Udělat z něj takový systém by byla OBROVSKÁ spousta práce.", v kontextu mého předešlého výroku a významu dalšího textu z citovaného odstavce ve vašem příspěvku, znamená asi, že jste přiletěl z Marsu… No to se stává pravidelně zase u vás. Nehledě na to, že o inteligentnosti vašich narážek jsem už mluvil, a taky jsem vám (už mockrát) říkal, že se nemusíte tolik snažit, aby jste sám svým jednáním potvrzoval, že mám pravdu. :-p
Hahaha. Srovnávat FUSE s Dosovým filesystémem je asi jako porovnávat dvoukolový kočár tažený koňmi s nejnovějším modelem Lamborgini. Hm, stejně těžko muže někdo soudný tvrdit, že Win 3.x mělo mikrokernelový rysy, když win 3.x byly pouze grafickou nadstavbou nad DOSEM. A to ani nemluvím o tom, že MS DOS moc nerozlišoval mezi privilegovaným a neprivilegovaným režimem. :-D
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoV příspěvku, na který jsem reagoval, jste psal: „Lael tady porad dokola tvrdi, ze vzor microkernelu je pro Linux nepouzitelny“. A to jsme si opravdu nerozumněli, protože já tvrdil něco trochu jiného.
To je samozřejmě také zajímavost. Napíšu svůj názor na váš problém, a dám jasně najevo, že se nejedná o snahu vás urazit. Samozřejmě vy si v reakci neumíte urážku odpustit. Typické, nepřekvapí.
U Win 3.0 je FS běžící v user space je mikrokernelový rys úplně stejně jako FUSE u Linuxu. Tím srovnáním se vám snažím vysvětlit, že ani jedno nedává systému relevantní znaky mikrokernelové architektury.
Navrhuji to uzavřít s tím, že my dva spolu prostě nemůžeme vést rozumnou komunikaci.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAno, nabýdku příjmám.
Ještě než to však skutečně uzvřeme, měl by jste si uvědomit kdo koho začal napadat, takže si ty ublíženecký řeči laskavě odpusďte…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZkusme se smířit s tím, že i to napadání interpretujeme každý jinak.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá bych ani neřek. Pokud někoho napadáte, urážite, či ponižujete vy, tak je vše v naprostém pořádku, ne. Ale běda, jakmile někdo udělá totéž vám…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoLaele, neberte to jako snahu Vas urazit, prosim, ale podle meho nazoru jste kreten a snazite se za radoby „na urovni“ prispevky schovavat polopravdy az nepravdy. Jeste jednou opakuji, neberte to prosim jako urazku, je to jen muj nazor ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> Tradiční mikrokernelový design není použitý v ŽÁDNÉM mainstreamovém OS. Důvodem jsou problémy s výkonem. To se tu ale probíralo mnohokrát.
No jo, QNX se vůbec nepoužívá a ta firma měla už dávno zkrachovat, jen mají hloupého účetního a ten na to ještě nepřišel :) Navíc všechny kritické real-time aplikace, které na něm běží (třeba řídící software jaderných elektráren) mají problémy s výkonem :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoQNX není mainstreamový OS. A mohl byste vědět, že u real time aplikací není důležitý celkový výkon systému, ale deterministická doba jeho odezvy.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo že je nějaká technologie noévější ještě neznamená, že je lepší nebo vhodnější pro daný účel. Uvedu jednoduchý příklad:
V počátcích kosmonautiky se obejvil vážný problém; ve stavu beztíže nefunkuje klasické kuličkové pero, strašlivé. NASA tedy jednala rychle, investovala pár milionů dolarů do výzkumu a vytvořila propisku, která ve stavu beztíže píše.
Rusové od samého počátku píší tuškou.
Ano Rusko zasplalo dobu, ale k dosažení stejné funkčnosti potřebovali a několik let méně a nekolik milionů dolarů jim zůstalov kapse.
Nemůžete tedy technologii hodnotit podle času, kdy vznikla, ale podle toho, zda-li splňuje požadované nároky.
Monolitické jádro je starý koncept, který je však plně vyhovující, časem odskoušený a relativně transparentní (stejně jako u tužky každý pochopí jak funguje). Převést Linux na mikrojádro by stálo mnoho úsilí jen pro to, aby jsme na konci měli o něco pomalejší, ale za to moderní systém, který neumí nic na víc.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDoufam, ze nejste takovy hnup, abyste tomu veril…
There exists a common urban legend claiming that the Americans spent $11 million developing the Space Pen, and the Russians used a pencil.[1] In fact, NASA programs have used pencils (for example a 1965 order of mechanical pencils[1]) but because of the danger that a broken-off pencil tip poses in zero gravity and the flammable nature of the wood present in pencils[1] a better solution was needed. NASA never approached Paul Fisher to develop a pen, nor did Fisher receive any government funding for the pen's development. Fisher invented it independently, and then asked NASA to try it. After the introduction of the AG7 Space Pen, both the American and Soviet (later Russian) space agencies adopted it. Previously both the Russian and American astronauts used grease pencils and plastic slates.[2] Another rumor has it that the Apollo 11 astronauts accidentally snapped off a switch which was necessary to permit them to fire the engine to return to the Earth; and that a Fisher Space Pen was used to press this button. While the incident did occur, Buzz Aldrin has stated that he in fact used a felt-tip pen for this.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSouhlasím, ale přesto si rýpnu: Pochybuji, že Rusům zůstaly v kapse vůbec nějaké dolary :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJak už někde napsal, s tou propiskou je to urban legend.
V principu souhlasím, že novější technologie není nutně lepší pro daný účel. Na druhé straně typicky bývá lepší. Jinak bychom dodnes používali parní stroje, zubaři by bolest zubů léčili jejich vyrváním kovářskými kleštěmi, jako anestezii před amputací byste dostal půl litru vodky, a firmy i jednotlivci by dodnes jely na unixech :)
Nemá smysl přepisovat Linux jako mikrokernel. Byla by to obrovská spousta práce, a bez většího efektu. Navíc stejně za pár let přijdou systémy postavené úplně jinak, proti kterým budou NT působit technologicky stejně zaostale, jako unixy proti NT. Ale z Linuxu je dobré si vzít lekci pro příště. Na začátku je třeba udělat kvalitní návrh. Ne jen tak plácat dohromady kód podle dokumentace starších systémů, a doufat, že z toho nějak samospádem vyleze dobrý design (což se zjevně nestalo).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDobrá, přiznávám se. Samozřejmě máte pravdu, Space pen v této podobě je pouhá legenda, ale v tu chvíli mě nenapadlo lepší srovnání. Chtěl bych se tedy omluvit všem, které jsem zbytečně mistifikoval. Ale musíte uznat, že myšlenková podstata není zcela nesmyslná.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJak jsem psal, vaše myšlenka je v podstatě správná. Ovšem nové technologie zpravidla plní potřeby lépe, než ty staré. Jsou totiž vyvíjeny právě pro odstranění nevýhod těch starých technologií. Proto se dnes například amputace provádí v anestezii, a ne za živa po požití půl litru vodky. Proto s sebou dnes můžete nosit telefon a browser, a nemusíte používat telegraf a chodit zjišťovat informace do univerzitních knihoven.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWindows kernel a kvalitni navrh? Mam pocit, ze to se tu uz jednou rozebyralo, a moc kvalitne to zrovna nepusobilo… ;)
No, ale co, kazdemu jeho nebe… no ne?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoArchitektura NT je zcela nepochybně lepší, než architektura Linuxu nebo starých unixů. Když se to tu rozebíralo, tak se to zvrhlo v nesmyslné diskuze o adresářové struktuře, umístění logů a podobné ptákoviny, které s kernelem nemají nic společného. Samozřejmě každému co jeho jest. Pokud někomu vyhovuje v extrému třeba děrná páska nebo TTY, je to jeho věc.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoClovicku LOL :-D
Nj, ono, by se to nebylo byvalo zvrtlo, kdyby nekteri WinPR flameri radeji zamerne neodvraceli tema ve chvili kdy zacelo vyplouvat na svetlo sveta jak prasacky je tam reseno napriklad vetveni podle archytektury a typu procesoru… podobne jak jste to predvedl v reakci na citat z knihy pana Jelinka…
No radeji zastaraly Linux (nebo Unix)a dernou pasku, s jistotou, ze bude fungovat. A kdyz ne, tak budu mit alespon sanci vysledovat co se zhruba stalo. Rozhodne nebudu brat moderni vymakany, system ktery ve chvili kdy dojde k nejake chybe tak jedine ceho je schopen, tak modre podbarvit orazovku a napsat odusevnelou hlasku, ze system byl zastaven, aby nedoslo k poskozeni hardware…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoLinux samozřejmě nemá cenu přepisovat jako mikrokernel. Pro to můžeme kdykoliv forknout plně funkční Minix 3 a MS může jen tiše závidět ;)
Ano, Windows NT mají kvalitní návrh a je to to vaše modifikované mikrojádro (které se odborně nazývá hybridní), ale je implementované jako monolitické jádro (user space nemá přímý přístup k HW), takže tam se žádný pokrok nekoná :)
Unixy proti NT mi připadají zastaralé tak jako Trabant proti Praze Aero – sice je starší, ale daleko lépe funguje :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMINIX? To je ten kernel, co už asi 10 let do roka nahradí kernel Linuxu? Něco jako rok Minixu? :) Kdo vám proboha namluvil, že když user space nemá přímý přístup k jádru, tak je kernel monolitický? K posledním odstavci: Unixy proti NT jako Trabant proti Praze Aero, to moc nesedí. Asi jste se střelil do nohy.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMinix… proboha ne! Jádro, které na svatýho Dyndy nahradí Linux, je Hurd.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoÁ, moje chyba. Z jiného soudku. Windows 7 mají údajně už dnes více uživatelů, než Linux. Zřejmě se opakuje situace z beta testů Windows 2000, kdy měla nevydaná verze Windows také více uživatelů, než všechna distra Linuxu dohromady. Zajímavé.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNj. Kdyz MS si udela carku za prodanou kazdou kopii (vcetne tech vnucenych pres predinstalovane OEM) bez ohledu na to zda se v realu pouziva, nebo ne. Pak to prezentuje jako pocet uzivatelu.
Vyborne, a co si ma clovek potom myslet o poctech uzivatelu nevydanych MS produktu, kdyz samotna MS poiziva na pocitani statistik martanskou matematiku…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTa procenta se berou typicky ze statistik reprezentativního výběru webových serverů. A MS si samozřejmě udělá čáku za každý prodaný kus, protože z něj má zisk. Mozilla Foundation nebo Sun si zase udělají čárku za každé stažení Firefoxu či OOo, i když si lidé stahují SW kvůli upgradu na poslední verzi, nebo produkt vůbec nepoužívají. Já například stáhl asi postupně 5–10 verzí OOo, a vyjma testování jsem nepoužíval ani jednu.
O počtech uživatelů nevydaných MS produktů si myslete to, že takových uživatelů je na webu za pouhých sedm měsíců víc, než jich stačil Linux nasbírat za 17 let.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAno vaše webové statistiky. Stejně věrohodné jakoikyvy – tzn. vůbec. Nevadilo by mě kdyby mnou zmiňované statistiky byly prozentované jako prodejnost/či počty zakoupaných produktů MS. Ne jako počty uživatelů. Všiměte si, že třeba Mozilla prozentuje počty stažení Firefoxu.
O počtech nevydaných (ale i vydanych) produktu MS si budu myslet, že je to lež založená na neúplných, významově překroucených a nepřesných faktech, bez ohledu co chcete vy. :-p
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknos/jakoikyvy/ jako vy
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWebové statistiky jsou to nejpřesnější, co máme.
Ano, Mozilla prezentuje počty stažení FF (a Sun počty stažení OOo). Ty čísla jsou ale naprosto o ničem. FF stahuje řada lidí jako upgrade z předchozí verze, po reinstalaci OS apod. Přes tu miliardu stažení má FF jen asi čtvrtinový podíl na webu. OOo také každý stahuje (já stáhl postupně asi 5 verzí na testování), ale prakticky nikdo ho nakonec nepoužívá.
Klidně do sbírky svých bludů zařaďte několik dalších, mě je to upřímně jedno :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWebové statistiky jsou Možná nejpřesnější co máme, ale konkrétní použitelné hodnoty v nich nelze hledat. Pouze v jakem pořadí (dle četnosti) se identifikují stroje, které komunikují s serverem, zabírajícím data pro tyto statistiky. Z toho ovšem (vzhledem k možnostem konfiguraci mnoha systému unixového typu), proxy v cestě apod, lze odvozovat opravdu jen málo – ale to už se tu taky probíralo nejmíň tisíckrát.
Zase špatně čtete. Ja jsem psal jasně a pouze, že Mozilla své statistiky prezentuje jako počet stažení. Nikde už však nebyla ani zmínka o tom jak moc je, či není používána. Tenhle problém má MS.
„Klidně do sbírky svých bludů zařaďte několik dalších, mě je to upřímně jedno“. Nemějte obavy, dávám si veliký pozor, abych od vás nic závadného nepochytil :-D – když už jsme u těch vzájemných zdvořilosti. ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJa si zase zakoupil asi 5 licenci na windows, z nichz jsem nepouzil ani jednu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoUživatelů? Zkuste si spočítat, kolik uživatelů má běžná linuxová instalace a kolik jich má windowsí. Vyjdou vám velmi zajímavá čísla o tom, že MS si cucá informace z prstu tím, že prohlásí, že počet kopií (navíc u MS jen prodaných, ne používaných, zatímco u Linuxu se počítají jen používané) je počet uživatelů.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoV případě Windows 7 těžko může MS prezentovat počty prodaných kusů, když ještě nejsou v prodeji. Jde o webové statistiky, ve kterých Windows 7 mají vyšší procento než Linux.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWebové statistiky jsou značně nepřesné a nelze je nějak relevantně brát. Třeba jedna trochu agresivněji nastavená proxy, za kterou je tisíc uživatelů (něco takového jsem viděl několikrát), se v nich dokáže chovat jako uživatel jeden. Nebo docela běžné nastavení, při kterém se linuxový prohlížeč maskuje jako IE na Windows (kvůli debilním webům, které jinak nefungují). Naproti tomu testovací Windows 7 pochybuji, že by takové konfigurace vůbec používaly.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOvšem za těmi agresivně nastavenými podnikovými proxy jsou Windows, takže to nebude ke škodě Linuxu. Hypotéza utajeného Linuxu je blud. Vychází z toh, že dotyčný má Linux, jeho kamarád Franta má Linux, Jarda má taky Linux, ve škole v labu je Linux, takže je Linux úplně všude. Když není vidět ve statistikách, je nutné hledat důvod, proč tam není. Skutečnost je ale jiná. Linux se prostě používá minimálně. V počtu uživatelů ho předhodí i nevydaná verze Windows.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoZa těmi agresivně nastavenými proxy byly unixové (Linux či BSD) terminály. A to podvrhování User-Agent řetězců je známá věc, která dělá statistikům problémy.
> V počtu uživatelů ho předhodí i nevydaná verze Windows.
Na to jste přišel kde? Já našel tato čísla:
While Linux is flirting with the 1% usage share mark, Windows 7 has grown to no less than 0.42% of the operating system market. [Softpedia, 2. června 2009]
4 Linux 2.02%
5 Windows 7 1.24%
[W3 Counter, statistiky za červenec 2009]
Linux 1.05%
Windows 7 0.89%
[marketshare.hitslink.com, statistiky za červenec 2009]
Samozřejmě i tohle je dobrý součet špatných čísel (stačí vidět ty rozdíly v hodnotách). Stejně statistická odchylka pro takovéto výzkumy je v řádu jednotek procent (běžně až kolem 5 %), takže vše může být úplně jinak ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoPíšou to na (l)živě, a vycházejí z údajů rankings.cz a netmonitor.cz. Na http://marketshare.hitslink.com/ se pravda Linux ještě drží o 0,16% nad Windows 7. ČR je holt progresivní.
http://www.zive.cz/text.aspx?textartimg=1&article=148228
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoUvazujete i ruzne wifi, dsl atd. krabicky?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSamozřejmě že neuvažuje, protože to se nedá měřit ani těmi odhady zvanými webové statistiky.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoHurd? Proc myslite, ze by to mel byt zrovna Hurd? A verite tomu, ze jej nekdy dokonci do stavu kdy jej bude mozno pouzivat v sirsim nasazeni? A co tvurci distribuci – prijmou jej? Po tolika letech? Nechci vam kazit iluze, ale mam vazny obavy, ze hurd je nostalgicky stin minulosti… Uprime moc neverim ani na fork Minixu3…
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNe, to je Hurd. Minix je systém, podle kterého (jeho první verze) Linus napsal Linux a od verze 3 je plně funkční mikrojádro.
User space má vždycky přístup k jádru ;) Rozdíl je v tom, že u mikrojader mají ovladače přímý přístup k HW (resp. na x86 používají jádro pro posílání raw dat, které jádro nijak nekontroluje, na a čtení z I/O portů) a přitom běží v user space (nebo alespoň nižším ringu než kernel space – tak to měl MULTICS i THE, který s ringy přišel). Důvodem je samozřejmě to, že pád v kernel ringu shodí celý systém, jak jistě všichni známe z BSOD ve Windows (které mikrojádro nejsou) – když v Minixu padne ovladač disku, tak se restartuje a aplikace většinou vůbec nic nepoznají.
No zrovna ten Minix (nebo QNX) je daleko pokročilejší jádro než Windows NT a je UNIX-like, takže nestřelil.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„se odborně nazývá hybridní“ – moc čtete Wikipedii. MS mluví o modifikovaném mikrokernelu. A jak jsem psal, nemá smysl vytvářet novou umělou kategorii, a házet do ní naprosto rozdílné věci (modifikovaný mikrokernel a modifikovaný monolitický kernel).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMS si může mluvit o čem chce, ale je to jenom PR, Windows NT jsou hybridní kernel. Pokud se vám to pojmenování nelíbí a chcete jen jestli je mikrojádro nebo monolitické, potom je monolitické. Nebo snad chcete tvrdit, že dodávka je modifikovaný osobní automobil a ne nákladní?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNaštěstí existuje autorita, která ví zcela přesně, jak správně pojmenovat architekturu NT kernelu. Tou autoritou samozřejmě není nějaký výrobce nebo designer, ale Sten, diskutér z rootu :)
Už jsem to vysvětloval, ale zkusím znovu. Windows NT mají mikrokernelovou architekturu s jednou významnou odchylkou. Tou je fakt, že servery běží v kernel mode (což je nutné kvůli výkonu). Proto se takové architektuře říká modifikovaný mikrokernel.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNe, tou autoritou jsou lidé, kteří se teorií operačních systémů zabývají (např. Andrew Tannenbaum) a nejsem to ani já ani vy a ani PR oddělení MS.
Windows NT mají mikrokernelovou architekturu s jednou významnou odchylkou – jsou implementovány jako modulární monolitické jádro, takže nejsou mikrojádro:
The Windows NT kernel is known as a hybrid kernel. However some kernel developers disagree, arguing that all essential parts of the system are executed in kernel mode, thus making it a monolithic kernel that is structured similarly to a microkernel.
The reason NT is not a micro-kernel system is that nearly all of the subsystems providing system services, including the entire Executive, run in kernel mode (in the same address space as the microkernel itself), rather than in user-mode server processes, as would be the case with a microkernel design.
Další důležitou vlastností, kterou má NT společnou s monolitickými jádry, je to, že všechy objekty v executive jsou ve společném namespace (a společném prostoru handlů) a lze tak k nim přímo přistupovat z jiných ovladačů (případně u špatně pojmenovaných může snadno dojít ke kolizi jmen, což dobře známe z některých starých verzí Linuxu), čímž se porušuje striktní oddělení serverů v mikrojádrech (což ale porušuje už to, že běží v kernel mode ve společném adresním prostoru).
MS PR oddělení tomu říká modifikovaný mikrokernel, protože to lépe zní, ale ve skutečnosti jde o modulární monolitické jádro, velmi podobné tomu, co má Linux; zásadní rozdíl je akorát stabilní API a možnost některé moduly (omezené tím, co chtějí provádět) spouštět v user space.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoWindows NT's kernel mode code further distinguishes between the „kernel“, whose primary purpose is to implement processor and architecture dependent functions, and the „executive“. This was designed as a modified microkernel, as the Windows NT kernel does not meet all of the criteria of a pure microkernel.
http://en.wikipedia.org/wiki/Windows_NT
Operating systems that follow both of these principles are often called pure microkernel systems. Operating systems that follow the first principle only strict modularity and strong encapsulation but not the second, are sometimes called modified microkernel or macrokernel operating systems.
http://technet.microsoft.com/en-us/library/cc750820.aspx
Jako hřebíček do rakve pak hybridní kernely na Wiki: A hybrid kernel is a kernel architecture based on combining aspects of microkernel and monolithic kernel architectures used in computer operating systems. The category is controversial due to the similarity to monolithic kernel; the term has been dismissed by some as simple marketing. The traditional kernel categories are monolithic kernels and microkernels (with nanokernels and exokernels seen as more extreme versions of microkernels)…
Dále se tam mluví o hybridní kernelu jako quasi-category ;)
…The reason NT is not a micro-kernel system is that nearly all of the subsystems providing system services, including the entire Executive, run in kernel mode (in the same address space as the microkernel itself), rather than in user-mode server processes, as would be the case with a microkernel design. – což je přesně to, o čem jsem psal.
http://en.wikipedia.org/wiki/Hybrid_kernel
Linux například identifikuje drivery pomocí major a minor number, což samo o sobě působí dlouhou řadu problémů. O name space se má smysl bavit teprve pokud by byl tenhle pravěk předělán tak, aby konečně překonal sedmdesátá léta minulého století.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> http://en.wikipedia.org/wiki/Windows_NT
Kde vpravo nahoře je kernel type: hybrid. Navíc je tam informace „Routines from each [kernel and executive] are directly accessible, as for example from kernel-mode device drivers“, což je věc, který v mikrojádře být nesmí, tam smí být pouze nepřímo přístupné přes IPC.
> http://technet.microsoft.com/en-us/library/cc750820.aspx
Termín macrokernel se běžně používá jako synonimum pro modulární monolitický kernel, např. Linux nebo MacOS X. Jen tak mimochodem, ten první princip (modularita a zapouzření) splňuje i MacOS X (a vlastně i Linux 2.6) a nechcete doufám tvrdit, že MacOS X je mikrokernel?
> Dále se tam mluví o hybridní kernelu jako quasi-category ;)
s následnou informací, že je to ve skutečnosti monolitické jádro
> The reason NT is not a micro-kernel system is that nearly all of the subsystems providing system services, including the entire Executive, run in kernel mode (in the same address space as the microkernel itself), rather than in user-mode server processes, as would be the case with a microkernel design. – což je přesně to, o čem jsem psal.
Což je ten důvod, proč NT nejsou mikrojádro, tedy jsou buď hybridní nebo spíše monolitické jádro.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoDůvod proč spolu servery u mikrokernelu komunikují pomocí IPC je čistě technický. Vzhledem k oddělení procesů totiž nemají jinou možnost. Pokud jsou servery v kernelu, tak tu možnost mají. Vidíte tedy nějaký důvod použití IPC? Leda byste chtěl komunikaci z nějakého důvodu zpomalit.
Linux je modulární leda na úrovni zdrojáku :)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno> Důvod proč spolu servery u mikrokernelu komunikují pomocí IPC je čistě technický. Vzhledem k oddělení procesů totiž nemají jinou možnost. Pokud jsou servery v kernelu, tak tu možnost mají. Vidíte tedy nějaký důvod použití IPC?
Pokud jsou servery v kernelu a slinkují se dohromady (nepoužijí IPC, které je nezbytné alespoň pro to zapouzdření), tak už to není mikrojádro, ale monolitické jádro – úplně stejně totiž linkuje Linux moduly s jádrem.
> Linux je modulární leda na úrovni zdrojáku
Hmm, aha, a proto nemá fungující moduly od třetích stran, jako jsou ovladače AMD a nVidie, že?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoUž jste někdy slyšel o dynamickém linkování? A fakt myslíte, že například v user space se z nějakého důvodu in-process komponenty nepočítají jako komponenty?
Možnost zavedení modulů do monolitického kernelu je rozšířením jeho původního konceptu. Můžete tomu říkat modifikovaný monolitický kernel ;)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJá všechno píšu jako mikroobjekty. Objekty na úrovni jazyka C++, kde každý objekt dělá jen nějakou drobnost, která je známá, jasně zdokumentovaná a jednoduchá na pochopení. Existuje ještě monolitické programování, kde vznikají třídy a objekty, které umí všechno možný. Tam to víc připomíná C.
Obecně se myslím, že budoucnost je v mikroobjektech :-). To jestli meta OS je mít všechno kernel space, nebo v user space, případně mít v kernelu jen něco minimálního je v celku jedno.
Rozdělení na kernel a user space je stejně jen berličkou, starší počítače nic takového neměly a taky pracovaly. Izolace víceúlohových systémů může být řešena softwarově, otázkou je, zda jsme schopni tuto izolaci zajistit tak dobře, že ji nepujde jiním softwarem obejít. Ukazuje se, že zatím to zvládáme jen HW, protože ten se tak dobře přeprogramovat nedá.
Největší problém Linuxu je v tom, že je na úrovni interface binárně nekompatibilní. Že s každou verzi je třeba přeložit všechny moduly, protože se jsou linkovány napevno k dané binárnce. Toto hodně znesnadňuje vývoj ovladačů třetích stran, které kolikrát nemohou tak rychle reagovat na nové verze každého jádra a z nějakého důvodu nechtějí publikovat pod GNU GPL.
To jestli je jádro v konečném důsledku monolitické, nebo mikrojádro, je v celku jedno. Autor možná chtěl říct spíš to, zda linux právě řešením modularit až na úrovni zdrojových kódu nezaspal dobu.
Já bych spíš řekl, že zaspal s vlastním návrhem, který (díky svému monolitické Cčkovské struktůře) špatně řeší binární kompatibilitu mezi jednotlivými verzemi.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJe to uz nejaka doba co jsem tohle tema zalozil… popravde cekal jsem ze dostanu 2–3 odpovedi a konec. No nejak se to rozjelo… rekl bych az moc:) Precetl jsem si prispevky, nechal je rozlezet v hlave a mel bych jeste nejake otazky…
Ve skriptech mame napsano ze v „dobach Unixu“ existovalo nepsane pravidlo KISS(keep it small and simple). Vysvetleno je tak ze je lepsi nekolik malych programu nez vse narvat do jednoho velkeho. Kvuli urzitelnosti poradku v kodu, kvuli stabilite atd. Hned na dalsi strance bylo ze Linux je monolit co narve vse do jednoho souboru(kazdym rokem nekde ctu ze jadro se zvetsilo o x tisic radku). Rikal jsem si tak na jednu stranu hlasaji modularitu a jednoduchost a na druhou stranu delaji presny opak. To je to cemu jsem nerozumel… Nekteri z vas co sem prispivate jste ve srovnani se mnou na pro me na dost vysoke urovni – mam tim na mysli vselijake ty mikroobjekty, content switche..:) Nejsem programator a moc tomuhle nerozumim. Tema jsem zalozil s domenkou ze zustaneme spis u abstrakce a nepujdeme tolik do houbky(neresit to tak konkretne). Zkusim to jinak… Nekteri z vas sem napsali ze architektura s mikrokernelem se hur programuje, ze to zere vykon atd. Dejme tomu ze je rok 2020:) Problemy ktere jste popsali jsou vyreseny a tim padem se mikrokernel stava idealnim stabilnim resenim. V user space at se deje co chce mikrokernel ma svuj space takze se neni ceho bat. Vzpominam si na reklamu na nejake tuzidlo na vlasy pro baby… Je tam nejaka zenska ktere vystupi z letadla pokazde v jinem meste napr. v Londyne, tam prsi a ona: „dest? nevadi-uces drzi“! Vystupi v Parizi:„vitr? nevadi-uces drzi“, v Rime:„slunce?nevadi uces drzi“. Stejna analogie me napada k mikrokernelu. Aplikace prepsala cizi app prostor?„nevadi-mikrokernel drzi, ma svuj“, atd:) No a protoze mame ten rok 2020 a Linuxove jadro ma rocne o nekolik tisic radku vice tak se z nej stane jeden velky neprehledny balvan – to pred cim varuje „KISS“. Vim, rikate ze monolit je osvedceny atd.. Ale me zajima ciste koncepce a ta je podle me logicky lepsi u mikrokernelu(jak jsme jiz napsal – v pripade ze se vyresi dnesni neduhy). Na konec chci jeste dodat: Myslite ze M$ jde spatnou cestou kdyz „co system to krok k mikrokernelu“? Nedavno jsem si cetl o minWin coz je mikrokernel ktery je schopen bezet sam napr ve VM a rozhranim mu je CLI. Staci zadat do googlu… A posledni dotaz na konec co GNU/Hurd? Chapu to tak ze zatimco MS rve prachy, cas a usili vyvojaru do systemu s mikrokernelem tak opensource svet o tuhle koncepci temer kasle a nechava prezivat na okraji zajmu? To nikoho z OSS sveta nenapadlo ze v budoucnosti po vyreseni dnesnich problemu s mikrokernelem by to mohl byt nastupce Linuxu ktery by tedka mohl byt vyvijen paralelne s nim? Mne to prijde fakt divne ze IBM, Red Hat, Novell a dalsi nervou prachy taky do odlisne koncepce a vsadili svou budoucnost na bobtnajici monolit. Samozrejme az budoucnost ukaze co je lepsi… a kdyz to bude mikrokernel co pak? To se bude jako narychlo dodelavat? Neberte tenhle prispevek jako nejaky zaklad pro flame ci osocovani… Jde mi o koncepci z dlouhodobeho hlediska. Diky za kazdy vysvetlujici(objasnujici) prispevek.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoShrnu to tedy polopaticky:
1. Mikrojádro a priori NENÍ bezpečnější, než monolitické jádro! Jestliže v systému s mikrojádrem spadne např. proces-plánovač, jste ve stejném loji, jako byste byl v systému s monolitickým jádrem.
2. Mikrojádro a priori NENÍ přehlednější, než monolitické jádro! Přehlednost kódu jádra systému je přeci dána přehledností jeho zdrojových textů – stejně, jako můžete napsat přehledně a modulárně monolitické jádro, můžete napsat nepřehledně mikrojádro. Přirovnal bych to k Pascalu – přestože je to teoreticky poměrně čistě navržený jazyk, napsat v něm při praktickém programování některé konstrukce aspoň trochu elegantně občas hraničí s nemožností. Výsledkem je, že teoretická čistota a přísnost architektury si vynutí mnohem horší hacky při praktickém využití, než kdybych měl k disposici trochu více volnosti a benevolence na té architektuře.
3. Mikrojádro a priori JE pomalejší! Komunikace mechanismem zpráv si zkrátka vždycky vynutí větší množství přepnutí kontextů, než monolitická architektura, a přepnutí kontextu JE obecně vždycky náročnější činnost, než pouhý přechod do privilegovaného režimu. Navíc průchodnost dále snižuje fakt, že požadavky nejsou vyřizovány podle času, přiděleného procesu, ale podle pořadí, v jakém je vyřizují servery – zatímco v monolitickém jádru proces např. žádající paměť ji dostane v rámci jednoho systémového volání (buď okamžitě, nebo v závislosti na zbývajícím času – podle toho, je-li i samotné jádro preemptivní), u mikrojádra, i když má dostatek času, bude jeho požadavek zařazen do fronty a proces zablokován, než bude žádost vyřízena. Tento fakt ztěží eliminuje nějaký budoucí procesor – podobně jako třeba to, že od jistého počtu přerovnání je algoritmus třídění zvaný quicksort rychlejší, než algoritmus probublávání – to platí s papírkama na stole, stejně jako na jakémkoli turingovsky orientovaném stroji.
4. Mikrojádro činí vývoj složitější! Mikrojádro vám vyrobí z počítače na vašem stole distribuovaný systém, což není to, co by si normální člověk přál (pokud to zrovna není masochista). Tento fakt opět nezmění žádný procesor budoucnosti typu Iludium pjů 36 s výbušným modulátorem, který se bude vyrábět za 20 let.
5. Mikrojádro vzniklo snad někdy začátkem 80. let a uplynulých téměř 30 let „budoucnost“ zatím neustále ukazuje, že to opravdu není pravé ořechové.
GNU/Hurd je právě odstrašujícím příkladem, v co se takové mikrojádro může zvrhnout. Myslím, že brutální vražda spáchaná vývojářem Hurdu na tazateli banálního „kdy už to bude hotové?“ není daleko. ;-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno1. Mikrojádro a priori NENÍ bezpečnější, než monolitické jádro! Jestliže v systému s mikrojádrem spadne např. proces-plánovač, jste ve stejném loji, jako byste byl v systému s monolitickým jádrem.
Tento priklad je spatny, protoze se na nem neda nic ukazat, natoz dokazat.
Jestlize spadne napr. ovladac paralelniho portu nebo nejake jine nedulezite veci (treba disku), tak je na tom mikrokernel vyrazne lepe, protoze stale bezi, zatimco monoliticke jadro spacha sebevrazdu.
3. Mikrojádro a priori JE pomalejší! Komunikace mechanismem zpráv si zkrátka vždycky vynutí větší množství přepnutí kontextů, než monolitická architektura, a přepnutí kontextu JE obecně vždycky náročnější činnost, než pouhý přechod do privilegovaného režimu. Navíc průchodnost dále snižuje fakt, že požadavky nejsou vyřizovány podle času, přiděleného procesu, ale podle pořadí, v jakém je vyřizují servery – zatímco v monolitickém jádru proces např. žádající paměť ji dostane v rámci jednoho systémového volání (buď okamžitě, nebo v závislosti na zbývajícím času – podle toho, je-li i samotné jádro preemptivní), u mikrojádra, i když má dostatek času, bude jeho požadavek zařazen do fronty a proces zablokován, než bude žádost vyřízena. Tento fakt ztěží eliminuje nějaký budoucí procesor – podobně jako třeba to, že od jistého počtu přerovnání je algoritmus třídění zvaný quicksort rychlejší, než algoritmus probublávání – to platí s papírkama na stole, stejně jako na jakémkoli turingovsky orientovaném stroji.
Vyssi pocet syscallu, context a address space switchu samozrejme zpomaluje, ale neni to jediny faktor, ktery ovlivnuje rychlost. Take se musi zvazit, jestli to mikrojadro nema treba mensi footprint v cache a TLB, coz muze naopak vyrazne pomoci. Krom toho existuji finty, jak pocet syscallu atd. zmensit. U context a address space switchu take zalezi na tom, jestli se pouziva synchronni a nebo asynchronni IPC. Vetsina ne-x86 procesoru ma tagovana TLB, takze ty address space switche vlastne nic moc nestoji.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo asi záleží na tom, jak spadne, ne? Jestliže se kousne v monolitu, tak se holt kousne a nic to nemusí znamenat, zrovna jako u mikra. Pokud potřebuje supervisor režim, tak ho nejspíš bude potřebovat i jako proces v mikru a selhání v takovém případě bude mít stejné následky, jako u monolitu. Pravda, u monolitů se obvykle ovladače nechávají běžet v supervisor režimu, i když to není potřeba, ale nebyl by zas takový problém napsat monolit tak, aby ovladače (nebo aspoň jejich části) běžely v normálním režimu, pokud jim to stačí. Ostatně např. v tom MINIXu ovladače jely taky v supervisor režimu. Pokud vím, tak teď to předělávají, ale jak jsou daleko, to asi spíš budeš vědět Ty, nějak jsem se o to nezajímal.
Mikrojádro jako takové pravděpodobně menší footprint má, jenže je to celkem irrelevantní, protože samotné mikrojádro bez serverů je tak nějak na nic. Přehazování kontextů se ale děje stejně, jako u monolitů, jenom je jich z principu víc, a i kdyby to „nic moc“ nestálo, i tak je to z celého syscallu pořád ta nejnáročnější jalová operace.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoSpis jsem myslel, ze to spadne pristupem na spatnou adresu. Nicmene i kdyz se to kousne, tak v kernelu s tim uz nic moc neudelas, kdezto ten userspacovy driver muzes mit sanci jeste normalne zabit a treba pustit znovu.
O tom, ze by ten paralelni/diskovy driver bezel v privilegovanem rezimu jsem ani na chvili neuvazoval, trochu by to ztracelo smysl… Pokud si pamatuji, tak Minix ma dva systemove servery, ktere bezi v privilegovanem rezimu, zbytek bezi v neprivilegovanem, ale klidne to jde udelat tak, ze mas jen mikrojadro a same uzivatelske procesy bezici v neprivilegovanem rezimu, vcetne vsech driveru.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno" 3. Mikrojádro a priori JE pomalejší! Komunikace mechanismem zpráv si zkrátka vždycky vynutí větší množství přepnutí kontextů,"
Je mýtus a nesmysl. Dvě aplikace se umí dohodnout bez toho, aniž by proběhl jediný context-switch navíc. Stačí jí k tomu sdílená paměť fungující jako fronta a nějaký zámek – úplně postačí spin-lock a případně nějaký event object pro případ, že by server neměl co dělat (aby se uměl zastavit a čekat). Kernel s tím nemusí mít nic společného. Na dvoujádrovém procesoru při poslání a vyzvednutí požadavku neproběhne ani jeden context-switch.
Synchronní požadavky vyžadují zastavení jedno procesu (zpravidla na event objektu), což představuje jeden context-switch navíc (vlastně dva, jeden do jádra a jeden z jádra). Po vyzvednutí požadavku a zpracování pak následuje uvolnění čekajícího procesu, což může být otázkou opět dvou context-switchů, opět do jádra a z jádra. V porovnání s běžným voláním to může být o jeden context-switch navíc,… ale nemusí.
Synchronní volání mohou být realizována třeba branou přímo do serveru, bez účasti jádra. Volající proces zavolá server, dojde k přepnutí přímo do serveru a ve stejném vláknu, avšak v jiném kontextu proběhne volání serveru. Server se chová jako by byl v kernelu, ale beží v user-space, akorát má jiná práva.
Obecně si myslím, že síla mikrokernelu je ve větších možnostech přidělování práv jednotlivých ovladačů a jejich základní izolace. Pak se nestane, že ovladač tiskárny poškodí ovladač disku chybným zápisem do paměti. Lépe se i řeší zabezpečení počítače, protože ovladače, byť mají větší práva, nemají šanci ovlivňovat činnost jiných ovladačů, třeba ovladač pro šifrovaný filesystem se nemusí bát, že někdo jiný získá přístup k jeho dešifrovaným datům. Víme, jak špatně se řeší v dnešní době „doinstalování“ neověřených ovladačů. Všelijaké podpisování a autorizace jsou jen polovičním řešením. Úplná izolace je pak úplné řešení, kdy se opravdu počítač stává nástrojem a nikoliv pánem. Kdy i BFU zvládne nainstalovat ovladač k foťáku, aniž by k tomu potřeboval práva superuživatele… protože ovladač k foťáku získá právo pouze na zásuvku, ke které je připojení foťák a uživatelský kontext uživatele, který jej instaloval.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTen posledni odstavec neni uplne pravdivy. Treba ten ovladac tiskarny, kdy naposledy jste pouzil paraleni port? Tiskarna bude nejspis pripojena na USB nebo SCSI(i to se muze stat) takze ovadac tiskarny bude pristupovat k ovladaci USB sbernice. Stejne tak ovladac filesystemu bude pristupovat block device, ten zase k multipath driveru a ten zase v ovladaci na FC adapter. Drive nebo pozdeji skoncite u obrovskeho pavouka a toho pujde tezko rozmotat. Viz loop device. Pritom ovladac sitovky muze klidne precist/zapsat libovolnou stranku v pameti, proste pozada kartu a ta to za nej udela. Stejne tak muze zablokovat cely system, staci zacit busmaster prenos na PCI a nedokoncit ho. Uplna izolace je pouze iluze, ktera funguje na HW platformach podporujicich virtualizaci. Treba ovladace v linuxu si musi zaregistrovat io range sveho HW, jednoducha struktura rika jakemu ovladaci patri danny hw. Takze pokud vsichni dodrzuji pravidla tak nemuze dojit ke kolizi ani na monolitickem kernelu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJeste jsem si na neco vzpomel. Jednu z vlastnosti mikrokernelu Linux uz ma. Linux osetruje preruseni asynchronne. Tzn. handler interruptu nereaguje primo, ale misto toho vklada do fronty pozadavky. Ty pozadavky pak jine vlakno vyzvedava a obsluhuje. Ale treba nektere CDMA modemy vyzaduji odpoved „okamzite“. Proto ma ovladac pro seriovy port blacklist hw, ktery je potreba osetrit nejak specialne. Je to hnusny hack, ktery poskozuje design, ale jinak by ten HW proste nefungoval.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoŽe je pro vás něco iluze neznamená, že to nemusí existovat. Jen jste to ještě neviděl.
Nevidím, problém v tom, že nějaký HW umí přečíst nějaký kus paměti ani v zablokování PCI sběrnice. Neznám podrobnosti, ale určitě by to šlo řešit vhodným API pro přímý přístup (například pomocí streamů, ať už s bufferem, nebo rourou a při timeoutu nebo výjimce kernel sám sběrnici odblokuje).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNení to mýtus, ani nesmysl, ale holý fakt!
1. Dvě aplikace (Čto éto takóje? Máte na mysli procesy?) spolu můžou komunikovat jak chtějí, ale zde se bavíme o vyřizování volání API jádrem. U monolitické koncepce k žádnému přepnutí kontextu nedojde, pouze k přepnutí do privilegovaného režimu a obsloužení systémového volání je provedeno v kontextu volajícího procesu. U mikrojádra má proces k dispozici jen jedno volání – něco jako Send/Rec apod. K systémovému volání tedy musí připravit zprávu, zavolat send/rec, ten přepne do privilegovaného režimu a pošle systémovému procesu zprávu, obvykle zablokuje volající proces a nechá naplánovat nový proces – v optimálním případě ten, kterému byla poslána zpráva. Dojde k přepnutí kontextu na systémový proces, vyřízení volání, připravení odpovědi a její odeslání volajícímu – tj. vyvolání plánovače, přehození kontextů, uvolnění volajícího a přepnutí zpět do neprivilegované úrovně volajícího procesu, který si zprávu vyzvedne.
2. Různé brány apod., vynucující programovat servery reentrantně, přísně vzato nemají s myšlenkou mikrojádra nic společného, ale naopak, jdou proti ní! Základní myšlenkou mikrojader je omezení vzájemné imperativní komunikace pouze na zprávy a izolace funkčních modulů pouze do procesů.
Navíc mi smysl vašeho příkladu komunikace dvou procesů poněkud uniká – uvádíte klasickou ukázku synchronizace dvou procesů nad sdílenou strukturou a ta je nezávislá na tom, jde-li o mikrojádro, nebo monolitické jádro. Neboli to nemá k rozebíranému tématu žádnou argumentační relevanci. Kdybych přesto chtěl váš příklad použít k dokumentaci rozdílu činnosti monolitického a mikrojádra, vypadalo by to takto:
1) Monolitické jádro – proces A zavolá jádro k získání sdílené paměti (provede se v jeho kontextu – A), k získání semaforu (opět v kontextu A), dále např. pomocí zprávy pošle klíč a semafor procesu B (v jeho průběhu pravděpodobně dojde k přepnutí na proces B, který si zprávu přečte a při následném vstupu do kritické sekce – jenž se provede v kontextu B – zůstane zablokován v privilegovaném běhu kontextu B; postupně dojde k přepnutí na kontext A, který pokračuje v činnosti). Proces A připraví data, uloží je do sdílené paměti a opustí kritickou sekci (stane se v kontextu A, dojde k uvolnění a naplánování B, přehození kontextu na B). B je uvolněn a pokračuje v kritiké sekci čtením dat.
2) Mikrojádro – proces A pošle zprávu systémovému procesu, že chce sdílenou paměť (přehodí se kontext a naplánuje se správce paměti MEM, který zařadí požadavek do fronty a až na něj dojde řada, zpracuje ho a připraví odpověď pro A). Dojde k přehození kontextu na A, A připraví zprávu pro nějaký proces IPC, že chce semafor, dojde k přehození kontextu na IPC, zařazení do fronty, až dojde řada, připraví odpověď, přepnutí na A. A pošle klíč + semafor procesu B – v tomto bodě to proběhne stejně, jako u monolitického jádra. B chce vstoupit do kritické sekce, proto připraví odpovídající zprávu pro proces IPC, přepne se kontext na IPC, zařadí se do fronty, při zpracování se přijde na to, že v kritické sekci už je A, takže požadavek zůstává nevyřízen a proces B je nadále blokován. Až dojde řada na A, zapíše data, připraví zprávu pro IPC, že opouští kritickou sekci, pošle mu ji – přepnutí kontextu na IPC, zařazení do fronty, vyřízení, při němž je požadavek spárován s žádostí B, která je tímto vyřízena a po přepnutí kontextu z IPC na B je B odblokován a pokračuje v kritické sekci. Rozdíl v počtu přehazování kontextů oproti monolitickému jádru jsem ani nepočítal.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAha, tak já měl na mysli jiný mikrokernel. Ten co jen přiděluje práva aplikacím / procesům a jednotlivé procesy pak spravují služby celého OS. Takže všechny ovladače jsou v user-space, grafika je v user-space, disk je v user-space, síť je v user-space a v kernelu je jen plánovač a správce paměti (a to ještě jen virtuální paměti, přidělování stránek, heap je v user-space) a správce přímého vstupu k HW (přidělování portů a mapované paměti)
Každá aplikace pak má přidělenu třeba sadu bran, oblasti mapované paměti HW, nebo api pro přímý přístup k HW.
Takovou architekturu jsem ještě neviděl.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA jak tedy funguje „váš“ mikrokernel? :-) Jak probíhá přidělení paměti procesu, když o paměť se stará „proces-správce paměti“? Jak probíhá načtení bloku, když o disk se stará „proces-ovladač disku“? Tedy – jak jinak to probíhá, když ne přes zprávy a přepínání kontextů? Proces, jehož kód (část jehož kódu) může také probíhat v kontextu jiného procesu pomocí volání nějaké brány, nebo také nemusí, podle potřeby – to jde zcela mimo základní myšlenku mikrojádra. Nejen mikrojádra, to jde zcela mimo myšlenku koncepce procesu jakožto autonomní, základní výkonné jednotky jakéhokoliv multitaskového operačního systému. Když se podíváte třeba na zdrojáky Minixu, což je učebnicový mikrokernel, zjistíte, že to funguje přesně tak, jak jsem napsal výše.
P.S.: poznámka o ovladačích je na místě – jak bylo napsáno výše – když potřebuje ovladač přístup ke sběrnici, no tak ho bude potřebovat, ať je v monolitickém jádru, nebo v mikrojádru. Mikrojádro jisté zabezpečení přináší – např. pokud chyba v ovladači způsobuje přímý zápis do paměti, kam nemá, třeba chybným ukazatelem. Ale situacím, kdy ovladač předá zařízení chybnou adresu pro DMA přenos apod. samotné mikrojádro nijak zabránit nemůže.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoOdpověď je o příspěvek níze. DMA lze samozřejmě naprogramovat blbě, ale pomocí nějakeho DMA API které si předané adresy předtím zkontroluje už to bezpečnostní problém není. DMA API je už tak lowlevel funkce, že její umístění do kernelu je víc než logický krok…
více, viz má představa hybridního jádra níže.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA jak tedy funguje „váš“ mikrokernel? :-) Jak probíhá přidělení paměti procesu, když o paměť se stará „proces-správce paměti“?
A kdo rika, ze musi byt nejaky proces-spravce pameti? Napr. v HelenOSu si proces vytvori pomoci syscallu oblast virtualni pameti na kterou kdyz sahne, tak mu kernel naalokuje a namapuje fyzickou pamet. To co popisujete vy je specificke jen pro nektera mikrojadra.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoKdo? No autor myšlenky mikrojádra přece. :-) Jestliže má HelenOS syscall (ve smyslu instrukce call nebo int nebo něčeho podobného) pro vytvoření oblasti virtuální paměti, pak se jedná o element, který v mikrojádru nemá co dělat. Jediné „opravdové“ syscally, kterými má mikrojádro disponovat, jsou na posílání zpráv (ve stylu send, receive, sendrec atp.) a pro systémové procesy ještě pro základní plánování (ve stylu sched, getnext, ready, unready apod.). To je přece charakteristický rys mikrojádra.
Nevím, no, to co popisuji já je specifické pro veškerá mikrojádra, řekl bych – pokud takto nějaké jádro nefunguje, pak to není mikrojádro. :-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJo a kdo neskace taky neni mikrokernel, co? :-)
V tom vasem seznamu me zase prekvapuje, ze v nem figuruje sched, getnext, ready a unready. Sice mam za to, ze to jsou spis normalni Minixove funkce, ktere ty systemove procesy mohou diky sdilenemu adresovemu prostoru volat primo, ale prave neco takoveho je pro mikrokernel zbytecne.
Kdyz se jeste zastavim u toho Minixu, tak ten ma jeste syscally na PIO, coz je uplne zbytecne, protoze PIO se da delat z userspacu. Znamena to snad, ze Minix take neni mikrojadro?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNazveme-li je speciálními syscally, je to konzistentnější, než když budeme tvrdit, že jde o „normální minixové funkce“. Proces přece nemůže volat „normální minixovou funkci“. :-) No tak zbytečné… volá je snad jen proces-ovladač hodin a mikrojádro samotné.
Které syscally máte na mysli?
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoMel jsem na mysli SYS_DEVIO a spol (vsechno SYS_* resp. obsah adresare system). Akorat si ted nejsem jisty, zda to nejsou typy zprav, kterym rozumi ty dve systemove sluzby. Ale i kdyby, tak jsou to vlastne zakuklene syscally, protoze jsou implementovany v kernelu.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJsou to typy zpráv, které zpracovává systémový server, takže z hlediska architektury mikrokernelu je to naprosto OK.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNerikam, ze to neni OK, ale je to proste sluzba, kterou poskytuje jadro. Je to uplne to same, jako kdyby na to byl dedikovany syscall, ale pomalejsi. Podivejme se na to, jak se takovy pozadavek pravdepodobne zpracovava (upozornuji, ze ted pouze odhaduji, jak to muze fungovat). Uzivetelsky proces udela syscall, rikejme mu SEND a jako parametry mu preda SYS_DEVIO, cislo portu, velikost, indikaci cteni/zapis a pripadne hodnotu pro zapis. Po prepnuti do privilegovaneho rezimu jadro bezi v kontextu procesu, ktery syscall zavolal. Obsluha syscallu SEND vezme parametry a soupne je do fronty kernelovemu threadu, kteremu se honosne rika systemovy server. Ten si pozadavek z fronty vyzvedne a zpracuje ho. Potom odpovi a puvodni proces, ktery ceka na odpoved, se muze vratit do userspacu.
Takze rozdil mezi mikrokernelem, ktery umi vice syscallu, a timto modelem je v tom, ze v prvnim pripade se ten syscall zpracuje v tom threadu/procesu, ktery syscall zavolal, zatimco v pripade druhem se ten syscall vlastne postoupi jinemu threadu/procesu, ktery ale ovsem taktez bezi v jadre. Samotny kod obou mikrokernelu bude potom srovnatelne velky (pokud podporuji srovnatelne sluzby) a na izolaci chyb to nebude mit zadny vliv. Pouze na rychlost. Akademicky zamereni fanousci mikrojader pak mohou mit prijemny pocit z toho, ze ten syscall realizovali poslanim zpravy.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTaky že jo. Stejně jako v OOP pošlu objektu zprávu, místo abych prostě zavolal funkci, ačkoliv obojí dělá v jednoduchém případě v důsledku to samé, akorát ten první způsob je obecně pomalejší, ale zato akademicky čistý.
Mikrokernel, který „umí více syscallů“, je protimluv. Je základní myšlenkou a charakteristickým rysem mikrokernelu, že právě více sycallů neumí. Abychom se netočili pořád jen kolem MINIXu, tak např. Jochen Liedtke, otec mikrokernelu L4, tvrdil, že v mikrokernelu má být jen a pouze to, co mimo něj nejde udělat. Pokud tam tedy nacpu syscally, které lze udělat v user módu, je to narušení této zásady; pokud tam navíc nacpu syscally volané přímo, které lze řešit mechanismem zpráv, je to nabourání mikrokernelového modelu na druhou.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo slovo vice je samozrejme relativni. Pouzil jsem to ve smyslu vice nez tolik, kolik staci na IPC. Samozrejme, ze rozdil mezi mikrokernelem a monolitickym jadrem se projevi v absolutnim poctu podporovanych syscallu. Minix a HelenOS kolem 30(±), Linux a Solaris radove vic (>100?).
O principu minimality jsem v teto diskusi jiz psal. To ze si otec mikrokernelu L4 neco zadefinuje mi muze byt docela jedno, protoze L4 je jen jednim z mikrojader a odmitam predstavu, ze jedine L4 je ten spravny mikrokernel. Viz moje narazka na absurditu tohoto principu v pripade synchronni/asynchronni IPC.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTo spíš mně může být úplně jedno, čemu říkáš mikrokernel Ty. Co se týče mě, ztotožňuji se s Liedtkeho či Tanenbaumovou představou o tom, co nazývat pojmem „mikrokernel“. Přeci jen se jedná o světově uznávané matadory mikrokernelů a jejich názor a koncepce jejich jader má proto pro mě v daném oboru podstatně větší váhu, než jakýsi HelenOS a terminologie jeho tvůrců. Takže nic proti, ale podobné debaty jsou úplně zbytečné, protože se nakonec ukazuje, že každý si pod daným pojmem představí něco jiného.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoJenze ja na rozdil od Tebe nerikam, ze neco mikrokernel neni. Podle mne jsi si precetl nejakou chytrou knihu o tom, co je to mikrokernel a ted mas utkvelou (ale chybnou) predstavu, kterou vnucujes ostatnim a ohanis se pritom L & T. Znamena to snad, ze kdyz nejsem T., tak nemuzu neco naprogramovat a rict o tom, ze to je mikrokernel? Obzvlast kdyz to mikrokernel je? Prece nebudu programovat monolit a rikat o tom, ze je to mikrokernel (nebo naopak), ne?
Jasne jsme si tady ukazali, ze Minix ma v kernelu spoustu veci, ktere tam podle principu minimality nepatri. Znovu se ptam: znamena to snad podle Tebe, ze Minix take neni mikrokernel? Pokud ne, tak se ptam: a proc by tedy podle stejneho meritka melo znamenat, ze HelenOS neni mikrokernel? Mimochodem, princip minimality nerika nic o poctu syscallu, ale o sluzbach poskytovanych jadrem.
Kdyz se kouknes treba na Wikipedii, tak tam o mikrokernelech najdes clanek, ktery ma prijatelnou definici mikrokernelu – a to se jedna o clanek tezce opracovavany panem Heiserem z projektu OKL4. Take tam zminuji princip minimality, ale spravne upozornuji na to, ze toho vetsina kernelu z ruznych duvodu nedosahuje. Takze odkud se vzala ta Tvoje uzoucka definice, do ktere se zadny mikrokernel nevejde? Urcite ji nemas od T.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTěch „chytrých knih“ a dalších materiálů, s nimiž jsem pracoval, bylo přeci jen za ta léta poněkud více, takže jedna knížka za to fakt nemůže. Co naprogramuješ si můžeš nazývat jak chceš, ale nesmíš se pak divit, dojde-li k nedorozumění.
Tady narážíš na další možnou věc nedorozumění – co si představuješ pod pojmem „jádro“. To, co běží v supervisor módu? To, co je procesem voláno přes trap procesoru? To, co se provede v caller-kontextu? I z logiky toho, že se bavíme o _mikro_jádru, snad plyne, co měl autor toho termínu na mysli. MINIX to z tohoto pohledu nenarušuje. Pokud bychom použili nějakou obecnější definici, která třeba říká, že je to vrstva softwaru nezbytná k využívání prostředků počítače uživatelskými programy, pak pojem mikrokernel naprosto ztrácí smysl, protože ovladače a systémové servery dohromady celkem jednoznačně tvoří jádro – které určitě není zrovna žádnou „mikro-“záležitostí a z pohledu takovéto definice se nijak neliší od monolitické koncepce.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoTy jo to uz spolu zaciname resit docela elementarni veci :-) Kdyz to vezmeme od lesa, tak v monolitu je jadro kod, ktery bezi v privilegovanem rezimu, ma nejaky svuj adresovy prostor a vetsinou se najde v jednom zdrojovem podadresari, ktery se jmenuje nejak jako kernel (srovnej s Minixem), sys, uts, 9 nebo nejak jinak. No a v pripade mikrojadra ma smysl tuto definici recyklovat s tim, ze v tom privilegovanem kodu vetsinou chybi file system, networking a device drivery. Vyjmute casti jsou potom presunuty do userspace.
Cili Minix kernel je i to, co bezi jako system server. Kdo neveri at tam bezi a nebo at si radsi precte 3. kapitolu Minixoveho paperu Reorganizing UNIX for Reliability:
The kernel is responsible for low-level and privileged operations such as programming the CPU and MMU, interrupt handling, and IPC, and contains two tasks (SYS and CLOCK) to support the user-mode parts of the operating system
Takze kdo tady pouziva nejakou jinou terminologii? :-)
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoNo právě. Čím elementárnější, tím zdánlivě jednodušší a jasnější, ale ve skutečnosti o to podstatnější a s velkým dopadem na věci z toho plynoucí. ;-)
Je to spíš otázka toho, kdo na co klade větší důraz. A to, nač ho kladu já, je shodou okolností průnikem liedtkovského i tanenbaumovského pohledu, ale už ne toho Tvého :-) Tanenbaum má minimalitu v počtu in-kontext syscallů, Liedtke k tomu přidává minimalitu kódu běžícím v supervisor módu. To není ve sporu. Ale pokud kód monolitu rozčlením na supervisor a user v rámci jádra, tak IMHO nezískám mikrojádro, takže tahle vlastnost podle mě není ta architektonicky podstatnější, pouze se jí dá snadno a elegantně dosáhnout s využitím toho, co já si představím pod mikrojádrem – hromadu serverů vně „jádra“ a mikrojádro tvořící jen to nejnutnější a dostupné na prstech jedné ruky spočitatelnými in-kontextovými syscally.
Ta citovaná věta ale má velice dobrý souhlas se mnou používanou terminologií i chápáním pojmů – pokud rozlišíš „kernel“ a „mikrokernel“ jako dvě vrstvy toho, co je v monolitu vrstvou jedinou.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoA to vis, ze prunik disjunktnich mnozin je prazdny? :-) Pokusim se ukazat rozpor mezi obema pany, i kdyz si nemyslim, ze by se zrovna Tanenbaum pokousel o vysloveni nejakeho rigorozniho principu minimality syscallu:
Princip L: Liedtke vyslovil princip minimality, ktery rika, ze co nemusi byt v kernelu (a myslel tim kod bezici v privilegovanem rezimu), v nem byt nema.
Princip T: Vsunme pro nase ucely Tanenbaumovi do ust princip syscallove minimality, ktery rika, ze syscallu ma byt co nejmene.
Pozorovani 1: Minix ma mene „pravych“ syscallu nez mikrojadra zalozena na L4.
Pozorovani 2: Minix ma vice funkcionality v jadre nez je nutne (SYS_DEVIO a dalsi) a nez maji jadra zalozena na L4.
Z toho dostaveme:
Princip L + Pozorovani 2 ⇒ Minix ma v jadre cosi navic, co tam byt nemusi a tim padem to neni cistokrevny mikrokernel.
Princip T + Pozorovani 1 ⇒ L4 ma nejak moc „pravych“ syscallu, takze tim padem to neni cistokrevny mikrokernel.
Takze v tom pruniku neni ani L4 ani Minix.
Samozrejme, ze pocet „pravych“ syscallu lze omezit na jeden IPC syscall, ktery by se jmenoval nejak jako IpcProcessThisMsgInAnotherThreadAndReply(), ale je to pekna blbost. Uz jenom proto, ze by pak podle Tveho pohledu existoval jen jeden opravdovy mikrokernel – takovy, ktery by umel prave jen tento syscall (a byl zaroven minimalni i z pohledu Liedtkeho).
Z Linuxu take neudelam mikrokernel tak, ze pridam kernel thread, ktery bude z nejake fronty vytahovat joby ulozene syscallama. Je to asi tak na urovni debaty, zda pridavat specializovane syscally nebo cisla ioctlu (v kontextu nasi diskuze cisla zprav).
Taky se mi zda, ze mas nejaky chaos v tom, cim se v operacnich systemech zalozenych na mikrojadrech oznacuje kernel. Prave z te citovane (dejme tomu) Tanenbaumovy vety je videt, ze podle Tveho nazoru (mikrokernel != kernel) by byl Minixovy mikrokernel take prazdny, protoze ta veta do kernelu radi programovani CPU a MMU, handlovani interruptu, IPC a ty dva systemove tasky. Takze jestli kernel je mimo mikrokernel, tak co v tom Minixovem mikrokernelu teda zbyde?
Termin kernel se v tomto kontextu samozrejme pouziva zamenitelne s terminem mikrokernel. To ze se pouziva predpona mikro jen znamena, ze ve srovnani s monolitickymi kernely je tento kernel malinky (nikoliv nejmensi mozny). A proto je mozne L4, Minix, HelenOS a dalsi klasifikovat jako mikrokernel.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoCo se týče mě, ztotožňuji se s Liedtkeho či Tanenbaumovou představou o tom, co nazývat pojmem „mikrokernel“. </cite<
Jeste me napadlo, ze se nemuzes ztotoznovat s obema zaroven, protoze si prave kvuli principu minimality odporuji. Ale muzes se jednou ztotoznovat s jednim a podruhe s tim druhym.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAd bod 2) je krásná politická odpověď. Jak ukázat, že na nějakém systému jde udělat něco složitější. Asi těžko bude někdo uvažovat čistý mikrokernel, kde i plánovač (včetně semaforů) a správce paměti je samostatný modul. Uvažme tedy hybridní kernel, kde některé moduly (typicky moduly, bez kterých počítač není počítačem, jako moduly pro paměť, plánování, systémovou desku) mají monolitickou architekturu a další moduly, které nemusí mít typický počítač, (jako je zvuk, grafika, disk, a jiné), mají spíš mikrokernelovou architekturu.
Prostě nelze mikrokernel implementovat v mikrokernelu, stejně tak jako je nesmysl, aby java byla napsaná v javě, případně C# byl napsaný v C# :-)
Vždycky tam někde bude sedět obyčejný, ale nutně ořezaný monolitický kernel.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoAle jistě, že to jde. :-) Vždyť samotná myšlenka, řekl bych přímo definice, mikrokernelu je založená na tom, že vlastní jádro – proto MIKROjádro – tvoří jen nezbytná část mechanismu IPC pro komunikaci procesů – tj. posílání zpráv – a vše ostatní zajišťují servisní procesy. Jak jsem psal – koukněte např. na zdrojáky Minixu. Jestliže tedy do kódu, jenž se bude provádět v kontextu volajícího, zařadíte i správu paměti, správu procesů, kompletní IPC a ovladače systémové desky, no tak dostanete přesně to, čemu se říká monolitické jádro. :-) Ani v případě monolitických jader není nikde řečeno, že veškerý hardware musí být spravován ovladači v reentrantním jaderném kódu – např. klasický Unix měl na odkládání paměti na disk proces „swapper“, dále speciální proces „init“, na grafiku proces „X“, tiskárna měla svůj server dokonce i v jinak monotaskovém MS-DOSu – tento fakt z nich ale ještě systémy založené na mikrojádru nedělá. :-)
To je třeba napřed si ujasnit pojmy… ;-)
BTW – nevím, v čem je psaná Java nebo C#, ale C je obvykle napsané v C, Forth ve Forthu, Smalltalk ve Smalltalku a jiné příklady by se jistě našly, takže bych byl opatrný. ;-)
„Vždycky tam někde bude sedět obyčejný, ale nutně ořezaný monolitický kernel.“ – přesně tak, v diskutovaném případě se tomu ořezanému monolitickému jádru říká „mikrokernel“ a zajišťuje pouze komunikaci mezi procesy a přehazování kontextů.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vláknoVždyť samotná myšlenka, řekl bych přímo definice, mikrokernelu je založená na tom, že vlastní jádro – proto MIKROjádro – tvoří jen nezbytná část mechanismu IPC pro komunikaci procesů – tj. posílání zpráv – a vše ostatní zajišťují servisní procesy.
A to jste slysel kde? Myslim, ze zadna exaktni definice pojmu mikrokernel neexistuje. Tim spis ne takova, ktera by rikala, ze kdyz existuji i syscally, ktere nejsou IPC, tak to neni mikrokernel. Jde spis o to, aby ten mikrokernel nabizel nejakou zakladni sadu sluzeb a zbytek, jako je zejmena: file system, networking a device drivery byly userspacove procesy komunikujici pres IPC.
Jochen Liedtke (L4) formuloval princip minimality, ktery rika, ze vsechno co nemusi byt v kernelu tam byt nema, ale a) je to takovy typicky samozvany princip a b) to vede k absurditam. Uvedu priklad: v L4 se kvuli principu minimality implementuje jen synchronni IPC. Asynchronni L4 jadro neumi, protoze ji lze postavit nad synchronni (a naopak) a tudiz by tam byla uz navic. V posledni dobe, zejmena kvuli vyuziti narustajiciho paralelismu v procesorech, ale nekteri vyvojari L4 dochazeji k zaveru, ze i ta asynchronni IPC by nebyla k zahozeni, ale kvuli principu minimality ji do samotneho jadra proste nedaji. Misto toho vse resi pomoci ruznych userspacovych udelatek postavenych nad synchronni IPC. Vysledkem samozrejme je, ze to neni tak efektivni, jak by mohlo byt.
Jestliže tedy do kódu, jenž se bude provádět v kontextu volajícího, zařadíte i správu paměti, správu procesů, kompletní IPC a ovladače systémové desky, no tak dostanete přesně to, čemu se říká monolitické jádro. :-)
Zde se asi neshodneme.
Ani v případě monolitických jader není nikde řečeno, že veškerý hardware musí být spravován ovladači v reentrantním jaderném kódu – např. klasický Unix měl na odkládání paměti na disk proces „swapper“, dále speciální proces „init“, na grafiku proces „X“, tiskárna měla svůj server dokonce i v jinak monotaskovém MS-DOSu – tento fakt z nich ale ještě systémy založené na mikrojádru nedělá. :-)
No on ten swapper byl vlastne jen kernelovy thread bezici v kontextu procesu p0 (~ jakoby procesu jadra). To ze si na neco udelam specialni kernel thread nebo dokonce proces, ktery ale bezi v adresovem prostoru jadra, neznamena, ze z te veci delate mikrokernel. To by ty sluzby totiz jeste musely bezet v userspacu. Takze ze ma Minix dva specializovane jaderne procesy je hezke, ale klidne by to mohl delat ten kernel.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„BTW – nevím, v čem je psaná Java nebo C#, ale C je obvykle napsané v C, Forth ve Forthu, Smalltalk ve Smalltalku a jiné příklady by se jistě našly, takže bych byl opatrný. ;-)“
Překladač javy jste schopen napsat v javě, ale napřed musíte tu javu být schopen přeložit nebo aspoň interpretovat. A tohle musíte napsat v nějakém low-level jazyce. Nehlědě na to, že z hlediska optimality nakonec stejně valnou čast těch lowlevel funkcí jsou napsaná v C nebo C++, případně v assembleru. To samé v jiných jazycích.
Takže modelový příklad mikrojádra, který používá IPC „na všechno“ je hezká studijní záležitost, ale svět spěje spíš k hybridům. Na linuxu za všechny jeden příklad: FUSE. I Windows už taky přichází s API pro psaní ovladačů v user-space. Výsledkem bude hybrid, kdy část ovladačů bude v kernelu a část v user-space. Bude to dáno zejména potřebou, tedy zda ovladač opravdu vyžaduje mít všechna práva co kernel, nebo si vystačí s user-space právy a nebude tak muset absolovovat celou proceduru s autorizací ovladačů, zabezpečení stability. Nehledě na to, že v user-space je i jednodušší vývoj, (kernel se většinou musí ladit ve virtuálech, nebo vzdáleně).
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„Mne to prijde fakt divne ze IBM, Red Hat, Novell a dalsi nervou prachy taky do odlisne koncepce a vsadili svou budoucnost na bobtnajici monolit.“
Mně přijde úplně v pořádku, že do toho nervou prachy. Rvaním prachů nepomůžeš vývoji žádné koncepce, ani mikrokernelům ne.
Re: Nezaspal Linux dobu s monolitickým jádrem?
celé vlákno„Izolace víceúlohových systémů může být řešena softwarově, otázkou je, zda jsme schopni tuto izolaci zajistit tak dobře, že ji nepujde jiním softwarem obejít.“
Softwarovou izolaci má např. komerčně dodávaný AS/400. (nebo výzkumný Microsoft Singularity). Stručně řečeno se programy dodávají ve formě mezikódu, který operační systém přeloží a pustí. Pouští všechny procesy v jednom adresním prostoru. Ten překladač mezikódu do strojového kódu zajišťuje, aby do sebe ty procesy navzájem nemohly hrabat.
Stereotyp
celé vláknoVsimnete si, ze kdyz se rekne mikrojadro, tak vetsine diskutujicich se vybavi Hurd nebo Minix. Pritom ten prvni vlastne sam o sobe ani mikrojadro neni (jedna se o uzivatelske servery nad nejakym vhodnym mikrojadrem, ktere meli jeho vyvojari tendence v posledni dobe dost promiskuitne menit) a ten druhy je spis takova medialni hvezda diky tomu, ze se AST prel s Linusem a napsal knihu.
V zajmu porovnavani pokud mozno technicky nejvyspelejsich zastupcu z obou OS taboru (mikro/monolit) by bylo hezke, kdyby se lidem casteji vybavovaly i jine mikrokernely, treba neco zalozeneho na L4. I kdyz zase L4 odnoze maji sklon se strasne chvastat.
Proste by bylo dobre, kdyby lidi o danem mikrokernelu vedeli trochu vic nez jen to, ze existuje, nez jej zacnou zminovat jako priklad.
Školení: Návrh a používání MySQL databáze

Naučte se používat jednu z nejrozšířenějších databází. Dozvíte se vše potřebné od návrhu až po samotné využití MySQL v projektech.
Školení pro všechny, kteří se chtějí naučit efektivně pracovat s MySQL nebo se v práci s touto databází zlepšit.
Přihláška a podrobné informace

