Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor k článku
Linspire a Microsoft: Další dva kamarádi

LO
LO (neregistrovaný)
18. 6. 2007 23:44

Re: Věštba: příští windows poběží na Linuxu

celé vlákno
Samozřejmě sázka na managed jazyky nemusí vyjít, ale zatím tomu nic nenapovídá. Současná situace (buffer overflow kam se člověk podívá, obrovská spousta chyb v C/C++ kódu) potřebuje řešení, a koncept Singularity ukazuje cestu.

Mikrokernely umřely na náročnost kernel mode transition. V NT z mikrokernelů zbyla modularita a popsaný interface mezi komponentami, ale servery běží v kernel mode. Faktem je, že po slibném začátku mikrokernely odpadly, a s managed jazyky se může stát totéž.

Thread safe garbage collection je samozřejmě problém. Ovšem je možné provádět collection nezávisle pro každý proces. Singularity má levné "procesy" (SIP), takže je jich velká hromada, a tedy garbage collection není tak katastrofický.

Ohledně validace kódu doporučuji http://research.microsoft.com/os/singularity/ , a zvláště tuto publikaci:
http://research.microsoft.com/copyright/accept.asp?path=http://www.research.microsoft.com/os/singularity/publications/MSPC2006_DeconstructingIsolation.pdf&pub=ACM
V je to popis Software Isolated Process. Ve zkratce managed jazyk (C#, cokoliv jiného na .NETu, od konkurence Java) zaručuje, že aplikace nemůže například castovat integer na pointer, hrábnout mimo svůj address space, atd. Tento kód se přeloží do MSIL (u Javy by to byl bytecode). Na cílovém počítači se provede verifikace MSIL kódu, překlad do nativního (v našem případě x86) kódu, a v praxi by se výsledek zřejmě digitálně podepsal. Výsledný kód, stejně jako operační systém, běží v ring 0. Přitom je předchozí kontrolou zajištěno, že aplikace nemůže hrábnout, kam nemá. Výhodou je, že při volání systému vůbez nedochází ke kernel mode transition, takže je režie volání velmi nízká (cca 8x nižší než na tradičním systému). Pro kompatibilitu s dnešním kódem umí Singularity i "klasické procesy" v ring 3.

Samozřejmě popsaná validace řeší pouze bezpečnost, neumí třeba najít deadlock. Obecně vzato lze provést statickou analýzu kódu, která modeluje algoritmus jako stavový automat. Ten by byl zpravidla příliš velký, nicméně lze vyvodit jisté závěry pro menší kusy kódu (třeba modul, class), a na vyšší úrovni abstrakce z toho vyvozovat závěry. Jo do managed jazyků je třeba zavést invarianty, jinak je statická analýza poněkud problematická.

Jisté nástroje jsou i pro C/C++ (PREfast), ale v unmanaged jazyku v principu těžko odhadnout, co se stane po castu integeru na pointer ;). Pro .NET nabízí dnes MS FxCop, ale to je samozřejmě jen začátek.

OS (včetně kernelu) může být napsán převážně v managed jazyku (samozřejmě nakonec přeloženého do nativního kódu). Výše je vidět, jaké výhody to může přinést. MS je podle mě v této oblasti leaderem, protože má rozjeté zajímavé projekty, a má dostatek kvalitních lidí i peněz, aby to dotáhnul do konce. Otázka je, jestli to bude v příští verzi Windows, nebo až v té další. A samozřejmě je další otázka, jestli to trh přijme (a MS získá pár desítek let nádskok nad konkurencí), nebo se na tom MS složí. Za 10 let to bude jasnější ;)