Čo robia programy?Činnosť počítača vychádza z toho s akými prostriedkami môže narábať PROCESOR. Na tento účel použijeme MODEL POČÍTAČA v ktorom sa nachádzajú elementárne prvky (za vzor použijeme jednoduchý mikropočítač I8051). Jeho obsahom je:
Význam týchto pojmov si vysvetlíme pretože sú dôležité pre pochopenie všetkých súvislostí. Pracovné registresú dôležité pre funkciu základných inštrukcií procesora (CPU) nakoľko urýchľujú OPERÁCIE s OPERAND-ami. Rozlišujú sa symbolickými názvami. Bunky RAM (aj ROM) pamäte sú adresovateľné tzv. INDEX REGISTRAMI, ktoré zvyčajne majú dvojnásobok veľkosti dátovej zbernice a používajú sa hardwarovo na adresovanie operandov inštrukcií. Operačná pamäť - RAM.V RAM pamäti sa nachádza tzv. OPERAČNÁ PAMÄŤ. V týchto bunkách sa môžu umiestňovať len CELÉ ČÍSLA v binárnom tvare, ktorých veľkosť v bitoch zodpovedá šírke (t.j. počet bitov) DÁTOVEJ ZBERNICE. Ak chceme uložiť väčšie čísla musíme ich ukladať do buniek pod seba na viac slov ako harmoniku do štruktúry nazývanej POLE. Podľa toho či najprv budeme ukladať vyššie rádové pozície a pod nimi nižšie alebo naopak poznáme ich pod názvom Litle Endian (Intel Order - Intel poradie) alebo Big Endian (Motorola Order - Motorolácke poradie). Počet buniek a poradie je dané "dohodou" nie je to ničím a nikým "uzákonené". Týka sa to aj spôsobu ako vytvárame REÁLNE ČÍSLA, ktoré majú nasledovnú štruktúru: ZNAMIENKO, EXPONENT, MANTISA. Keď sa na takýto údaj pozrieme ako na binárnu postupnosť (0 a 1), potom celá reťaz sa musí tiež poskladať ako harmonika, a toto všetko sa musí umiestniť do operačnej pamäti ako pole s daným počtom buniek. Zatiaľ čo niektoré procesory poznajú základné inštrukcie na násobenie a delenie celých čísel pomocou hardwarového zariadenia nazývaného ARITMETICKO LOGICKÁ JEDNOTKA (maximálne do veľkosti dátovej zbernice), práca s reálnymi číslami už vyžaduje špeciálne hardwarové matematické koprocesory (dnes sa už zvyčajne nachádzajú priamo na čipe mikroprocesora). Klasická ALJ nestačí na operácie s rádovou čiarkou. V prípade že takýto koprocesor počítač nemá, rieši sa to podprogramom, ktorý používa podobné metódy násobenia a delenia, ktoré sa učia deti na základnej škole. Polia sa používajú aj na ukladanie reťazcov textových znakov (STRING). Na jednotlivé znaky postačuje 8 bitový bajt (kódovanie ASCII znakov). ASCII tabuliek je viacero (napr. pre nás Latin2 ISO 8859-2, windows-1250 a i.) a obsahujú v druhej polovici tzv. národné znaky. Ak nevieme v ktorej národnej tabuľke sa majú znaky tlačiť, vznikajú problémy pri ich interpretácii. Tieto problémy odstránil novší UNICOD (spojený kód) používajúci dva bajty (16 bitov), ktorým sú jednoznačne zakódované národné znaky všetkých národov sveta. Pôvodne 8 bitové počítače mali v každom dátovom slove operačnej pamäte po jednom znaku. Dnes 64 bitové počítače ich majú až 8. Niektoré mikroprocesory majú priamo inštrukcie schopné adresovať jednotlivé bity a vykonávať tzv. bitové operácie v časti operačnej pamäti nazývanej BITOVÉ POLE. Prvky bitového poľa - BITOVÉ PREMENNÉ- slúžia ako príznaky signalizujúce nejaké stavy v programe. (Napr. "okno otvorené", alebo "motor beží" "auto stojí", ... ). Ak nemáme k dispozícii bitové pole môžeme si ho vytvoriť umelo pomocou vlastných špeciálnych podprogramov. Príznaky sa dajú využiť v podmienených skokoch, t.j. inštrukciách ktoré umožňujú vetviť program podľa stavu podmienky (0, 1, >, <, >=, <=, =). ZásobníkJe to mechanizmus vytvárania dátovej štruktúry vo vybranej časti Operačnej pamäti, na správu ktorej slúži špeciálny register STACK POINTER (SP). Jeho úlohou je adresovať vrchol "kopy" a zvyčajne sa nastaví automaticky, ale môže ho zmeniť na začiatku aj programátor programom. Zásobníková pamäť má podporu medzi základnými inštrukciami procesora ( PUSH - vlož, a POP- vyber ), ktorých úloha je uložiť operand do zásobníkovej pamäti (bez toho aby sme sa zamýšľali kde to bude) a neskôr, keď operand potrebujeme, zase ho vybrať - jednoduchá odkladacia pamäť. Pri práci s jej údajmi vidíme vždy len naposledy vložený operand a preto ho nazývame aj pamäť typu FILO ( First IN Last Out - Prvý dnu Posledný von ). HEAPje oblasť zvyšnej volnej pamäte, ktorá ostane voľná v operačnej pamäti po zavedení programov a pridelení pamäťového priestoru pre ich STATICKÉ PREMENNÉ. Táto je spojená podprogramom "Správca HEAPU" do jedného celku aj keď nie je súvislý (diery medzi programami). Pri programovaní aplikácie existujú príkazy, ktoré požiadajú operačný systém (správcu HEAP-u) o pridelenie dynamickej pamäte pre premenné, a táto sa z HEAP-u odčlení. Ak program už nepotrebuje pridelenú oblasť môže ju dynamicky do HEAP-u vrátiť. Táto činnosť je spojená v jazykoch Pascal a C s premennými typu SMERNÍK (t.j. POINTER) obsahujúcimi adresu operandu uloženej v operačnej pamäti RAM. Vzťah medzi Indexregistrami a premennými typu pointer, je len v tom že prvý predstavuje HARDWARE a druhý SOFTWARE. Praktiky používajúce POINTRE sú dôležité hlavne pre operačné systémy obsluhujúce súčasne viac pracujúcich PROCESOV. Tieto si konkurujú o pridelenie adresného priestoru pre dáta, a práve spôsob dynamického prideľovania pamäte premenným zabraňuje zbytočnému blokovaniu nepoužívanej časti pamäte počas behu procesu. Programátori jednotlivých procesov (aplikácií) majú za úlohu používať čo najmenej STATICKEJ pamäte. Po ukončení procesu sa uvolní do HEAP-u nielen oblasť statických premenných procesu, ale aj oblasť pridelená samotnému programovému kódu. Čo robia programy:Programy, aby mohli vykonávať činnosť, musia sa SPUSTIŤ. Operačný systém má buď príkazový riadok (DOS, LINUX, WINDOWS), alebo používajú grafické ikony (LINUX, WINDOWS). Pri oboch metódach sa Operačný systém dozvie názov a miesto uloženia súboru (*.exe) s binárnym kódom programu (tzv. STROJOVÝ KÓD). Spustiť program znamená:
Toto je jedna z úloh operačného systému. Od chvíle keď sa v PC registri objaví adresa prvej inštrukcie programu - program sa začne vykonávať. Zapamätajte si: PROGRAM COUNTER obsahuje vždy adresu strojovej inštrukcie, ktorá sa BUDE vykonávať! Vo chvíli keď sa inštrukcia práve vykonáva PC register už ukazuje na ďalšiu inštrukciu ktorá sa BUDE vykonávať v následovnom INŠTRUKČNOM CYKLE. Výnimkou (ktorá potvrdzuje pravidlo) je skoková inštrukcia, ktorá vo chvíli keď sa inštrukcia vykonáva práve plní do PC registra nový obsah. Takže kým sa vykonávanie inštrukcie skončí obsah PC registra sa zmení, ale vo chvíli keď sa zmena dokoná, platí znova zvýraznená a podčiarknutá veta. Po spustení program vytvára premenným pozície, prenáša do nich údaje, používa ich pri práci s ich obsahom, nad ktorým vykonáva aritmetické, logické, alebo rôzne kopírovacie a transformačné operácie nad textovými a grafickými a zvukovými reťazcami uložených v poliach. Ak sú to operácie nad číslami výsledky sa ukladajú do číselných premenných. Výsledky grafických transformácií sa prenášajú z RAM pamäte do pamäte grafickej karty (RADIČ MONITORA), ktoré prepájajú hardware CPU s periférnym zariadením - obrazovkou. Podobne sa pracuje so zvukom. Zvuková karta predstavuje RADIČ pre REPRODUKTOR resp. N KANÁLOVÚ SÚSTAVU REPRODUKTOROV (stereo N=2, resp. multikanálové "domáce kino" N=4 alebo 5+1, ... ). Samotný zosilňovač môže byť súčasťou jednak zvukovej karty, ale tak isto aj "aktívnych reproduktorových sústav". Podobne sa ovládajú aj zariadenia ako HDD (Hard Disk Drive), FDD (Floppy Disk Drive), CD (Copmact Disk Drive), DVD (Digital Video Drive), Tlačiarne, .... Pre všetky tieto zariadenia je spoločné to, že existuje hardware, ktorý je napojený na tri hlavné zbernice počítača ADRESOVÚ, DÁTOVÚ a RIADIACU. Programy komunikujú s pracovnými registrami umiestnených v radičoch pomocou dohodnutých pravidiel (určujú ich výrobcovia periférnych zariadení) a buď im posieľajú požiadavky, alebo odoberajú resp. dodávajú dáta na spracovanie. Aby boli všetky dohodnuté pravidlá ovládania od všetkých výrobcov rovnaké, vznikajú štandardy prijímané formou noriem, ktoré sa stávajú pre výrobcov záväzné. V rámci "deľby práce", výrobcovia periférnych zariadení k nim sami vyrobia špeciálne ovládacie programy - DRIVERY a OBSLUŽNÉ FUNKCIE. Robia to preto, aby sa programátori nemuseli detailne oboznamovať s elektrickým zapojením periférií. Túto prácu odvádza samotný vývojový tím. Obslužné funkcie sa viac praktizovali v minulosti (operačné systémy DOS, WIN98), ale aj dnes sú používané hlavne pri programovaní mikropočítačov. Do vytváranej aplikácie programátorovi potom stačí pripojiť výrobcom dodanú obslužnú funkciu. Tieto funkcie sú ovládané cez parametre postupom, ktorý programátor nájde v sprievodnej dokumentácii. Nevýhoda tohto riešenia však spočíva v tom, že pri každej zmene hardware musí sa preprogramovať aj aplikácia s obslužnou funkciou od iného výrobcu. Programovanie aplikácií pre novšie verzie operačných systémov (WIN XP, a i.) využíva štandardný softwarový INTERFACE ( doslova "medzi-tvár" alebo aj dve tváre - každá na svoju stranu ) ktorý poskytuje sprostredkovane samotný operačný systém. Pri inštalácii nového hardware v počítači sa zároveň preinštaluje aj výrobcom poskytnutý DRIVER. To robí aplikácie nezávislé od neštandardnosti hardwarového interface nakoľko na strane aplikácie sa nič nemení. Najnovšie operačné systémy WINDOWS XP a viac. už nedovoľujú priamy prístup k hardware periférneho zariadenia ( WIN98 to umožňoval). Najčastejšie aplikácie.DATABÁZY, GRAFICKÉ APLIKÁCIE, ZVUKOVÉ APLIKÁCIE, ÚČTOVNÍCTVO, EKONOMICKÉ KALKULÁCIE, MATEMATICKÉ VÝPOČTY - toto sú najčastejšie používané aplikácie. Aplikácie ktoré programujú aplikační programátori, zvyčajne používajú hotové programové komponenty, ktoré nevyžadujú detailné poznávanie ani hardware, ale onedlho ani software operačného systému. Môžu to byť databázové aplikácie, ktoré poskytujú funkcie na logickej úrovni ovládania. Napríklad funkcia vytvárajúca okno na obrazovke pre programátora úplne odstraňuje potrebu poznať spôsob komunikácie s grafickou kartou. Dosadením parametrov do použitých funkcií sa pridajú k oknu menu aj s ovládacími ikonami a ich popisom. Pre prácu s databázou napríklad sú dostupné preddefinované funkcie, ktoré dátové štruktúry uložia do súborov, automaticky triedia podľa nastavených parametrov, vyhľadávajú podľa kritérií dáta a upravené dáta zobrazujú na obrazovke. Programátor pri tom nemusí nič vedieť o programovaní súborov na diskových pamätiach ani spôsoby používania grafiky. Vyššie programovacie jazyky sa svojou skladbou blížia gramatike primitívnych ľudských jazykov. Programátor nemusí vedieť ako naprogramuje komplikované matematické funkcie. Často stačí použiť štandardne dodávané knižnice matematických funkcií a vpísať ich do výrazov popisujúce matematické rovnice. Čím ďalej tým viac sa začína využívať výpočtová technika v zariadeniach predtým nepredstaviteľných. Chladnička evidujúca obsah, oznamujúca respiračné doby potravín, automaticky vytvárajúca objednávky dochádzajúcich potravín, ktoré objedná a zaplatí cez Internet. nepredstaviteľné možno dnes, ale o pár rokov už realita. Zbrane rozpoznávajúce majiteľa, ktoré sa stávajú nefunkčné v cudzích rukách. Autá používajúce satelitnú navigáciu pre vyhľadávanie optimálnej trasy k cieľu, ktoré reagujú na aktuálny stav pohybu áut po cestách, prekážky, nehody a zátarasy - nemysliteľné? - zajtra skutočnosť. Všetky spomenuté zariadenia majú jedno spoločné - mikroprocesor a obslužný program. Jeho autormi sa môžete stať sami.
|
|||