Využití zdrojů počítače a
operačního systému

Ze všech průmyslových produktů jsou počítače a jejich stavební prvky (procesory, paměti, sběrnice apod.) jasnými držiteli rekordu v rychlosti inovací, zvyšování výkonu a snižování ceny. Stačí jen utrousit zmínku o časech minulých před člověkem zabývajícím se výpočetní technikou již více let a jistě vás zaplaví barvitými vzpomínkami na dobu, kdy se programy děrovaly řádek po řádku do štítků a celé se musely vejít to 16`KB paměti. Tisíckrát více paměti dnes nestačí ani základnímu operačnímu systému a možná čtete tento text v době, kdy se milionkrát více paměti stává běžnou výbavou osobních počítačů. S rychlostí procesorů, grafických karet a kapacitou diskových pamětí to vypadá podobně.

Tento dramatický nárůst výkonů a kapacit počítačů nevyplýtvali marnotratní programátoři. Totiž vměstnat funkční program do malé paměti dokáže jen člověk znající daný počítač do nejjemnějších podrobností a i tak jeho práce nebude rychlá a efektivní. Nárůst výkonu počítačů samozřejmě přinesl rychlejší zpracování dat, ale především zpřístupnil počítače mnohem více lidem s mnohem menšími znalostmi. Propracované uživatelské rozhraní sice spotřebuje paměť a výkon procesoru, ale taktéž provádí spoustu věcí samo, nabízí uživateli nejvhodnější cestu a pomáhá mu. I odborník může s použitím kvalitních nástrojů pracovat rychleji a efektivněji než s holým počítačem a sadou základních programů.

Přístupnost práce s počítačem pro uživatele bez hlubších znalostí o programování, datových strukturách, principech práce procesoru, organizaci paměti apod. má i stinnou stránku. Zapomínají si uvědomovat, že přes veškerý pokrok rychlost počítačů a kapacita jejich paměti není nekonečná. Jestliže jeden objekt zabere 1`000 byte paměti, pak do paměti o kapacitě 1`000`000 byte se jich vejde právě 1`000. Jestliže na zpracování jediné události je zapotřebí 0,1 sekundy, pak za sekundu nelze zpracovat více jak 10 takových událostí.

V paměti počítače ale nejsou jen uživatelem vytvořené objekty, procesor nezpracovává jen uživatelské programy. Moderní počítač se neobejde bez moderního operačního systému, zajišťujícího spoustu funkcí pro aplikační programy. Pro operační systém pracuje calá řada procesů, potřebující paměť i čas procesoru. I samotný operační systém si rezervuje místo v paměti, aby mohl pracovat se soubory, navazovat síťová spojení a přepínat procesy.

Pokud požadavky vašich zákazníků budou veliké, budete potřebovat komunikovat po tisících kanálů a zobrazovat stovky panelů, je dobré uvážit limity dané současným stavem výpočetní techniky. Samozřejmě klíčovým prvkem kvality aplikace bude kvalita jejího návrhu. Témata související s fyzikálními omezeními a rady jak optimalizovat aplikaci jsou blíže vysvětleny v kapitolách Podrobněji o časování, aplikacích reálného času a datově řízených aplikacích, Běh datově řízené aplikace, Časování aplikace reálného času a Neperiodické časování. Přesto je vždy užitečné znát základní informace o technickém a programovém vybavení počítačů a tato kapitola vám v tom může pomoci.

Počítač

Počítač je velmi obecné označení pro zařízení s procesorem a pamětí schopné zpracovávat programy. Počítač tak dnes můžete najít v mobilních telefonech, čipových kartách, lékařských přístrojích i náramkových hodinkách, zkrátka ve spoustě výrobků používaných lidmi bez vědomí, že vlastně pracují s počítačem. Systém Control Web pracuje na osobních počítačích, které se vyvinuly z kdysi zavedeného standardu IBM PC. Dnes jsou tyto počítače charakterizovány procesorem kompatibilním s procesory Intel x86 (dnes označovaných také jako IA32 — 32bitová architektura Intel) a řadou vzájemně kompatibilních periferií, jako např. řadiče přerušení, rozhraní paralelní a sériové komunikace a v neposlední řadě rozhraní periferií ISA a PCI, standardní rozhraní pro velkokapacitní paměti IDE apod. Toto vše se skrývá pod označením PC (Personal Computer — osobní počítač).

PC lze zjednodušeně charakterizovat několika parametry:

Operační systém

Vzhledem k tomu, že Control Web využívá služeb aplikačního programového rozhraní (API) Win32 firmy Microsoft, samozřejmě vyžaduje, aby na PC pracoval operační systém toto rozhraní podporující.

Kvalita operačního systému hraje v celém systému klíčovou roli, prakticky stejnou jako je kvalita vlastní aplikace i kvalita hardware. Seberychlejší grafické karta může zobrazovat velice pomalu, jestliže ji obsluhuje nekvalitní ovladač. Sebevětší paměť může být vyplýtvána neefektivním algoritmem jejího přidělování.

Moderní operační systémy mají za úkol zajistit prostředí pro bezpečný provoz jednotlivých aplikací a takté odstínit tyto aplikace od detailů obsluhy jednotlivých periferií publikováním sady společných rozhraní. Do kompetence operačního systému rovněž patří zajištění současné práce více aplikací (multitasking) a vzájemná izolace jednotlivých aplikací, zabraňující nelegálním zásahům jedné aplikace do druhé.

Pokud má počítač jediný procesor, samozřejmě není možné provádět kód více aplikací současně. Operační systém tento problém řeší tak, že po určitém časovém intervalu (typicky v řádu desítek milisekund) přeruší práci jedné aplikace a začne vykonávat další aplikaci, kterou po daném čase opět přeruší a věnuje se zase další aplikaci a tak dále. Toto přepínání aplikací je nazýváno preemptivní multitasking. Vše je samozřejmě ještě poněkud složitější, podrobnosti naleznete v celé řadě knih (např. Jeffrey Richter: Windows pro pokročilé a experty, Computer Press 1997) a v kapitole Co to jsou procesy a prováděcí toky.

Vámi psaná aplikace tedy prakticky nikdy není jediný proces, který na počítači běží. Každý další proces ubere procesoru čas, který by jinak mohl věnovat vaší aplikaci. Takté další prostředky, především paměť a diskový prostor, jsou dalšími procesy spotřebovávány.

Jednotlivé aplikace přistupují k paměti takovým způsobem, jako by celá paměť byla k dispozici jen pro danou aplikaci. Navíc mohou přistupovat k větší oblasti paměti, než je fyzicky skutečně k dispozici. Operační systém toho dosahuje mechanizmem zvaným virtualizace paměti. Princip mechanizmu je poměrně prostý. Na disku je vytvořena oblast obsahující kopie obsahu zabrané fyzické paměti (tzv. swap file) a operační systém zavede do fyzické paměti jen ty části, se kterými jednotlivé aplikace skutečně pracují. Pokud aplikace potřebuje přistoupit k oblasti paměti, která není ve fyzické paměti přítomna, operační systém danou oblast přesune z disku do fyzické paměti. Pokud je ale fyzická paměť zcela zaplněna, musí se nejprve některá jiná oblast naopak přesunout z fyzické paměti na disk. Ačkoliv tento mechanizmus dovoluje aplikacím pracovat s velkými bloky paměti, vzhledem k podstatně pomalejšímu přístupu na disk ve srovnání s přístupem k paměti tento mechanizmus velmi snižuje výkon aplikací. Tento tzv. swapping by tedy v žádném případě neměl pracovat při běžném trvalém chodu aplikace ale nanejvýš během přepnutí aplikací nebo během nějaké netypické jednorázové činnosti. Pokud aplikace neustále vyměňuje data mezi pamětí a pevným diskem, je třeba buď zmenšit paměťové nároky aplikace, zastavit jiné nepotřebné aplikace nebo rozšířit fyzickou paměť počítače.

Operační paměť a výkon procesoru nejsou jediné prostředky, kterými operační systém disponuje a které potenciálně mohou dojít. Omezený je počet maximálně spuštěných procesů a jejich prováděcích toků, počet otevřených souborů, ale i počet oken nebo počet bitových map (ikon) zobrazovaných aplikací. Přitom k poruchám funkce aplikace nemusí docházet až při úplném vyčerpání některého prostředku. Někdy stačí, aby aplikace vytvořila velké množství oken a operační systém ztrácí mnoho času při jejich obhospodařování.

Firma Microsoft implementovala API Win32 ve dvou řadách operačních systémů:

I když teoreticky by nejen množina funkcí API, ale i jejich chování mělo být u obou systémů stejné, rozdílná architektura těchto systémů při jejich složitosti naprostou shodnost téměř vylučuje. Vývojový tým systému Control Web vynaložil velké úsilí, aby program pracoval stejně na obou řadách Windows, přesto je dobré vědět o jejich rozdílnosti.

Obecně lze říci, že pro běh plně 32bitových aplikací jsou systémy založené na Windows`NT vhodnější. Všeobecně rozšířená představa, že aplikace pracují na Windows`NT pomaleji oproti systémům Windows`9X je mylná. Jedinou nevýhodou Windows`NT je větší spotřeba paměti vlastního operačního systému. Pokud ale provozujete rozsáhlé aplikace, ve Windows`NT bude jejich paměťová spotřeba menší než na Windows`9X. Rovněž plynulost běhu aplikací, úroveň zabezpečení systému proti pádu a kvalita přepínání úloh mluví jednoznačně ve prospěch Windows`NT.

