Odpovídáte na názor ke článku Windows XP se stále prodávají více než Vista.
[211] NT má architekturu modifikovaného mikrokernelu. Mikrokernelovou architekturu předpokládám znáte: kernel provádí jen nezbytné minimum věcí, konkrétně IPC, správa paměti a scheduler. Vše ostatní (drivery, síťování atd) běží jako proces v user mode, a říká se tomu server. Výhodou je modulární design s definovanými interfacy, a údajně lepší stabilita (bohužel když spadne "správný" user mode process, stejně se z toho nezotavíte). Nevýhodou je to, že počet transitions mezi user mode a kernel mode je velmi vysoký, čímž trpí výkon. To se dá trochu vylepšit tak, že voláte API asynchronně, a když se nasbírá více požadavků, přehodíte je na kernel jako frontu požadavků jedním přechodem do kernel mode; ale to je zase celkem nešťastné pro psaní aplikací. Dalším průšvihem je, že servery (coby user mode procesy) nemají přístup kde by potřebovaly, takže často dochází ke kopírování dat. V důsledku popsaných nevýhod nepoužívá mikronernelový design v podstatě žádný rozšířený OS (MacOS jede v kernel mode daleko více, než jen Mach, a nejde o mikrokenelový design). Tolik opakování ze ZŠ.
NT mají modifikovaný mikrokernelový design. Z důvodu výkonu jedou servery (viz výše - fakt není řeč o SQL serveru) v kernel mode. Aplikace pochopitelně volá knihovny v user mode, a ty následně provedou jeden syscall (nebo obecně co nejmeší počet syscallů). Servery v kernel mode provedou, co je třeba. I tak ještě pro opmimalizaci výkonu user mode knihovny celou řadu věcí cachují v user mode, a například požadavky na GDI subsystém jsou asynchronní. Výhodou oproti mikrokernelu je vysoký výkon, a zůstává zachována výhoda oddělených komponent. Link níže je starý 12 let, a popisuje architekturu NT 3.51/NT 4.0. Samozřejmě (podobně jako v případě Linuxu) se tyto základní věci s časem mění minimálně. Jistě potom chápete, proč je úsměvné, když pod dojmem zběsilího vydávání nových verzí dister Linuxu tvrdíte, že 3-4 roky starý článek o architektuře Linuxu je automaticky out, protože "Linux se hrozně rychle vyvíjí" :). Ono udělat ze systému postaveného na dřevním monolitickém kernelu cokoliv jiného, to je obrovská oráce; už ten ošklivý hack CONFIG_PREEMPT dal dost práce.
http://www.microsoft.com/technet/archive/ntwrkstn/evaluate/featfunc/kernelwp.mspx?mfr=true
Nicméně z toho, že jste napsal o HALu a kernelu úplný nesmysl, se holt nevykroutíte.
Ano, v distru máte spoustu věcí. Například Gimp, nad kterým by grafik plakal, X11 server coby technologickou katastrofu z konce osmdesátých let, a výber komponent vám dává úžasnou možnost provozovat desktop bez grafického prostředí. Hlavně jsou tam ale tisíce praktických utilit, které jsou (jak jsem psal) někdy bez popisu, častěji bez lokalizace, dost často se po instalaci nepřidají do interface, a poměrně pravidelně jsou naprosto k ničemu.
Instalovat aplikaci, pro kterou nemáte balíček určený pro vaší verzi vašeho distra, je problém, a ne že ne. Jistě jste si všiml, že aplikaci určenou pro Windows 95 bez problému nainstalujete a provozujete na Windows Vista, tedy pokud je slušně napsaná a netáhne s sebou custom drivery. Představte si, že byste chtěl do dnešního Kubuntu nainstalovat balíček určený pro RedHat 4.0. Pěkná představa, že? Srovnejte s Windows. Ale ono není třeba chodit tak daleko. Co nemáte v balíčku určeném pro svou verzi svého distra, budete buď kompilovat, nebo jinak dopatlávat doma. Chcete snad tvrdit, že je to jinak?
Souběh dvou instancí je samozřejmě v Registry řešen. Dvě instance mají buď nezávislé nastavení (pak jaksi race condition nehrozí), nebo častěji jedno nastavení (pak API Registry zaručuje, že nedojde k problému jako při čtení konfiguráku, do kterého právě zapisujete). A znovu se ptám: proč tedy Gnome používá GConf (dokonce s GConf-editorem ne nepodobným regeditu), když jsou konfiguráky tak super?
Ještě abychom si vysvětlili race condition. Ta nespočívá v tom, že jedna instance zapíše "hodnota A=3", a druhá "hodnota A=4". To je v pohodě, a aplikace se s tím musí umět poprat. Race condition nastane tehdy, když aplikace A zapíše do konfiguráku "hodnota B=tohle je můj string", při čemž musí konfigurák kompletně přepsat, a druhá aplikace konfigurák právě zkouší číst. Druhá aplikace pak hodnotu nenajde, nebo dostane nesmyslnou hodnotu. Podotýkám, že čas nedostupnosti konfigurace je poměrně dlouhý, protože kvůli změně jediné hodnoty musíte přepsat celý konfigurák.
Každá aplikace pro Windows, kterou jsem viděl, po instalaci zapsala něco do nabídky Start. Když to totiž neudělá, uživatel aplikaci nenajde, protože nemá kde. Linux je pravda o něco dále, protože má více prostředí, a i ta jsou na různých distrech dost různá, takže zapsat něco do obdoby nabídky Start pro všechny uživatele, ve všech prostředích, a na každém distru, je dost náročný task :). Asi proto na takové "detaily" řada balíčků dlabe. Špatné je, když jsou takové balíčky součástí distra.
Když jsme u OpenOffice, tak tato aplikace měla vždy vlastní instalátor ve stylu Windows. Jak se tedy řeší při použití balíčků možnost výběru instalovaných komponent, nebo zadání nějaké hodnoty (třeba jména serveru)? Pokud vím, tak nijak, protože balíčky tohle prostě neumí, na rozdíl od Windows Installeru.
Pod Windows je to tak, že minimálně k MS produktům existuje obsáhlá dokumentace, zvaná Software Development Kit (SDK). A existuje například Driver Development Kit (DDK). Součástí je vždy dokumentace, popis konceptů, příklady, ukázkové projekty, případně tutoriály.
Tvrdil jste, že parsujete konfiguraci pomocí SAX. Co o SAX Parseru tvrdí Wiki? "SAX Parser functions as a stream parser, with an event-driven API. The user defines a number of callback methods that will be called when events occur during parsing. The SAX events include..." Eventy jsou formou callbacku.
XML má například jeden pevně daný formát, což se o konfigurácích na unixech jinak říci nedá.
Srovnávat a verzovat Registry můžete úplně stejně, jako konfiguráky. Pochopitelně v obou případech musíte vědět, co srovnávat. Když nerozumíte Oracle, těžko můžete verzovat jeho konfiguráky rozeseté po FS.
V Registry se dá vyznat celkem jednoduše. HKLM je obdobou /etc, HKCU je obdobou adresářů s nastavením v home adresáři uživatele. A světe div se, pod HK*\Software je konfigurace software. Ono to jak vidno zase tak složité není :)
to co nabízí Tucows se běžně instaluje v GUI, kde potvrzujete výběry. Balíčky Windows Installeru lze instalovat s parametrem /passive, kdy zobrauzjí jen progress bar. Viz též msiexec /?, nebo dokumentace Windows Installeru na webu MS.
Vy si nainstalujete 100 aplikací, které jsou v repository distra. Bohužel Oracle klienta či DB budete instalovat pomocí Java installeru, který dodává Oracle, stejně jako ve Windows. Totéž u Lotus Domina, Lotus Notes klienta, účta, a čehokoliv dalšího, co není součástí distra (či není připraveno pro vaší verzi vašeho distra).
Update MS produktů zajišťuje MS, u ostatních výrobců je to na nich. Windows Installer poskytuje podporu pro automatické aktualizace. Lze také použít služby InstallShieldu (ten to dělá podobně jako Microsoft Update), případně si něco napsat sám (to dělá třeba Adobe). Opět neznám balíčkovací systém, který by mi aktualizoval Oracle klienta, Oracle server, Lotus Notes klienta, Lotus Domino server, nebo nějaké účetnictví.
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 126 310×
Přečteno 93 580×
Přečteno 78 082×
Přečteno 60 840×
Přečteno 57 682×