# 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:

Rychlost procesoru. Na rychlost procesoru mají základní vliv dva faktory — rychlost taktování a jeho mikroarchitektura. Rychlost taktování představuje hrubou sílu, počet cyklů procesoru za sekundu. Mikroarchitektura rozhoduje o tom, jestli se v rámci jednoho cyklu vykoná jediná instrukce nebo např. čtyři instrukce současně. Tak procesor s dvojnásobným taktem může pracovat pomaleji, než jiný procesor s propracovanější mikroarchitekturou. Avšak návrh moderního procesoru pro rychlosti taktování stovky MHz je velmi náročný a všechny firmy takového návrhu schopné věnují stejnou pozornost mikroarchitektuře, takže moderní procesory mají na stejném taktu přibližně stejný výkon. Na rychlost práce procesoru mají taktéž vliv rychlost sběrnice spojující procesor s hlavní pamětí a velikost a rychlost tzv. vyrovnávací paměti. Paměť je totiž typicky několikanásobně pomalejší než procesor a proto absence vyrovnávací paměti dramaticky sníží výkon celého systému. Platí jednoduché pravidlo — čím rychlejší sběrnice a čím větší vyrovnávací paměť tím lépe. Velikost paměti. I když je paměť z hlediska procesoru mnohem pomalejší než jeho vnitřní registry, přesto je o několik řádů rychlejší, než vnější disková paměť. Čím více programů a dat se vejde do vnitřní paměti, tím méně se musí na (relativně) pomalé disky přistupovat a veškerá práce se urychlí. Pravidlo je tedy opět jednoduché — více vnitřní paměti není na škodu. Je-li množství vnitřní paměti nedostatečné pro základní operační systém, seberychlejší procesor nepomůže, počítač pracuje mnohokráte pomaleji než by mohl. Teoreticky lze vybavit počítač takovým množstvím paměti, že část zůstane při práci zcela nevyužita. Pokud se ale bude kapacita paměti pohybovat kolem horních mezí v dané době na trhu obvyklých, k této "nepříjemnosti" by nemělo dojít. Grafický subsystém. Současné klientské aplikace vždy využívají grafického uživatelského rozhraní. Proto je rychlost grafiky důležitá a v moderním počítači je k vykreslování grafických obrazců vyhrazen specializovaný grafický koprocesor. Opět platí, že vyšší výkon grafického subsystému ušetří čas a zrychlí aplikaci. Cena ale není vždy vodítkem. Pro základní 2D (dvoudimenzionální) grafiku bývá výkon dnes běžných grafických karet zcela dostatečný a pokud není aplikace zaměřena výhradně graficky, levná karta vyhoví podobně jako dražší varianta. I zde samozřejmě mohou existovat výjimky, některé karty zcela zjevně zobrazují pomaleji, dojem z reakcí systému je horší i při běžné práci, jako např. rolování textem. Tvrdý konkurenční boj ale stlačuje ceny i špičkových grafických karet a tak jen za nepatrně větší cenu lze koupit skutečně bleskově pracující kartu. Diskový subsytém. Rychlost diskových operací je u disků různých výrobců velmi obdobná a větší rozdíly se projevují více u serverových aplikací. Disková rozhraní IDE bývají integrována do čipových sad a jejich výkon lze jen obtížně rozlišit. Vyšší cena rozhraní SCSI se vyváží vyšším výkonem jen při práci s velmi velkými soubory nebo u serverových aplikací, kdy vzniká velké množství požadavků na práci s velkým množstvím souborů. Navíc diskovým operacím je lépe se vyhnout větší pamětí. Zbytek systému. Vzhledem k unifikaci a komodizaci dalších prvků architektury PC, jako např. řadiče sběrnic PCI či AGP apod. jsou rozdíly v těchto komponentech nepříliš podstatné.

## 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ů:

- Windows`95 a Windows`98.
- Windows`NT a Windows`2000.

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:

- I když se systém zavádí najednou, stále se skládá z vrstvy historického systému DOS a grafického prostředí realizujícího funkce API Win32. Mnohé služby Win32 tak mohou být vnitřně realizovány voláním služeb DOS.
- Aby byl zajištěn běh 16bitových aplikací, mnohé části Windows`95/98 zůstaly 16bitové, např. grafický subsystém GDI nebo správa oken a událostí USER. Volání 32bitových aplikací se za běhu transformují do 16bitové podoby. Proto jsou např. souřadnice grafických objektů omezeny na hodnoty asi 32`000 bodů. V konečné podobě souřadnic to není podstatné omezení, horší je, že toto omezení platí i pro mezivýsledky při výpočtech např. oblouků a kružnic. Velmi nemilá je skutečnost, že systém má právo vynulovat horních 16 bitů původně 32bitového čísla předávaného ve zprávě. Podobných problémů spojených s 16bitovým dědictvím je více.
- 16bitová implementace Windows neumožňovala preemptivní běh aplikací. Proto může 16bitová aplikace ve Windows`95/98 zcela zablokovat běh 32bitových aplikací, tedy i systému Control Web.
- Systémová paměť není blokována proti přístupu, každá aplikace může přepsat kód DLL sdílených jinými aplikacemi.
- Přepínání mezi aplikacemi (multitasking) není ve Windows`95/98 tak plynulé jako ve Windows`NT.
- Windows`95/98 nepodporují tzv. "copy on write" přístup k paměti z více procesů, kdy je oblast paměti využívaná druhým procesem okopírována až v okamžiku, kdy se druhý proces pokusí do této paměti zapsat (změnit její obsah). Proto jsou takové oblasti paměti vždy kopírovány pro každý další proces, což zvětšuje paměťovou náročnost.
- 16bitové kořeny Windows`95/98 mají na svědomí omezení některých systémových oblastí využívaných pro ukládání grafických objektů GDI, informací o oknech a zprávách apod. Ve Windows`95/98 se tak velmi snadno stane, že systému dojdou prostředky (resources) a aplikace nejsou schopny dalšího běhu. Množství volných prostředků je možno sledovat pomocí aplikace "Resource Meter".

Resource Meter

### 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

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í

- I když se výpočetní technika vyvíjí raketovým tempem, její možnosti nejsou neomezené.
- Dopřejte operačnímu systému dostatek paměti. Samotné Windows`95/98 spotřebují asi 10`MB, Windows`NT přes 20`MB. Počítač pro Windows`95/98 by tedy měl být vybaven alespoň 32`MB paměti, pro Windows`NT je lépe použít 64`MB paměti. Pro Windows`2000 je vhodné použít 128`MB.
- Snažte se vysledovat limity týkající se množství paměti, rychlosti procesoru a propustnosti síťových spojení a komunikačních linek a berte je do úvahy při návrhu aplikací a konfigurace počítačů, na kterých aplikace budou pracovat.
- Existuje celá řada omezení plynoucích z vlastního operačního systému. Těmto omezením se lze různými technikami přizpůsobit, například zavádět obrázky jen do viditelných panelů apod.
- Pro nasazování aplikací systému Control Web používejte zásadně Windows`NT, Windows`95/98 ponechte na psaní dopisů a elektronickou poštu.