Windows`95/98

Základním návrhovým cílem systémů Windows`95/98 byla maximální kompatibilita s aplikacemi psanými pro předchozí operační systémy firmy Microsoft — DOS a 16bitové Windows 3.x. Přičemž Windows`95/98 mají pracovat nejen se starými aplikacemi, ale i s 16bitovými ovladači různých zařízení, např. grafických karet, tiskáren apod.

Naneštěstí operační systémy DOS a Windows 3.x neposkytovaly aplikacím prakticky žádný stupeň ochrany a neizolovaly je od technického vybavení počítače. Toho mnozí autoři programů samozřejmě využívali a jejich aplikace přímo přistupují ke konkrétním paměťovým oblastem či periferiím. Aby byl splněn návrhový cíl systémů Windows`95/98, musí být umožněn běh i těmto aplikacím. To s sebou přináší i podstatnou nevýhodu — operační systém povolením přístupu aplikací k paměti a technickému vybavení ztrácí nad nimi kontrolu a úmyslně nebo nechtěně chybná aplikace tak může vážně poškodit jiné aplikace nebo i samotný operační systém. Windows`95/98 jsou tedy vhodné pro běžnou práci jako je psaní textů, práce s elektronickou poštou apod. Pro trvalý bezpečný běh ve funkci serveru nebo řídicího systému ale rozhodně vhodné nejsou.

Při práci s Windows`95/98 mějte na paměti, že:

