Singularity: Lepší Windows
Skutečně, NOVÝ OPERAČNÍ SYSTÉM OD MICROSOFTU se jmenuje Singularity. Nikdy nespadne, je odolný vůči virům a rychlejší než Windows, Mac OS nebo Linux. Dokonce je nyní k dispozici zadarmo. Přesto není pro uživatele vhodný. Chip vám prozradí proč.
MARKUS MANDAU
Před šesti lety se Microsoft rozhodl, že vyvine zcela nový typ operačního systému. Projekt pojmenoval Singularity. Tým vývojářů proto začal s psaním zcela nového operačního systému s jediným cílem: musí být neprůstřelný. V minulém roce byl projekt Singularity představen na vývojářském veletrhu TechFest. Microsoft však zdůrazňoval: Singularity nejsou příští Windows. Je to především studnice nápadů a technických inovací. Microsoft tím chce nejspíš utlumit zájem o nový operační systém. Teď je třeba se marketingově orientovat na Windows 7. Ta jsou ještě postavena na zcela jiné architektuře. Kdo si chce nový operační systém vyzkoušet, najde na Chip DVD, pod indexem SINGULARITY, připravený obraz, který vloží do Microsoft Virtual PC 2007. Stačí rozbalit soubor z DVD a kliknout na soubor »Singularity RDK 2.0.Virtual PC 2007.vmc«. Automaticky se spustí virtuální počítač a po několika minutách nabootuje Singularity.
Nejdůležitější otázkou, která každého napadne, je to, jak bezpečný je nový operační systém. Běžným uživatelům by nový systém mohl na tváři vykouzlit úsměv. Výrobci antivirů už snad ani nebudou potřeba. Usnadní nejmodernější technologie také ovládání produktu?
Utajený vývoj systému je namístě: Windows, Mac OS, Linux - prakticky každý desktopový systém je vytvořen z velmi staré architektury. Její koncepce pochází z časů, kdy si nikdo nepředstavoval nic jako internet nebo počítačový vir a běžný počítač byl velký jako serverová skříň.
Velká část tradičních operačních systémů (především jádra) je naprogramována v jazyce C. To už by dnes vývojáři nedělali, protože příkazy v jazyce C a v jeho následovníku C++ pracují přímo s registry procesoru a operační pamětí. Výhodou je vysoký výkon takového systému, současně však vzniká při psaní tak obrovského množství kódu spousta chyb. Spuštěný kód se pak může zacyklit nebo začne vykonávat úplně jiné operace, než programátor zamýšlel.
Typickým příkladem jsou různá přetečení paměti: program je uložen v operační paměti a začne přepisovat části paměti, které mu již nepatří, nebo naopak - malware přepíše určitou část paměti běžného programu, který pak při vykonávání kódu začne způsobovat příkazy, které mu malware podstrčil. Nic z toho by nebylo možné, kdyby programy nebyly psané lajdácky. Kvůli ledabyle napsaným aplikacím se pak operační systém stává nebezpečným.
Kód: Bezpečný programovací jazyk
V Singularity je tento problém vyřešen: v systému je možné psát jen bezpečný programový kód, který nepřesáhne svoji aplikaci, a nikdo nemůže aplikaci podstrčit jiný kód. Může za to úplně nový Runtime. Ten vlastně pro každou aplikaci vytvoří speciální virtuální stroj, ve kterém pak aplikace běží. Programovacími jazyky s podporou Runtimu jsou především Java a všechny .Net jazyky, jako je třeba C#. Také kód Singularity je téměř celý vytvořen v C#. Je však v trochu pozměněné formě a nese jméno Sing#.
Na rozdíl od C a C++ nepřekládá kompilátor programový kód přímo do strojového kódu. Místo toho jej překládá do tzv. byte kódu. Výhoda: Díky tomuto mezikroku může systém kód vyzkoušet a zamezit tak různým formám přetečení paměti. To ale samozřejmě stojí nějaký výkon. Čím se to snaží Singularity dohonit, to se dočtete v odstavci 'Výkon'.
Ochrana: Všechny procesy izolované
Na rozdíl od současných operačních systémů může Singularity od sebe na softwarové úrovni oddělit a izolovat běžící procesy. Díky tomu běží aplikace, včetně knihoven, zcela samostatně. O tuto funkci se stará Software Isolated Process (SIP), který také aplikacím přiděluje vyžadované zdroje (více v obrázku napravo). Operační paměť pak kompletně spravuje SIP. Nepoužitá paměť je přichystána pro další aplikace. Runtime každého SIP běží zcela nezávisle na systému a spouští se na žádost aplikace. To je velký rozdíl oproti Linuxům nebo Windows, kde běží jen jeden Runtime pro všechny programy. Pokud se spustí například více Java appletů, pak je za ně zodpovědný jen jeden Java Runtime Environment (JRE). Pokud applet spadne, shodí s sebou JRE a také všechny ostatní applety, které v JRE běží. V Singularity k ničemu takovému nedojde. Pokud přestane fungovat jeden SIP, zbytku systému se to nijak nedotkne. Singularity tímto navíc chrání i jednotlivé aplikace. Například pokud je ActiveX komponenta, jako součást Internet Exploreru, napadena malwarem a mohla by poškodit systém, bude v Singularity ukončen jen SIP této komponenty. Samotný browser zůstane nedotčen.
Kanály: Efektivní komunikace
Vzhledem k tomu, že SIP každé aplikace běží do značné míry nezávisle, musela se vyřešit komunikace s jádrem. Tu obstarává Application Binary Interface (ABI). Přitom si vystačí jen s velmi málo povely. Pro srovnání: ABI v Singularity přichází s 163 funkcemi, Windows API (Aplication Programming Interface) obsahuje kolem 14 000 příkazů.
Zapouzdřené SIP komunikují (i mezi sebou) jen prostřednictvím kanálů. Ty vedou přes oblast, kterou kontroluje jádro - Exchange Heap. Zde se rovněž nacházejí soubory, se kterými procesy právě pracují. Každý soubor na Exchange Heap náleží vždy jen jednomu procesu. Sdílená paměť (společně používaná oblast operační paměti) je pak v Singularity zcela zakázaná, dovoleno je pouze čtení cizí paměti.
Když internetový prohlížeč stáhne soubor z internetu, uloží jej na Exchange Heap. Aby jej mohl uložit na disk, musí prohlížeč otevřít kanál k ovladači souborového systému. Souborový systém pak komunikuje kanálem s ovladačem pevného disku, poté dojde k uložení souboru. Zároveň kanálem předá SIP informace o vlastníkovi souboru.
Kanály v této podobě se zatím neobjevily v žádném jiném operačním systému. V blízké budoucnosti však bude velmi obtížné jimi operační systém vybavit. I proto se zřejmě Microsoft brání označování 'příští Windows'. Spousta práce totiž čeká i vývojáře aplikací. Současné aplikace, jako je třeba Photoshop nebo Nero, nový systém nebude podporovat, protože jsou napsány v nezabezpečeném jazyce, jako je C nebo C++. Dokonce ani Java nebo .Net aplikace nejsou bez dalších úprav použitelné, protože jim chybí podpora kanálů.
Stabilita: Modrá obrazovka je nemožná
Nyní k jádru operačního systému. V něm se nacházejí ovladače, což jsou nejnespolehlivější části systému. 85 procent všech pádů systému zaviní chybný ovladač. A chyby v linuxových ovladačích jsou sedmkrát častější než chyby ve zbytku kódu jádra.
Problémy s ovladači jsou z velké části způsobeny tím, že systém nad nimi nemá kontrolu. Ovladač může spustit kód, přidělit zdroje a způsobit konflikt s jinou systémovou komponentou. Navíc mnoho ovladačů běží s vysokými systémovými právy. Když pak takový ovladač spadne, většinou to znamená pád celého systému.
Singularity má přichystaná dvě opatření, která černé scénáře eliminují. Prvním je Manifest, který musí být součástí každé instalační rutiny ovladače. Manifest není nic jiného než XML soubor, ve kterém je napsáno, jaký typ hardwaru ovladač vyžaduje. Díky této informaci může Singularity již předem rozhodnout, jestli daný ovladač vůbec může s nainstalovaným hardwarem fungovat. Také se tím eliminuje konflikt různých ovladačů. Druhým opatřením je samotné umístění ovladače. Nainstalovaný ovladač již není součástí jádra systému, ale běží jako obyčejná aplikace zabalený v SIP. Pokud ovladač kvůli programové chybě spadne, nemá to žádný dopad na jádro. Singularity jednoduše spustí ovladač znovu a informuje uživatele o problému.
Singularity využije hardware o 30 % efektivněji
To je výhoda mikrojádra. Co možná nejvíce komponent se spouští až v okamžiku, kdy jsou potřeba. Mikrojádro ovšem není nic nového. Objevilo se již ve výukovém systému Minix v roce 1987. Nasazení v operačním systému se však tehdy nedočkalo - až v Singularity. Důvod: Systémy s mikrojádrem jsou příliš pomalé.
Výkon: Odstranění brzdy
Všechny x86 procesory mají chráněné režimy, tzv. Ringy. Celkem jsou čtyři, operační systémy však používají jen Ring0 a Ring3. Zatímco procesy s Ring0 mají přístup ke všem částem CPU a operační paměti, procesy s Ring3 nemají žádný přímý přístup k hardwaru.
Ve Windows, Linuxu a Mac OS běží všechny systémově kritické procesy, jako jsou třeba ovladače, v Ring0 neboli v kernel modu. Ostatní aplikace, jako je třeba Firefox, pak běží v user modu. Vlastně je to tak správně. Je tu však jedno 'ale': Hardwarová ochrana upřednostňuje monolitické jádro, ve kterém jsou všechny ovladače v kernel modu. A právě to činí operační systém zranitelným.
Mikrojádro má jednoduché řešení - ovladače se spustí v Ring3. Systém zůstane bez problémů stabilní, jen se tím sníží výkon: požadavek aplikace v Ring3 na systém musí probulat do Ring0, což stojí čas, jelikož Ring3 nemá přímý přístup ke zdrojům. Kolik času a výkonu se takto ztratí? Ne zrovna málo. Jedno volání přes hranice ringů je pětkrát až desetkrát pomalejší než volání uvnitř ringu.
Proto jsou monolitická jádra, která komunikují jen velmi málo přes ringy, rychlejší než přicházející mikrojádra. Singularity se však chrání softwarově pomocí výše popsaných SIP, takže ringy vůbec nepotřebuje. Jinak řečeno: Singularity běží kompletně v kernel modu, a díky tomu je mnohem rychlejší než všechny ostatní systémy.
Microsoftský tým pracující na Singularity měřil, o kolik je softwarová ochrana běžící v kernel modu rychlejší než použití ringů. Výsledek: Singularity je asi o 30 % rychlejší.
Windows, Linux a další systémy by tak mohly již nyní bez dalších složitých optimalizací běžet až o 30 % rychleji. Musela by se ovšem vyřadit hardwarová ochrana - což by zvýšilo riziko pádu. Singularity se nevzdává vysoké ochrany a přitom se jedná o štíhlý s y s t é m . Všechny tyto faktory vedou k excelentním výsledkům, co se týče výkonu (podívejte se na benchmarky vlevo). Aplikace jsou navíc, oproti těm na ostatních systémech, znevýhodněny 'bezpečným programováním'. Singularity se však může v jednotlivých případech vrátit na hardwarovou ochranu. K tomu má systém speciální Sandbox (odkladiště), ve kterém může kontrolovat kód, zda se nejedná o malware. Antivir tak bude skutečně zbytečný.
Dobrou práci odvedli vývojáři Microsoftu. V současnosti je Singularity jen v podobě modrého okna s příkazovým řádkem, experimentům je však tento nový systém zcela otevřený. Rozhodně se bude jednat o nástupce Windows. Bude to zcela nová generace operačního systému.
AUTOR@CHIP.CZ
Nejrychlejší systém
Benchmarky ukazují, kolik taktů procesoru potřebuje systém pro jednotlivé činnosti. Čím nižší hodnota, tím lepší.
ZAVOLÁNÍ JÁDRA-API
Aplikace odešle požadavek na funkci jádra operačního systému
Singularity 80
Windows XP 627
Linux 437
FreeBSD (Unix) 878
POZASTAVENÍ VLÁKNA
Jádro pozastavuje vlákno, aby mohlo začít pracovat jiné vlákno
Singularity 365
Windows XP 753
Linux 906
FreeBSD 911
OBDRŽENÍ/ODPOVĚĎ NA ZPRÁVU
Jeden proces pošle jednobajtovou zprávu jinému procesu
Singularity 1 040
Windows XP 6 340
Linux 5 800
FreeBSD 13 300
VYTVOŘENÍ/SPUŠTĚNÍ PROCESU
Operační systém vytvoří nový proces a spustí jej
Singularity 388 000
Windows XP 5 380 000
Linux 719 000
FreeBSD 1 030 000
Struktura Singularity:
Systém je postaven na mikrojádře, které přiděluje zdroje jednotlivým procesům.
Mikrojádro Řídí přístup k CPU a operační paměti.
Hardware Abstraction Layer Základní rozhraní mezi hardwarem a operačním systémem.
Page Manager Řídí používání operační paměti.
Input/Output Manager Řídí přístup k hardwaru
Scheduler Uspořádává frontu příchozích operací.
Channel Manager Řídí přístup procesů ke kanálům.
Systémové soubory Knihovny pro jádro systému.
Kernel runtime Spouští kód jádra.
Application Binary Interface Rozhraní mezi jádrem a procesy.
Software Isolated Processes Singularity spouští každý proces v uzavřené bublině. Každá obsahuje svůj vlastní runtime, který vykonává programový kód.
Plug-in Rozšíření funkcí jednotlivých procesů. Runtime
Aplikace Spuštěné aplikace, jako browser nebo Mediaplayer. Runtime
Souborový systém Ovladače pro souborový systém zajišťující kopírování nebo ukládání souborů. Runtime
Ovladače pevného disku Ovladač potřebný pro zápis souborů na hardware Runtime
Exchange Heap Jádrem kontrolovaná oblast, ve které si procesy vyměňují soubory.
Kanály Kanály se starají o výměnu dat mezi procesy.
Foto - Singularity v akci: Systém pracuje v primitivním textovém modu. Příkaz »tasklist« vypíše běžící procesy.
Dokumenty ke stažení
- Testy a technika - Singularity: Lepší Windows (252.77 kB) - Staženo 1066x