Microsoft Windows, a£ uº 95, 98 nebo NT, jsou v souƒasné dob╪ nejrozτí²en╪jτím operaƒním systémem na osobních poƒítaƒích. Zajímá vás, jak to funguje v jád²e tohoto fenoménu? Chcete se dozv╪d╪t, proƒ Windows obƒas "tuhnou"? V následujícím ƒlánku si p²iblíºíme základy jejich interních technik.
Windows pod lupou
Základem stabilního operaƒního systému je úzká spolupráce s procesorem, kter∞ je schopen operaƒnímu systému poskytnout zajímavé sluºby. V souƒasn∞ch standardních procesorech Intel rozliτujeme ƒty²i reºimy (mody) práce: reáln∞, chrán╪n∞, virtuální 8086 a reºim správy systému.
Reáln∞ reºim existuje pouze pro zachování zp╪tné kompatibility se starτími procesory. Pokud program b╪ºí v tomto modu, procesor se chová jako rychlejτí 8086 s n╪kolika vylepτeními a 32bitovou aritmetikou. Màºe adresovat pouze 1 MB pam╪ti, rozd╪len∞ na segmenty. V reálném modu b╪ºí nap²íklad MS-DOS a podobné platformy. V dneτní dob╪ vτak uº reáln∞ mod ztrácí v∞znam a stále dàleºit╪jτím, v∞znamn╪jτím a modern╪jτím se stává mod chrán╪n∞. Operaƒní systém p²i n╪m màºe vyuºívat vτech v∞hod procesoru, nejnov╪jτích instrukcí, stránkování a màºe adresovat aº 4 GB pam╪ti díky 32bitové technologii. Procesor vτak v neposlední ²ad╪ umoºσuje nadefinovat mnoºství odd╪len∞ch, na sob╪ nezávisl∞ch virtuálních adresov∞ch prostorà, které ve spojení s funkcemi pro multitasking (jako jsou ràzná privilegia, p²epínání procesà atd.) zabraσují moºnosti, aby se aplikace a OS navzájem ovlivσovaly a zpàsobily tak pád systému.
Reºim virtuální 8086 umoºσuje, aby se aplikace napsané pro tento procesor spouτt╪ly v rámci chrán╪ného reºimu. Tuto funkci vyuºívají nap²íklad Windows 9x - okno DOS. A koneƒn╪ reºim správy systému dovolí návrhá²àm systému provád╪t dàleºité ƒinnosti nezávisle na OS.
Multitasking
Po krátké exkurzi procesorem se màºeme vydat do jádra (kernelu) Windows. Windows jsou zaloºena na multitaskingu, takºe jejich nezanedbatelnou ƒást tvo²í i funkce pro správu a spouτt╪ní více aplikací najednou. Multitasking, kter∞ mají Windows implementován, je takzvan∞ preemptivní. Pàvodní anglické slovo preemption (vedle jinj∞ch v∞znamà) doslova znamená "zábor", tedy právo operaƒního systému pozastavit kdykoliv provád╪ní urƒitého toku nebo procesu, a£ uº si to dan∞ program p²eje, nebo ne.
Procesy a vlákna
Operaƒní systém Windows vytvo²í kaºdé aplikaci p²i spuτt╪ní proces a primární vlákno neboli primární provád╪cí tok. Proces je pro systém p²edstavitelem aplikace, sloºit╪ji ²eƒeno: je to instance spuτt╪né aplikace. Tento proces je sám o sob╪ neƒinn∞ - jeho úkolem je vlastnit svàj soukrom∞ virtuální adresov∞ prostor a mít provád╪cí toky. Provád╪cích tokà màºe mít tolik, kolik umoºní systémové prost²edky, nejmén╪ vτak jeden. Pokud ukonƒí svoji ƒinnost vτechny toky, operaƒní systém nemá dàvod, proƒ udrºovat neƒinn∞ proces v pam╪ti, a tak jej ukonƒí. Provád╪cí tok se stará o vykonávání programového kódu. Màºeme vytvo²it toky s ràzn∞mi úkoly. Nap²íklad textov∞ editor vytvo²í speciální tok, kter∞ se nezávisle stará o tisk, aby ostatní toky mohly neruτen╪ pracovat dál. Stejn╪ tak je dobré pouºít více tokà pro pràb╪ºné p²epoƒítávání tabulek v tabulkovém procesoru, kdy primární tok má na starosti editaci bun╪k a uºivatelské rozhraní, zatímco sekundární tok propoƒítává na pozadí hodnoty. V 16bitov∞ch Windows se musela aplikace p²i v╪tτích nebo pomalejτích akcích periodicky ptát, zda uºivatel n╪co chce zm╪nit, stornovat nebo podobn╪. V kladném p²ípad╪ bylo nutné na chvíli p²eruτit operaci a vy²ídit poºadavek. Pokud se vτak nap²íklad kopíroval velk∞ soubor po n╪kolika blocích, mohly b∞t odezvy na ƒinnost uºivatele aº o n╪kolik sekund zpoºd╪né, protoºe zkopírování i jednoho bloku n╪jakou dobu trvá.
Ràzná priorita
Ràzné aplikace mají ràzné nároky na svàj b╪h, a proto je moºné m╪nit programov╪ prioritu toku a procesu. Priorita urƒuje, kolik procesorového ƒasu je p²id╪leno jednomu toku oproti ostatním. Je tak moºno specifikovat dàleºitost ràzn∞ch programà - nap². pokud vytvo²íte aplikaci, která se p²i startu systému usadí ve spodním panelu a bude monitorovat vaτi ƒinnost, bude rozumné p²i²adit jí relativn╪ malou prioritu. Naproti tomu aplikace KERNEL32 - velmi dàleºitá ƒást systému - má prioritu vysokou. Reakce operaƒního systému je totiº dàleºit╪jτí neº reakce n╪kter∞ch aplikací. V extrémním p²ípad╪, kdy má proces i tok nejvyττí moºnou prioritu, dojde k tzv. hladomoru (starvation) - 100 % procesorového ƒasu je p²id╪leno aplikaci a systém tém╪² neb╪ºí. V naprosté v╪tτin╪ programà vτak není t²eba pouºít jinou prioritu neº normální. M╪n╪ní priorit pouºívá i sám systém. Aplikace, která b╪ºí na pop²edí (se kterou práv╪ pracujete), vyºaduje rychlejτí odezvu na vaτe akce. Proto jí Windows zv∞τí prioritu z její priority pàvodní. Ve Windows NT màºete toto zv∞τení priority (performance boost) dokonce zm╪nit v System Properties. Nap²íklad v∞vojá²àm ve Visual C++, kte²í by cht╪li tyto technologie pouºít, doporuƒuji najít si v dokumentaci informace o funkcích SetPriorityClass (zm╪na t²ídy priority celého procesu) a SetThreadPriority (relativní priorita provád╪cího toku).
Jak to doopravdy b╪ºí
Kdyº má kaºdá aplikace vytvo²eny vτechny náleºitosti, zb∞vá vτechno spustit. Tuto ƒinnost zajiτ£uje operaƒní systém v t╪sné spolupráci s procesorem. Pro procesor je kaºd∞ provád╪cí tok tzv. úlohou (task). V závislosti na prioritách je pak kaºdému toku p²id╪len odpovídající ƒas procesoru. Systém simuluje souƒasn∞ b╪h aplikací tím, ºe vτem tokàm neustále dokola p²id╪luje krátké ƒasové úseky pro práci - tzv. kvanta. Pokud nap²íklad dojde k situaci, ºe n╪kter∞ tok "zatuhne" v nekoneƒné smyƒce, provádí svou smyƒku pouze ve svém ƒase a nijak neohroºuje ostatní aplikace. Jestliºe to uºivatel zjistí a chce aplikaci ukonƒit, staƒí vyjmout z ²et╪zu jeden ƒi více tokà pat²ících danému procesu, a vτe je v po²ádku. Windows NT navíc umoºσují pouºití více neº jednoho procesoru. P²id╪lují tak v∞konn∞ ƒas více procesorà a celkov∞ b╪h se viditeln╪ zrychlí. Windows 95 vτak tuto moºnost nemají.
Pam╪£ová architektura
Celá filozofie pam╪£ové architektury souvisí s multitaskingem. Bylo uº ²eƒeno, ºe kaºdému procesu je p²id╪len virtuální adresov∞ prostor o velikosti 4 GB. Nepropadejte vτak p²edƒasn╪ nadτení, nebo£ uvedené ƒíslo je pouze rozsah adres, kter∞ je dále transformován na adresy fyzické. Tam uº tolik prostoru není, jelikoº je ovlivn╪n velikostí vaτí pam╪ti RAM.
Práv╪ proto, ºe ne kaºd∞ poƒítaƒ p²ekypuje desítkami a stovkami MB, uplatσují Windows mechanismus stránkování. Znamená to, ºe urƒité ƒásti pam╪ti jsou uloºeny na disku, odkud se v p²ípad╪ pot²eby nahrají zp╪t do pam╪ti. Tyto soubory, obsahující ƒásti pam╪ti, n╪kdy i o velikosti desítek MB, màºete ƒasto najít v ko²enovém adresá²i n╪kterého ze sv∞ch diskà. Moºná si ²eknete, proƒ je tedy po²ád t²eba tolik operaƒní pam╪ti, kdyº máte velk∞ disk? Odpov╪╘ je prostá - disky jeτt╪ stále nedosáhly rychlosti skuteƒné pam╪ti RAM, která je obrovská. Pokud tedy provozujete Windows na poƒítaƒi s n╪kolika málo megabajty pam╪ti RAM, operaƒní systém musí velkou ƒást pot²ebn∞ch dat neustále p²esouvat z pam╪ti na disk a opaƒn╪. V∞sledkem je nekoneƒn╪ dlouhé ƒekání u hrƒícího pevného disku.
Rozdíl mezi 9x a NT
Je vτeobecn╪ známo, ºe Windows NT jsou stabiln╪jτí neº Windows 95/98. Tento fakt je zpàsoben hned n╪kolika rozdíly. Windows NT jsou navrºena pro v∞konn╪jτí poƒítaƒe, neº jaké se p²edpokládají u Windows 95. Jsou tedy sice více hardwarov╪ nároƒná, ale mohou siln╪ji zat╪ºovat procesor. Ochrana pam╪ti je zde dokonalejτí neº u ²ady 9x - jádro je úpln╪ chrán╪no p²ed náhodn∞mi zápisy do pam╪ti a rovn╪º b╪ºící aplikace jsou navzájem dob²e odizolovány. Práv╪ tyto funkce jsou sice technicky nároƒn╪jτí, ale podstatn╪ zvyτují robustnost systému. Knihovna funkcí jádra je navíc u Windows 9x zmenτena, nap²íklad tím, ºe n╪které funkce nic ned╪lají a vrací pouze nulu. T∞ká se to nap²íklad specifick∞ch funkcí pro ràzné zabezpeƒovací parametry procesà. Windows NT jsou na- vrhována také jako server, takºe u nich jsou navíc dalτí rozτi²ovací funkce.
Na obrázcích, které ukazují orientaƒní rozd╪lení pam╪ti u obou druhà Windows, màºeme názorn╪ vid╪t rozdíl v ochran╪ pam╪ti. Zatímco Windows NT mají pam╪£ perfektn╪ oτet²enou, u Windows 9x existují oblasti, které lze omylem p²epsat a zpàsobit tak komplikace. Navíc ²ada 95/98 musí kvàli zp╪tné kompatibilit╪ spouτt╪t programy urƒené pro DOS, které nejsou chrán╪nému reºimu p²izpàsobeny a které se mohou pokusit o operace, jeº naruτí operaƒní systém.
Realita a v∞hledy
Ud╪lali jsme si mírn∞ a zjednoduτen∞ p²ehled o jád²e operaƒního systému Windows. Ve skuteƒnosti je problematika komplikovan╪jτí, tisíce stran ràzn∞ch knih a manuálà se zab∞vají komunikací mezi procesy, synchronizací, DLL (dynamick∞mi) knihovnami a mnoh∞m dalτím. Samostatnou kapitolou jsou pak moderní procesory a jejich speciální multimediální a internetové instrukce. 32bitové programování pro Windows poskytuje programátorovi obrovsk∞ prostor pro vytvá²ení dokonal∞ch, stabilních a pro uºivatele p²átelsk∞ch aplikací. V∞voj se stále ºene kup²edu a zanedlouho se objeví i nová Windows 2000 - op╪t dalτí v∞vojov∞ krok v ²ad╪ vτudyp²ítomn∞ch oken.