Windows`NT/2000

Cílem návrhu Windows`NT bylo vytvoření spolehlivé platformy pro bezpečný nepřerušený běh kritických aplikací. Samotný vznik API Win32 je spojen se vznikem Windows`NT. Mimo zabezpečení běhu aplikací jejich naprostou izolací od technického vybavení, operačního systému i od jiných aplikací navzájem, Windows`NT mají spoustu prostředků k organizačnímu omezení přístupu k souborům na základě definovaných přístupových práv jednotlivých uživatelů i skupin.

Důsledkem samozřejme je, že v rámci operačního systému Windows`NT nelze spustit "špatně se chovající" aplikace pro systémy DOS a Windows 3.x. Pod pojmem "špatného chování" je skryt jakýkoliv pokus přistoupit ke konkrétní paměťové oblasti nebo periferii bez využití služeb operačního systému. Taková aplikace bude systémem Windows`NT zastavena. Pokud ale aplikace využívá výhradně API Win32, bude pod systémem Windows`NT pracovat bez problémů.

Na druhé straně pro Windows`NT neplatí žádné omezení zmíněné u systémů Windows`95/98. Windows`NT dokáží zpracovávat 32bitové aplikace plynuleji s menší spotřebou paměti než Windows`95/98 s nepoměrně vyšším stupněm zabezpečení.

Omezení systémových zdrojů (resources) známá z Windows`95/98 ve Windows`NT neexistují. Rozhodně to ale neznamená, že těchto zdrojů je neomezené množství. Pokud aplikace alokuje velmi mnoho oken, bitových map, kontextů zařízení apod., její běh se výrazně zpomaluje. Ve Windows`NT jsou k dispozici podstatně dokonalejší diagnostické prostředky, které vám zpřístupní mnohem více informací než je "Resource Meter" z Windows`95/98.

Performance Monitor

Performance Monitor

Windows`2000 představují jen další generaci Windows`NT se změněným názvem a platí pro ně totéž co pro Windows`NT.

Shrnutí