Operačné systémy Prednáška č. 2 Windows 95 Windows 95 má povesť ľahko ovládateľného systému pre užívateľov a ťažkého systému pre programátorov. Začiatočníci sú často zmätení architektúrou Windows a štruktúrou aplikácií, ktoré pracujú pod týmto systémom. Programovanie pre Windows je neobvyklé. Je tajuplné, zvláštne, nemotorné, zamotané, strašidelné. Samozrejme, že nie je okamžite zrozumiteľné a chce to čas, kým budeme môcť prehlásiť, že sme ho zvládli. Vzniká tu otázka, Ak je Windows programovanie také ťažké, načo sa s tým trápiť? Nuž odpoveď je jednoduchá Nemáme na výber. Windows dosiahol také rozšírenie na trhu PC, že programovanie pre MS-DOS (či už v textovom alebo grafickom režime) už nie je reálne. Trh by takúto aplikáciu v súčasnosti ignoroval. Windows verzus DOS Windows poskytuje užívateľom i programátorom v porovnaní s DOS-om poskytuje množstvo výhod. Podpora užívateľov i programátorov je v mnohom podobná, pretože úlohou programátora je poskytnúť užívateľovi to, čo potrebuje. Windows 95 toto umožňuje. Grafické užívateľské rozhranie Windows je grafické užívateľské rozhranie. Pôvod tohto typu užívateľského rozhrania sa datuje do polovice 70-tych rokov do Xerox Palo Alto Research Center (PARC), ktorá toto prostredie vyvinula pre počítače Alto a Star a prostredie Smalltalk. Táto práca bola neskôr popularizovaná fy Apple Computer, Inc. najskôr na počítačoch Lisa a o rok neskôr na omnoho úspešnejších počítačoch Macintosh, ktoré sa objavili v roku 1984. Od zavedenia Macintoshov grafické užívateľské rozhrania rozkvitali ako kvety na lúke. Pojem a logika grafického užívateľského rozhrania Všetky grafické rozhrania využívajú grafiku na bitovo mapovanom displeji. Grafika poskytuje lepšie využitie obrazovky, poskytuje bohaté prostredie na vyjadrenie informácie a tzv. možnosť WYSIWYG (čo vidíš to dostaneš) zobrazenia informácií a formátovaného textu pre tlačený dokument. V minulosti bol displej používaný iba na zobrazovanie textu, ktorý užívateľ napísal na klávesnici. V grafickom užívateľskom prostredí sa displej stáva zdrojom užívateľského vstupu. Na displeji sú zobrazené rôzne grafické objekty v tvare ikôn a vstupných zariadení ako sú tlačidlá a rolovacie lišty. Pomocou klávesnice (alebo priamo kurzorovým zariadením akým je myš) užívateľ priamo manipuluje s týmito objektmi na obrazovke. Vzájomná interakcia medzi užívateľom a programom je dôvernejšia. Konzistentné užívateľské rozhranie Od užívateľa sa už viac neočakáva, že strávi dlhé hodiny štúdiom ako pracovať s počítačom alebo aby zvládol nový program. Windows mu pomáha, pretože všetky Windows programy
majú rovnaký základný vzhľad a obsluhu. Program zaberá okno - štvoruholníková oblasť na obrazovke, ktorá je jednoznačne identifikovaná s titulkovou lištou. Väčšina funkcií programu sa inicializuje prostredníctvom programového menu. Na zobrazenie informácií, ktoré sa nevojdú na obrazovku sa používajú rolovacie lišty. Niektoré položky menu vyvolávajú dialógové okná, do ktorých užívateľ zadáva ďalšie informácie. Napríklad na otvorenie súboru sa vo všetkých Windows programoch používa jedno rovnaké (alebo takmer rovnaké) dialógové okno, ktoré sa aktivuje takmer vždy takým istým príkazom menu. Akonáhle vieme pracovať s jedným Windows programom, sme dobre pripravení naučiť sa ovládať ďalší.. Menu a dialógové okná umožňujú užívateľovi experimentovať s novým programom a skúmať jeho vlastnosti. Väčšina Windows programov má klávesnicové i myšacie rozhranie. Hoci väčšinu Windows programov možno ovládať pomocou klávesnice, myš je pre väčšinu prác vhodnejšia. Z pohľadu programátora má konzistentné užívateľské rozhranie ten dôsledok, že na konštrukciu menu a dialógových okien možno použiť rutiny, ktoré sú zabudované do Windows systému. Viacúlohové spracovanie Hoci niektorí ľudia neustále kladú otázku načo je viacúlohovanie na jednouživateľskom počítači, užívatelia sú pripravení na viacúlohovanie a z výhodou to využívajú. Popularita MS- DOS rezidentných programov, akým je Sidekick to potvrdila pred mnohými rokmi. Pod Windows sa každý vykonávaný program stáva RAM-rezidentným programom. Súčasne môže pracovať niekoľko Windows programov. Každý program zaberá pravouhlý štvoruholník na obrazovke. Užívateľ ich môže presúvať po obrazovke, meniť ich veľkosť, prepínať medzi rôznymi programami a prenášať dáta z jedného programu do druhého. Prvé verzie Windows používali systém viacúlohovania, nazývaný nepreemptívny. Znamená to, že Windows nepoužíval systémový časovač na prideľovanie času spracovania jednotlivým programom, bežiacim pod systémom. Programy sa museli dobrovoľne vzdať riadenia, aby mohli pracovať ďalšie programy. Pod Windows 95 je viacúlohovanie preemptívne a samotné programy sa môžu rozdeliť do viacerých výkonných vlákien, ktoré pracujú akoby súčasne. Správa pamäti Operačný systém nedokáže implementovať viacúlohovanie bez toho aby nemal niečo do činenia so správou pamäti. Pri štarte nových programov a zániku starých sa pamäť fragmentuje. Systém musí byť schopný konsolidovať voľný pamäťový priestor. Toto si vyžaduje aby systém bol schopný presúvať bloky kódu a dáta v pamäti. Dokonca už Windows 1, ktorý fungoval na mikroprocesoroch 8088, bol schopný vykonávať správu pamäti. Programy pracujúce pod Windows môžu presahovať pamäť; program môže obsahovať viac kódu, než sa vojde naraz do pamäti. Windows dokáže zrušiť kód v pamäti a neskôr ho opätovne zaviesť z EXE súboru programu. Užívateľ môže odštartovať niekoľko kópií, nazývané inštancie, programu. Všetky tieto inštancie zdieľajú ten istý kód v pamäti. Programy, pracujúce pod Windows, môžu zdieľať rutiny, umiestnené v iných súboroch, nazývaných dynamicky linkované knižnice DLL. Windows obsahuje mechanizmus ako spájať programy s rutinami v dynamicky linkovaných knižniciach za chodu programu. Windows samotný je tvorený množinou dynamicky linkovaných knižníc. A tak, i keď Windows 1 roztiahol 640-KB priestor PC architektúry bez nutnosti dodatočnej
pamäti. Ale Microsoft sa tu nezastavil: Windows 2 poskytol Windows aplikáciami prístup ku rozšírenej pamäti (EMS) a Windows 3 pracoval v chránenom režime, ktorý poskytoval Windows aplikáciám až 16 MB doplnkovej pamäti. A Windows 95 odhadzuje tieto zastaralé obmedzenia tým, že je plne funkčný 32-bitový systém s plošným pamäťovým priestorom. Grafické rozhranie, nezávislé od zariadenia Windows je grafické rozhranie a Windows programy môžu plne využívať grafický a formátovaný text na obrazovke i na tlačiarni. Grafické rozhranie nie je atraktívny iba vzhľadom, ale užívateľovi dodáva informácie na vyššej úrovni. Programy, napísané pre Windows nepristupujú priamo k hardware grafických zariadení ako sú obrazovka a tlačiareň. Namiesto toho Windows obsahuje jazyk na programovanie grafiky (nazývaný rozhranie grafických zariadení GDI), ktorý uľahčuje zobrazovanie grafiky a formátovaného textu. Windows virtualizuje zobrazovací hardware. Program napísaný pre Windows bude fungovať s akokoľvek grafickou kartou alebo tlačiarňou, pre ktorú Windows obsahuje ovládač (driver). Program nemusí určovať aký typ zariadenia je pripojený ku systému. Zavedenie grafického rozhrania, nezávislého od zariadenia, na PC nebola ľahká úloha pre vývojárov Windows. PC bolo navrhnuté na princípe otvorenej architektúry. Tretí výrobcovia hardware vyvíjali periférie pre PC a vyrobili ich značné množstvo. Hoci sa objavilo niekoľko štandardov, konvenčné MS-DOS programy pre PC museli individuálne podporovať množstvo rozmanitých hardwarových konfigurácií. Napríklad dobre je známy príklad MS-DOS textového procesora, ktorý sa predával s dvomi disketami malých súborov, pričom každý podporoval jednu konkrétnu tlačiareň. Windows 95 programy tieto drivery nepotrebujú, pretože ich podpora je neoddeliteľnou súčasťou Windows. Volania funkcií Windows 95 poskytuje viac ako tisíc funkčných volaní, ktoré môže aplikácia volať. Je vysoko nepravdepodobné, že si zapamätáme syntax všetkých týchto volaní. Väčšina Windows programátorov strávi veľkú časť svojho času hľadaním rôznych funkcií či už v tlačovej alebo on-line forme. Každá Windows funkcia má popisný názov, napísaný použitím veľkých i malých písmen abecedy., napríklad CreateWindow. Všetky hlavné Windows funkcie sú deklarované v hlavičkových súboroch. Hlavný hlavičkový súbor je nazvaný WIINDOWS.H a tento hlavičkový súbor včleňuje mnoho ďalších hlavičkových súborov. Tieto hlavičkové súbory sa dodávajú spolu s každým C prostredím, ktoré podporuje Windows 95. Hlavičkové súbory sú dôležitou súčasťou Windows technickej dokumentácie. Vo Windows programoch používame Windows funkcie rovnakým spôsobom ako používame C knižničné funkcie. Hlavný rozdiel spočíva v tom, že kód C knižničných funkcií sa prilinkováva ku kódu programu, zatiaľ čo kód Windows funkcií je umiestnený v dynamicky linkovaných knižniciach (DLL). Keď odštartujeme Windows program, prepojí sa s Windows prostredníctvom procesu nazývaným dynamické linkovanie. Windows EXE súbor obsahuje odkazy na rozmanité dynamicky linkované knižnice, v ktorých sú umiestnené funkcie, ktoré aplikácia používa. Väčšina týchto DLL je uložená v pod adresári SYSTEM Windows adresára. Po zavedení Windows programu do pamäti, volania v programe sa prevedú na smerníky, ktoré budú ukazovať na funkcie v týchto dynamicky linkovaných knižniciach, ktoré sa tiež zavedú do
pamäti, pokiaľ tam už nie sú. Po linkovaní Windows programu do vykonateľného tvaru musíme aplikáciu zlinkovať spolu so špeciálnymi importovacími knižnicami, ktoré poskytuje programovacie prostredie. Tieto importovacie knižnice obsahujú názvy všetkých Windows funkcií, ktoré dynamicky linkovaná knižnica obsahuje. Linker používa túto informáciu na vytvorenie tabuľky v EXE súbore, ktoré Windows používa na zisťovanie volaní Windows funkcií pri zavádzaní programu. Objektovo-orientované programovanie Keď programujeme pre Windows používame určitý typ objektovo orientovaného programovania (OOP). Toto je evidentné v objekte, s ktorým budeme pracovať najviac objekt, ktorý dáva Windows meno okno. Okno je štvoruholníková oblasť na obrazovke. Okno dostáva užívateľský vstup z klávesnice alebo myši a zobrazuje grafický výstup. Aplikačné okno zvyčajne obsahuje lištu s titulkom, menu kalibrovací okraj a prípadne rolovacie lišty. Dialógové okná predstavujú ďalší typ okna. Naviac povrch dialógového okna vždy obsahuje niekoľko ďalších okien, nazývaných detské okná. Tieto majú tvar tlačítok, rádiových tlačítok, editovacích okien, zoznamov a rolovacích líšt. Užívateľ vidí tieto okná ako objekty na obrazovke, ktoré ovplyvňuje priamo stlačením tlačítka alebo rolovaním v rolovacej lište. Je zaujímavé, že pohľad programátora je analogický s pohľadom užívateľa. Okno dostáva tento užívateľský vstup vo forme oknových správ. Okno používa správy i na komunikáciu s inými oknami. Pochopenie týchto správ je jednou z prekážok, ktorú musíme prekonať, ak sa chceme stať Windows programátormi. Message-driven architektúra - Riadenie prostredníctvom správ Keď sa pozrieme na typickú Windows aplikáciu, vidíme, že má vyhradené okno, v ktorom zobrazuje svoje informácie. Toto okno môžeme premiestňovať, meniť jeho veľkosť, atď. Je zrejmé, že logiku práce s oknom vykonáva systém a program dokáže reagovať na túto systémovú logiku. Ako sa program dozvie, že sme zmenili veľkosť jeho okna? Aký mechanizmus používa operačný systém na prenos informácií do okna? Odpoveď na tieto otázky je jadrom pochopenia architektúry, použitej v grafických užívateľských rozhraniach. Keď užívateľ zmení veľkosť okna, Windows pošle správu do programu, ktorá indikuje novú veľkosť okna. Program potom môže prestaviť obsah svojho okna tak, aby vyhovoval novým rozmerom. Windows pošle správu do programu. Čo to je? Hovoríme o programovom kóde a nie o elektronickej pošte. Ako môže operačný systém posielať správy do programu? Keď hovoríme, že Windows pošle správu do programu, myslíme tým, že Windows volá funkciu programu. Parametre tejto funkcie popisujú konkrétnu správu. Táto funkcia, ktorá je súčasťou nášho Windows programu sa nazýva oknová procedúra. Oknová procedúra Pojem volania funkcií operačného systému programom je bežný. Takýmto spôsobom napríklad program otvára súbory. Avšak pojem volania programových funkcií operačným
systémom až taký samozrejmý nie je. Napriek tomu toto tvorí podstatu objektovo-orientovanej architektúry Windows 95. Každé okno vytvorené programom má pričlenenú oknovú procedúru. Táto oknová procedúra je funkcia, ktorá sa môže nachádzať v samotnom programe alebo v dynamicky linkovanej knižnici. Windows posiela správu do okna volaním tejto oknovej procedúry. Oknová procedúra vykoná požadovanú činnosť, založenú na správe a potom vráti riadenie do Windows. Presnejšie okno je vždy vytvorené na základe oknovej triedy. Oknová trieda určuje oknovú procedúru, ktorá bude spracovávať správy, prichadzajúce do okna. Použitie oknovej triedy umožňuje vytvárať na základe tej istej triedy viac okien, ktoré budú používať tú istú oknovú procedúru. Napríklad všetky tlačítka vo Windows programoch sú založené na tej istej oknovej triede. Táto oknová trieda je združená s oknovou procedúrou (uloženou vo Windows dynamicky linkovanej knižnici), ktorá spracováva správy všetkých tlačítkových okien. V objektovo-orientovanom programovaní sa pod pojmom objekt chápe kombinácia kódu a dát. Okno je objekt. Kódom je oknová procedúra. Dátami sú informácie, uchovávané oknovou procedúrou a informácie uchovávané vo Windows pre každé okno a oknovou triedou, ktoré v systéme existujú. Oknová procedúra spracováva správy, ktoré prichádzajú do okna. Veľmi často tieto správy informujú okno o užívateľskom vstupe z klávesnice alebo myši. Takýmto spôsobom sa napríklad tlačítko dozvedá, že bolo stlačené. Iné správy oznamujú oknu, že sa zmenil jeho rozmer alebo že je nutné prekresliť obsah okna. Po odštartovaní programu Windows vytvorí frontu správ programu. Táto fronta správ uchováva všetky správy pre všetky okná, ktoré program vytvára. Súčasťou programu je kúsok kódu, nazvaný slučka správ, ktorá vyberá správy s fronty a odosiela ich do príslušnej oknovej procedúry. Iné správy sa priamo posielajú do oknovej procedúry bez ich umiestnenia do fronty správ.