You are on page 1of 99

Abstraktn dajov typy (AUT)

abstrakcia nstroj v procese poznvania, mylienkov vymedzenie podstatnch znakov javu alebo predmetu, shrn pravidiel mylienkovej innosti vedcej k vymedzeniu podstatnch znakov

Reprezentcia AUT: truktrovan dajov typ trieda Trieda mnoina objektov s rovnakmi vlastnosami, sprvanm a vzahom k inm objektom Objekt konkrtny vskyt entity danej mnoiny intancia triedy - dtov poloky (lensk dta, atribty) vlastnosti objektu - opercie (lensk funkcie, metdy) sprvanie sa objektu Pole Pole je homognna truktra; pozostva z prvkov, ktor s vetky jedinho typu. Tento typ prvku poa sa nazva bzov alebo zkladn typ. Pole pokladme za truktru s nhodnm prstupom; vetky prvky mu by vybrat nhodne a s rovnako sprstupniteln. Na referenciu individulneho prvku poa je potrebn poui meno celej truktry rozren o index, urujci vybrat prvok. Index nadobda hodnoty typu, definovanho ako typ indexu poa. Metdy: empty - kontrukcia poa przdneho read - tanie danho prvku poa write - zpis danho prvku poa na dan miesto low - doln hranica indexu poa high - horn hranica indexu poa isempty - test, i je pole przdne iseq - test, i sa dva indexy rovnaj dtov typy, ktor vo vych programovacch jazykoch musia by definovan pomocou nzkorovovch opercii Pouitie abstraktnch dajovch typov namiesto primitvnych dtovch typov vo vych programovacch jazykoch uahuje prcu programtora. AUT poskytuje pre svojho klienta rozhranie na vyej rovni pecifikujce chovanie objektov prslunej triedy (naprklad v prpade triedy Stack, interface pozostva z metd: push, pop a top definujcich vysokorovov opercie nad triedou Stack) AUT takto zrove ukrva pred klientom svoje nzkorovov implementan detaily

Reazec (string) Pod reazcom rozumieme usporiadan n-ticu prvkov danej mnoiny. Poet prvkov v reazci uruje jeho dku. Reazec s nulovou dkou nazvame przdny reazec. Metdy: length vrti dku reazca empty test, i je reaxec przdny append pridanie reazca alebo jeho asti (na koniec reazca) compare porovn reazce

find hadanie reazca v reazci Zsobnk (stack) Je typ dajov, ktor mono zo statickho hadiska stotoni s reazcom. Ide tie o postupnos prvkov, ktor vak mono meni iba na jednom konci. Prvky mono pridva alebo vybera iba na jednom konci, ktor nazvame vrchom zsobnka. Spsob prce so zsobnkom najlepie charakterizuje veta "posledn dnu, prv von". asto sa preto oznauje nzvom LIFO (Last In First Out). Metdy: empty test, i je zsobnk przdny size vrti vekos zsobnka top sprstupn al element (prvok) zsobnka push prid element do zsobnka pop odobratie elementu z vrcholu zsobnka

Front (buffer) Je dajov truktra typu FIFO (first in, first out), pouvan ako buffer pri prenose a operanej analze. Najvznamnejmi operciami s zara do frontu (enqueue) a vyber z frontu (dequeue). Zarauje sa na koniec frontu a vyber sa zo zaiatku frontu, priom vybran poloka sa odstrni. Metdy: empty - vytvorenie przdneho frontu, insert - pridanie prvku do frontu, first - pretanie prvku z frontu, remove - zruenie prvku vo fronte, isempty - test, i je front przdny.

Tabuka Tabuka je mnoina prvkov identifikovatench pomocou tzv. ka. K je sasou prvku a vyhradenou asou prvku. V porovnan s poom je tabuka uritm zoveobecnenm poa. Pri poli je s prvkom spojen index, pri tabuke k. Na rozdiel od poa je k sasou prvku a me to by ubovon as prvku, ktor ns z hadiska aplikcie zaujma. S prvkom me by spojench aj viac kov. Metdy: read - tanie prvku urenho danm kom write - zpis danho prvku do tabuky isin - test, i je prvok s danm kom v tabuke delete - zruenie prvku v tabuke iseq - test, i sa dva ke rovnaj isreal - test, i s dva ke v relcii kl - urenie ka danho prvku

Mnoina Je tak typ dajov, ktorho prvkami s konen mnoiny a operciami s mnoinov opercie. Mono ju povaova za zkladn typ dajov, ktor pouvame na pecifikciu inch typov dajov. Niektor typy dajov mono povaova za pecilny prpad typu dajov mnoina. Pri pecifikcii typu dajov mnoina budeme predpoklada, e prvky mnoiny s konen mnoiny rovnakho typu. Metdy: empty - vytvorenie przdnej mnoiny, insert - pridanie prvku do mnoiny, delete - zruenie prvku v mnoine, union - zjednotenie mnoiny, intersect -prienik mnoiny, isin -test, i sa nachdza prvok v mnoine, isempty - test, i je mnoina przdna, issubset - test na podmienku, iseq - test, i sa dva prvky rovnaj. logickm poom. binrnym vyhadvacim stromom (BVS) vyvenm stromom.

Mnoinu implementujeme :

Usporiadan mnoina - je tu definovan relcia usporiadania. Zoznam Linerny zoznam Jednosmern linerny zoznam obsahuje prvky (uzly), z ktorch kad m jednu poloku ukazovate. Tieto ukazovatele s nastaven tak, aby ukazovali na prvok nasledujci v zozname. Ak od prvku, na ktor ukazuje ukazovate z, zaname prezera zoznam, meme prejs kad prvok zoznamu prve raz. Cyklick zoznam Cyklick zoznam je tak linerny zoznam, ktorho uzly tvoria uzavret "logick kruh". Ukazovate v poslednom uzle zoznamu nem hodnotu NULL, ale ukazuje na prv uzol t.j. zaiatok zoznamu. Metdy: empty - vytvorenie przdneho zoznamu, first - (zaiatok zoznamu) zoznam, ktor bol sprstupnen prostrednctvom niektorho jeho (ubovonho) prvku, bude prstupn prostrednctvom prvho prvku, last - (koniec zoznamu) zoznam, ktor bol sprstupnen prostrednctvom niektorho jeho (ubovonho) prvku, bude prstupn prostrednctvom jeho poslednho prvku, next - (nasledujci prvok) zoznam, ktor bol sprstupnen prostrednctvom niektorho jeho (ubovonho) prvku, bude prstupn prostrednctvom nasledujceho prvku, previous - (predchdzajci prvok) zoznam, ktor bol sprstupnen prostrednctvom niektorho jeho (ubovonho) prvku, bude prstupn prostrednctvom predchdzajceho prvku,

read - vrtenie hodnoty toho prvku zoznamu, prostrednctvom ktorho je zoznam sprstupnen, P-insert - vloenie novho prvku pred prvok, prostrednctvom ktorho je zoznam sprstupnen, N-insert - vloenie novho prvku za prvok, prostrednctvom ktorho je zoznam sprstupnen, P-delete - zruenie toho prvku zoznamu, prostrednctvom ktorho je zoznam sprstupnen a sprstupnenie zoznamu prostrednctvom predchdzajceho prvku, N-delete - zruenie toho prvku zoznamu, prostrednctvom ktorho je zoznam sprstupnen a sprstupnenie zoznamu prostrednctvom nasledujceho prvku, isempty - test, i je zoznam przdny. Reprezentcia zoznamu mus zahrnova dve veci: - reprezentciu samotnho zoznamu, t.j. vetkch prvkov v danej postupnosti, - reprezentciu pozcie prvku, prostrednctvom ktorho je zoznam prstupn. Schma reprezentcie zoznamu: Z - samotn zoznam P - pozcia sprstupnenia. Konkrtny spsob implementcie zvis, od voby implementujceho typu dajov. Vemi elegantn je implementcia v jazyku pascal s pouitm smernkov. Graf Pod grafom G rozumieme dvojicu (V, H), teda G = ( V, H ), kde V je mnoina vrcholov, H je mnoina hrn. Hovorme, e dvojica vrcholov z H, ktor definuj prslun hranu, s touto hranou inciduj. Ak dvojice z H povaujeme za usporiadan, hovorme o orientovanom grafe, ak ich povaujeme za neusporiadan, hovorme o neorientovanom grafe. V aplikcich sa najastejie stretvame s ohodnotenmi grafmi, ke s mnoinou vrcholov, hrn alebo obidvoma mnoinami je prostrednctvom uritho zobrazenia spojen in mnoina. Hovorme potom o vrcholovo, hranovo alebo vrcholovo i hranovo ohodnotenom grafe. pecifikcia grafu: Vzhadom na rozmanitos aplikci grafov je aj pecifikcia grafu, ako dajovho typu, zvisl od prostredia, v ktorom sa graf bude pouva. Metdy: empty - vytvorenie grafu V-insert - pridanie vrcholu do grafu H-insert - pridanie hrany do grafu V-delete - zruenie vrchola v grafe H-delete - zruenie hrany v grafe isempty - test, i je graf przdny Ako alie opercie mono uvaova napr. prienik grafov, zjednotenie grafov, vber pecilneho grafu ako je kostra, cesta, cyklus, ap. Implementcia grafu: Zkladn problm implementcie grafu je jeho reprezentcia. Najastejie sa pouvaj reprezentcie:

a. incidennou maticou, b. zoznamom. Implementcia operci typu dajov graf si vyaduje sprstupnenie vrcholov, ktor je spojen s uritou formou prechdzania grafom alebo prehadvania grafu. Aj ke je viac monost prehadvania grafu, najastejie sa pouvaj dve: 1. prehadvanie do rky, paraleln prehadvanie, 2. prehadvanie do hbky. Pri prehadvan do rky prezrieme zaiaton vrchol. V alom kroku vetkch priamych nasledovnkov, v alom vetkch ich nasledovnkov at. Pri prehadvan do hbky postupujeme po jednej hrane resp. vrchole. Najskr prezrieme zaiaton vrchol. Potom zistme, i m nasledovnkov, ktorch sme ete neprezreli. Ak no, vyberieme jednho a cel proces opakujeme na tomto vrchole. Ak nie, zistme, i m predchodcu. Ak no, cel proces opakujeme na tomto vrchole. Ak nie, STOP, graf je prezret. Pri grafe z topiku incidenn matica a za predpokladu, e zaiaton vrchol je v 1, bude prezeranie prebieha takto: Prehadvanie do rky Prehadvanie do hbky v1 v1 v2,v3 v2 (v3),v4 v3 (v1) v4 (v1) (v3) Strom Strom, ako pecilny prpad grafu, mono implementova rovnakmi prostriedkami ako graf. Okrem toho vak vyuvame pecifick vlastnosti stromu. Strom mono teda implementova pomocou incidennej matice, no reprezentcia incidennou maticou je neefektvna. Najprirodzenejia implementcia stromov je pomocou zoznamov. Strom obsahuje mnoinu prvkov (vrcholov) s jednm pecilnym vrcholom - koreom. Nad vrcholmi je definovan relcia (vzah "rodi" - "diea"), ktor vyjadruje hierarchick truktru medzi vrcholmi. Strom meme definova takto: 1. Jedin vrchol je strom. Tento vrchol je sasne kore tohto stromu. 2. Nech v je vrchol a S1,S2,......,Sk s stromy s koremi v1,v2,.....,vk. Meme zostroji nov strom tak, e urobme vrchol v predchodcom (otcom) vrcholov v1,v2,....,vk. V tomto strome je v kore a S1,S2.....,Sk s jeho podstromy. Vrcholy v1,v2,.....,vk s nasledovnci (synovia) vrcholu v. Niekedy je uiton povaova za strom aj tzv. przdny strom, t.j. strom bez vrcholov. Nasledovnci vrcholu s zvyajne usporiadan zava doprava. Mono potom hovori o najavejom nasledovnkovi alebo o pravom susedovi nejakho vrcholu. Usporiadanie medzi nasledovnkmi vrcholov mono rozri na vetky vrcholy stromu. Najdleitejie spsoby usporiadania vrcholov stromu s uren tzv. priamym prehadvanm (preorder), vntornm prehadvanm (inorder), a sptnm prehadvanm (postorder). Poda charakteru jednotlivch problmovch aplikci mono pecifikova rzne pecilne prpady stromu. Napr. binrny strom je strom, v ktorom m kad vrchol najviac dvoch nasledovnkov oznaench bu ako av, alebo ako prav nasledovnk.

Kore stromu je poda defincie na prvej rovni. Maximlnu rove ubovonho prvku v strome nazvame jeho hbkou alebo vkou. Ak nejak prvok nem nasledovnkov, hovorme, e je koncovm prvkom alebo listom stromu. Binrne stromy a metdy prehadvania Je to alebo przdny strom, alebo strom, v ktorom kad vrchol nem nasledovnkov alebo m avho nasledovnka alebo pravho nasledovnka, alebo m avho a pravho nasledovnka. Binrny strom implementujeme pomocou : poa, vone zreazenou pamou. Rozdiel oproti usporiadanmu, orientovanmu stromu je vtom, e v binrnom strome je kad nasledovnk bu av, alebo prav nasledovnk. Prehadvanie: Preorder - najprv spracujeme informciu v samotnom vrchole (napr. ju vypeme), potom rekurzvne spustme tento algoritmus pre av podstrom a na zver pre prav podstrom. Inorder - najprv spracuje av podstrom, potom spracuje informciu vo vrchole a na zver prav podstrom. Postorder - najprv spracuje av, potom prav podstrom a na zver informciu v samotnom vrchole.

Programovacie techniky - 2. otzka :


Smernky a dynamick daje, typ smernk, pojem dynamickho daju, prideovanie a uvoovanie dynamickej pamte, dynamick programovanie. Zreazene zoznamy, implementcia pomocou poa, dynamick implementcia, dvojmo zreazene zoznamy, kruhov zoznamy, stromy a grafy.

Smernk
Charakteristickm rysom jazyka C je monos komplexnho vyuvania smernkov (pointrov) a smernkovej aritmetiky. S pouitm smernkov sa stretvame pri spracovan

premennch pol reazcov parametrov funkci dynamickch objektov funkci (smernk na funkciu).

Sprvne pochopenie a pouvanie smernkov je na jednej strane silnou strnkou a prednosou jazyka C, km na druhej strane ich nesprvne pouitie sa men v rukch uvatea na nebezpen zbra, o me v lepom prpade ma za nsledok prstup k "nesprvnyn" dajom, v horom prpade i havriu lohy. "Vonos" uvatea pri prci so smernkmi je podmienen jeho vedomosami a disciplnou, pretoe systm niektor okolnosti nekontroluje (ako ukeme v alom na konkrtnom prklade). Smernk je deklarovan pomocou opertora * (* oznauje opertor dereferencie, resp. indirekcie, ktor sprstupuje obsah uloen na danej adrese) v tvare
kde typ *meno; typ - ubovon typ jazyka C meno - identifiktor premennej typu smernk

Smernk teda obsahuje dve zkladn informcie o objekte, na ktor ukazuje:


adresu, ktor identifikuje umiestnenie objektu (meno) vekos (dku) objektu (typ). Me nadobda hodnoty z mnoiny prirodzench sel (adries), alebo przdnu adresu NULL ( = 0 ). So smernkmi svisia 2 zkladn opertory:

& - referencia (zskanie adresy objektu) * - indirekcia, dereferencia (zskanie hodnoty, uloenej na adrese).

Prklad p9.1 ilustruje pouitie smernka. /* p9_1.c ilustracia pouzitia smernika (pointra) */

main() { int index,*pt1,*pt2; index = 39; /* any numerical value */ pt1 = &index; /* the address of index */ pt2 = pt1; printf("1. hodnota %d %d %d\n",index,*pt1,*pt2); *pt1 = 13; /* this changes the value of index */ printf("2. hodnota %d %d %d\n",index,*pt1,*pt2); }

Pojem dynamickho daju (dynamick dajov truktra)


Pri rieen niektorch loh s vytvran truktry, ktor menia svoj rozsah, tieto truktry sa nazvaj dynamick dajov truktry. Typickm prkladom dynamickej dajovej truktry je zoznam prvkov uritho typu, na ktorom je pouvan opercia pridvania prvkov a opercia odoberania prvkov. Znamen to, e zoznam zvuje svoju vekos. Ak vieme ohranii poet prvkov zhora a vieme tie, e pridvanie sa uskutouje na jednom konci zoznamu, tak je mon poui na reprezentciu zoznamu pole. Ak vak pripustme pridvanie prvkov aj doprostred zoznamu, potom reprezentcia pomocou poa je nevhodn, lebo opercia pridvania prvku bude vyadova posun mnohch inch prvkov v poli, aby bolo vytvoren miesto na uloenie novho prvku. Ak by bola povolen opercia vynechvania prvkov, tak by vznikli problmy s dierami v poli. Opercie meniace rozsah dynamickej dajovej truktry s efektvnejie realizovan, ak pouijeme na ich reprezentciu smernky. Kad prvok zoznamu je uloen v samostatnom objekte, ktorho sasou je, okrem hodnoty prvku zoznamu, tie poloka obsahujca smernk (spoj, referenciu, odkaz) na objekt, v ktorom je uloen al prvok zoznamu. Opercia vloenia spova vo vytvoren objektu, ktor obsahuje hodnotu novho prvku a smernk na objekt, pred ktor sa nov prvok zarauje, a v zmene smernka v tom objekte, za ktor sa nov prvok zarauje.

Smernk a dynamick prideovanie pamte


Kad program pracuje so svojimi dtami a dtovmi truktrami, ktor mu by statick aj dynamick. Statick existuj po cel as behu programu, v ktorom s deklarovan prslunmi deklarciami. Miesto pre nich vyhrad kompiltor u poas prekladu. Dynamick truktry vznikaj a zanikaj dynamicky poas innosti programu. Pre dynamick prideovanie, resp. uvoovanie pamte je v rznych implementcich jazyka C k dispozcii rzny poet tandardnch funkci. Na tomto mieste preto uvedieme iba dve zkladn funkcie - malloc() a free().

Funkcia malloc sli pre pridelenie (alokciu) pamte. M jeden argument typu unsigned int, ktor udva poadovan rozsah dynamicky pridelenej pamte. Vracia smernk (adresu) pamovej oblasti poadovanej dky. Tto oblas je pre lohu rezervovan a do jej uvonenia. Na uvonenie sli funkcia free, ktor m jeden argument typu smernk na rezervovan oblas pamte. Prklad p9_7 ilustruje dynamick pridelenie pamte reazcu a jej uvonenie.
/* p9_7.c dynamicke pridelovanie pamate #include <STDIO.H> #include <ALLOC.H> #include <STRING.H> main() { char str[200]; register char *t; strcpy(str,"Ukazka dynamickeho pridelovania pamate."); printf("Retazec str: %s\n",str); t = (char *)malloc(strlen(str)+1); strcpy(t,str); printf("Retazec t: %s\n",t); free(t); } */

Do reazca s priradme text, potom alokujeme dynamick pam pre tento reazec (vekos pamte je dan dkou reazca, t.j. strlen(s) +1). Do takto priradenej pamte tento reazec skoprujeme - t. Po vytlaen obsahu dynamicky pridelenej pamte uvonme pam prkazom free(t).

Dynamick programovanie
Ke optimlne rieenie problmu je mon zostroji pomocou optimlnych rieen jeho podproblmov a je nutn podproblmy riei opakovane (ke je vea rovnakch vetiev v algoritme prehadvania s nvratom), je mon uetri as pouitm techniky dynamickho programovania. Najprv sa vyriei kad podproblm systmom zdola od najmenieho po najv. Rieenie jednotlivch podproblmov sa uklad do tabuky. Takto sa kad podproblm navtvi a riei len raz. Hlavn rozdiel medzi dynamickm programovanm a divide & conquer je, e podproblmy v divide & conquer s relatvne nezvisl a v dynamickom programovan sa prekrvaj. Rozdiel medzi dynamickm programovanm a priamou rekurziou je v zapamtvan si rekurzvnych volan. Ke s podproblmy nezvisl a nie je tam iadne opakovanie, pamtanie dajov nepomha k njdeniu rieenia. Ak vak je problm vhodne rieiten dynamickm programovanm, je mon zredukova exponencilnu asov zloitos na polynomilnu.

Pole
Pole je mnoina prvkov rovnakho typu, ktor je oznaen spolonm nzvom. Pole je uloen v operanej pamti spojite, priom prv prvok (index 0) m najniiu a posledn prvok najvyiu adresu. Medzi poami a smernkmi existuje zka svislos. Prca s poom a jeho prvkami formou pouvania nzvu poa a indexov je jednoduchia, nzornejia a mono poveda apriori akceptovaten. Pouvanie smernkov vedie k rchlejiemu behu programu, umouje dynamick alokciu pamte a me redukova celkov poiadavky na pam. Meno poa je v skutonosti symbolick kontanta, ktorej hodnota je smernk na umiestneni prvho prvku poa. Teda pre pole data[] identifiktor data znamen to ist ako &data[0], data + i to ist ako &data[i], o meme zapsa v tvare
data + i == &data[i]

Aplikciou opertora indirekcie * na obe strany vrazu dostaneme


*(data+i) == data[i]

Ak sa i zvyuje o 1, referencovan miesto pamte sa zvyuje o poet bytov (dku), dan vekosou danho typu. Jazyk C netestuje hranice pol, o umouje zpis i tanie mimo rozsahu poa, pravda, so vetkmi z toho vyplvajcimi dsledkami. Za kontrolu dodrania rozsahu poa je preto zodpovedn programtor. Pouitie smernka a poa si ilustrujeme asou programu
int *p, data[10]; p=&data[0];

potom *p = data[0] a my meme namiesto data[0] v ubovonom vraze pouva *p, resp. pre prvok data[i] *(p + i), lebo
p + i == &data[i] *(p + i) == data[i]

Z uvedenho by sa mohlo zda, e identifiktory data a p s ekvivalentn. Je tu vak jeden podstatn rozdiel, ktor spova v tom, e data je symbolick smernkov kontanta, zatia o p je smernkov premenn. Preto opercie ako p++, p = data s prpustn, zatia o data++, resp. data = p nie s povolen. Majme napr.
float array[100]; fp = &array[0];

potom fp++ ukazuje na array[1]. Podobne fp = fp + 10 bude ukazova na array[10]. Predpokladajme, e


fp1 = &array[100];

Potom fp-- ukazuje na array[99], resp. fp1 = fp1 - 10 alebo fp1 -= 10 bude ukazova na array[90]. Na smernky (ak sa vzahuj na prvky toho istho poa) je mon aplikova aj 4 relan opertory (<, <=, >, >= ) a testova ich rovnos, resp. nerovnos ( ==, != ).

Zoznam
Pre vzjomn pospjanie poloiek danej mnoiny sta jedin spojovac lnok, ktor ukazuje na nasledujcu poloku mnoiny. Tmto lnkom je smernk, priom smernk poslednej poloky m hodnotu NULL. Pridanie, resp. zruenie poloky v zozname sa potom jednoducho realizuje prslunou zmenou jednotlivch smernkov. Pre pridanie poloky 3 do zoznamu medzi poloku 1 a 2 zna zmeni smernk poloky 1 tak, aby ukazoval na poloku 3 a smernk poloky 3 bude ukazova na poloku 2 (nadobudne predchdzajcu hodnotu smernka poloky 1). Zoznam predstavuje tak postupnos, do ktorej meme pridva, resp. rui poloky na ubovonom mieste, ktor je oznaen premennou index (tzv. ukazovate, ktor oznauje ubovon miesto prce so zoznamom od zaiatku a po koniec). Tm sa zoznam li od frontu, resp. zsobnka, kde je mon aktualizcia iba na koncoch postupnosti. Zoznam je teda veobecnm prpadom linernej dtovej truktry. Je charakterizovan

typom poloiek maximlnym potom poloiek operciami o vytvori zoznam o vloi poloku do zoznamu na miesto oznaen ukazovateom o nastavi ukazovate na zaiatok zoznamu o nastavi ukazovate na koniec zoznamu o nastavi ukazovate na aliu poloku zoznamu o nastavi ukazovate na predchdzajcu poloku zoznamu o vrti poloku zoznamu, oznaen ukazovateom o vrti dku zoznamu o test na przdnos zoznamu o test na plnos zoznamu

Rovnako ako v predchdzajcom plat pri dostatone vekej vyhradenej pamti, e maximlny poet poloiek a test na plnos zoznamu mu by nezaujmav. Je zrejm, e vklada nov poloku je mon len do rozsahu zoznamu a rui poloku je mon len

v neprzdnom zozname. Kadm vloenm, resp. ruenm poloky sa prslune men dka zoznamu. Chybov stavy : vber poloky z przdneho zoznamu vloenie poloky do plnho zoznamu Programov realizcia me rovnako ako v predchdzajcich prpadoch vychdza z implementcie pomocou

poa spojovch truktr.

Typy implementcie zoznamov: Zoznam s jednoduchou vzbou Tento typ zoznamu m smernk iba na svojho nasledovnka. Ak je uzol posledn, smernk m hodnotu nil.

Zoznam s dvojitou vzbou Je to typ spjanho zoznamu, ktor m smernk na svojho nasledovnka a aj smernk na svojho predchodcu. Ak je uzol prv, hodnota smernka na predchodcu m hodnotu nil a obdobne, ak je uzol posledn, tak hodnota smernka na nasledovnka m tie hodnotu nil.

Kruhov zoznam V kruhovom zozname smernk prev hlavy (head) ukazuje na posledn prvok a smernk next poslednho prvku ukazuje na hlavu zoznamu.

Strom
Strom je nelinerna dtov truktra, ktor m vrchol s konenm potom pripojench stromovch truktr, ktor sa nazvaj podstromy. Vrchol stromu sa nazva aj kore stromu. V stromovej truktre teda kad prvok m jednho bezprostrednho predchodcu (okrem korea stromu) a iadneho, jednho i viacerch nasledovnkov. Prvok, ktor nem nasledovnkov, je koncov prvok alebo list stromu. Prvok, ktor nie je listom ani

koreom, je vntornm vrcholom stromu. Ak je poet nasledovnkov rovn dvom, hovorme o binrnom strome, pri vom pote o viaccestnom strome. Poet nasledovnkov udva stupe stromu. Linerny zoznam je z tohoto hadiska stromov truktra s jednm nasledovnkom, ktor sa preto tie nazva degenerovan strom. Najbenej spsob zobrazenie stromu je v tvare grafu. V alom sa budeme zaobera binrnymi stromami. Typickm prkladom binrneho stromu je rodokme loveka (s tm, e rodiia s naslednkmi). Kad vrchol stromu obsahuje vlastn informciu (k) a me ma dvoch nasledovnkov, ktor sa oznauj ako av a prav. Binrne stromy sa asto pouvaj pre reprezentciu iastonho usporiadania mnoiny dajov, ktorej prvky sa maj vybera na zklade danho ka. Strom, v ktorom vetky ke avho podstromu s menie ako k vrcholu a ke pravho podstromu zase vie (pre vetky vrcholy), sa nazva vyhadvac, resp. usporiadan strom. Vyhadanie prvku v takomto strome je jednoduch a pritom efektvne : zaneme pri koreni stromu a pokraujeme v prslunom podstrome (o druh podstrom sa viac nestarme), a km prvok nenjdeme alebo nedjdeme na koniec (list) stromu. Problematika vyhadvania, pridvania a ruenia vrcholov v strome tvor npl zkladnch operci so stromami. Je obdobn ako u linerneho zoznamu s tm, e mus zohadova a oetrova viac monch situci, ako napr.:

prvok s kom sa v strome nenachdza prvok s kom m jednho nasledovnka uprvok s kom m dvoch nasledovnkov

Na obrzkoch je rznymi spsobmi zobrazen ten ist strom. Najprv je to pomocou uztvorkovnho zpisu, potom pomocou mnoinovch diagramov a nakoniec pomocou najastejieho grafickho zobrazenia.

Ak je strom usporiadan, nasledujce stromy s dva rzne objekty.

Reprezentcia vrazu (a+b/c)*(d-e*f) a reprezentcia toho istho vrazu v strome ako dtovej truktre vyjadrenej pomocou smernkov.

Graf
Graf je usporiadan dvojica G=(V,E): konen neprzdna mnoina vrcholov V a (aj przdna) mnoina hrn E Vrchol (node) sa d intuitvne predstavi ako mesto na mape a hrana (edge) ako cesta medzi dvoma mestami. Potom je V mnoina vetkch miest a E mnoina vetkch ciest medzi nimi. Najastejia grafick reprezentcia grafov je zobrazova vrcholy ako body alebo krky a hrany ako iary medzi nimi. Vrcholy a hrany mu by ohodnoten. To znamen, e maj asociovan seln hodnotu. Tieto grafy sa volaj hranovo alebo vrcholovo ohodnoten grafy (edge- and vertex-weighted graphs). Priraden hodnota sa nazva vha (weight).

Hrana sa nazva sluka (self-loop), ke je tvaru (u,u). Graf sa nazva jednoduch (simple), ke neobsahuje sluky a nsobn hrany (viac hrn medzi rovnakmi vrcholmi). Ak graf obsahuje sluky a nsobn hrany, nazva sa multigraf (multigraph). Hovorme, e hrana (u,v) sused (inciduje) s vrcholom u a vrcholom v. Stupe vrcholu je poet hrn, ktor s nm susedia. Vrchol v sused s vrcholom u, ak existuje hrana incidentn k obom vrcholom (tj. hrana medzi nimi). Poet vrcholov grafu zname N. Hovorme, e graf je riedky (sparse), ke poet jeho hrn M je mal v porovnan s potom vetkm monch hrn N(N-1)/2. Inak hovorme, e graf je hust (dense). Ak je hranm priraden smer, hovorme o orientovanch grafoch (directed graphs) a hrany sa potom nazvaj orientovan hrany. Podobne, ak nie je hranm priraden smer, s to neorientovan hrany a graf je tie neorientovan (undirected). Hrany v orientovanch grafoch sa zobrazuj pkami, ktor uuj ich smer. Odchdzjci stupe vrcholu (out-degree) je poet orientovanch hrn, ktor maj v danom vrchole zaiatok. Prichdzajci stupe vrcholu (in-degree) je poet hrn koniacich vo vrchole. Cesta (path) z vrcholu x do vrcholu y je postupnos vrcholov (v0, v1,..., vk) tak, e v0=x a v0=x a hrany (v0,v1),(v1),v2)),... patria do mnoiny hrn E. Dka takejto cesty je k. Cesta je jednoduch, ak neobsahuje iaden vrchol viac ako raz. Cestu nazvame cyklom, ak m zaiatok a koniec v tom istom vrchole. Cyklus je jednoduch, ak neobsahuje iaden vrchol okrem poiatonho viac ako raz. Vrchol v nazvame dosiahnutenm z vrcholu u, ak existuje cesta z u do v. Neorientovan graf nazvame spojitm alebo svislm (connected), ke existuje cesta z kadho vrcholu do kadho inho. Komponent grafu je maximlna mnoina vrcholov s vlastnosou, e kad jej vrchol je dosiahnuten z kadho inho vrcholu v komponente. Neorientovan graf nazvame stromom (tree), ke je acyklick a je svisl. Hovorme, e strom je zakorenen (rooted), ke sme jasne vyznaili jeho najvy vrchol kore (root).Kad vrchol v strome m prve jednho otca (parent) a rzny poet synov (children). Neorientovan graf, ktor neobsahuje cykly je les (forest). Orientovan acylkick graf sa nazva DAG (directed acyclic graph). Graf je pln, ak obsahuje hranu medzi kadou dvojicou vrcholov. Graf je bipatitn, ak me by rozdelen na dve mnoiny V a W tak, e hrany ved len z V do W alebo z W do V. Na obrzku je zobrazen graf G=(V, E), kde V={1,2,3,4,5} a E={(1,2),(1,3),(2,3),(3,4)}. Graf je jednoduch, (lebo neobsahuje sluku ani nsobn hranu), je neorientovan, neohodnoten, obsahuje cyklus a nie je spojit. Graf je riedky, lebo obsahuje 4 hrany a poet monch hrn je 10. Vrchol 5 sa nazva izolovan. Stupe vrcholu 3 je tri a stupe vrcholu 5 je nula. Poet komponentov v tomto grafe je dva. S to (1,2,3,4) a5).

PT tretia otzka - ttnice

Otzka z asti Programovacie techniky:


Analza zloitosti algoritmov. Pamov a operan zloitos algoritmov. Klasifikcia algoritmov usporiadania (triedenia). Algoritmy usporiadania s kvadratickou operanou zloitosou. Algoritmy usporiadania zloitosti n log n. pecilne algoritmy triedenia. Vyhadvac problm. Jednosmern adresn vyhadvanie.

Vypracovanie:
Aby sme si z viacerch sprvne fungujcich algoritmov mohli vybra ten najlep, potrebujeme ma nejak kritrium, poda ktorho by sme mohli algoritmy porovnva. Kritri, ktor sa obyajne pouvaj pri hodnoten kvality algoritmov, sa nazvaj asov a pamov zloitos (alebo tie efektivita) algoritmov. Efektvnos programu m dve zloky: pamov a asov. Zloitos: Pamov - potrebn mnostvo pamti pre kd i dta, ktor algoritmus pri vpote so zvolenmi vstupnmi dajmi potrebuje asov - as potrebn k vykonaniu algoritmu, poet elementrnych operci (aritmetickch, logickch, porovnan apod.) bez rozlenia ich typu Je potrebn rozliova asov zloitos algoritmu v najhorom prpade a asov zloitos v priemernom prpade. asov zloitos v najhorom prpade je funkcia udvajca pre kad hodnotu N ako najdlhie me trva vpoet algoritmu s ubovonmi dajmi vekosti N. Naproti tomu asov zloitos v priemernom prpade nm hovor, ako dlho bude algoritmu v priemere trva spracovanie vstupnch dajov vekosti N. Ak mme dva rzne algoritmy rieiace dan problm, ktor z nich je lep? Ak vezmeme za zklad nho hodnotenia algoritmov asov hadisko, je lep ten z nich, ktor je rchlej, tzn. ktor m meniu asov zloitos. Nie je pritom prli dleit, ktor z algoritmov m meniu asov nroky pre mal hodnoty vekosti vstupnch dajov N, pretoe mal daje bude takmer vdy mon algoritmicky spracova v rozumnom ase. Podstatn je, ako sa chov funkcia vyjadrujca asov zloitos algoritmov pre rastce hodnoty N. Hovorme preto niekedy aj o asymptotickej asovej zloitosti. asov zloitos algoritmu bva obyajne rastcou funkciou. Z dvoch algoritmov budeme teda za asovo vhodnej
1

PT tretia otzka - ttnice

a efektvnej povaova ten, ktorho funkcia asovej zloitosti s rastcou hodnotou N rastie pomalie. Pri praktickom rieen loh na potai je potrebn pri vobe vhodnch algoritmov zvaova aj to, ak vek vstupn daje bude program spracovva. Ak na vekos oakvanch vstupnch dajov nie je vopred dan iadne obmedzenie, zvolme samozrejme algoritmus s menou asymptotickou asovou zloitosou. Pri urovan asymptotickej asovej zloitosti algoritmov sta charakterizova iba rchlos rastu prslunej funkcie. Presn poet elementrnych operci, ktor je potrebn uskutoni pri spracovan vstupnch dajov vekosti N, nie je tak dleit a nie je zvyajne ahk "spota vetky drobn". Ak mme naprklad algoritmus A s asovou zloitosou danou funkciou: 3N2+2n-4, hovorme, e algoritmus A m kvadratick asov zloitos O(N2). I ke sa obmedzme iba na asov a pamov zloitos algoritmov pri hadan toho najlepieho, meme sa dosta do akej situcie, pretoe tieto dve kritri asto stoja proti sebe. Stva sa toti, e k zrchleniu vpotu musme poui nejak pomocn dtov truktru sliacu k uchovvaniu vopred spotanch a pripravench hodnt. Najrchlej mon algoritmus rieiaci lohu potom nie je optimlny z hadiska pamovch nrokov a naopak algoritmus s najmenou pamovou zloitosou zase nemus by najrchlej. V sasnej dobe sa obyajne dva prednos asovmu hadisku a hadaj sa o najrchlejie algoritmy, a to i za cenu potreby dodatonej pamte. asov zloitos algoritmu meme vyjadri matematickou funkciou, ktor nazvame rd algoritmu a vyjadruje rdov zloitos algoritmu. Oznauje sa O. Podstatn je rdov rchlos rastu danej funkcie pre rastce N pri tomto type urovania asovej zloitosti. Ak zanedbme pomalie rastce leny a kontanty hovorme o asymptotickej asovej zloitosti. Symbol vek O f = O(g) c n0 n > n0 : f(n) < c.g(n) tzn. funkcia f sa d zhora odhadn funkciou g (a na multiplikatvnu kontantu a pre dostatone vek n) zloitos O(1) O(n) O ( n2 ) O ( n3 ) O ( nk ) innos pridanie prvku do neutriedenho poa set prvkov v poli jednoduch metdy triedenia poa nsobenie matc
2

kontantn linerna kvadratick kubick polynomilna

PT tretia otzka - ttnice

O ( log n ) logaritmick hadanie prvku v utriedenom poli O ( n . log n ) vylepen metdy triedenia poa n O(2 ) exponencilna Hanojsk vee n O ( k ), k>1 (exponencilna - monos spracovania iba pre pomerne prsne stanoven n, lebo rchlos rastu exponencilnej funkcie je vemi vek) Pr. : 3890 n2 + 16000 n - 13 O ( n2 ) neuvauj sa multiplikatvne a aditvne kontanty Usporiadanie triedenie: Proces preusporiadania danej mnoiny objektov v pecifickom porad. elom triedenia je uahi neskorie vyhadvanie prvkov triedenej mnoiny. Klasifikcia algoritmov usporiadania (triedenia): Zkladn delenie (i s vetky poloky v operanej pamti): vntorn triedenie predstavuje skupinu metd, ktor predpokladaj, e vetky poloky s v hlavnej pamti poas celho triedenia, resp. e vetky sa zmestia do operanej pamti. vonkajie triedenie nie s vetky poloky v hlavnej pamti. Bu sa nezmestia, alebo nie je vhodn a potrebn, aby boli. Tieto metdy sa pouvaj v svislosti s oetrenm sborov. Triedenie pol (vntorn) Triedenie sekvennch sborov (vonkajie) Klasifikcia algoritmov usporiadania (triedenia): Priame metdy Bubble Sort Selection Sort Insertion Sort Shell Sort Rchle metdy Halda Prioritn front HeapSort QuickSort MergeSort Triedenie v linernom ase Counting Sort Radix Sort Bucket Sort
(klasifikcia zdroj: http://www.sprite.edi.fmph.uniba.sk/~szorad/vyuka.html)

Zloitos triediacich algoritmov:


3

PT tretia otzka - ttnice

Pamov zloitos pri vntornch triedeniach je nulov resp. sa rovn vekosti poa, lebo algoritmus operuje iba v u alokovanom poli a nepouva aliu pam. Pri vonkajch triedeniach sa pam tie vyuva len minimlne algoritmus pracuje spravidla so sbormi. asov zloitos sa pri trieden vypota stom asov potrebnch na C porovnan hodnt a M presunov prvkov. asov zloitos triediacich algoritmov: Algoritmus asov zloitos Bubble sort O(n2) Shake sort O(n2) Insert sort O(n2) Select sort O(n2) Shell sort O(N * (log2 N)2) Quick sort O(N * log2 N) Merge sort O(N * log2 N) Algoritmy usporiadania s kvadratickou operanou zloitosou: bubble sort priama vmena shake sort pretriasanie insert sort priame vkladanie select sort priamy vber (nazvaj sa tie: jednoduch priame metdy triedenia) Pozn.: Z tchto metd je najhoria Bubble sort Insert sort a Select sort s takmer rovnocenn pre triedenie pol Pre triedenie zznamov poda vybranho ka je lepia metda Select sort Permutcia, ktorou sa prvky usporadvaj sa vykonva na mieste Algoritmy patria medzi tzv. asociatvne algoritmy (opakom je adresn triedenie) o O triedenej mnoine nepotrebuj iadne informcie Algoritmy usporiadania zloitosti n log n: quick sort merge sort shell sort (O(N * (log2 N)2) ) (vylepen, logaritmick metdy triedenia) Pozn.: Najlepou metdou je Quicksort. Je vbec povaovan za najlepiu metdu vntornho triedenia. pecilne algoritmy triedenia: Stromov triedenie Triedenie haldou
4

PT tretia otzka - ttnice

Dobosiewicz sort
(alie info k pecilnym algoritmom a aj k vyhadvaniu vi: http://ucm.zoner.sk/OLD/Algoritmy/predn %e1%9aky%20aa%fa%9a%20i%202006%20ucm/ - tie ppt-ka)

Vyhadvanie searching: Cieom vyhadvacch algoritmov je njs v mnoine prvkov prvok s danou hodnotou Medzi vyhadvanie patr aj njdenie minimlnej resp. maximlnej hodnoty Vyhadvanie je spojen s vhodnou dtovou truktrou, ktor hadanie podporuje Vyhadvac problm = cie je njs umiestnenie prvku mnoiny poda uritej podmienky kritria vyhadvania. (ie hadme, problm je akm spsobom) Rozdelenie vyhadvacch algoritmov: Jednorozmern polia, slovnky, prioritn zoznamy Adresn vyhadvacie algoritmy. Pre njdenie pozcie prvku v dtovej truktre pouvaj hodnotu tohto prvku (napr. priamy prstup k prvkom poa pomocou indexov) Asociatvne vyhadvacie algoritmy Pozcia prvku v dtovej truktre nezvis na jeho absoltnej hodnote, ale na jeho relatvnej hodnote vzhadom k ostatnm prvkom Viacrozmern vyhadva sa poda viacerch kov. Tomuto sa mus pochopitene prispsobi dtov truktra aj algoritmus. Zodpovedaj tomu databzov systmy. Delia sa: Hadanie plnej zhody zhoda vetkch hadanch kov Hadanie iastonej zhody Intervalov zhoda k mus by v uritom intervale Zkladn algoritmy jednorozmernho vyhadvania: Jednoduch sekvenn vyhadvanie Sekvenn vyhadvanie s nraznkom Binrne vyhadvanie Jednoduch sekvenn vyhadvanie: Na prehadvan priestor nem iadne nroky. Napr. pole nemus by usporiadan Postupne prechdza cel priestor, priom sa kad prvok porovnva s hadanm Algoritmicky sa realizuje cyklom s podmienkou na konci Podmienka sa definuje ako zhoda s hadanm prvkom X alebo dosiahnutie poslednho prvku v postupnosti (i=n) Zloitos je O(n) alie algoritmy:
5

PT tretia otzka - ttnice

Pre vyhadvanie sa pouvaj rzne stromov truktry Z nich najjednoduchie s binrne vyhadvacie stromy

Zdroje: (pouit aj nepouit, mu sa tam njs detailne vysvetlen jednotliv metdy triedenia a vyhadvania) http://kifri.fri.uniza.sk/~kopecky/UdajoveStruktury/Tema_01.doc http://www.gjar-po.sk/studium/informatika/inf/spracovane_otazky/03_04/3b.doc http://www.gt12.sk/predmety/inf/materialy/ucebnica/algoritmy_a_programovanie/tried enie.pdf http://www.gt12.sk/predmety/inf/materialy/ucebnica/algoritmy_a_programovanie/efekt ivi.pdf http://people.tuke.sk/igor.podlubny/C/Kap11.htm http://ics.upjs.sk/~mlynarcik/Vyskum/Zlozitost/Diplomka/ - diplomov prca na tto tmu http://www.sprite.edi.fmph.uniba.sk/~szorad/vyuka.html - dobr (vsledok Bc. prce) http://www.dcs.fmph.uniba.sk/bakalarky/obhajene/getfile.php/Vizualizacia %20zakladnych%20algoritmov.pdf?id=15&fid=26&type=application%2Fpdf http://hq.alert.sk/~mandos/fmfi-uk/Informatika/Programovanie/prednasky/pl31.html http://ucm.zoner.sk/OLD/Algoritmy/ - dobr ppt-ka http://www2.fiit.stuba.sk/~pospichal/halanova/implementacia %20systemu/algoritmy.htm - dobr http://frcatel.fri.utc.sk/~paluch/grkap2-nopics.pdf http://www.pub.ide.sk/pubs/vizualizacia_algoritmov_vo_vyucovani_programovania.pd f - nesvis s touto tmou http://www.mario-konrad.ch/index.php?page=20100

Operan systmy a systmov programovanie 1. Operan systm - o to je operan systm, klasifikcia OS, zkladn funkcie OS.

o je to operan systm Vo veobecnosti plat, e operan systm je programov vybavenie pota, nevyhnutn na jeho prevdzku. Operan systm je sbor programov, ktor umouj efektvnu obsluhu potaa. OS je nadstavba hardvru potaa, take pouvate neprichdza do kontaktu so samotnm hardvrom potaa, svoje poiadavky realizuje ovldanm operanho systmu a volanm (spanm) jeho sluieb, teda programov. Zo systmovho pohadu sa operan systm povauje za nadstavbu, doplnenie a rozrenie potaovho hardvru. Zklad potaa tvor procesor, pam, I/O procesy (kanly), ktor umouj komunikciu s perifrnym zariadenm pripojenm k potau (klvesnica, obrazovka). S to zkladn prostriedky, ktor vyuvaj jednotliv programy na svoju prcu. V prpade, e na potai be iba jeden program, nie je s vyuvanm prostriedkov iaden problm. Avak v prpad, e na potai be sasne programov viacej, tak je potrebn pre jednotliv programy nejakm spsobom rozhodn ako vyuva tieto prostriedky. Niektor prostriedky me v jednom momente vyuva iba jeden program (napr. tlaiare). Alebo kad program me pre svoje potreby vyuva iba as operanej pamte. Preto je potrebn sprvca prostriedkov pre programy. A prve takmto sprvcom je operan systm. Operan systm je sprvca prostriedkov. Klasifikcia (rozdelenie) OS Operan systm mono klasifikova:

Poda potu uvateov jednouvatesk, viacuvatesk (multiterminlov, sieov) Poda jadra, potu spracovvanch loh na: o jednolohov o viaclohov (umoujce multitasking, ie zdanliv sasn beh viacerch aplikci naraz) Poda uloenia systmu: o pamovo rezidentn (pre jednoduch mikropotae, kde je cel exekutva (vkonn as) pevne umiestnen v pamti ROM) o diskovo orientovan operan systmy, ktorch programov moduly s umiestnen na diskovch mdich a poda potreby s nahrvan do OP. Poda urenia, akmu elu m OS sli: o univerzlne operan systm
o o

systmy pecializovan na konkrtny el vvojov, riadiace, komunikan, diagnostick... Poda potaovej platformy o pre strediskov potae, o pre potae strednej triedy o pre osobn potae.
o

Zkladn funkcie OS

Operan systm zabezpeuje iastone alebo plne tieto funkcie:

podporuje komunikciu uvatea s potaom o komunikcia s uvateom prostrednctvom perifrnych zariaden o komunikcia s inmi systmami (potami) v sieti - pri pouit sieovch operanch systmov prideovanie prostriedkov systmu uvateom alebo aplikcim prideovanie asu uvateom (tzv. timesharing) alebo aplikcim (multitasking) spravuje daje o organizcia programov a sborov na vonkajch pamovch mdich (prkazov systm umoujci vytvranie, editovanie, prezeranie, koprovanie, premenovvanie, mazanie, zlohovanie, komprimovanie a alie opercie so sbormi) riadi spracovanie loh o vytvranie a spanie uvateskch programov (pod prekladami vych programovacch jazykov), ich spjanie s existujcimi programovmi kninicami riadi, spravuje technick prostriedky potaa a ich komponenty o diagnostick funkcie - auto kontrola systmu, monos analzy a odstraovania chb podporuje bezpenos a spoahlivos vpotovho systmu o zabezpeovacie funkcie - ochrauje systm proti strate dajov pri vpadku naptia, proti neoprvnenej alebo neodbornej manipulcii, ktor by mohla pokodi programov produkty

OS je teda zjednoduene sbor programov, ktor riadi a kontroluje innos hardvru, ale aj softvru v potai, star sa o efektvne vyuitie operanej pamte a procesora, o optimlnu komunikciu medzi vetkmi pouvanmi technickmi aj programovmi prostriedkami. Tieto funkcie operanho systmu s zabezpeovan celou skupinou relatvne samostatnch nstrojov, ktor sa daj kombinova programovch modulov.

[OOSP-2] Procesy a vlkna - tvorba procesov a vlkien, komunikcia a synchronizcia, kritick oblasti, programov prostriedky vzjomnho vylenia nad KO, odlinosti medzi procesmi a vlknami.

Procesor v potai vykonva postupnos intrukci, ktor sa nazva program. Proces pozostva z kdu programu a dt procesu. Proces je vraz, ktor oznauje postupnos intrukci, ktor tvoria svisl innos. Proces je definovan: vlastnm PID slo (Process Identificator) 16bitov slo priraden po vytvoren procesu vlastnou postupnosou vykonvatench intrukci (operci) vlastnm pamovm priestorom na uloenie dajov proces pracuje s vyhradenou mnoinou registrov procesora vlastn ukazovateom adresy vykonvanej intrukcie (control point) hierarchiou vzahov rodi potomok Atribty procesu UID (User Identifier) slo uvatea, ktor vytvoril proces Groupid vlastnka procesu Priorita procesu Aktulny adresr, v ktorom proces vznikol Pamov priestor procesu obsahuje: vkonn segment obsahuje vykonvaten kd dtov segment obsahuje premenn a polia segment atribtov procesu vyuva jadro OS Tvorba procesov zabezpeuj nasledujce systmov sluby operanho systmu: fork() vytvorenie procesu exec() prekryje adresn priestor procesu zadanm programom wait() rodiovsk proces ak na skonenie potomkov exit() ukon proces a aktivuje rodiovsk proces Volanie fork vytvor identick kpiu procesu volajceho tto slubu, ktor sa stva rodiom novovzniknutho procesu (potomka). Potomok m rovnak mnoinu intrukci programu a rovnak obsah pamte. Rozdiel je len v tom, e ide o dva nezvisle beiace procesy. Jeden z nich

je pvodn a druh je kpia. Kad proces je pri svojom vzniku oznaen jedinenm slom PID (Process Identificator).

Samotn procedra fork m vak zmysel lebo kdy procesov s rovnak. Preto sa pouva v kombinci s alou slubou jadra exec. Funkcia exec nahrad program beiaci v procese inm programom, ktor je zvyajne argumentom funkcie. Proces potomok teda vymen svoju postupnos vykonvanch intrukci za in program, ktor sa takto spust. Niekedy je iaduce aby rodiovsk proces akal na ukonenie jednho alebo viacerch svojich detskch procesov. Na to sli systmov volanie wait. To blokuje volajci proces pokia niektor z jeho detskch procesov neskonil. A po jeho ukonen je interpreter schopn prija al prkaz. Ak detsk proces skonil zatia o rodiovsk proces ete nevykonal wait(), tak detsk proces existuje ako zombie. Zombie proces je detsk proces, ktor ukonen a ak km jeho rodi vykon wait(). A potom je ukonen zombie stav detskho procesu a proces je vymazan. Posledn spomenut sluba systmu exit je poiadanm o ukonenie procesu. Vtedy sa daje procesu vymazvaj z pamte a zru sa poloka v tabuke procesov. Kad proces ma svoju exit hodnotu, slo ktor po skonen vracia rodiovskmu procesu. Vid signly. Paraleln vykonvanie procesov sa realizuje prepnanm procesov, ktor vykonva procesor cez sprvca loh (task manager). Sprvca loh m vetky potrebn informcie na svoju innos uloen v tabuke procesov. Prepnanie medzi procesmi, na jednom procesore sa nazva paraleln multitasking. Existuje: kooperatvny multitasking beiaci proces sm rozhoduje o preruen svojej innosti a poiada systm o spustenie inho procesu preemptvny multitasking kad proces je span len na urit asov interval, po uplynut asovho intervalu sa spa al proces Kontext procesu je informcia o kompletnom stave procesu. Uloenm "kontextu procesu" do pamte je mon proces prerui, odloi, znova spusti zo stavu v akom bol preruen. OS si dr informcie o stave procesov (kontexte procesu) v tabuke procesov (process table). Kontext procesu obsahuje: PID procesu, stav procesu, obsah registrov,

informcie pre plnova procesov, daje o pridelenej pamti, tatistick info (ako dlho je spusten proces), .... Prepnutie innosti procesora z jednho procesu na druh proces znamen vymeni kontext procesu za in, jedn sa o tzv. prepnutie kontextu. Cel kontext preruenho procesu sa ulo do pamte aby bolo mon preruen proces znova spusti od stavu preruenia. Komunikcia a synchronizcia procesov Medziprocesorov (inter-process communication, skr. IPC) je sbor technk na vmenu dt medzi dvomi alebo viacermi vlknami v jednom alebo viacerch procesoch. PC me by tie oznaovan ako medzithreadov komunikcia. Zoznam IPC metd: zdiean pam, semafory procesov, mapovan pam, kanly, fronta sprv, schrnky , .... Zdiean pam poskytuje najrchlej spsob komunikcie medzi procesmi. Nevyaduje si systmov volania jadra. Je potrebn zabezpei synchronizciu procesov pri prstupe ku zdieanej pamti. Procesy musia vykona nasledovn kroky pre zskanie ZP : o Niektor proces mus alokova pamov segment o Procesy, ktor chc ma k alokovanmu segmentu prstup si ho musia pripoji o Po skonen musia vetky procesy odpoji segment o Proces, ktor segment vytvoril ho mus dealokova. Ak je segment odpojen poslednm procesom, ktor ho pouva potom je zruen Semafory procesov na synchronizciu procesov sa pouva implementcia semaforov semafor treba alokova a inicializova o alokcia: int semget(key_tkey, int nsems, int semflg) key_tkey je identifiktor mnoiny semaforov (seln hodnota key), int nsems poet semaforov int semflg je flag ktor pecifikuje prstupov prva funkcia vracia ID mnoiny semafrov o inicializcia: int semctl(int semid, int semnum, int cmd) int semid ID mnoiny semaforov int semnum index poa semaforov int cmd riadiaci flag o dealocia: int semctl(int semid, int nsems, IPC_RMID, arg) IPC_RMID zru mnoinu semaforov kad semafor ma nezporn hodnoty. na semafore sa vykonvaj opercie ako wait a post Tieto opercie implementuje funkcia sem_op. Ak je sem_op: o kladn slo znamen inkrementovanie semafora o dan hodnotu

o zporn slo znamen dekrementovanie hodnoty semafora. Ak by mala by hodnota semafra<0 spsob to chybu alebo blokovanie o Nula znamen blokovanie opercie pokia bude hodnota semafora 0 Mapovan pam umouje komunikciu procesov cez zdiean sbory ako aj rchly prstup procesov k sborom. MP tvor asociciu medzi sbormi a pamou procesora. Linux rozdel sbor do strnok a skopruje ich do strnok virtulnej pamti tak, e s dostupn v adresnom priestore procesu. Proces me potom pristupova k obsahu sboru ako s prstupom do pamte K sborom me takto pristupova aj viac procesov, o poskytuje vemi inn zdieanie pamte mapovanie vykonva funkcia mmap() Rzne procesy mu komunikova cez mapovan pam asociovan k tomu istmu sboru MP mus by chrnen semafrom proti sasnmu prstupu viacerch procesov podobne ako zdiean pam. Kanly kanl je komunikan zariadenie, ktor umouje jednosmern komunikciu medzi procesmi, ktor s vo vzjomnom vzahu (rodi, diea ale aj diea diea). Kapacita kanla je obmedzen. Ak proces zapisuje rchlejie ako druh proces daje ta, tak je zapisujci proces blokovan a opane. Take kanl automaticky synchronizuje procesy. Tvorba kanla:
int pipe(int fd[2])

argumentom je pole, ktor obsahuje deskriptory sborov fd[0] na tanie a fd[1] na zpis funkcia vracia 0 ak je kanl vytvoren spene, inak -1. detsk proces ded od rodia vetky otvoren deskriptory, teda aj deskriptory na konce kanla

Procesy mu komunikova cez spolon kanl, ktorho konce s tandardn I/O tak, e jeden proces na jeden koniec kanla vlo, in proces z druhho konca kanla ta. Treba vak zabezpei aby konce kanla boli tandardn vstupy/vstupy. Na presmerovanie kanla ako tandardnho I/O sa vyuva dup a dup2. Na komunikciu procesov cez kanl sa pouvaj aj kninin funkcie popen a pclose. Nie s to systmov funkcie. FIFO FIFO file je kanl, ktor m meno v systme sborov tie sa vol aj pomenovan kanl. Cez FIFO mu komunikova aj procesy, ktor s nie vo vzahu rodi potomok. Vytvorenie FIFO:
mkfifo(path, permission)

prv argument je cesta k sboru

druh je prstup vlastnka, skupiny a ostatnch, tak isto ako pre sbory

Prstup k FIFO je ako k regulrnemu sboru. Komunikcia prebieha tak, e jeden program ho mus otvori pre zpis a druh pre tanie. Pokia nie je FIFO otvoren pre zpis aj pre tanie, tak je blokovan. Front sprv procesy si mu vymiea sprvy cez spolon frontu sprv, ktor m svoj ID. Kad sprva m svoj identifikan typ a vekos. Vekos sprvy je v ohranien na 4056 bytami. Tvorba fronty cez funkciu:
int msgget(key_tkey, int msgflg)

funkcia vracia ID fronty (msgid) odpovedajce prvmu argumentu key, druh argument s prstupov prva k fronte a tie hodnoty (IPC_CREAT, IPC_EXCL).

Prenos sprv me by: asynchrnny prenos bez blokovania synchrnny prenos s blokovanm. Pri prenose je vysielajci proces blokovan dovtedy km nedostane potvrdenie (signl), e sprva bola prijat. Jadro OS udruje kad sprvu vo fronte ako truktru msg definovan v msg.h:
struct msg { struct msg *msg_next; long msg_type; char *msg_spot; short msg_ts; }; /* /* /* /* /* one msgstructure for each message */ next message on queue */ type of message */ message text address */ message text size */

Funkcie pre vmenu sprv s msgsend() a msgrcv():


int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtype, int sgflg);

argument msgid je ID fronty argument msgp je smernk na truktru, ktor obsahuje typ sprvy (slo) a jej text. argument msgsz je dka sprvy v bajtoch argument msgtype funkcie msgrcv() pecifikuje typ sprvy. Jadro prezer frontu sprv a had najstariu sprvu s danm typom. Ak je msgtype=0 potom sa had najstaria sprva vo fronte bez ohadu na jej typ. argument msgflg pecifikuje akciu, ktor sa vykon, ak je splnen aspo jedna z podmienok: o fronta sprv je przdna o celkov poet sprv vo fronte systmu dosahuje limitn poet o akcie pre msgrcv()s nasledovn:

ak msgflg=IPC_NOWAIT a fronta je przdna nvrat z funkcie ak msgflg=0 proces je blokovan pokia neprde sprva do fronty, ktor spa dan parametre o akcie pre msgflg()s nasledovn: ak msgflg=IPC_NOWAIT a fronta je pln, sprva sa neodole a volajci proces ihne ukon zasielanie ak msgflg=0 volajci proces je blokovan pokia: sa fronta sprv neuvoln a potom sa sprva odole alebo fronta je zruen Schrnky s to obojsmern komunikan zariadenia, ktor sa pouvaj na komunikciu medzi procesmi beiacimi na tom istom potai alebo na rznych potaoch. Komunikcia cez schrnky je typu klientserver. Schrnky existuj v komunikanch domnach, kde domna je abstrakcia, ktor poskytuje adresn truktru a mnoinu protokolov. Procesy komunikuj len medzi schrnkami rovnakho typu. Princp innosti: S: Vytvor nepomenovan schrnku (sd_server) S: Pomenuje vytvoren schrnku zviditen ju v systme (tm sa stane server) C: Vytvor nepomenovan schrnku (sd_client) C: Sna sa pripoji svoju schrnku so schrnkou servera S: Server ak v zablokovanom stave na poiadavky spojenia od klientov. Pri spojen schrnok sa server odblokuje, vytvor pracovn duplikt svojej schrnky, ktor potom vytvor komunikan cestu (sd_server_spojenie) Pvodn schrnka sd_server je okamite pripraven na komunikciu s alm klientom S,C: Ukonenie spojenia (zatvorenie sd_server, sd_client) Typy schrnok: SOCK_STREAM dvojstrann spoahliv spojenie doruujce pakety v porad v akom boli vyslan. Je v internetovej domne s protokolom TCP SOCK_DGRAM doruen sprvy nemusia by v porad v akom boli vyslan, je monos straty paketov. Protokol je UDP. SOCK_SEQPACKET obojsmern spoahliv spojenie, pakety s pevnej dky a nevyaduje sa iaden protokol Tvorba schrnok: int socket(int domain, int type, int protocol) domain uruje spsob zpisu adresy schrnky (UNIX domain PF_UNIX alebo PF_LOCAL, Internet domain PF_INET) type typ schrnky ako bol uveden protocol pecifikuje ako sa bud daje prena. 0 znamen najlep protokol pre dan domnu Proces server Vytvor schrnku volanm socket Volanm funkcie bind prirad schrnke svoju adresu, aby ho mohol klient njs Volanm funkcie listen umon pripojenie klientskeho procesu k schrnke

Volanm accept akceptuje spojenie poadovan klientom vytvorenm novej schrnky pre komunikciu s klientom. Pvodn schrnka sli na akceptovanie novch spojen. Volanm close zru schrnku.

Proces klient inicializciu spojenia int connect(int sd, struct sockaddr*name, int namelen), o sd je loklna schrnka (deskriptor sboru) o name je adresa schrnky servera, li sa poda domny o namelen je dka v bytoch truktry sockaddr Prenos dt server/client pomocou funkci read(), write() alebo
int send (int sd, char * msg, int len, int flags) int recv(int sd, char *buf, int len, int flags),

Zkladne synchronizan modely (vi. Prednky pdf 4.3)

Vlkna (Threads) nezvisl tok riadenia v procese. Kad proces m vyhraden vlastn adresn priestor a vlastn prostriedky. Proces me svoje prostriedky zdiea. Takto me jeden proces v sebe obsahova viacero nezvisle vykonvanch postupnost intrukci, ktor mu bea paralelne. Tieto nezvisl paralelne beiace aktivity v rmci jednho procesu sa nazvaj vlkna (threads). Pouitie vlkien je spsob, ako rozdeli program na dve alebo viac rovnocenne vykonvanch loh. Viacer vlkna mu by vykonvan naraz nazva sa to multithreading. Multithreading sa obyajne zabezpeuje bu rozdeovanm asu (kde jeden procesor prepna medzi vykonvanm rznych vlkien) alebo paraleln spracovanie dt - multiprocessing (kde s vlkna vykonvan na viacerch procesoroch (SMP) i jadrch procesora (CMP)). Vlkna mu vykonva odlin asti programu v tom istom ase. V procese existuje vdy jedno zkladn vlkno, ktor vykonva program sekvenne. Zkladn vlkno me vytvra alie vlkna, ktor vykonvaj ten ist proces v tom istom programe. Z hadiska spravovania vlkien OS rozdeujeme vlkna na: vlkna na uvateskej rovne (ULT) na tejto rovni jadro nevie ni o existencii vlkien. Sprva vlkien je na aplikanej rovni a vyuva sa kninica vlkien. Nevhoda je, e jadro blokuje procesy a tm aj vetky vlkna v procese. Taktie, e vlkna toho istho procesu nemu sasne bea na dvoch procesoroch. vlkna na rovni jadra (KLT) na tejto rovni je sprva vlkien vykonvan jadrom cez systmov volania. Jadro me rozvrhova viac vlkien jednho procesu na viacej procesoroch. Blokovanie je len na rovni vlkien. Nevhodou je, e prepnanie vlkien v rmci jednho procesu vyaduje slubu jadra, o spomauje vpoet. KLT/ULT kombincia vhod predolch dvoch. Kninica vlkien je pecilna kninica pre vlkna na uvateskej rovni, ktor umouje: ruenie a vytvranie vlkien predvanie dt a sprv medzi vlknami plnovanie behu vlkien uchovvanie a obnova kontextu vlken Tvorba vlkien na tvorbu novho vlkna sa vyuva funkcia pthread_create:
int pthread_create(pthread_t *thread_id, pthread_attr_t *thread_attribute, void*( *thread_function)(void *), void *arg);

kde:

thread_id

vlkna

je smernk na premenn typu pthread_t, v ktorej je uloen ID novho

thread_attribute je smernk na premenn typu pthread_attr_t, ak je NULL potom je

vlkno vytvoren s predvolenmi hodnotami

thread_function je smernk na funkciu vlastn telo vlkna, ktor sa m vykona a jej typ je void*( *)(void *)

je smernk typu void, ktor obsahuje argumenty funkcie vlkna, s ktormi sa bude vykonva nvrat z funkcie pthread_create je okamit a pvodn vlkno pokrauje na nasledujcej intrukcii, zatia o nov vlkno zane vykonva thread_function
arg

Odovzdanie argumentov vlkna kad thread funkciu sa definuje truktra, ktor obsahuje parametre, ktor oakva thread funkcia. Smernk na tto truktru sa uvdza ako 4 argument vo funkcii pthread_create. Tmto spsobom sa d jednoducho vyui t ist thread funkcia pre viacej vlkien tm, e sa vykonva ten ist kd programu s rznymi dtami. Pripojenie vlkien vyuva sa ak nejak vlkno (A) chce aka, pokia in vlkno (B) skon a odovzd nvratov hodnotu. Obyajne rodiovsk, me aka nvratov hodnotu potomka. Vlkno(A) sa volanm funkcie pthread_join zablokuje pokm sa vlkno (B) skon a odovzd hodnotu. Zpis je nsledovn: kde
pthread_join(pthrad_thread_id, void* return_value)

prv argument pecifikuje ID vlkna na ukonenie, ktorho sa ak druh argument je smernk na premenn, do ktorho sa odpamt nvratov hodnota vlkna. Me by aj NULL ak ns nvratov hodnota nezaujma

Atribty vlkna pouvaj sa na definovanie vlastnost vlkna. S v porad druhm argumentom vo funkcii pthread_create. Na vytvorenie vlkna s poadovanmi vlastnosami treba prispsobi jeho argumenty nasledovne: 1. Vytvori pthread_attr_t premenn (truktru). 2. Vola funkciu pthread_attr_init s argumentom smernk na truktru. 3. Modifikova atribty truktry na poadovan hodnoty. 4. Vytvori vlkno s danmi atribtmi. 5. Uvoni truktru atribtov volanm funkcie pthread_attr_destroy. Premenn pthread_attr_t sa tm nezru me by neskr op inicializovan. T ist truktra atribtov sa me poui pre niekoko vlkien. Ukonenie (zruenie) vlkien za normlnych okolnost sa na ukonenie vlkna sa vyuva funkcia pthread_exit:
void pthread_exit(void* arg)

Vysvetlenie: funkcia pthread_exit ukon volajce vlkno nvratov hodnota vlkna je dan v PTHREAD_CENCELED, neuvouje iadne prostriedky procesu.

zruen vlkno me by neskr synchronizovan

Vlkno me by zruen: asynchrnne kedykovek poas vkonu synchrnne poiadavky na zruenie s vo fronte a vlkno je zruen len ak dosiahne pecifikovan miesto poas vkonu. Je to preto lebo vlkno me alokova nejak zdroje a pokia ich neuvon nemalo by by zruen. S sekcie, v ktorch nemono zrui vlkno kritick sekcia. Kritick sekcia je postupnos kdu programu, ktor mus by vykonan cel. Synchronizcia vlkien zaistenie konzistencie zdieanch dajov. postupn prstup viacerch vlkien k synchronizanm objektom zaistenie bezpenosti spolonch dajov Problm vznikne ak dve vlkna ukonia svoje lohy pribline v rovnakom ase a vo fronte zostane u len jedna loha. Prv vlkno zist, e frontaje nie przdna, prirad adresu lohy do next_joba je preruen. Druh vlkno urob to ist a kee loha ete nebola zo zoznamu vybran obe vlkna sa bud snai vykona t ist lohu! Pouva sa na blokovanie prstupu do CS pre in vlkna. Zabezpeuje exkluzvny prstup do CS pre vlkno, ktor zmku pouva. Mutexj e pecilna zmka, ktor me sasne uzamkn len jedno vlkno. Ak je zmka u uzamknut a druh vlkno sa poka ju znovu uzamkn je zablokovan. Zmku me odomknu len to vlkno, ktor ju uzamklo. Zmky sa deklaruje typom pthread_mutex_t Inicializuje sa funkciou:
pthread_mutex_init(pthread_mutex_t*pmut, pthread_mutexattr_t*pattrmut)

prv argument je smernk na zmku druh argument je smernk na atribty zmky. A je druh argument NULL predpokladaj sa predvolen atribty.

Ak zmka nebola u uzamknut uzamkne sa a funkcia okamite ukon nvratom. Ak u bola uzamknut inm vlknom vkon funkcie je zablokovan a pokrauje len ak je zmka odomknut inm vlknom. Na uzamknutej zmke me by blokovanch aj viac vlkien. Ke je zmka odomknut je odblokovan len jedno vlkno (nepredikovatene), ostatn ostan zablokovan. Typy zmok: Rchly mutex (default) me spsobi deadlockv prpade ak sa ho poka znovu zamknu to ist vlkno a je na zmku tie blokovan a neme ho teda odomkn. Rekurzvny mutex nespsobuje deadlock. Me by zamknut niekoko krt tm istm vlknom. Zmka si pamt poet zamknut. Na odomknutie sa mus tokokrt vola funkcia pthread_mutex_unlock.

Error-checkingmutex nespsob deadlock lebo detekuje po alom uzamknut zmky tm istm vlknom chybov stav EDEADLK.

Prklad deadloku nastane deadlock, kee vlkna uzamknaj zmky v rznom porad:
Thread 1 /* use resource 1 */ pthread_mutex_lock(&m1); /* NOW use resources 2 + 1 */ pthread_mutex_lock(&m2); pthread_mutex_unlock(&m1); Thread 2 /* use resource 2 */ pthread_mutex_lock(&m2); /* NOW use resources 1 + 2 */ pthread_mutex_lock(&m1); pthread_mutex_unlock(&m2);

Semafry s vhodn prostriedky na synchronizciu viacerch vlkien. Uvaujme op zreazen zoznam loh, ktor vykonvaj vlkna. Program pracuje ak je fronta loh vytvoren predom alebo ak prichdzaj nov lohy do fronty aspo tak rchlo ako s spracovvan vlknami. Avak ak vlkna pracuj vemi rchlo fronta loh bude przdna a vlkna bud zruen. Ak bud neskr prichdza do fronty alie lohy u nebude vlkien na ich spracovanie. Semafr obsahuje potadlo hodnoty, ktorho s nezporn sla. Obsahuje tie dve zkladn opercie: wait dekrementuje hodnotu semafra o 1 a ak je hodnota 0 blokuje vlkno, ktor tto operciu vol pokia nebude hodnota kladn. Post inkrementuje hodnotu semafra o 1. Ak bola hodnota predtm 0 a vlkna boli blokovan na wait opercii jedno z nich bude odblokovan (wait opercia sa skon a semafr sa dekrementuje op na nulu) Podmienkov premenn (PP) sa pouvaj na blokovanie vlkien pokia je nie pecifikovan podmienka pravdiv. Vdy sa pouvaj spolu so zmkou, pretoe ke sa PP testuje mus by uzamknut. Ke je podmienka false vlkno je na PP blokovan uvoln zmku a ak na zmenu podmienky. Ak in vlkno zmen podmienku, signalizuje tto zmenu, akajce vlkna sa zobudia, zamkn PP a znovu odtestuj podmienku. Vdy ke program urob intrukciu, ktor me zmeni podmienku chrnen PP je treba vykona tieto kroky: Uzamkn zmku pridruen k PP Vykona intrukciu, ktor me zmeni podmienku Vysla signl PP, e nastala zmena podmienky Odomkn zmku pridruen k PP Kritick oblasti Pri multithreadingu jedno vlkno naprklad me nastavova jedu i viac premennch a alie vlkno tieto premenn pouva. Niekedy to me spsobova problmy, niekedy nie.

Predstavme si ale, e vlkna zdie aj nieko ko premennch alebo dtov truktru. Bva ast, e hodnoty jednotlivch premennch alebo poloiek jednej truktry musia by navzjom konzistentn. Operan systm avak me vlkno prerui niekde uprostred nastavovania poloiek truktry. Vlkno, ktor truktru pouva, bude postaven pred nekonzistentn dta. Vsledkom je kolzia a nie je ak si predstavi, ako me takto situcia vies ku zrteniu celho programu. Potrebujeme aksi programov ekvivalent semaforov, ktor by nm umonil koordinova a synchronizova chod vlkien. A presne k tomu sli kritick sekcia. Kritick sekcia je v zsade blok kdu, ktor mus prebehn neruene. Mechanizmus kritickch sekci zavdza vzjomn vlunos, termn, s ktorm sa v problematike synchronizcie vlkien ete stretneme. V uritom okamihu me kritick sekciu vlastni iba jedin vlkno. Jedno vlkno teda me vstpi do kritickej sekcie, nastavi vetky poloky zdie anej architektry a potom kritick sekciu opusti. In vlkno, ktor truktru tie pouva vstupuje do kritickej sekcie pred tanm dajov zo truktry a potom ju opust. Tm je zaisten, e dta v truktre bud vdy konzistentn. Programov prostriedky vzjomnho vylenia nad KO () Odlinosti medzi procesmi a vlknami Porovnanie vlkien a procesov Procesy v tradinch multitaskingovch operanch systmoch sa od vlkien odliuj najm tm, e procesy: s spravidla nezvisl, obsahuj znan informciu o svojom stave, maj oddelen adresn priestor interaguj len prostrednctvom mechanizmov na medziprocesorov komunikciu, ktor poskytuje operan systm. Na druhej strane viacero vlkien priamo zdiea stavov informcie procesu, ako aj pam a alie zdroje. zmena kontextu medzi vlknami jednho procesu je spravidla rchlejia ako zmena kontextu medzi procesmi. Zatia o ben procesy s navzjom oddelen, vlkna zdieaj nielen spolon pamov priestor, ale i alie truktry. Na rozdiel od procesov zdieaj vlkna v programe ten ist adresn priestor (globlne premenn). Kee maj vlastn stack me vykonva kad vlkno odlin kd programu a vola podprogramy benm spsobom. Kad volanie podprogramu v kadom vlkne m svoje vlastn loklne premenn, ktor sa pamtaj do stacku vlkna. Vlkno si vak me vytvori svoje pecifick premenn. Sto premenn, ktorch kpiu vlastn kad vlkno osobitne. Pretoe zdieaj vetky vlkna ten ist pamov priestor na tieto premenn (thread-specificdata) sa nemono odvolva ako na normlne premenn.

Vlkno sa podob procesu, odlin je spsob zdieania prostriedkov a svisiaci kontext.

3. Jadro OS Funkcie jadra, sprva procesov, princp innosti plnovaa, sprva pamte. Jadro OS Jadro OS (kernel) je program, ktor koordinuje innos ostatnch programov a sprostredkva im prostriedky potaa. Hlavn lohy jadra : Sprva procesov Sprva pamti Sprva zariaden (v niektorej literature je aj) poskytuje systmov volania Poznme niekoko typov jadier: Monolitick Mikrojadro Hybridn jadro Nanojadro Exojadro Monolitick jadro V monolitickom jadre beia vetky sluby operanho systmu spolu s hlavnm vlknom jadra a v tej iste oblasti pamte. Ak s dobre napsan, tak s vemi inn, lebo umouj neobmedzen a efektvny prstup k hardware. Hlavnou nevhodou je zvislos medzi systmovmi komponentmi chyba v ubovonom ovldai me zhodi cel systm a vek jadr mu by ako udrovaten Mikrojadro "'Mikrokernel'" je minimlny potaov operan systm kernel ktor, vo svojej najistejej podobe, neposkytuje takmer iadne sluby operanho systmu, iba "mechanizmus" potrebn na implementciu takch sluieb ako je nzko rovov adresov priestorov manament, vlknov manament a vntro procesov komunikciu (IPC). Ak mikrokernel rozliuje medzi kernelovskm a pouvateskm mdom, tak mikrokernel je jedinou asou systmu vykonvanou v kernel mde. Skuton sluby operanho systmu s poskytovan servermi "pouvateskho mdu". Tie zahaj ovldae zariadenia, protokolov zsobnk, sborov systm a kd pouvateskho rozhrania. Hybridn jadro Hybridn jadro je jadro operanho systmu, ktor kombinuje vlastnosti monolitickho jadra a mikrojadra. Tto kategria je kontroverzn, kvli podobnosti s monolitickm jadrom. Mylienkou tejto kvzi-kategrie je ma truktru jadra podobn mikrojadru, ale implementovan ako monolitick jadro. Na rozdiel od mikrojadra, vetky (alebo skoro vetky) sluby beia v jadrovom pamovom priestore. Prkladom hybridnho jadra je Windows NT (NT, 2000, 2003, XP, Vista) a BeOS.

Nanojadr V nano jadre s takmer vetky sluby rieen ovldami zariaden. Tm m vlastn jadro ete menie poiadavky na pam ako mikrokernel. Exojadro Je typ jadra, ktor nezaha hardware do teoretickch modelov. Namiesto toho alokuje fyzick zdroje ako je as procesoru, strnky pamti a bloky na disku priamo rznym programom. 3.1. Sprva procesov Proces - beiaci program. Kadmu spustenmu programu zodpoved ist proces. Po prihlsen sa do systmu je kadmu uvateovi pridelen jedna kpia shellu, ktor be a do jeho odhlsenia => tento beiaci program je procesom. Kad prkaz spusten z tohto shellu je op procesom. Viacero loh be naraz len zdanlivo , striedaj sa => zdieanie asu. Procesy mu spa in procesy svojich potomkov, ktor sa mu vykonva sbene s rodiom alebo rodi me aka na ich vsledky (vo-lanm sluby wait vkonnho jadra OS). Okrem procesov spustench pouvateom be v modernom OS aj niekoko systmovch procesov. V Unixe ich nazvame dmonmi, pretoe existuj mimo vedomia pouvateov a mimo dosahu ich terminlov. Existuje dmon pre tla sborov (lpd), dmon pre swapovanie (dmon pre odkladanie strnok na disk a pre ich sptn nahrvanie), pre prihlasovenie vzdialench pouvateov cez ssh (sshd), dmon pre umonenie sahovania sborov vzdialenm pouvate-om po sieti protokolom FTP (ftpd) apod. V modernejej terminolgii sa termn dmon oraz astejie zamiea termnom agent. Operan systm by mal umoni : 1vytvranie a ukonovanie procesov, 2pozastavenie a reaktivciu procesov, 3synchronizciu procesov a 4komunikciu medzi procesmi (aj po sieti). 5.1. Zavdzanie a vykonvanie loh Proces je loha (program) zaveden do pamte na vykonanie. Ak desa pouvateov pouva naprklad textov editor vi, spustili jedin program (v pamti sa nachdza iba raz), ale ide o desa samostatnch procesov. Proces pozostva z kdu programu (v naom prklade jedin v pamti) a dt procesu (globlne dta, zsobnky zodpovedajce postupnosti volan podprogramov a hromada, ktor sli na prideovanie al-ej pamte). Toto spolu s hodnotami registrov potaa charakterizuje proces v operanom systme na danom potai. 5.2. Stav procesu Stav procesu vyjadruje vzah OS a procesu. Proces me by novovytvoren (new), beiaci (running, prve je vykonvan pomocou CPU), pripraven (ready, ak na pridelenie CPU), akajci (waiting, nevykonva sa, pretoe ak na dokonenie I/O poiadavky, na komunikciu s inm procesom, na uply-nutie zadanho asovho seku alebo

na ukonenie innosti svojho potomka) a ukonen (terminated, skonil prcu alebo bol nsilne ukonen a systm ho z pamte odstrni). Proces m svoj ivotn cyklus pozostvajci z pripustenia (admit) novovytvorenho procesu do stavu pripraven, naplnovania (dispatch) procesu stane sa beiacim (a je opakovane prepnan do stavu pri-praven poda prioritnch pravidiel) a akania na vskyt udalosti (stlaenie klvesy u editora). Po vsky-te udalosti, na ktor proces akal, sa zasa prepna do stavu pripraven. Poslednou fzou je samozrejme ukonenie procesu. Za bench okolnost pouvatea ani programtora ivotn cyklus procesu ne-zaujma. Operan systm si dr informcie o procesoch v pecilnej tabuke procesov. Tabuka pozostva z PCB process control blocks. Kad poloka tabuky obsahuje kontext procesu. S to vetky podstatn daje o procese: PID (identifikan slo) procesu, stav procesu (i je beiaci, pripraven, ...), obsah regis-trov (vrtane registra IP urujceho pamov adresu alej intrukcie), informcie pre plnova proce-sov, daje o pridelenej pamti, tovncke informcie (koko asu CPU program spotreboval), stav I/O (priraden zariadenie, otvoren sbory). Scheduller - (plnova) - prv proces, ktor sa rozbehne po spusten operanho systmu. Zodpoved za to, ktor z beiacich procesov bude pripusten k procesoru, m PID=0. Za nm je spusten Init (PID=1), ktor udruje v chode vetky dmony. Dmon - proces, ktor jedn bez toho, aby bol k tomu vyzvan uvateom. Me by aktvny po cel dobu behu systmu, alebo me by span len v uritch okamihoch. Naprklad HTTP Dmon vo WWW serveri ak a obsluhuje volania hostu cez http protokol (naprklad Netscape). Sprva sborov (File System and File Management) prispsobuje fyziklne charakteristiky zariadenia ako je disk na logick zariadenie. Typicky s dta prenan z disku na disk v blokoch. Bloky maj vekos 512 bajt. Je to najmenia as dt vhodn na fyzick prenos na disk. Tto blokov operciu zabezpeuje rznymi spsobmi operan systm. Sprva vstupnch / vstupnch zariaden (IO) => jednotn prstup k I/O zariadeniam a k sborom. Pre efektvnejiu komunikciu s I/O zariadeniami (naprklad s tlaiarou) sa pouva metda vyrovnvacch pamt (Buffers). Buffery s zriaovan v operanej pamti (naprklad v MS DOS prkazom Buffers v config.sys), take dochdza k zmenovaniu rozsahu pamte. Prli vek poet bufferov m tie za nsledok predenie asu potrebnho na vykonanie poiadavky, lebo treba dlhie prehadva ich zoznam. (Kompromis 16 - 32, max. 50). Adresr - udruje pre operan systm informciu o jednotlivom sbore (jeho mene, vekosti, ochrane, ase poslednej zmeny a o umiestnen na disku). Pouvaj sa 3 spsoby organizcie adresrov:

Jednoduch adresr, organizovan linernym spsobom. Umiestnenie sboru v adresri sa mus hada sekvenne, o m vplyv na trvanie procesu hadania a je pociovan ako negatvna vlastnos. Napriek tomu VMS, UNIX, OS/2 a MS DOS pouvaj linerne prehadvanie adresrov. Tieto operan systmy pri pouit pamte cache, v ktorej je uloen informcia o posledne

pouvanom adresri, mu rchlejie zska informciu o asto pouvanch sboroch bez prstupu na disk. Na skrtenie hadania me by pouit predtrieden organizan schma adresra. naprklad na zklade binrneho hadania usporiadan adresr. Na organizciu adresra poui transforman tabuku. Na zklade mena sboru pridel nejak transforman funkcia sboru index. Tto stratgia me by zdrojom kolzii ak podobn men produkuj rovnak index.

Vetky operan systmy (VMS, UNIX, OS/2 a MS DOS) pouvaj mnoho rovov organizciu adresrov, kde naprklad kad uivate m svoj adresr ovldan spolonm "adresrom adresrov". V jedno rovovom adresri by men sborov museli by jednoznane odlin. UNIX ako prv zaviedol stromov truktru, v ktorej sbory s udrovan na rznych rovniach. Meno sboru je potom pecifikovan aj cestou, => zoznamom vetkch adresrov z rovne koreovho adresra a na rove adresra, v ktorom sa nachdza sbor. Prstup k sborom me by zorganizovan rzne:

Sekvenne - postupne zznam za zznamom. Nevhoda, e sa ned ta zznam zo stredu sboru. Priamy prstup - nie je obmedzen poradie prstupu. Naprklad ta zznam 100, potom zznam 50 a pod. Indexovan - usporiadan na zklade kov, podobne ako v databzach.

Alokcie sborov me pouva:

Svisl spsob ukladania sborov - sbory zaberaj urit blok. Pouva sa pre zrchlenie prenosov, pretoe sa minimalizuje pohyb hlavy disku. Ke sa disk zapln a niektor sbory sa z neho vyma dochdza ku fragmentcii. (=> potreba dostatonho vonho priestoru na disku alebo poui kompresiu sborov, ktor je vak nevhodn pri on line prci) Spsob ukladania sborov pomocou odkazu (link) - kad blok alebo sekcia sboru obsahuje ukazovate na nasledujci blok (alebo segment) sboru. Aby pointer nezaberal miesto pre ukladanie sborov, je potrebn zvltny disk na uloenie info o ukazovateoch. iadny z operanch systmov (VMS, UNIX, OS/2 a MS DOS) nepouva tento systm. Indexovan alokovanie (neplies s indexovanm prstupom k sboru) kombincia svislho spsobu s odkazmi. Odkazy sa nachdzaj v indexovej tabuke v pamti. Kad index uruje urit segment sboru. Pretoe indexov vstupy s uloen v pamti je prstup k sboru rchly aj ke je sbor rozloen na disku. V rmci segmentu je usporiadanie svisl.

6. Plnovanie procesov
Plnovanie asu procesora zkladn funkcia OS Prideovanm procesora jednotlivm procesom sa prca celho potaovho systmu zefektvni.

6.1 Zkladn princpy


plnovanie zklad multiprogramovania (Zkladnou mylienkou multiprogramovania je, aby stle bealo niekoko procesov, aby sa procesor maximlne vyuval) prepnanie CPU medzi procesmi OS zefektvnenie prce potaa

Prakticky v OS existuj 4 typy plnovania: - dlhodob - strednodob - krtkodob - plnovanie obsluhy V/V poiadaviek Plnovanie asu procesora tvor podstatn as nvrhu OS.

6.2 Cykly prce procesora a perifri


Pozorovanm innost procesov sa zistilo, e vykonanie procesu pozostva z cyklov prce procesora a akania V/V opercie. Prca procesu zana cyklom procesora a pokrauje striedanm cyklu procesora so stavmi akania na V/V. Proces kon zasa cyklom procesora, aby mohol by dokonen tandardnmi dokonovacmi operciami.

6.3 Preemptvne plnovanie


Rozhodovanie o plnovan asu procesora sa me urobi vdy pri jednom z nasledujcich prechodov: 1. Ke proces prepna zo stavu beiaci do stavu akajci (akanie na dokonenie V/V opercie alebo akanie na ukonenie potomka). 2. Ke proces prepna zo stavu beiaci do stavu pripraven. 3. Ke proces prepna zo stavu akajci do stavu pripraven. 4. Ke proces kon. Pri prechodoch v bodoch 1 a 4 nie je monos vberu pre plnovanie. Nov proces sa mus vybra pre vykonanie. Ke sa plnovanie vykon len v prpadoch 1 a 4 hovorme, e ide o nepreemptvne plnovanie, inak plnovanie je preemptvne. Pri nepreemptvnom plnovan, ke sa raz procesor pridel procesu, proces sa vykon a do svojho ukonenia, alebo pokia nevznikne poiadavka na V/V. Tto metda plnovania je pouit v OS Microsoft Windows. Pre urit HW platformy je toto jedin mon metda plnovania, pretoe nevyaduje pecilny HW (napr. asova). Preemptvne plnovanie je nronejie.

6.4 Dispeer
al komponent, ktor sa zastuje na plnovan asu procesora je to modul, ktor umouje procesu riadi procesy vybran krtkodobm plnovaom

jeho funkcie s: prepnanie kontextu, prepnanie do pouvateskho reimu, skok na prslun adresu po optovnom spusten programu. mus by o najrchlej, pretoe sa vol pri kadom prepnut procesov.

6.5 Kritri plnovania


Jednotliv plnovacie algoritmy maj rzne vlastnosti a mu uprednostova rzne skupiny procesov. Pri vbere algoritmu pre dan situciu musme ma na vedom vlastnosti jednotlivch algoritmov. Pre posudzovanie vlastnost plnovacch algoritmov je mon zvoli rzne kritri. Poda toho, ktor charakteristiky s zvolen na porovnanie algoritmov, je mon zska znan rozdiely pri urovan optimlneho algoritmu. Pouvan kritri s nasledujce: Vyuitie procesora (v relnom systme by malo by v hraniciach 40% pre mlo zaaen systm, do 90% pre silne zaaen systm). Priepustnos (ak procesor spracovva proces vykonva prcu; meranie vykonanej prce poet ukonench procesov pre dan asov jednotku). as vykonania (asov interval od vzniku procesu do jeho ukonenia; je to set asu akania na vstup do pamte, asu strvenho vo fronte pripravench procesov, asu vykonvania a asu V/V operci). as akania (algoritmy plnovania neovplyvuj as, ktor proces venuje vykonvaniu V/V operci, ale len as, ktor proces strvi vo fronte pripravench procesov). as odozvy (as od vystavenia poiadavky do prvej odozvy na tto poiadavku). Vo veobecnosti je iadce maximalizova vyuitie procesora a priepustnos a minimalizova as vykonania, as akania a odozvy. Avak niekedy je iadce optimalizova maximlne a minimlne hodnoty namiesto priemernch hodnt. Napr. ak chceme aby vetci pouvatelia dostali dobr sluby, budeme sa snai minimalizova maximlnu dobu odozvy.

6.6 Plnovacie algoritmy


plnovanie asu procesora riei problm, ktormu procesu z frontu pripravench procesov m by pridelen procesor

6.6.1 Spracovanie v porad prchodu (FCFS First Come, First Served) - Najjednoduch z algoritmov plnovania. - Poda tohto algoritmu proces, ktor poiadal prv o pridelenie procesora ho dostane ako prv. - Implementcia tohto algoritmu sa uskutouje pomocou frontu FIFO. - Ke proces vstpi do frontu pripravench procesov, jeho riadiaci blok (PCB) sa zarad na koniec frontu. Ke sa procesor uvon, pridel sa procesu, ktor je na ele frontu. Beiaci proces sa odstrni z frontu. - Stredn doba akania pri pouit FCFS je asto vemi dlh.

Nie je preemptvny ke proces dostane raz pridelen procesor, vykonva sa a do ukonenia, alebo km nepoiada o V/V operciu Me nemerne predi as akania krtkych procesov. Je ako pouiten v time-sharingovch systmoch, kde je dleit, aby kad pouvate zskal as procesora v pravidelnch intervaloch a nie je iadce, aby jeden proces zadral procesor na dlhiu dobu.

6.6.2 Najkrat proces najskr (SJF Shortest Job First) - Poradie spracovania sa uruje poda poadovanej doby obsluhy procesu. - Ke sa procesor uvon, pridel sa procesu, ktor poaduje najmeniu dobu na svoje dokonenie (ak proces bol iastone spracovan). - Ak dva procesy maj rovnak poadovan doby obsluhy, vyberaj sa poda poradia prchodu. - Je optimlny v tom, e dva najlepie vsledky v priemernej dobe akania pre dan mnoinu procesov - Nedostatkom je to, e treba dopredu vedie dku poadovanej doby obsluhy. (Pri dvkovom spracovan meme poui asov limit pre spracovanie dvky, ktor zadva pouvate.) - asto sa pouva pri dlhodobom plnovan. - Aj ke dva optimlne vsledky, ned sa poui na krtkodob plnovanie, pretoe nie je znma dka alej poiadavky procesu na as procesora. (Jeden mon prstup je odhad tejto hodnoty, ktor nevieme, ale meme predpoveda. Oakvame, e alia poiadavka bude ma dku podobn predchdzajcim. Potom na zklade predpovedanch dok meme vybra proces s najmenou poiadavkou.) - Me by preemptvny aj nepreemptvny. Vber sa rob, ke do frontu pripravench procesov prde nov proces a predchdzajci sa ete vykonva. Nov proces me ma menie poiadavky na as procesora ako zostvajce poiadavky prve vykonvanho procesu. Preemptvny algoritmus prepne beiaci proces, zatia o nepreemptvny ho nech dobehn. Preemptvny algoritmus sa niekedy nazva plnovanie poda najkratej doby na vykonanie (SRTF Shortest Remaining Time First). 6.6.3 Prioritn plnovanie - Kad proces m pridelen prioritu a procesor je pridelen procesu s najvyou prioritou. - Procesy s rovnakou prioritou sa plnuj poda poradia prchodu (FCFS). - Priority patria obyajne do pevnho intervalu celch sel. Neexistuje veobecne prijat ustanovenie, e 0 je najniia alebo najvyia priorita. Niektor systmy pouvaj menie sla na oznaenie menej priority, in naopak. - Priority mu by definovan bu interne alebo externe. - Interne definovan priority vyuvaj niektor meraten hodnoty, aby urili prioritu procesu, napr. asov limity, poiadavky na pam, poet otvorench sborov, pomer priemernch poiadaviek na V/V k priemeru poiadaviek na procesor. - Extern priority sa nastavuj poda kritri, ktor s extern vzhadom na OS, ako napr. dleitos procesu, alebo nejak pracovn faktory, vyplvajce z povahy nasadenia. - Me by preemptvne alebo nepreemptvne. Ke proces prde do frontu pripravench procesov, jeho priorita sa porovnva s prioritou beiaceho procesu. Pri preemptvnom plnovan proces bude prepnut, ak priorita novho procesu je vyia ako jeho. Pri

nepreemptvnom plnovan nov proces sa umiestni na zaiatok frontu pripravench procesov. Hlavn problm nekonen blokovanie (starvcia). Proces, ktor je pripraven na spustenie, ale nedostva procesor, sa me poklada za blokovan. Je mon, e v silne zaaenom systme niektor procesy s niou prioritou bud aka nekonene dlho na pridelenie procesora. Veobecne mu nasta dva prpady: bu proces bude niekedy spusten alebo systm spadne a zruia sa vetky nedokonen procesy s niou prioritou. Rieenm tohto problmu je postupn zvyovanie priority procesov, ktor dlho akaj.

6.6.4 Cyklick plnovanie (Round Robin) - Je navrhnut pecilne pre time-sharing-ov systmy. - Podob sa FCFS, ale je preemptvny. - Definuje sa mal asov sek asov kvantum, ktor je obyajne od 10 do 100 ms. - Front pripravench procesov sa spracovva ako cyklick front. Plnova prideuje postupne kadmu procesu z frontu jedno asov kvantum. - Implementuje sa tak, e front pripravench procesov je typu FIFO. Nov proces sa pridva na jeho koniec. Plnova vyber proces vdy zo zaiatku frontu, nastavuje asova na 1 asov kvantum a spa proces. - alia innos procesu me by nasledovn: proces me potrebova procesor na men as ako je asov kvantum a v takomto prpade uvon dobrovone procesor. Plnova vyberie a spust al z pripravench procesov. Ak proces potrebuje as dlh ako je asov kvantum, po uplynut kvanta asova spsob preruenie. Zapamt sa kontext procesu a proces sa ulo na koniec frontu, z ktorho sa vyberie al pripraven proces. - Vkonnos algoritmu silne zvis od vekosti asovho kvanta 6.6.5 Plnovanie s viacermi frontmi - Tto trieda plnovacch algoritmov bola navrhnut pre situcie, kedy sa procesy daj ahko rozdeli na rzne skupiny (napr. vemi asto sa procesy v systme delia na interaktvne a dvkov, tieto dve skupiny maj odlin poiadavky na as odozvy a tie mu ma odlin potreby plnovania). - Del front pripravench procesov na niekoko frontov. Procesy s zaraovan do prslunho frontu poda niektorej vlastnosti procesu napr. vekos, priorita, typ procesu at. - Kad front m svoj plnovac algoritmus. - Mus sa tu vykona aj plnovanie medzi frontami, ktor sa bene implementuje ako preemptvne plnovanie s pevnmi prioritami. In alternatva plnovania je rozdelenie asu procesora medzi frontmi. Kad front dostva urit as asu procesora a del ju medzi procesy vo fronte. - Procesy s pevne spojen s jednm frontom a nemenia ho, km sa nedokonia ( je to dan tm, e rozdelenie procesov je uroben na zklade charakteristiky procesu, ktor zostva nemenn. 6.6.6 Plnovanie s viacermi frontmi so sptnou vzbou (Multilevel feedback) - Dovouje procesom pohybova sa medzi frontmi. - Zkladn mylienka je rozdeli procesy poda ich poiadaviek na cyklus procesora. - Plnova pouvajci fronti so sptnou vzbou je definovan pomocou tchto parametrov: poet frontov,

plnovac algoritmus pre kad front, metda, ktor sa pouva, na urenie momentu, kedy proces m by presunut do frontu s vyou prioritou, metda, ktor sa pouva, na urenie momentu, kedy proces m by presunut do frontu s niou prioritou, metda, ktor sa pouva, na urenie frontu, do ktorho sa zarad proces, ktor potrebuje by obslen. Je to najuniverzlnej plnovac algoritmus, ale aj najzloitej. Me by prispsoben pre rzne systmy, ale potrebuje starostliv vber parametrov, aby sa docielilo optimlne plnovanie.

6.7 Plnovanie viacprocesorovho systmu


Plnovanie procesov v systme s viacermi procesmi je zloitejia loha, ako v jednoprocesorovom systme. Aj v tomto prpade boli vyskan viacer algoritmy, ale iadny nie je idelny. Problmy sprevdzajce plnovanie viacprocesorovho systmu: Procesory v systme s vinou funkne identick (homognne). To znamen, e procesy mu by vykonvan na ubovonom procesore. Ak s procesory neidentick (Heterognne), znamen to, e proces me by vykonan len na procesore, pre ktor bol intrukn sbor skompilovan. To je prpad niektorch distribuovanch systmov. Pokia mme k dispozcii niekoko identickch procesorov, meme poui stratgiu zdieania zaaenia (load sharing). To znamen, e sa prca del medzi jednotliv procesory. Obyajne sa udruje jeden front pripravench procesov a ke sa niektor procesor uvon, pridel sa mu jeden proces z frontu. Poda tejto schmy sa mu uplatni dva prstupy. Poda prvho kad procesor sa sm star o svoju prcu. Ke sa uvon, preskma front pripravench procesov a vyberie si proces na vykonvanie. Tto loha je zloit, pretoe potrebuje synchronizciu prstupu k spolonm dtovm truktram. Druh prstup je tak, e sa ur jeden procesor ako plnovac a on prideuje procesom procesory. Niektor systmy rieia vetky problmy spojen s plnovanm, V/V a inmi systmovmi aktivitami tak, e jeden procesor je tzv. master server. Tento prpad asymetrickho multiprocesingu je jednoduch ako symetrick multiprocesing, kedy s procesory rovnocenn, lebo len jeden procesor pracuje so systmovmi dtami, a tak odpad potreba synchronizova k nim prstup.

Scheduller - (plnova) - prv proces, ktor sa rozbehne po spusten operanho systmu. Zodpoved za to, ktor z beiacich procesov bude pripusten k procesoru, m PID=0. Za nm je spusten Init (PID=1), ktor udruje v chode vetky dmony.

Sprva sborov (File System and File Management) prispsobuje fyziklne charakteristiky zariadenia ako je disk na logick zariadenie. Typicky s dta prenan z disku na disk v blokoch. Bloky maj vekos 512 bajt. Je to najmenia as dt vhodn na

fyzick prenos na disk. Tto blokov operciu zabezpeuje rznymi spsobmi operan systm. Sprva vstupnch / vstupnch zariaden (IO) => jednotn prstup k I/O zariadeniam a k sborom. Pre efektvnejiu komunikciu s I/O zariadeniami (naprklad s tlaiarou) sa pouva metda vyrovnvacch pamt (Buffers). Buffery s zriaovan v operanej pamti (naprklad v MS DOS prkazom Buffers v config.sys), take dochdza k zmenovaniu rozsahu pamte. Prli vek poet bufferov m tie za nsledok predenie asu potrebnho na vykonanie poiadavky, lebo treba dlhie prehadva ich zoznam. (Kompromis 16 - 32, max. 50). Adresr - udruje pre operan systm informciu o jednotlivom sbore (jeho mene, vekosti, ochrane, ase poslednej zmeny a o umiestnen na disku). Pouvaj sa 3 spsoby organizcie adresrov: Jednoduch adresr, organizovan linernym spsobom. Umiestnenie sboru v adresri sa mus hada sekvenne, o m vplyv na trvanie procesu hadania a je pociovan ako negatvna vlastnos. Napriek tomu VMS, UNIX, OS/2 a MS DOS pouvaj linerne prehadvanie adresrov. Tieto operan systmy pri pouit pamte cache, v ktorej je uloen informcia o posledne pouvanom adresri, mu rchlejie zska informciu o asto pouvanch sboroch bez prstupu na disk. Na skrtenie hadania me by pouit predtrieden organizan schma adresra. naprklad na zklade binrneho hadania usporiadan adresr. Na organizciu adresra poui transforman tabuku. Na zklade mena sboru pridel nejak transforman funkcia sboru index. Tto stratgia me by zdrojom kolzii ak podobn men produkuj rovnak index. Vetky operan systmy (VMS, UNIX, OS/2 a MS DOS) pouvaj mnoho rovov organizciu adresrov, kde naprklad kad uivate m svoj adresr ovldan spolonm "adresrom adresrov". V jedno rovovom adresri by men sborov museli by jednoznane odlin. UNIX ako prv zaviedol stromov truktru, v ktorej sbory s udrovan na rznych rovniach. Meno sboru je potom pecifikovan aj cestou, => zoznamom vetkch adresrov z rovne koreovho adresra a na rove adresra, v ktorom sa nachdza sbor. Prstup k sborom me by zorganizovan rzne: Sekvenne - postupne zznam za zznamom. Nevhoda, e sa ned ta zznam zo stredu sboru. Priamy prstup - nie je obmedzen poradie prstupu. Naprklad ta zznam 100, potom zznam 50 a pod. Indexovan - usporiadan na zklade kov, podobne ako v databzach. Alokcie sborov me pouva: Svisl spsob ukladania sborov - sbory zaberaj urit blok. Pouva sa pre zrchlenie prenosov, pretoe sa minimalizuje pohyb hlavy disku. Ke sa disk zapln a niektor sbory sa z neho vyma dochdza ku fragmentcii. (=> potreba dostatonho vonho priestoru na disku alebo poui kompresiu sborov, ktor je vak nevhodn pri on line prci) Spsob ukladania sborov pomocou odkazu (link) - kad blok alebo sekcia sboru obsahuje ukazovate na nasledujci blok (alebo segment) sboru. Aby pointer nezaberal

miesto pre ukladanie sborov, je potrebn zvltny disk na uloenie info o ukazovateoch. iadny z operanch systmov (VMS, UNIX, OS/2 a MS DOS) nepouva tento systm. Indexovan alokovanie (neplies s indexovanm prstupom k sboru) kombincia svislho spsobu s odkazmi. Odkazy sa nachdzaj v indexovej tabuke v pamti. Kad index uruje urit segment sboru. Pretoe indexov vstupy s uloen v pamti je prstup k sboru rchly aj ke je sbor rozloen na disku. V rmci segmentu je usporiadanie svisl.

Prca s pamou
Alokcia pamti - akcia pri ktorej sa vyhradzuje pamov priestor: dynamick - miesto v pamti sa alokuje poas behu programu, statick - miesto v pamti sa alokuje u poas prekladu, teda pred spustenm prekladu. Premen: globlna - existencia premenej sa zana so spustenm programu a kon s ukonenm programu, loklna - existencia premenej sa zana pri vstupe do podprogramu (funkcie alebo procedry), v ktorom je definovan a kon sa so zakonenm podprogramu. Loklna premen je dostupn len z podprogramu, v ktorom je definovan. Statick alokcia premench vyhradzuje miesto v dtovej oblasti. Globlne premnn mu by alokovan len staticky. Kov slovo extern sa pouva pri oddelenom preklade sborov, ke je treba, aby dva alebo viac sborov sdieali t ist premenn. Tto globlna premenn je v jednom sbore definovan bez kovho slova extern a vo vetkch ostatnch mus by definovan s pouitm extern. Pri vymedzovan dynamickej pamte uritej dlky poas behu programu sa pouva zsobnk - stack. Existencia loklnych premench zana pri vstupe do podprogramu a kon pri vstupe z tohto podprogramu.Pri prideovan dynamickej pamte si treba uvedomi, e sce iadame o pridelenie uritho potu bajtov, ale je vecou operanho systmu koko pamte naviac sa skutone pridel. Napr. MSDOS prideuje pam po tzv. paragrafoch, o s nsobky 16-tich bajtov. Dvodom tohto "plytvania pamte" je zjednoduenie administratvy. Fyzick adresov priestor, FAP je operan pam fyzicky prtomn v potai. Predstavujeme si ho ako linerne pole adresovatench jednotiek: bytov (1B=8 bitov), oslovanch adresami od 0 po MAX (napr. 0..FFFF, 0..FFFFFFFF). Logick adresov priestor, LAP je pam ako abstrakcia, na ktor sa jednotliv programy (a tm aj procesy) odvolvaj pri adrescii. V jednoduchch architektrach LAP je "podmnoinou" FAP, ale s dnes ben aj tak architektry, kde mapovanie LAP na FAP je zloit a dokonca set vekost LAPov me prekroi vekos FAP (ako sa potom procesy zmestia do op. pamti? povieme si to). Hardvrov jednotka sprvy pamti, MMU

(memory management unit) ovlda pam. lohou MMU je namapova logick adresy generovan procesom na fyzick adresy zrozumiten hardvru, ke sa CPU obracia prostrednctvom MMU k pamti, a to pri: - natavan intrukcie (fetch), - tan dt (load), - zapisovan dt (store), Z hadiska MMU sa jedn o prd adries, nerob rozdiely medzi dtami a intrukciami. Akm spsobom sa ale tieto adresy generuj beiacim programom (procesom)? Adresy z hadiska programu (procesu) Adresy s v rznych etapch spustenia programu reprezentovan rzne. V zdrojovom programe pouvame adresy symbolick dobre znme premenn alebo identifiktory Pri preklade programu sa tieto adresy zmenia prekladaom na tzv relokovaten adresy ("14 bytov od zaiatku modulu X", "17 bytov pod vrcholom zsobnka"). Poas behu programu mme logick adresy procesu (LAP) jedin adrescia, ktor je "zrozumiten" MMU, ktor ju namapuje na FAP. Pridelenie adries (address binding) dtam a intrukcim programu sa poda toho me odohra v troch fzach: Poas prekladu Poas prekladu vznik relatvn (relokovaten) kd. Ojedinele sa pouva aj absoltny kd, ktor sa d zavies len na pevne uren adresu v op. pamti, kee adresy s pevne uren. V istom zmysle reprezentantom tohto prstupu s .com sbory v MS DOSe. Poas zavedenia programu do pamti Adresy v kde zadan relatvne (relokovaten, "premiestniten" adresy) sa pri zaveden programu modifikuj poda umiestnenia programu v pamti. Poas behu programu Ak operan systm povouje premiestnenie adresovho priestoru poas behu programu, adresy sa musia prepotava po kadom premiestnen. Toto schma mus by podporovan hardverom (MMU) pozri alej napr. relokan a limitn registre. Schmy pre zefektvnenie prce s pamou Dynamick zavedenie (loading) Procedra sa nenata do pamti, pokia to nie je nutn. Pri prvom volan sa zavedie z relokovatenho formtu uloenho na disku. Vhoda: zriedkavo volan procedry sa vbec nezaved (typicky napr. oetrenie exotickch chb). Nevhoda: asov ria na prv volanie kadej procedry. Dynamick zostavovanie (linking) Zostavovac program (linker) kombinuje jednotliv moduly programu a predpripraven kninice a vytvra vykonaten sbor. Pri dynamickom zostavovan sa tzv. dynamicky linkovan kninice nepridaj do vykonatenho sboru, prid sa len aksi "odkaz" hovoriaci "toto je volanie procedry f() z kninice libX". Pri prvom volan procedry f sa vyhad kninica libX v systme sborov a zavedie sa. Vhody: menie vykonaten sbory, monos vylepi kninicu (napr. opravi drobn chyby) bez nutnosti zmeni vykonaten programy.

Nevhoda: nutnos verzionova kninice (vek, nekompatibiln zmeny kninc znemouj spoluprcu s programami kompilovanmi so starou verziou kninice). Reprezentantom tohoto prstupu s DLL v MS Windows a shared libraries v systmoch UNIX. Prekrvanie (overlay) asto truktra programu je tak, e urit asti kdu sa pouvaj len v uritch etapch behu programu. Napr. kompiltor najprv vykon lexiklnu a syntaktick analzu, potom generuje kd a jedinm "spolonm bodom" tchto dvoch fz je vntorn forma programu. Potom je mon rozlenenie programu na prekrvan moduly: urit spolon asti s zaveden vdy, in sa zavdzaj a odstrauj z pamti poda potreby. Tto metda nepotrebuje podporu od OS, len od prekladaa (vie to napr. aj Borland Pascal). Odkladanie na disk (swapping) Proces, ktor je v stave beiaci, mus by v pamti. Na druhej strane ostatn procesy (akajce, pripraven) sa mu doasne odsun na disk a znovu sa zavies a vtedy, ke s naplnovan. Vhody: tto metda umouje "opticky" zvi set vekost LAP procesov nad vekos FAP. Nevhoda: obrovsk nrast trvania prepnutia kontextu (disky s pomal). Tto "ist" forma odkladania sa dnes u skoro nepouva odkladaj sa nie cel adresov priestory procesov, ale menie bloky pamti pozri alej (virtulna pam strnkovanie na iados). Prideovanie pamti V tejto asti rozoberieme najastejie pouvan metdy mapovania LAP na FAP, ako MMU zabezpe mapovanie LAP na FAP a vzjomn ochranu LAP procesov. Svisl alokcia LAP procesu je uloen v svislej oblasti FAP. Jedna oblas (typicky oblas nich adries obsahujca aj vektory preruen) je vyhraden pre OS, aie oblasti s uren procesom. Poda potu a vekosti tchto oblast rozoznvame niekoko monost: - jedna oblas (okrem oblasti pre OS) jeden proces, - viac oblast rovnakej vekosti kad proces vo svojej oblasti - viac oblast premenlivej vekosti kad proces vo svojej oblasti, vekos oblasti je uren nrokmi procesu. Mapovanie LAP na FAP a ochrana pamti sa uskutonuje pomocou dvoch registrov: bzovho (alebo relokanho) a limitnho. Pri prepnan kontextu sa tieto registre naplnia pecifickmi hodnotami pre proces, na ktor sa prepna. LAP procesu i sa chpe ako pole bytov slovan od 0 po hodnotu maximlnej adresy procesu 0..max(i). Pri zaveden procesu sa rozhodne o fyzickej adrese priradenej logickej adrese 0 (zaiatku LAP) to bude hodnota bzovho registra pre dan proces. Hodnota limitnho registra danho procesu bude max(i). Pri spracovan v MMU, ke CPU vygeneruje logick adresu a, MMU najprv over, i a<=max(i) (tm sa zabezpe ochrana: neadresujeme "nad" vyhradenou fyzickou adresou; adresova "pod" sa ned: adresy s bez znamienka), v prpade nespechu sa vyvol preruenie: programov chyba a proces sa ukon. Ak sa test podaril, a sa pripota k hodnote R bzovho registra a dostaneme fyzick adresu. Znamen to napr., e pri hodnote R=10000 sa logick adresa a=314 namapuje na FA 10314 ak 314<=max(i), t.j. dan proces pouva aspo 315 bytov pamti. Nevhody: Pre jednu oblas je to samozrejme znemonenie multitaskingu. V prpade rovnako vekch oblast je to intern fragmentcia a obmedzenie vekosti procesov (ak oblasti maj 100KB, tak na proces vekosti 10KB vypltvame 90KB op. pamti, ak mme 10 vonch oblast po 100KB, nespustme proces, ktor chce 101KB).

Pri premenlivch vekostiach oblast je to extern fragmentcia: me sa sta, e po spusten a ukonen niekokch procesov bude FAP vyzera ako ementl a vekos najvieho svislho vonho bloku ("diery") bude vrazne menia, ne set vekost vetkch vonch oblast zase sa nemus podari spusti proces s vekmi pamovmi nrokmi. Rieenm je kompaktifikcia: presun obsaden oblasti tak, aby vznikla jedin vek von oblas. Zvltna opatrnos mus by venovan ukoneniu procesov a uvoovaniu pamti: susedn diery sa musia spoji! Ak proces iada o aiu pam, ale za jeho oblasou nie je u von priestor, iados sa mus zamietnu. Strnkovanie Rieenm problmov fragmentcie pri svislej alokcii je strnkovanie. Tu dovolme, aby FAP priraden procesu nebol svisl. FAP je rozdelen na bloky pevnej dky rmce (typicky 1/2, 1, 2, 4 KB). LAP procesu je taktie rozdelen na bloky rovnakej vekosti: strnky. Tabuka strnok (TS) procesu uruje priradenie rmcov strnkam. Pri prepnut kontextu sa prepne aj tabuka strnok (typicky adresa tabuky strnok beiaceho procesu je v pecilnom registri a sta zmeni tto hodnotu). Ak proces poiada o aiu pam, OS mu pridel a von rmec (ak existuje). Takto pridelen rmce neleia svisle za sebou. Pri spracovan v MMU sa logick adresa rozdel na slo strnky p a offset na strnke d (typicky niekoko prvch bitov adresy dva p a zvyok d preto je vekos strnky mocnina 2). p sa pouije ako index do TS a zska sa tm hodnota f: slo rmca. Fyzick adresa je: f*r + d, kde r je vekos rmca. Ochrana Do TS sa pridaj aie bity (okrem f), ktor definuj prstupov prva procesu k danej strnke (napr read, write, readonly a pod). Okrem toho jeden bit oznauje strnku ako platn/neplatn i strnka patr do LAP procesu alebo nie (vekos TS je toti rovnak pre vetky procesy bez ohadu na ich pamov nroky). Zdieanie Strnkovanie dokonca umouje zdiea strnky medzi procesmi: sta, ak dva procesy maj rovnak slo rmca niekde vo svojej TS. Pomocou bitov pre ochranu sa d nastavi aj to, e jeden z procesov na dan strnku len zapisuje, druh len ta (a tm dan procesy komunikuj: spomete si na producenta a konzumenta). Typickejia situcia je pri zdieam vykonatenho kdu (intrukci, nie dt!): tieto strnky s oznaen readonly a mu by zdiean viacermi procesmi ktor maj ten ist program. Nevhody: intern fragmentciau na poslednej strnke procesu (priemerne pol strnky na proces), zvenie asu na context switch, vekos TS at. Segmentcia Strnkovanie striktne oddeuje LAP a FAP, mapovanie je "neprirodzen". Je to vyvolan tm, e sa na LAP dvame ako na linerne pole bytov. Prirodzenej pohad na LAP je programtorsk: vidme rzne procedry alebo skupiny svisiacich procedr (napr. kninice), rzne oblasti dt (polia, zsobnky). Pri segmentcii LAP si predstavme ako neusporiadan kolekciu segmentov: pomenovanch oblast premenlivej dky, ktor obsahuj kd alebo dta, ktor spolu nejak svisia, s smanticky (vznamovo) zviazan. Z dvodov efektvnosti sa pri behu nepouva meno, ale slo segmentu. Pri mapovan LAP na FAP

sa kad segment zobraz do svislej oblasti FAP podobne, ako sa cel LAP procesu zobrazoval pri svislej alokcii. Budeme teda potrebova bzov a limitn hodnotu, ale pre kad segment. Tieto hodnoty sa ukladaj v tabuke segmentov procesu, v ktorej sa vyhadva pomocou sla segmentu. Segmenty sa vo FAP neprekrvaj. Segmenty obyajne vytvra preklada, v niektorch prpadoch je jeho chovanie ovplyvniten. Pri spracovan v MMU sa logick adresa rozdel na slo segmentu s a offset v segmente d (typicky niekoko prvch bitov adresy dva s a zvyok d). s sa pouije ako index do TS a zska sa tm hodnota l: vekos (limit) segmentu a hodnota b: bzov adresa segmentu. MMU najprv porovn d a l: ak d>l, znamen to chybu adrescie a proces sa obyajne ukon. V opanom prpade zskame fyzick adresu ako b+d. Ochrana a zdieanie Teraz nm prde vhod, e segmenty s smantick entity: obsahuj spolu svisiace veci (kd, dta). Preto mu by segmenty oznaen prstupovmi prvami a zdiean procesmi tak, ako rmce, ale vetko je prirodzenejie. Nevhody: Nenastva intern fragmentcia, ale me nasta extern, rovnako, ako pri svislej alokcii LAP procesov s premenlivou dkou oblast. Situcia je ale lepia, lebo segmenty s menie, ne LAP celho procesu. Segmentovan strnkovanie Vhody a nevhody segmentcie a strnkovania sa daj uitone skombinova pomocou segmentovanho strnkovania. Tieto schmy mu by vemi komplikovan, nartneme len zkladn mylienku. Zkladom je segmentcia, t.j. prvotn fza prevodu LA na FA je segmentcia. Ako vsledok nedostaneme hne FA, ale tzv. linernu adresu. Tto adresa sa potom strnkuje, t.j. priestor linernych adries je rozdelen na strnky a tmto strnkam sa v druhej fze prevodu prirauj rmce popsanm algoritmom strnkovania: takto dostaneme FA. Virtulna pam Tto technika umouje beh procesov, ktorch LAP nie je cel vo FAP, t.j. cel proces nie je zaveden v op. pamti. Jedna z monch implementci je strnkovanie na iados, ktor tu strune a vemi zjednoduene popeme. Strnkovanie na iados Zkladom je strnkovanie (alebo segmentovan strnkovanie). Kad rmec m ale priraden miesto aj v sekundrnej pamti (disku) tzv. odkladacej oblasti (toto je zjednoduenie!). Nie kad strnka procesu mus by v op. pamti, niektor mu by na disku. o sa ale stane, ak sa proces sna pristpi k strnke, ktor je odloen? Nastane tzv. vpadok strnky (page fault) proces prejde do stavu akajci a OS prenesie strnku do op. pamti. V podstate proces me zaa svoj beh tak, e len jeho "vodn strnka" (zaiatok programu) je v op. pamti, ostatn s odloen. Po prenesen chbajcej strnky do op. pamti proces prejde do stavu pripraven a eventulne sa dostane k procesoru. Pri tejto schme set vekost LAP procesov v systme me prekroi vekos FAP: o rozhoduje, je set vekost strnok, ktor s v op. pamti (nie s odloen). Samozrejme, me nasta situcia, e po vpadku strnky chceme strnku odloen zavies z disku do op. pamti, ale nie je von iaden rmec vo FAP. V takomto prpade sa jeden z obsadench rmcov mus odloi na disk. Algoritmy vberu tejto obete prekrauj rmec prednky.

7. Objasnite relan dtov model.


Databza
Potaov databza (niekedy aj bza dt alebo databanka) je kolekcia truktrovanch dt alebo informci uloench v potaovom systme, takm spsobom, e potaov program, alebo lovek me poui dopytovac jazyk (angl.: query language) na zskavanie tchto informci. Takto zskan informcie mu by pouit pri rozhodovacom procese. Potaov program pouvan na sprvu dt a tvorbu query sa oznauje DBMS. Vlastnosami a nvrhom DBMS sa zaober informatika. Typick [query] zodpoved otzky typu "Ko ko prov topnok vyrobench Baom sa predalo v marci v Bratislave a Koiciach?" Na to, aby databza bola schopn zodpoveda takto otzku je nutn, aby mala informcie ko ko akch topnok sa predalo vrtane dtumu a miesta predaja. Termn databza vznikol v prostred vpotovej techniky. Hoci jeho vznam sa rozril, a me oznaova aj neelektronick databzy, tento lnok sa zaober potaovmi databzami. Kolekcie dt podobn databzam existovali u pred priemyselnou revolciou naprklad vo forme tovnckych zznamov a knh a neskr kartotk. Zkladnm konceptom databza je kolekcia zznamov, alebo iastkovch informci. Typicky, v kadej databze existuje popis truktury dt a typu dt, ktor s v databze: tento popis sa nazva logick schma. Tto schma popisuje objekty, ktor s v databze a vzahy medzi nimi. Existuje viacero rznych spsobov tvorby schm t.j. modelovania databzovej truktry: tieto sa nazvaj databzovmi modelmi (alebo modelmi dt). V sastnosti je najviac pouvanm relan model. Relan model sa d vysvetli tak, e kompletn shrn dt je uchovvan v tabu kch pozostvajcich z riadkov a stpcov (presn defincia pouva matematick pojem relcie). Tento model reprezentuje vzahy pouitm tch istch hodnt vo viacerch tabu kch. In modely, naprklad hierarchick model alebo sieov model pouvaj explicitnejiu reprezentciu vzahov. V irom zmysle s sasou databzy aj softvrov nstroje, ktor slia na manipulciu a prstup k uloenm dtam. Predchodcom databz boli papierov kartotky. Umoovali zaraovanie novch poloiek a usporiadanie dt pod a rznych kritri (kategri). Vetky opercie robil lovek. Sprva takchto kartotk bola v mnohom podobn sprve dnench databz. Dtov modely: 1. Entitno-relan model 2. Systm pre sprvu sborov 3. Hierarchick model 4. Sieov model 5. Relan model 6. Objektovo orientovan SRBD

Relan model
Relan dtov model (RDM) organizuje daje do tzv. usporiadanch entt - tabuliek. Relan databzu uvate vnma ako sstavu v ase sa meniacich normalizovanch tabuliek s usporiadanmi stpcami. V RDM sa kad poloka stva domnou (stpcom) tabuky a kad zznam tvor kore (riadok). Rzne mnoiny z komplexnho sieovho modelu sa stvaj rznymi tabukami, ktor identifikuj jednotliv poloky pomocou nzvov stpcov v prvom riadku. Ako prklad si uveme op

skladov databzu ilinskej bicyklovej fabriky, spol. s r.o. usporiadan tentoraz do relanho tvaru (Obr. 4.11). V kadej tabuke m jeden alebo viac stpcov rovnak nzov ako v inej tabuke. Tieto spolon stpce vytvraj relcie medzi jednotlivmi tabukami. Samotn nzvy stpcov v jednotlivch tabukch nemusia by nevyhnutne zhodn ako v naom prklade, sta, aby dta v spolonch stpcoch mali rovnak typ a domnu. Ak chceme njs urit tovar od uritho dodvatea, SRBD vyhad v tabuke TOVAR nzov tovaru, v stpci D# njde slo dodvatea a vztiahne ho k obdobnmu daju v stpci D# v tabuke DODVATELIA, kde njde nzov firmy a meno kontaktnho pracovnka. Pre zistenie ceny tovaru sa vyuije relcia medzi stpcami T# a D# v tabuke TOVAR a rovnomennmi stpcami v tabuke CENY. Jednotliv relcie mu by aj kombinovan: uvate me poiada SRBD o zobrazenie dodvatea, nzvu tovaru, ceny a minimlneho odberu, pre ktor tto cena plat. Na to, aby bolo mon dtov tabuky efektvne uklada do pamti a manipulova s nimi, musia tieto tabuky spa nasledujce vlastnosti: 1. Kad entita (tabuka) m v RDM svoj jednoznan nzov, ktor ju v databze identifikuje. 2. Kad entita (tabuka) obsahuje len korti (riadky, zznamy) rovnakho typu. 3. Kad domna (stpec) tabuky m svoj nzov meno, ktorm je identifikovan v RDM. Ak sa v rznych tabukch vyskytuj rovnak domny, mu by pomenovan rzne, ale praktickejie je pomenova ich rovnako, pretoe ide o rovnak veliiny. Pri rovnakom pomenovan ich vak musme odliova prponou - t.j. kvalifikova ich prslunosou k uritej tabuke. 4. Kad stpec obsahuje hodnoty rovnakho atribtu a tieto hodnoty musia by z domny skalrnych hodnt rovnakho typu - t.j. napr. len sam slice, len textov reazce, len logick hodnoty a pod. 5. Kad kort (riadok) tabuky zodpoved jednmu vskytu entity danho typu. 6. Kad riadok je jednoznane identifikovaten. Pre identifikciu sa pouva zvltny atribt tzv. primrny k. 7. Na porad stpcov a riadkov v tabuke nezle. 8. Vetky hodnoty v danom riadku s jednoznane a plne zvisl na primrnom ki. 9. Kad bunka tabuky (ak je obsaden) mus obsahova len jednoduch hodnotu prslunej domny (t.j. nie opakujcu sa skupinu hodnt). Kov hodnoty musia by vdy obsaden t.j. nesm obsahova NULL (Hodnota NULL indikuje, e prslun hodnota nie je znma). Cel RDM je tvoren sstavou entt (tabuliek), ktor maj uveden vlastnosti. Aby sme mali zaruen integritu RDM, mus by starostlivo vyrieen problematika kov. Sledujeme dvojak integritu RDM:

integritu kot, ktor zaruuje, e kad entita bude v RDM jednoznane identifikovaten. To je dan tm, e iadna z velin tvoriacich primrny k nebude ma hodnotu NULL. referenn integritu, ktor zaruuje, e sstava tabuliek bude navzjom prepojen s monosou spja vzjomne hodnoty z navzjom svisiacich tabuliek RDM. Ako u bolo uveden skr, primrny k sli na jednoznan identifikciu korti (riadku) v kadej tabuke. Primrny k me by tvoren jednm alebo viacermi domnami (atribtmi) - hovorme potom o jednoduchom alebo zloenom ki. Primrny k mus spa nasledujce poiadavky: - jedinenos, t.j. v tabuke sa nesm vyskytn dve a viac rovnakch hodnt ka; - minimalizciu, t.j. v prpade, e k je vytvoren zloenm viacerch hodnt, potom iadna z tchto hodnt neme by vypusten bez poruenia zsady jedinenosti ka. Primrny k me by v prpade potreby tvoren aj vetkmi hodnotami v riadku. Pri rozhodovan o vobe primrneho ka zvaujeme niekedy rzne domny (atribty), ktor by mali spa funkciu kovch hodnt. Hovorme potom a tzv. monch koch (candidate keys). To

bva v situcii, ke existuje viac identifikanch hadsk - napr. zamestnanca meme identifikova jeho osobnm slom (spravidla pridelenm zamestnvateom) alebo jeho rodnm slom. Ke sa pre jeden z monch kov rozhodneme, druh zostva ako alternatvny k. Ak chceme zabezpei skr uvdzan referenn integritu, musme umoni spja vskyty jednotlivch riadkov entt (riadky tabuliek), ktor k sebe logicky patria. Toto umouj tzv. cudzie ke (foreign keys). Ide vdy o primrne ke alebo ich as z inej entity (tabuky). Pre uvaovan prklad s cudzie ke uveden na spojniciach jednotlivch tabuliek (Obr. 4.12). Problm referennej integrity spova nielen v prepojen vetkch tabuliek, ale aj v tom, aby toto prepojenie bolo smanticky sprvne. To znamen, e predpokladme, e v tabuke TOVAR sa neobjav riadok s uvedenm tovaru od dodvatea, ktor nem zznam v tabuke DODVATELIA. Ak by sa tak tovar skutone objavil, SRBD mus takto stav rozozna a vyiada si rieenie. Obdobn problmy treba riei naprklad pri vyraovan niektorho tovaru z tabuky TOVAR. V takom prpade sa musia zrui aj vetky odpovedajce zznamy z tabuky CENA.

8. Objasnite proces pravy dt pri projektovan databz, konkrtne normalizciu dt. Normalizcia
Zvanm rozhodnutm, pred ktor je postaven projektant databzy je definovanie tabuliek a nsledne relci medzi nimi. Proces dekompozcie dt do podmnon pre jednotliv tabuky sa nazva normalizcia. Normalizcia vychdza z poiadavky na efektvne ukladanie dt do pamti, t.j. minimalizciu nadbytonosti (redundancie) pri zachovan integrity a konzistencie databzy a pri zachovan poadovanho informanho obsahu. Pri tom sa mus dba o zaruenie efektvnej prce s RDM, predovetkm jednoznanos a sprvnos odpoved na dopyty. RDM definuje celkom 5 rovn normalizcie, priom kad rove redukuje mnostvo duplicitnch dt. V praxi sa pouvaj len prv 3 rovne normalizcie. Zkladnou mylienkou normalizcie je postupn rozklad pvodnch nenormalizovanch tabuliek do sstavy viacerch mench tabuliek tak, aby sa dosiahlo zmenenie nrokov na pam bez straty informci pvodne v tabuke obsiahnutch, t.j. s monosou kedykovek vytvori pvodn tabuky. Ide nm o tzv. bezstratov dekompozciu. Vlastn postup dekompozcie sa realizuje v jednotlivch normalizanch krokoch odpovedajcich jednotlivm normlnym formm (Obr. 4.13): - Prv normlna forma (1NF) vyaduje, aby jednotliv stpce obsahovali vdy len hodnoty z homognnej dtovej domny bez opakujcich sa hodnt (t.j. jedno polko - jedna hodnota). - Druh normlna forma (2NF) vyaduje, aby vetky nekov hodnoty v riadku boli vznamovo plne zvisl na kovch hodnotch danho riadku. - Tretia normlna forma (3NF) riei problm tzv. tranzitvnej zvislosti, kedy niektor nekov hodnota zvis od inej nekovej hodnoty v danom riadku. Mono poveda, e RDM je znormalizovan do 3NF, ak kad atribt je bu kovm atribtom alebo je svojou hodnotou jednoznane zvisl na celom ki (t.j. vetkch kovch hodnotch). - tvrt a piata normlna forma rieia niektor pecilne prpady viachodnotovch zvislost. Pre praktick pouitie spravidla nie s potrebn a uspokojme sa s normalizciou do 3NF. Ako prklad normalizcie si pozrime tabuku TOVAR (Obr. 4.11). Hoci stpce T# a Nzov tovaru obsahuj urit opakujce sa (duplicitn) informcie, kad riadok je jedinen, pretoe hodnoty v stpci D# s odlin. Na tto tabuku meme aplikova aliu rove normalizcie tm, e stpec D# rozdelme na viac stpcov (Obr. 4.14). To ete viac redukuje priestor potrebn na uloenie informcie o skladovanom tovare, aj ke to o nieo zvuje rozsah tabuky CENY, v ktorej mus by stpec D# nahraden stpcami D1 a D2. Tieto zmeny nijako neovplyvnia truktru tabuky DODVATELIA. V sprvne navrhnutom relanom SRBD sa informcia o truktrach tvoriacich databzu zapisuj do zvltnej mnoiny tabuliek, ktor sa nazvaj systmov tabuky alebo databzov slovnk. Tieto informcie obsahuj dtov prvky ako nzvy tabuliek, nzvy stpcov v tchto tabukch a typy dt ukladanch do jednotlivch stpcov. SRBD zaobchdza s tmito systmovmi tabukami rovnako ako s ostatnmi tabukami, take programtor ich me prehadva, aby zistil nzvy tabuliek v databze alebo nzvy stpcov v kadej tabuke. Najdleitejou vhodou relanho modelu oproti hierarchickmu alebo sieovmu je jeho vek prunos (flexibilita). Zmena truktry databzy spova v jednoduchom pridan stpca do tabuky, jeho zruen prpadne vytvoren novej tabuky alebo zruen existujcej, o minimlne ovplyvn ostatn tabuky. Vaka monosti definovania vzahov (relci) medzi jednotlivmi stpcami rznych tabuliek je mon jednoducho vytvori nov tabuku ako podmnoinu (projekciu) existujcich tabuliek. To, e na zmenu truktry nie je potrebn nanovo

vytvra cel truktru databzy sa pozitvne odraz na zachovan integrity dt.

Normalizacia 2
Normalizcia je proces eliminovania duplicitnch dajov v relanch databzach. Sprvne normalizovan databzy maj nvrh, ktor reflektuje prav zvislosti medzi sledovanmi polokami a umouje rchlu zmenu dajov bez rizika vzniku nekonzistencie.

Normlne formy
Edgar Frank Codd pvodne definoval 3 normlne formy. Prv NF vyaduje, aby boli tabu ky vytvoren z primrneho k a a nieko kch atomickch atribtov, druh a tretia sa zaoberaj vzahom nek ovch atribtov k primrnemu k u. Tieto sa daj zosumarizova ako poiadavka, aby vetky nek ov atribty boli funkne zvisl na k i, celom k i a niom inom ako na k i. V praxi je vina aplikci v 3NF plne normalizovan. Vskum vak objavil potencilne anomlie opercie update v databzach v 3NF. BCNF je alm zlepenm 3NF, ktor sa poka tieto anomlie odstrni. tvrt a piata normlna forma sa zaoberaj konkrtne reprezentciou vzahov 1:N a M:N. iesta NF sa vzahuje iba na temporlne databzy.

Prv normlna forma (1NF)


Prv normlna forma poaduje aby kad atribt obsahoval len atomick hodnoty, to znamen hodnoty ktor s alej nedelite n.

Druh normlna forma (2NF)


Druh normlna forma poaduje aby relcia bola v 1NF a zrove kad nek ov atribt bol na primrnom k i plne funkne zvisl (na celom k i, nie len na jeho podmnoine). Naprklad relcia:
tudent (primrny kl) Kd predmetu (primrny kl) Nzov predmetu Znmka

nie je v 2NF, pretoe nzov predmetu nie je zvisl na celom k i, ale len na jeho asti (a to na kde predmetu). Na prevod do 2NF by bolo potrebn ju rozdeli na dve, priom z pvodnej relcie by sme odstrnili nzov predmetu a vytvorili by sme nov relciu:
Kd predmetu (primrny kl) Nzov predmetu

Tretia normlna forma (3NF)


Relcia je v tretej normlnej forme, pokia je v 2NF a iaden nek ov atribt nie je tranzitvne funkne zvisl od primrneho k a. To znamen e vetky neklov atribty musia by navzjom nezvisl. Naprklad relcia:
slo predmetu (primrny kl) Nzov predmetu slo uitea Meno uitea

nie je v tretej normlne forme, pretoe meno uite a je zvisl od sla uite a. Prevod by op pozostval z dekompozcie.

Boyce Coddova normlna forma (BCNF) tvrt normlna forma (4NF)


Tabu ka je vo tvrtej normlnej forme vtedy, ak je v tretej normlnej forme a opisuje len jeden fakt alebo svislos (t.j. nespjaj sa nezvisl opakovan skupiny).

Normalizacia 3 Normln formy


Pojem normlnch forem se pouv ve spojitosti s dobe navrenmi tabulkami. Sprvn vytvoen tabulky spluj 4 zkladn normln formy. 1. normln forma (1NF) Prvn, nejjednodu, normln forma (zname 1NF) k, e vechny atributy jsou atomick, tj. dle ji nedliteln (jinmi slovy, hodnotou nesm bt relace). Mjme nap. tabulku ADRESA, kter bude mt sloupce JMNO, PJMEN a BYDLIT. Naplnn tabulky nech odpovd relnmu svtu: JMNO PJMEN BYDLIT jan novk Ostravsk 16, Praha 16000 petr nov Svitavsk 8, Brno 61400 jan novek Na bradlech 1147, Ostrava 79002 Pokud bychom v tto tabulce chtli vypsat vechny pracovnky, jejich PS je rovno urit hodnot, dostali bychom se do pot, nebo bychom to nemohli zjistit pmo a jednodue. A to proto, e atribut BYDLIT nen atomick, skld se z nkolika st: ULICE, SLO, MSTO a PS. Sprvn nvrh tabulky, kter bude respektovat 1NF bude vypadat nsledovn: JMNO PJMEN ULICE SLO MSTO PS jan novk Ostravsk 16 Praha 16000 petr nov Svitavsk 8 Brno 61400 jan novek Na bradlech 1147 Ostrava 79002 Obecn bychom se mli snait, aby obsahem jedn databzov poloky byla prv jedna hodnota (uritho databzovho typu). 2. normln forma (2NF) Tabulka spluje 2NF, prv kdy spluje 1NF a navc kad atribut, kter nen primrnm klem je na primrnm kli pln zvisl. To znamen, e se nesm v dku tabulky objevit poloka, kter by byla zvisl jen na sti primrnho kle. Z definice vyplv, e problm 2NF se tk jenom tabulek, kde volme za primrn kl vce poloek ne jednu. Jinmi slovy, pokud m tabulka jako primrn kl jenom jeden sloupec, pak 2NF je splnna triviln. Nech mme tabulku PRACOVNK, kter bude vypadat nsledovn (atribut S_PRAC zna slo pracovit, kde dan pracovnk pracuje, atribut NZEV_PRAC uvd jmno danho pracovit): SLO JMNO PJMEN S_PRAC NZEV_PRAC

1 jan novk 10 studovna 2 petr nov 15 centrla 3 jan novek 10 studovna Jak primrn kl zvolme v tto tabulce? Pokud zvolme pouze SLO, je to patn, nebo zcela urit nzev pracovit, kde zamstnanec pracuje, nen zvisl na slu pracovnka. Take za primrn kl musme vzt dvojici (SLO,IS_PRAC). Tm nm ovem vznikl nov problm. Poloky JMNO, PJMEN a NZEV_PRAC nejsou pln zvisl na dvojici zvolenho primrn kle. A tedy dlme, co dlme, nejsme schopni vybrat takov primrn kl, aby tabulka splovala 2NF. Jak z tohoto problmu ven? Obecn peveden do tabulky, kter ji bude splovat 2NF, znamen rozpad na dv a vce tabulek, kde kad u bude splovat 2NF. Takovmu "rozpadu" na vce tabulek se odborn k dekompozice relanho schmatu. Sprvn navren tabulky splujc 2NF budou vypadat nsledovn (tabulka PRACOVNK a PRACOVIT): SLO JMNO PJMEN IS_PRAC 1 jan novk 10 2 petr nov 15 3 jan novek 10 SLO NZEV 10 studovna 15 centrla Dle si vimnte, e pokud tabulka nespluje 2NF, dochz asto k redundanci. Konkrtn v pvodn tabulce informace, e pracovit slo 10 se jmenuje "studovna", byla obsaena celkem dvakrt. Redundance je jev, kter obvykle nesplnn 2NF doprovz. O tom, e redundance je neadouc, neteba pochybovat. Zkuste si rozmyslet, jak byste postupovali v obou pkladech, kdyby ve va spolenosti dolo ke zmn nzvu pracovit slo 10 ze "studovna" na "klubovna". 3. normln forma (3NF) Relan tabulky spluj tet normln formu (3NF), jestlie spluj 2NF a dn atribut, kter nen primrnm klem, nen tranzitivn zvisl na dnm kli. Nejlpe to opt vysvtl nsledujc pklad. Mjme tabulku PLATY, kter bude vypadat takto: SLO JMNO PJMEN FUNKCE PLAT 1 jan novk technik 15000 2 petr nov vedouc 21500 3 jan novek sprvce 17500 Pomineme zatm fakt, e tato tabulka nespluje ani 2NF, co je zkladn pedpoklad pro 3NF. Chci zde jen vysvtlit pojem tranzitivn zvislost. Nebudeme pemlet, co je primrn kl, na prvn pohled vidme, e konkrtn atributy JMNO, PJMEN a FUNKCE zvis na atributu SLO (ten by nejsp byl primrnm klem). Dle meme vidt, e atribut PLAT zejm je funkn zvisl na atributu FUNKCE a pokud vememe v vahu, e SLO>FUNKCE a FUNKCE->PLAT, dostaneme dky jevu nazvanmu tranzitivita, e SLO>PLAT. Postup, jak dostat tabulky do 3NF, je podobn jako v ppad 2NF, tj. opt provedeme dekompozici (tabulka FUNKCE a PLATY): SLO JMNO PJMEN FUNKCE 1 jan novk technik

2 petr nov vedouc 3 jan novek sprvce FUNKCE PLAT technik 21500 vedouc 17500 sprvce 15000 Z hlediska zkladnch t normlnch forem, jsou tyto dv tabulky ji v podku. Z praktickho hlediska je vhodnj pout njak selnk funkc, abychom splnili podmnku, e primrn kl v tabulkch m bt co nejkrat dlky. Nejlep zpis je tedy nsledujc: SLO 1 2 3 SLO 121 156 127 JMNO PJMEN CIS_FUN jan novk 121 petr nov 156 jan novek 127 FUNKCE PLAT technik 21500 vedouc 17500 sprvce 15000

Boyce-Coddova normln forma Posledn prakticky uvanou formou je tzv. Boyce-Coddova normln forma (BCNF). Tabulka spluje BCNF, prv kdy pro dv mnoiny atribut A a B plat: A->B a souasn B nen podmnoinou A, pak mnoina A obsahuje primrn kl tabulky. Tato forma zjednoduuje prci s tabulkami, ve vtin ppad, pokud dobe postupujeme pi tvorb tabulek, aby splovaly postupn 1NF, 2NF a 3NF, forma BCNF je splnna.

Popte niektor najdleitejie pojmy z terie databz (na logickej rovni)


Databzov systm: Databzov systm (DBS) tvor databza (DB) a systm riadenia bzy dt (SRBD). Zjednoduene meme psa: DBS = DB + SRBD Systm riadenia bzy dt (SRBD) je programov vybavenie, ktor umon zabezpei vetky poadovan vlastnosti databzovho systmu a manipulova s dtami. Databza: Potaov databza (niekedy aj bza dt alebo databanka) je kolekcia truktrovanch dt alebo informci uloench v potaovom systme, takm spsobom, e potaov program, alebo lovek me poui dopytovac jazyk (query language) na zskavanie tchto informci. Relan model: Relan model definuje spsob, akm je mon dta reprezentova (truktra dt), spsoby ich ochrany (integritu dt) a nakoniec opercie, ktor meme nad dtami vykonva (manipulciu s dtami). Relan model nepredstavuje jedin metdu spravovania dt. Existuj aj in monosti, ako hierarchick, sieov alebo hviezdicov model. Charakteristick vlastnosti relanch databz: vetky dta sa pomyselne daj reprezentova v pravidelne usporiadanch truktrach s riadkami a stpcami, ktorm hovorme relcie vetky hodnoty v databze s skalrne. To znamen, e v kadej konkrtnej pozcii riadku a stpca danej relcie sa nachdza (presnejie prve jedna) hodnota opercie v databze sa vykonvaj vdy nad celou relciou a ich vsledkom je op in cel relcia. o je relcia? Relciou me by okovek, o je usporiadan do truktry riadkov a stpcov a o obsahuje skalrne hodnoty (matematicky: Nech existuje mnoina domn D={ D1,D2, ...,Dn} nad mnoinou , potom relciou je podmnoina kartezinskeho sinu domn D1xD2x ...xDn.). Relcia zodpoved tabuke. Vlastnosti relcie: 1. Neobsahuje duplicitn n-tice - tto vlastnos vychdza s faktu, e telo relcie je matematick mnoina (mnoina n-tc), a poda defincie neobsahuje duplicitn prvky. Zkladnm predpokladom pre splnenie tohto bodu je nutn existencia primrneho ka v kadej relcii (pozri definciu primrneho ka). Primrny k me by tvoren jednm atribtom alebo zloenm niekokch atribtov relcie. 2. n-tice s neusporiadan (zhora dolu) n-tice tvoria matematick mnoinu (nie je usporiadan) hoci z praktickho hadiska je asto vhodn udriava

relciu ako usporiadan mnoinu. Z druhej strany neusporiadanos umouje zjednodui algoritmy pre prcu nad relciou. 3. m-tice atribtov s neusporiadan (zava doprava) m-tice tvoria matematick mnoinu (nie je usporiadan). Tto vlastnos hovor o tom, e k jednotlivm stpcom alebo k hodnotm atribtu pristupuje prostrednctvom identifiktoru (meno atribtu) a nie poda pozcie v riadku. To umon tvorbu programov nezvislch na dtach. 4. hodnoty atribtov s atomick tto vlastnos meme vyjadri aj inak (menej formlne): kadmu atribtu je priraden vdy len jedna hodnota a nie mnoina hodnt. Je potrebn, aby vetky atribty boli atomick, m dosiahneme to, e v relcii sa nemu vyskytova tzv. opakujce sa skupiny atribtov, ktor sa vyskytuj v nenormalizovanch zznamoch. Hodnota atribtu je vdy skalr a nie mnoina. "Relcia neobsahuje opakujce sa skupiny". Relcii bez opakujcich sa skupn hovorme, e je normalizovan. Domna: Domna je mnoina hodnt rovnakho vznamu (napr.: vek, priezvisko). Hodnoty v domne s rovnakho dtovho typu slo, reazec znakov, dtum at. Je to obor hodnt, ktor tvor mnoina vetkch prpustnch platnch hodnt, ktor smie urit poloka obsahova. Ak je rozdiel medzi oborom hodnt a dtovm typom? Dtov typ je fyzick pojem, obor hodnt je pojem logick: slo je dtov typ, zatia o vek predstavuje u obor hodnt, obsahujci sla. Poloka Priezvisko a poloka Adresa maj rovnak dtov typ je to reazec znakov. Ale u z nzvom je zrejm, e bud ma in obor hodnt, take patria do rznych domn. Kartzsky sin mnon A, B: Majme mnoinu usporiadanch dvojc [x,y], pre ktor plat, e x patr do mnoiny A a y patr do mnoiny B. Potom plat, e poet prvkov v kartzskom sine je dan potom prvkov v mnoine A krt poet prvkov v mnoine B. Ak mme mnoinu A = {1, 2, 3} a mnoinu B = {a, b}, potom je kartzsky sin M = A x B dan takto: M = {[1,a], [1,b], [2,a], [2,b], [3,a], [3,b]}. Vlastne relcia je ubovon podmnoina kartzskeho sinu (napr. R = { [1,a], [2,b], [3,a] }). To, ak prvky bude relcia obsahova, je definovan prve konkrtnym SQL prkazom s urenmi podmienkami. Entita: Entita je okovek, o om v systme potrebujeme uchovva informcie. Pri zahjen prc na nvrhu dtovho modelu nie je zostavenie prvotnho zoznamu entt vbec obtiane. Ak si rozoberieme priestor problmov, pouvame podstatn men ako vhodnch kandidtov na entity (Autori pu knihy autori, itatelia poiiavaj knihy itatelia). Udalosti medzi jednotlivmi entitami sa nazvaj vzahy. Vzah medzi knihou a dodvateom je dodva, medzi knihou a itateom je poiiava.

Atribty: Navrhovan systm bude o kadej entite zaznamenva, sledova a vyhodnocova urit skutonosti. Tmto skutonostiam (dajom) sa hovor atribty danej entity. Ak knin systm obsahuje entitu kniha, chceme o nej vies daje o nzve, autorovi, vydavatestve, dodvateovi, cene at. Toto vetko s atribty. Nie vdy bvaj atribty jednoznan . Urovanie atribtov je smantick proces. To znamen, e sa budeme rozhodova poda vznamu dt a poda spsobu ich vyuitia. Zjednoduene povedan, atribty s v podstate stpce relcie (tabuky).
Meno relcie Atribty

KLINCE

Katalogovecislo

Hrubkamm

Dlzka-mm

n-tice

10326 10334 10345 10352 10364

2 3 4 5 6

40 80 120 150 200

Vzahy: Okrem atribtov jednotlivch entt musme v dtovom modeli uri vzahy, definovan medzi rznymi entitami. Z tvrdenia itatelia si poiiavaj knihy tak vyplva existencia uritho vzahu medzi entitami itate a kniha. Entity, zapojen do uritho vzahu, sa nazvaj astnkmi. Poet astnkov oznaujeme ako stupe vzahu. Kardinalita vzahu: Pod kardinalotou vzahu rozumieme poet vskytu objektov oboch entt, ktor sa vzahu astina. Vzah medzi ubovonmi dvomi entitami me by typu 1:1, 1:n a m:n. 1:1 je vzah, v ktorom na obidvoch stranch vystupuje iba jeden objekt danej entity. Tieto vzahy s v realite vemi zriedkav. Prkladom me by vzah manelia medzi entitami Mu a ena. V prpade monogamnej spolonosti je zrejm, e jedna ena m iba jednho mua a naopak, jeden mu m iba jednu enu. 1:n (jedna k viacej) bva v dtovom modeli najastejie. Na jednej strane je jedin objekt entity, ktor je vo vzahu s jednm alebo viacermi objektmi druhej entity. Ako prklad posli vzah itate kniha, kde jeden itate me ma poian jednu alebo viac knh, alebo naopak, viacej knh me by poianch prve iba jednm itateom. m:n (viac ku viac) je pecifickm vzahom, v ktorom vystupuje viac objektov na oboch stranch. Naprklad kad uite vyuuje mnoho iakov a kad iak chod na hodiny k mnohm uiteom.

E-R a E-R-A diagramy: Model entt a vzahov, ktor popisuje dta ako entity, atribty a vzahy medzi nimi sa zobrazuj pomocou diagramov pomenovanch ako diagramy entt a vzahov, ktor poznme pod skratkou E-R diagramy (entity relationship diagram). Ak v E-R diagramoch uvdzame aj atribty entt, hovorme o E-R-A diagramoch (Entity Relationship Attribute diagram). V E-R diagramoch sa entity oznauj pomocou obdnikov, atribty pomocou elipsy alebo ovlov a vzahy sa znzoruj spojovacou iarou medzi entitami.

Ke: Tabuky mu tie obsahova uren vlastnos alebo sriu vlastnosti ktor mu fungova ako "k", ktor me byt pouit na osobit identifikciu kadho stpca v tabuke. Jednoznan identifiktor v tabuke, ktor je reprezentovan stpcom alebo skupinou stpcov sa nazva primrny k. Sekundrny k mu tvori ostatn atribty tabuky mimo primrneho ka. Ak potrebujeme vytvori tabuku poda sekundrneho ka, potom obvykle vytvrame tzv. indexn sbor, o je pomocn sbor, v ktorom s uveden poda sekundrneho ka odkazy do hlavnej tabuky. Vzby medzi relciami sa rieia umiestnenm hodnoty primrneho ka do inej relcie, v tejto novej relcii potom hovorme o tzv. cudzom ki. Ke s bene pouvan na pripojenie alebo kombinovanie dt z dvoch alebo viacerch tabuliek. Naprklad zkazncka tabuka me obsahova stpec nazvan MIESTO, ktor obsahuje hodnotu, ktor priradme ku tabuky MIESTO. Ke s

taktie praktick pri vytvran ukazovateov, ktor umouj rchle zskanie dt z rozsiahlej tabuky.

Relan dtov typy: a, Numerick dtov typy (angl. Numeric) t. j. tak dta s ktormi vieme vykonva zmyslupln aritmetick opercie. b, Znakov dtov typy (angl. Character) uvdzan asto ako textov alebo reazov premenn mu obsahova ubovon znaky a symboly. Nie s uren pre matematick opercie, ale existuje viacero funkci pre ich spracovanie. c, asov dtov typy (angl. Date). Obsahom tchto dtovch typov je kalendrny dtum v pecilnom formte znmom ako julinsky dtov formt a daj asu (od 0:00 do 24:59:59 hodn). S tmto dtovm typom je mon vykonva urit aritmetick opercie, naprklad odtanm dvoch dtumov zskame poet dn medzi tmito dtumami. d, Logick dtov typ (angl. Logical) me nadobda len dve hodnoty PRAVDA/NEPRAVDA ANO/NIE (angl. TRUE, FALSE YES/NO). K tmto zkladnm dtovm typom dopaj rozlin systmy DDL aj alie typy: - Dtov typ Mena (angl. Currency) je odvoden od selnmu dtovho typu. Hodnota meny je odvoden z nastavenia meny v operanom systme MS Windows mu by vyuvan v matematickch vpotoch - Dtov typ Automatick slo (angl. AutoNumber) je to cel slo, ktor nie je mon rune zaktualizova. Takmer vhradne sa pouva ako jednoznan identifiktor zznamu v tabuke. - Dtov typ BLOB (z angl. Binary Large Objects - binrn vek objekty)- pouva sa pre uloenie vekch netruktrovanch typov dajov ako napr. grafick sbory, audio a video sekvencie, dlh texty. Dta typu BLOB sa typicky uschovvaj mimo ich zznamu v samotnch blokoch a zznam obsahuje ukazovate na prslun objekt. pecilne dtov typy v MS Access: - Dtov typ Objekt OLE (angl. OLE object) s operanm systmom podporovan objekty (entity) vo forme celho sboru pripojen, alebo vloen do tabuky MS Access. Mu to by grafick, zvukov, video sbor, tabuka Excel, dokument Word, at. - Dtov typ Hypertextov odkaz (angl. Hyperlink) je textov premenn s vlastnosami odkazu k sboru alebo k Internetovskej strnke. Praktickou vhodou tohto dtovho typu je, e klepnutm na text v bunke tabuky aktivujeme hypertextov odkaz.

SQL: je veobecnou normou, ktor umouje pouvateom pracujcim v rznych potaovch a databzovch prostrediach vytvori jednotn komunikan prostredie. Jazyk obsahuje prkazy pre definovanie dt (Create Table), pre manipulciu s dajmi (Select, Insert, Delete), pre tvorbu pouvateskch pohadov (Create View) ai. S nstupom koncepcie client-server dostal jazyk aj aliu lohu je normou pre rznych vrobcov databzovch systmov a tak sa stal spojovacm lnkom medzi rznymi systmami. Vetky vek databzov systmy vedia dnes realizova dotazy pripraven v jazyku SQL. SQL prkazy: A. Prkazy defincie dt DDL, DDC (Data Definition Commands ) Prkaz, alebo voba CREATE SCHEMA AUTHORIZATION CREATE TABLE - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT - CHECK CREATE INDEX CREATE VIEW ALTER TABLE CREATE TABLE AS DROP TABLE DROP INDEX DROP VIEW Popis Vytvor databzov schmu Vytvor nov tabuku v pouvateskej databzovej schme Obmedzenie, ktor zabezpeuje, e stpec nebude ma nulov hodnotu Obmedzenie, ktor zabezpeuje, e v stpci tabuky nebud duplicitn hodnoty Definuje primrny k tabuky Definuje cudz k Definuje vchodziu hodnotu pre stpec (t. j. hodnotu v prpade ak nie je uren) Obmedzenie pre overenie dt v tabuke Vytvor index pre tabuku Vytvor dynamick podmnoinu riadkov/stpcov z jednej, alebo viacerch tabuliek Modifikuje definciu tabuliek (pridva, aktualizuje a odstrauje atribty alebo obmedzenia) Vytvor nov tabuku na podklade dopytu z pouvateskej databzovej schmy Permanentne (natrvalo) zru tabuku (a teda aj jej dta) Permanentne odstrni index Permanentne odstrni pohad

B, Prikazy na manipulciu dt - DML, DMC (Data Manipulation Commans). Prkaz, alebo voba INSERT UPDATE DELETE Popis Vklad riadok (riadky) do tabuky Modifikuje (aktualizuje) hodnoty v jednej, alebo viacerch riadkoch tabuky Odstrauje jeden, alebo viacej riadkov z tabuky

COMMIT Permanetne uschov zmeny dt ROLLBACK Obnovuje dta v ich originlnej hodnote SELECT - Prkaz na vber dt prkaz: Prkaz, alebo voba SELECT - WHERE - GROUP BY - HAVING - ORDER BY Popis Vyber atribty z riadkov z jednej, alebo viacerch tabuliek alebo pohadov Obmedzuje vber riadkov na zklade podmienky vberu Zoskupuje vybran riadky na zklade jednho, alebo viacerch atribtov Obmedzuje vber zoskupench riadkov na zklade podmienky Zorauje (vytriedi) vybran riadky Pouvaj sa v podmienkach vberu Pouvaj sa v podmienkach vberu Kontroluje, i je hodnota atribtu v stanovench hraniciach Kontroluje, i je hodnota atribtu przdna Kontroluje i hodnota atribtu zodpoved uritmu vzoru Kontroluje, i hodnota atribtu zodpoved niektorej hodnote v zozname Kontroluje, i poddopyt vrti nejak riadky, alebo nie Odstrauje duplicitn hodnoty Vracia poet riadkov s nenulovou hodnotou Vracia minimlnu hodnotu njden v urench stpcoch Vracia maximlnu hodnotu njden v urench stpcoch Vracia set vetkch hodnt v urench stpcoch Vracia priemern hodnotu vetkch hodnt v urench stpcoch

Opertory porovnvania =, <, >, < =, > =, <> Logick opertory AND/OR/NOT pecialn opertory - BETWEEN
- IS NULL - LIKE - IN - EXISTS - DISTINCT

Agregan funkcie COUNT MIN


MAX SUM AVG

Zhrnutie zkladnch kontrukcii jazyka SQL:


Prkazy na definciu dt - DDL:
CREATE TABLE

<meno tabulky>

( <meno stlpca> <typ stlpca> [<pecifikcia atributu>] {,<meno stlpca> <typ stlpca> [<pecifikcia atributu>]} [<pecifikcie tabulky>]

DROP TABLE ALTER TABLE

<meno tabulky> <meno tabulky> ADD <meno stlpca> <typ stlpca>

CREATE SCHEMA <nzov-schemy> AUTHORIZATION <meno>; DROP SCHEMA <nzov schmy> [CASCADE | RESTRICT ] CREATE [UNIQUE] INDEX =<nazov indexu> ON <meno tabulky> ((<meno stlpca> [{<poradie>} {, ((<meno stlpca> {<poradie>]}) [CLUSTER] DROP INDEX <nazov indexu> CREATE VIEW <nazov pohladu> [(nazov stlpca> {, <nazov stlpca>})] AS <vyberovy prikaz> DROP VIEW <meno pohladu> CASCADE | RESTRICT ]

Prkazy pre manipulciu s dtami DML:


SELECTDISTINCT] <zoznam atributov> FROM <meno tabulky> {<alias>} <spojena tabulka>) {, (<meno tabulky> {<alias>} <spojena tabulka>} [WHERE <podmienka] [GROUP BY <atributy zoskupenia> [HAVING <podmienky vyberu skupiny> ] ] [ORDER BY <meno stpca> [<poradie> {, <meno stlpca> [<poradie> ] } ]

<zoznam atributov>::=(* | (<meno stlpca> | <funkcia> (([DISTINCT] <meno stlpca> | *))) {, ( <meno stlpca> | <funkcia> (([DISTINCT] <meno stlpca> | *))) <atributy zoskupenia> ::= <meno stlpca> {, <meno stlpca> } <poradie>::= (ASC | DESC)
INSERT INTO <meno tabulky> [ (<meno stlpca> {, (<meno stlpca>} ) ] VALUES (<kontanta>{, (<kontanta> } ) , (<kontanta> { , (<kontanta> })} <prikaz select>) DELETE FROM <meno tabulky> [WHERE <podmienky vyberu>] UPDATE <meno tabulky>

SET <meno stlpca>=<hodnotovy vyraz> {, <meno stlpca> <hodnotovy vyraz>} [WHERE <podmienky vyberu>]

Kvalitn databzov systm mus zabezpei: Oddelenie defincie dt a prkazov na manipulciu s nimi (kontrola objektovho typu a truktry poas vykonvania operci, vber dt z databzy poda typu objektu, pouvanie rovnakch operci pre rzne mnoiny objektov) Nezvislos dt (logick - zmena dtovho modelu by nemala ovplyvni zmenu programu, fyzick - zmena uloenia dt nesmie vplva na zmenu programu) Procedurlne (SQL zabudovan jazyk) a neprocedurlne rozhranie (programtor mus sm oetri rzne prpady) Minimalizciu redundandancie dt (neopakovanie dt) Ochranu proti nekonzistencii dt (dta uloen v databze musia vyhovova definovanm podmienkam, ktor by sme mohli shrne nazva integritn obmedzenia) Zdieanie dt Bezpen prstup k dtam Integritu dt (integrita dt zko svis s konzistenciou dt a hovor o tom, e databza je sprvna) Objektovo orientovan databzy: V sasnosti nadobdaj stle v vznam netruktrovan objekty (von texty, obrzky, zvuky ap.). Objektov prstupy sa zaali presadzova prostrednctvom objektovo orientovanho programovania (napr. jazyky Smalltalk, C++), neskr sa zaali presadzova aj do koncepcii databzovch systmov (SRBD) a do objektovho navrhovania informanch systmov. daje v objektovo orientovanch databzach nie s urovan len hodnotami zoskupenmi do dtovch truktr, ale s vzahovan k objektom, ktor zodpovedaj entitm relneho sveta. Pojem objekt zaha okrem dajov aj sprvanie sa objektu, t.j. spojenie dajov s programom (dtov modelovanie spojen s funknm alebo procesnm modelovanm). Existuj dva prstupy k tvorbe objektovo orientovanch databz: - rozrenm existujcich relanch systmov (tzv. objektovo relan databza). Tento systm vychdza z presvedenia, e je mon nad relanm systmom vytvori vrstvu objektovch prstupov (tento postup nie je prli efektvny). - vytvorenm novej databzovej technolgie od zaiatku objektov prstupy. Autori tvrdia, e objektovo orientovan SRBD si vyaduj nov spsob uloenia dajov, nov obsluhu transakci, nov drbu verzi objektov a pod. o by mal objektovo orientovan SRBD spa: - aby zabezpeoval nezvislos dajov na vonkajch pamtiach, paraleln prstup pre viacerch pouvateov, spoahlivos dajov a monos kladenia ad-hoc otzok, - aby bol objektovo orientovan, t.j. mal by dovoova existenciu identity objektov, typov alebo tried, zapuzdrenia (objektov a metd), dedenia, polymorfizmu, monos tvorby zloitch objektov, rozritenos, plnos vyerpania variantov vpotov.

[OOP-2] Defincie zkladnch pojmov v OOP: trieda, objekt, rozhranie, dedinos, polymorfizmus, abstraktn triedy, abstraktn metdy, preaovanie metd, dynamick viazanie metd, balk, vhody dedenia, jeho cena, rchlos, vekos a zloitos programu -Objektovo orientovan programovanie (OOP) je metdou na tvorby programov, zaloenej na abstrakcii. Abstraktn dajov typ spojenie dajov a prostriedkov pre manipulciu s nimi definuje mnoinu prpustnch hodnt a mnoinu prpustnch operci s tmito hodnotami. Na reprezentciu abstraktnho dajovho typu sa pouva truktrovan dajov typ trieda. Trieda (class) v OOP programovacieho jazyku Java je mnoina: premennch, ktor sa oznauj tie ako lensk premenn, dtov zloky alebo atribty, ktorch je uloen stav objektu. podprogramov, ktor sa oznauj ako metdy. Metdy manipuluj s lenskmi premennmi a tm menia stav objektu. Metdy popisuj vlastnosti (schopnosti) objektu. Trieda je len ablna (objektov typ) a sama o sebe nem pridelen iadnu pam. Je mon si ju predstavi ako napr. dtov typ int. Dokia nedeklarujeme premenn typu int, tak nm je dan dtov typ k niomu. To ist plat o triede. Trieda je vzor, z ktorho sa jednotliv objekty vytvraj. Deklarcia triedy v jazyku JAVA zana kovm slovom class. Zkladn deklarcia triedy:
class MojaTrieda { //deklarcie vlastnost, kontruktorov a metd }

Detailnejia deklarcia triedy:


rovePrstupu modifiktory class Trieda extends Nadtrieda implements rozhrania { //kontruktory //deklarcie lenskch premennch (vlastnosti) //deklarcie lenskch metd (sprvanie) }

Vo veobecnosti deklarcia triedy me obsahova tieto komponenty v takomto porad: 1. rove prstupu ako public, private at. 2. Meno triedy, poda dohovoru zanajce vekm psmenom. 3. Meno rodiovskej triedy (nadradenej triedy) ak existuje, sprevdzan kovm slovom extends. Trieda me by dediom (podtriedou) iba jednho rodia. 4. iarkou oddelen zoznam rozhran implementovanch triedou ak existuj, sprevdzan kovm slovom implements. Trieda me implementova viacero rozhran. 5. Telo triedy ohranien zloenmi ztvorkami { }

pecifikcia rovn prstupov tried, metd a premennch:


Popis Trieda <nepecifikovan> Prstupn iba v danom balku. public Prstupn vade. lensk premenn a metdy <nepecifikovan> Prstupn pre dan balk a triedu. public Prstupn vade. protected Prstupn v podtriede (ded dan triedu) a v danej triede. private Prstupn iba v danej triede. rove prstupu

Modifiktory tried, metd a premennch:


Modifiktor static final abstract Popis Trieda ???? Z triedy neme by vytvoren podtrieda. Z triedy neme by vytvoren intancia. Premenn static Je lenom triedy (nie je asou intancie triedy). final Hodnota premennej je konen (ned sa meni). transient Premenn nem by serializovan. volatile Premenn nebude optimalizovan kompiltorom (pouva iba niekoko programtorov). Metda static Je lenom triedy (nie je asou intancie triedy). abstract Abstraktn metda - bez implementcie (abstraktn metdy bud popsan neskr) final Implementcia metdy neme by prepsan v podtriede. native Metda pouvan z inho programovacieho jazyka (napr. C). synchronized Vykonvanie metdy je synchronizovan (nad triedou, alebo objektom) - v jednom ase je povolen prstup iba z jednho vlkna.

Deklarcia konkrtnej triedy urenej na prcu s obdnikmi by mohla vyzerala asi takto: trieda obdelnik ma metdy obvod() a obsah(). oznaenie public pred nzvom metdy znamen, e jej premenn s dostupn aj inch tried. oznaenie public pred nzvom triedy znamen, e trieda mus by uloen v samostatnom sbore s nzvom Obdelnik.java

Objekt (object) je dtov prvok, ktor je vytvoren poda konkrtneho vzoru triedy, teda poda objektovho typu. Poda jednho vzoru triedy je mon vytvori ubovon mnostvo objektov, ktor maj rovnak vlastnosti (teda metdy) a mu ma rzne alebo aj rovnak stavy (teda obsah premennch). V zmysle OOP je objekt entita, ktor m: Stav zaha vetky vlastnosti objektu a ich hodnoty Sprvanie ako objekt kon a reaguje v zmysle zmeny stavu a operci, ktor poskytuje

Identitu jednoznan identifikcia objektu Objekty uchovvaj ich stav vo vlastnostiach (v premennch) a sprstupuj svoje innosti prostrednctvom metd (cez funkcie). Metdy pracuj nad stavmi objektov a s pouvan ako mechanizmus pri komunikcii objektov medzi sebou. Vytvorenie objektu znamen vykona dve innosti: deklarova referenn premenn typu Obdelnik, tto premenn sa odkazuje na objekt Obdelnik cez new vytvori v pamti objekt Obdelnik a odkaz na vytvoren objekt priradi do pripravenej premennej Dva prklady deklarcie triedy Obdelnik bez / s vyuitm kontruktoru a) bez kontruktora

pri vytvran novho objektu triedy Obdelnik bola vyuit deklarcia s inicializciou objektu prkazy na vytvorenie novho objektu s v metde main, ktor je sasou triedy Obdelnik b) s kontruktorom

lep spsob deklarcie triedy Obdelnik s kontruktorom. Inicializcia je sasou vytvorenia objektu

kontruktor (constructor) je pecilna metda volan pri vytvran objektu, ktor umouje inicializova dtov prvky objektu. Kontruktor m vdy rovnak meno ako nzov triedy. Encapsulation (zapuzdrenie) skrvanie dt. Zapuzdrenie v OOP zaruuje, e nikto neme priamo pristupova k vntru inch objektov. Objekt navonok sprstupuje len rozhranie, cez ktor (a nijako inak) je mon s objektom pracova. So zapuzdrenm svisia prstupov prva. S znme 4 prstupov rovne: public vone prstupn deklarcie, pre komunikciu triedy s okolm, private skromn deklarcie - prstup maj len metdy vlastnej triedy, protected chrnen deklarcie - mu ich vyuva metdy vlastnej triedy alebo jej potomkovia, static nemus existova iadna intancia triedy Rozhranie (interface) Plat, e interakcia objektov s okolitm svetom sa odohrva prostrednctvom metd. Metdy formuj rozhranie objektu s okolitm svetom. Ako prklad z relneho sveta mono uvies tlaidl na prednom paneli televzie, ktor tvoria rozhranie medzi pouvateom a siastkami vo vntri TV. Stlaenm tlaidla "power" televziu zapneme alebo vypneme. V programovacom jazyku Java je rozhranie dajov truktrou podobnou triede, ktor me obsahova iba kontanty, charaktery metd a vnoren typy. Neobsahuj tel metd. Z rozhran sa nedaj vytvra intancie mu by iba implementovan triedou alebo rozren inm rozhranm. Ak trieda implementuje rozhranie, znamen to, e verejne poskytne svoje innosti cez rozhranie. Definovanie rozhrania je podobn ako vytvranie novej triedy. Deklarcia rozhrania pozostva z prvlastkov, kovho slova interface, mena rozhrania, zoznam rodiovskch rozhran (ak nejak s) oddelench iarkou a tela rozhrania. Napr.:
public interface ZluceneRozhranie extends Rozhranie1,Rozhranie2, rozhranie3 { // deklarcia kontnt double E = 2.718282; // zklad prirodzenho logaritmu // charaktery metd void robNieco (int i, double x); int robNiecoIne(String s);

Vysvetlenie: public indikuje, e rozhranie me poui ktorkovek trieda z akhokovek balka. Implicitne je rozhranie private, teda prstupn iba triedam definovanm v rovnakom balku ako rozhranie. Rozhranie me by rozren inmi rozhraniami, rovnako ako me by rozren trieda alebo podtrieda inej triedy. Triedu me rozirova iba jedna in trieda, rozhranie vak me rozirova ubovon poet alch rozhran. Telo rozhrania obsahuje deklarcie metd zahrnutch v rozhran. Za deklarciou kadej metdy nasleduje bodkoiarka. Neobsahuje iadne zloen ztvorky, pretoe rozhranie neposkytuje implementciu metd, ktor s v om zadeklarovan. Vetky metdy zadeklarovan v rozhran s implicitne public, preto prvlastok public meme vynecha. Rozhranie me obsahova deklarcie kontnt, ktor dopluj deklarcie metd. Vetky hodnoty kontnt definovan v rozhran s implicitne public, static a final. Vetky metdy v rozhran s implicitne abstraktn, preto sa prvlastok abstract nepe pred metdy rozhrania (me sa napsa, ale nie je to potrebn). Implementcia rozhrania pre deklarciu triedy, ktor implementuje rozhranie, treba da do deklarcie triedy klauzulu implements. Trieda me implementova aj viac ako jedno rozhranie, potom za kov slovo implements pte zoznam triedou implementovanch rozhran oddelench iarkou.

Rozhrania a viacnsobn dedinos jazyk Java nepovouje viacnsobn dedenie preto rozhrania poskytuj alternatvu. Plat, e triedy mu dedi iba od jednej triedy, no mu implementova viac ako jedno rozhranie. Vaka tomu objekty mu ma viacer dtov typy: typ svojej vlastnej triedy a typ vetkch rozhran, ktor implementuj. Znamen, e ak je premenn zadeklarovan s typom rozhrania, jej hodnota me odkazova na ktorkovek objekt, ktor je intanciou triedy, ktor implementuje rozhranie. Dedinos je v OOP nazvan schopnos odvodzova nov triedy od existujcich tried. Odvoden trieda od pvodnej triedy ded vetky jej leny, vlastnosti a metdy. Trieda, ktor je odvoden od inej triedy, sa nazva podtrieda (alebo tie odvoden trieda, rozren trieda, dcrska trieda). Trieda, z ktorej je podtrieda odvoden sa nazva nadtrieda (alebo tie nadraden trieda, zkladn trieda, rodiovsk trieda). Okrem triedy Object, ktor nem nadtriedu, m kad trieda iba jednu priamu rodiovsk triedu (jednoduch dedenie). Pri absencii explicitnej nadtriedy, je kad trieda implicitne podtriedou triedy Object. Triedy mu by odvoden od tried, ktor s odvoden od tried, a tak alej, a po konen najvrchnejiu triedu Object. Rodokme kadej triedy vedie teda k rovnakmu praprapra... rodiovi triede Object.

Podstata dedinosti je v tom, e ak chceme vytvori nov triedu a existuje trieda, ktor obsahuje as kdu, ktor potrebujete, mete nov triedu odvodi od existujcej triedy. Takto je mon vyui vlastnosti a metdy z existujcej triedy bez nutnosti ich znova psa. Podtrieda zded lenov (vlastnosti, metdy a vnoren triedy) od nadtriedy. Kontruktory nie s lenmi, preto nie s podtriedami deden, ale kontruktor nadtriedy me by z podtriedy volan. Dedinos sa realizuje cez kov slovo extends (rozrenie):
public class odvodena_trieda extends povodna_trieda { //tu pokracuje kod tela triedy }

Polymorfizmus (mnohotvrnos) je siln mechanizmus zdieania metd. Podstata polymorfizmu je v tom, e odvoden triedy (potomkovia) mu nie len pouva metdy predka, ale me aj meni ich funknos. To znamen, e je rovnak meno metdy v rznych stupoch hierarchie tried, ale metda me by pre kad triedu definovan inak. Inak povedan: polymorfizmus umouje, aby kad objekt v stromov hierarchii objektov volal metdu s rovnakm nzvom. Pritom me ma kad objekt tuto metdu inak definovan. Vsledkom je, e pre kad

objekt v stromov hierarchii bude ma voln metdy in odozvu, avak pre kad objekt vdy tu poadovan. Prekrvanie pouitie toho istho mena pre rzne funkcie (vber funkcie poda aktulneho typu parametra). Vyuitie: rozrenie zdedenej funkcie ohranienie zdedenej funkcie optimalizcia zdedenej funkcie Abstraktn triedy / Abstraktn metdy Abstraktn trieda je trieda, ktor je deklarovan pomocou slova abstract me, ale aj nemus obsahova abstraktn metdy. Z abstraktnch tried nemu by vytvoren intancie, ale mu by z nich vytvoren podtriedy. Abstraktn triedy mu obsahova vlastnosti, ktor nie s static a final, a tie mu obsahova implementovan metdy. Takto abstraktn triedy s podobn rozhraniam s tm rozdielom, e poskytuj konkrtne implementcie, ktor kompletn odovzdvaj svojim podtriedam. Ak by abstraktn trieda obsahovala iba deklarcie abstraktnch metd, bolo by vhodnejie ju radej zadeklarova ako rozhranie. Abstraktn triedy sa najastejie pouvaj na zdieanie ast implementcie, pre podtriedy. Z jednotlivch abstraktnch tried sa vytvraj podtriedy, ktor maj vea spolonho (implementovan asti abstraktnej triedy), ale aj nieo odlin (abstraktn metdy). Z abstraktnch tried sa daj vytvra iba podtriedy, nedaj sa z nich vytvra intancie. Abstraktn trieda me obsahova abstraktn metdy metdy, ktor s zadeklarovan, ale nie s implementovan. Implementcie abstraktnm metdam poskytn potom podtriedy. Abstraktn metda je metda, ktor je deklarovan bez implementcie (bez zloench ztvoriek, ukonen bodkoiarkou), takto:
abstract void presun(double deltaX, double deltaY);

Ak trieda obsahuje abstraktn metdy, trieda sama mus by deklarovan pomocou slova abstract Vi prklad:
public abstract class GrafickyObjekt { // deklarcia vlastnost // deklarcia neabstraktnch metd abstract void kresli(); }

Ak je z abstraktnej triedy vytvoren podtrieda, tak podtrieda zvyajne poskytuje implementcie pre vetky abstraktn metdy z jej rodiovskej triedy. Avak ak nie, tak podtrieda mus by tie zadeklarovan pomocou slova abstract. Prklad abstraktnej triedy V objektovo orientovanch kresliacich aplikciach, mete kresli kruhy, obdniky, iary, Bezierove krivky a vea alch grafickch objektov. Vetky tieto objekty maj vo urit stavy (nap. pozciu, orientciu, farbu ohranienie, vpl) a innosti (napr. presunDo, otoc, zmenVelkost, kresli). Niektor z tchto stavov

a innost s rovnak pre vetky objekty napr. pozcia , farbaVyplne, a presunDo. Ostatn vyaduj rozdielnu implementciunapr. zmenVelkost a kresli. Vetky objekty triedy GrafickyObjekt musia vedie ako sa maj nakresli alebo ako maj zmeni svoju vekos; odliuj sa v tom, ako to urobia. To je vhodn situcia na vyuitie abstraktnej triedy. D sa vyui vhodu podobnosti a zadeklarova vetky grafick objekty tak, aby dedili od abstraktnej rodiovskej triedynapr. ako to robia podtriedy triedy GrafickyObjekt z obrzku dole.

Triedy Obdlznik, Ciara, Bezier a Kruh dedia od GrafickyObjekt

Najprv zadeklaruj abstraktn triedu GrafickyObjekt, ktor vybavte lenskmi premennmi a metdami, ktor s plne zdiean vetkmi podtriedami, akmi s aktulna pozcia a metda presunDo. Trieda GrafickyObjekt tie deklaruje abstraktn metdy, ktormi s kresli alebo zmenVelkost, tieto je potrebn implementova vo vetkch podtriedach, ale v kadej musia by implementovan inm spsobom. Trieda GrafickyObjekt me vyzera takto:
abstract class GrafickyObjekt { int x, y; ... void presunDo(int noveX, int noveY) { ... } abstract void kresli(); abstract void zmenVelkost(); }

Kad neabstraktn podtrieda triedy GrafickyObjekt, ie Kruh a Obdlznik, mus poskytova implementcie metdam kresli a zmenVelkost:
class Kruh extends GrafickyObjekt { void kresli() { ... } void zmenVelkost() { ... } } class Obdlznik extends GrafickyObjekt { void kresli() { ... } void zmenVelkost() { ... } }

Preaovanie metd (overloading) je mechanizmus, ktor umouje definova niekoko metd jednej triedy s rovnakm nzvom, no s rznym potom a typom parametrov. Vhodou preaovania je monos pouitia rovnakho nzvu metdy pre rovnak cie, ale obsahovo rzne sprvanie. Takto meme ma metdy s rovnakm menom, ktor sa vzjomne lia len potom a typom vstupnch premennch (nie vstupnch). Naprklad:
public class Overloading { private int citatel = 5; private int menovate = 5; public int delenie() { return citatel/menovatel; } public int delenie(int novyCitatel, int novyMenovatel) { return novyCitatel/novyMenovatel;

} }

prv metda vyuva na vpoet premenn v defincii triedy, ktor s inicializovan na dan hodnoty. druh, rovnako pomenovan metda, pracuje s dvoma parametrami, ktor prijma a nsledne vracia ich podiel.

Nie je povolen deklarova viac ako jednu metdu s rovnakm nzvom a s rovnak poetom a typom parametrov lebo by ich kompiltor nedokzal rozli. Dynamick viazanie metd V OOP rozliujeme statick a dynamick (virtulne) metdy. Kad metda je implicitne statick metda. Tieto metdy sa neprepisuj odvodenmi triedami. Virtulna metda je prepisovaten v odvodench triedach na rozdiel od static metd. Viazanie (binding) nzvov metd vo volaniach s uritm kdom statick (skor) poas kompilcie dynamick (neskor) v ase vykonvania programu Statick viazanie metd skor vzba (early, static binding) kompiltor vyber z rovnako pomenovanch funkci t, ktor potom a typom argumentov (signatrou) najviac odpoved argumentom pouitm pri volan. rozlenie viacerch funkci s rovnakou signatrov je mon pomocou: o opertora rozsahu platnosti :: o opertorov kvalifikcie . -> OO interpretcia statickej vzby: typ prjemcu sprvy sa uruje u pri preklade (compile time). statick metdy s vemi rchle pri ich vykonvan a ich kd je vemi efektvny Preaenie metd: statick viazanie Nevhoda: v ase prekladu a spjania je potrebn ma k dispozcii vetky moduly (vo forme zdrojovho textu, relatvnych modulov alebo kninc) k preloenmu programu nie je mon prida al kd tento problm rieia virtulne metdy Dynamick viazanie metd neskor vzba (late binding), tzv. inkluzvny polymorfizmus. sprvna funkcia pre realizciu volanie sa vyber a v ase vykonvania programu OO interpretcia: typ prjemcu sprvy sa uruje a pri behu programu (run time). Prekonvanie metd: dynamick viazanie + dedenie Nevhoda: asov neefektvnos nutnos prehadvania tabuky metd danej objektovej hierarchie pre zistenie skutonej adresy poadovanej metdy tieto metdy s pomalie pri vykonvan ako metdy statick Balky (packages) je nzov pre zoskupenie mnoiny svisiacich tried a rozhran. Koncepne je balek podobn prieinkom v potai. Softvr napsan v jazyku Java me pozostva zo stoviek alebo tiscov samostatnch tried, preto je dleit zorganizova ich tak, e svisiace triedy a metdy s zoskupen do balkov.

Aby bolo mon typy ahie njs a pouva, preds konfliktom medzi ich menami a riadi prstup ku nim, zoskupuj sa svisiace typy do balkov. Balek je zoskupenie svisiacich typov poskytujce prstupov ochranu a sprvu mennho priestoru. Pouitie balka sa deklaruje kovm slovom import deklarcia pouitia len jednej triedy:
import java.util.ArrayList;

deklarcia pouitia celho balka:


import java.util.*;

Okrem java.lang ostatn tandardn balky Javy treba explicitne importova Vhody / nevhody dedenia, Dedenie je implicitn znovu pouitie kdu o deden kd je aj v podtriede dostupn bez akejkovek vynaloenej nmahy (protected/public) Vaka dedeniu je poskytovan polymorfn sprvanie Dedenie je najpevnejia zo vetkch vzieb medzi triedami Dedenie me narui funknos podtriedy Vzah dedenia sa ned zmeni za behu programu Dedenie jeho cena, rchlos () Vekos a zloitos programu (...)

OBSAH
OBSAH..........................................................................................................................1 Triedy, objekty a ivotn cyklus objektu........................................................................1 kontruktory a detruktory, .......................................................................................2 pouitie dedinosti a skladania objektov.......................................................................2 Dedinos...................................................................................................................2 Skladanie objektov ...................................................................................................................................3 kombincia metd a rozdiel medzi nimi.....................................................................3 prca s poom, s reazcami, .........................................................................................4 Reazce - String.........................................................................................................4 Polia...........................................................................................................................4 aplikan programy.......................................................................................................5

Triedy, objekty a ivotn cyklus objektu


Tvorba, vyuitie a zruenie objektu, Objekty skutonho sveta maj dve charakteristiky: vetky maj svoj stav a sprvanie. Psy maj stav (meno, farbu, rasu, apett) a sprvanie (brechanie, vrtenie chvostom). Objekty uchovvaj ich stav vo vlastnostiach (v inch programovacch jazykoch sa tie oznauj ako premenn) a sprstupuj svoje innosti prostrednctvom metd (tie nazvan funkcie). Metdy pracuj nad stavmi objektov a s pouvan ako primrny mechanizmus pri komunikcii objektov medzi sebou. Objekty umouj pln interakciu so svojimi metdami, priom skrvaj vntorn stavy. Tto vlastnos je znma ako zapuzdrenie dt zkladn princp objektovo orientovanho programovania.

kontruktory a detruktory,
Vetky java funkcie s stelesnen (obalen) v kontruktoroch a v metdach. Kontruktor mus ma to ist meno ako prslun trieda a vracia void ako svoju nvratov hodnotu. Kontruktor pre triedu Date mus ma meno Date(). Kontruktory sa asto pouva v spojen s opertorom new pri tvorbe intancii danej triedy. Prkaz Date today = new Date(); Kontruktory sa bene preauj, t.j. s overloaded. Dan trieda m bene viac svojich kontruktorov. Metda nesmie ma to ist meno ako jej prslun trieda a me ma nejak nvratov hodnotu, alebo vrti void na jej miesto. Jeden z rozdielov pri kontruktore je, e kontruktor neme by deklarovan ako static, avak metda me. Kontruktory a metdy je mon parametrizova. V tom prpade je nutn poskytnu ich men a dtov typy. Metdy podobne ako kontruktory je mon preaova, avak musia by navzjom rozliiten, i u poda potu vstupnch parametrov, alebo poda ich dtovho typu. Prkladom preaenia kontruktora me by strom. STROM ako objekt me by inicializovan ako vyklen rastlina s napr. nulovou vkou kontruktor bez argumentu STROM(). Ak ale chceme inicializova naprklad STROM dovezen zo klky tak zavolme kontruktor STROM(int height). Detruktory maj hlavn zmysel pri uvoovan zdrojov alokovanch poas ivotnho cyklu objektu. S automaticky volan ke sa kon ivotn cyklus objektu. Vetky odkazy na na prslun object s zneplatnen.

pouitie dedinosti a skladania objektov


Dedinos
Objektov jazyky umouj kontruova triedy tak, e od prvej (najveobecnejej) sa mu odvodzovat alie pridanm alebo prekrytm (predefinovanm) metd (a prp. pridanm premennch). Toto odvozovanie je mon alej opakova a vsledn triedy s usporiadan do stromovej hierarchie:

Triedy dedia (alebo odvodzuj, angl. inherit) stav a sprvanie zo svojej zkladnej triedy (alebo rodiovskej triedy, predka, angl. superclass). Dedenm vznik nov trieda (alebo odvoden trieda, priama podtrieda, priamy potomok, angl. subclass).

Skladanie objektov
Udrovanie odkazov na in objekty a vyuvanie ich sluieb Predstavme si sekretrku a riaditea ako dva objekty. Sekretrka m rozhranie PsanieNaPotai, kde je napr. opercia napsaList, ale riadite ho nem (nie je to jeho staros). Ale me ma operciu napsatList, pretoe me poiadavku posla inmu objektu - sekretrke. Udrovanie odkazov na in objekty a vyuvanie ich sluieb je skladanie objektov. Takto meme posklada naprklad AUTO. Kde AUTO ako objekt udruje odkazy na metdy objektov PREVODOVKA, MOTOR,...

kombincia metd a rozdiel medzi nimi


Dedinos je prevzatie vlastnost rodiovskej triedy. Objekty pod-triedy sa bud chova rovnako ako objekty nadradenej triedy, ale bud ma pridan funkcionalitu. Je to vlastne rozirovanie funkcionality rodiovskej triedy, me sa vyuva preaovanie metd. Tie me rodiovsk trieda donti podtriedu k vlastnej implementcii niektorch metd, tm e sa zadefinuj ako abstraktn Skladanie (Agregcia) je skladanie objektov z viacerch objektov vyuvajc odkazy na metdy inch objektov. Agregcia vytvra nov funkcionality vybranm metd viacerch tried a ich kombinciou v novej triede. Pri deden podtrieda preber zvyajne implementciu i rozhranie (metdy). Toto prina aj obmedzenia rodiovskej triedy, ktor je programtor nten prija. Pri Agregcii si vyberme iba tie asti triedy, ktor potrebujeme. Prkladom dedenia a agregcie me by postava v hre vojak. Mme tri typy vojakov Sniper, Seal a Marik Kad z nich m ruksak a v om me ma rzne druhy vec.
Dedenie tri typy vojakov, ich spolon rodiovsk trieda VOJAK, veci s typy vojaka.

Agregcia V ruksaku me by grant, mal streln zbra, rzne noe, lekrnika... Vojak me ma pridelen ktorkovek z tchto vec v ktoromkovek momente. A me ma aj nepriestreln vestu ktor zniuje rove zranenia o nejak percento Trieda vojak teda obsahuje aj objekt triedy nepriestrelnaVesta a objekt triedy ruksak, ktor obsahuje odkazy na in veci (objekty)

prca s poom, s reazcami,


Reazce - String
Reazec je jednoducho vzat pole znakov (char). Avak v OOP zvyajne mme tandardn triedu STRING, ktorej intancie s objekty. Teda mme skryt implementciu a metdy na manipulciu s reazcom (spjanie, vyhadvanie pod reazcov...).

Polia
Pole je indexovan typ premennej. Vytvra sa z nejakej primitvnej / zkladnej premennej. Oznauje sa zvyajne ako nzov[index]. Indexovanie tradine zana od 0...N-1, kde N je poet prvkov. Meme vytvra aj polia objektov... alebo naprklad vytvori triedu, ktor bude zdruova objekty jednej triedy a bude nad nimi implementova opercie.

Prkladom dynamicky alokovanho poa je trieda vector v C++ - vntorn implementcia je skryt, m metdy na manipulciu s poom pridanie prvku na koniec, vybratie poslednho prvku, vymazanie prvku,... zrove je mon k prvkom pristupova cez preaen opertor[], priom sa sprva ako jednoduch pole [index]. Podobnm prkladom je aj spomnana trieda STRING, i u v JAVA alebo C++.

aplikan programy
OOP m mnoho aplikci. U v predchdzajcich astiach sme spomnali: Hern postaviky Trieda Vojak Podtriedy Sniper, Seal a Marik Kad z nich m pridelen objekt triedy ruksak a v om me ma rzne druhy vec.
Trieda vojak teda obsahuje aj objekt triedy nepriestrelnaVesta a objekt triedy ruksak, ktor obsahuje odkazy na in veci (objekty) V ruksaku me by grant, mal streln zbra, rzne noe, lekrnika... Vojak me ma pridelen ktorkovek z tchto vec v ktoromkovek momente. A me ma aj nepriestreln vestu ktor zniuje rove zranenia o nejak percento

AUTO - Trieda Agreguje funkcie tried Prevodovka, Motor, Riadenie,... Strom Trieda Podtriedy: Ovocn stromy, Okrasn stromy Podtriedy (Ovocn): erea, Marhua,... Podtriedy (Okrasn): Domce [podtriedy: topo, breza, jea...], Exotick [palma, fikus,]

Prirodzen dedukcia. Pravidl prirodzenej dedukcie pre vrokov a prediktov logiku, korektnos a plnos pravidiel. Systm prirodzenej dedukcie bol navrhnut nemeckm logikom Gentzenom v 30. rokoch minulho storoia. Systm obsahuje mnoho deduknch pravidiel a jednu trivilnu aximu typu alebo . Cie: Odvodzova formuly z inch pomocou deduknch pravidiel. Odvodzovanie oznaujeme nasledovne: 1, 2,n | , kde 1, 2,n s premisy a je dsledok. Dsledok je pravdiv ak sa d najs pomocou pravidiel. Dedukn pravidl Dedukn pravidl maj truktru: premisa1 ............... premisan dsledok 1 ................ dsledokn Kde v hornej sti s premisy v dolnej dsledky. Dopredn a sptn pravidl Dedukn pravidlo sa pouije dopredne len ak vieme, e odvoden nov formuly bud uiton na odvodenie elanho vsledku (cieovej formuly) Dedukn pravidlo sa pouije sptne ak chceme cieov formulu v dkaze nahradi inou, ktor sa ahie doke alebo ak chceme zska dodaton premisy , ktor nam pomu cieov formulu dokza. Vzah prirodzenej dedukcie a smantiky Nech je mnoina prems 1, 2,..., n a je dsledok dokza, e existuje dkaz 1, 2,..., n je ahie ako dokza, e dkaz neexistuje Smantika prediktovej logiky poskytuje opan obtianos ako teria dkazov dokza e je nie dsledkom teda, e je jednoduchie ako dokza opak, teda e

Pravidl prirodzenej dedukcie pre vrokov logiku

Pravidl prirodzenej dedukcie pre prediktov logiku vetky pravidl vrokovej logiky + nov pravidl svisiace s kvantifiktormi a symbolom rovnosti: Pravidl pre rovnos Indrodukn pravidlo pre rovnos (I=) _________ (pravidlo je axima nezvis od prems) t=t Eliminan pravidlo pre rovnos (E=) t1 = t2 [t1/x] ___________________ [t2/x] kde t1, t2 musia by vo pre x voln. Pravidl pre univerzlny kvantifiktor Pravidl s zoveobecnenm pravidiel pre konjunkciu. Km sa vzahuje na dve formuly, sa vzahuje na vetky substitucie premennej termom Teda ak predpokladme platnos formuly pre vetky x potom plat [t/x] pre akkovek term t von pre x vo . Eliminan pravidlo pre univerzlny kvantifiktor (E x) x _______________ [t/x] Introdukn pravidlo pre univerzlny kvantifiktor (I x) premisy pre I x s [x0/x] pre vetky mon hodnoty termu x0 x0 . . . [x0/x] _______________ x

Pravidl pre existenn kvantifiktor S zoveobecnenm pravidiel pre dizjunkciu. Analgia pravidiel plat aj pre a Introdukn pravidlo pre existenn kvantifiktor (I x) [t/x] ___________ x Eliminan pravidlo pre existenn kvantifiktor (E x) x0 [x0/x] . . x ______________________ Korektnos a plnos pravidiel Ako svis systm odvodzovania forml preberan v prvej asti s ich pravdivostnmi hodnotami? Z odvodenia 1, 2,n je nie zrejm, e s vetky pravidl korektn v tom zmysle, e zachovvaj pravdivos odvodench forml poda vyhodnocovacch tabuliek. Veta (korektnos). Nech 1, 2,n a s wff (well formed formula) vrokov formuly. Ak 1, 2,n potom plat 1, 2,n Dkaz 1. Predpokladme, e plat 1, 2,n 2. Indukciou cez dku dkazu pre 1, 2,n . Pouva sa SMI a dokazuje sa vlastnos M(k): Pre vetky odvodenia 1, 2,n (n 0), ktor maj dkaz dky k plat 1, 2,n . Veta (plnos). Vdy ke plat 1, 2,n existuje dkaz prirodzenej dedukcie pre odvodenie 1, 2,n . Dkaz 1. Ak 1, 2,n potom 1 (2 ((n ))) je tautolgia, ak s vetky i pravdiv potom je aj 2. Ak potom Ak je tautolgia potom je aj teorma dkaz je nron 3. Ak 1 (2 ((n ))) potom 1, 2,n Pre 1, 2,n ako premisy opakovane aplikujeme pravidlo (E)

Spojenm viet (korektnos a plnos) dostvame 1, 2,n iff 1, 2,n . Mme dve metdy: Prv je hadanie dkazu o je paradigmom logickho programovania Druh je pomocou pravdepodobnostnch tabuliek uri platnos pravej a avej strany relcie smantickej indukcie. Vpotov zloitos rastie exponencilne s potom elementrnych vrokov. Ned sa poveda, ktor spsob je vhodnej. Korektnos systmu ak 1, 2,n nie s v relcii smantickej indukcie s potom odvodenie 1, 2, n nem dkaz. plnos systmu obsahuje ete silnejie tvrdenie : vd ke a 1, 2,n s v relcii smantickej indukcie s potom odvodenie 1, 2,n m syntaktick dkaz v dokazovacom systme prirodzenej dedukcie.

CTL: Je logika s vetviacim sa asom v kadom asovom momente me nasledova niekoko monch budcich stavov Vznikla z dvodu, e v logike PLTL nemono vyjadri niektor vlastnosti CTL logika umouje vyjadri vlastnosti na nejakej alebo vetkch cestch zanajcich v danom stave s Pre cesty pouva existenn kvantifiktor E a univerzlny kvantfiktor A Kvantifiktor A znamen pre vetky cesty Kvantifiktor E znamen existuje cesta Path a state formuly: CTL rozliuje medzi state a path formulami State-formula vyjadruje vlastnos v stave Path-formula vyjadruje vlastnos na ceste t.j. postupnosti stavov Syntax CTL:Nech p je atomick vrok. Formuly CTL s stavov (state) formuly. State- formuly spaj pravidl: 1. p je state- formula 2. Ak je state- formula potom je tie stateformula 3. Ak a s state- formuly potom aj s state- formuly 4. Ak je path-formula potom E a A s stateformuly Path -formuly spaj pravidl: 1. Ak je state-formula potom X je pathformula 2. Ak a s state-formuly potom U s path formuly 3. Vetko in nie je path-formula Opertory X a U maj rovnak vznam ako v logike PLTL a vyjadruj vlastnos na ceste Poda bodu 4 defincie pre state -formuly mus opertorom X a U predchdza niektor z opertorov A alebo E ( aby formula CTL bola state-formula) Opertory A a E meme poui len na pathform., teda mus za nimi nasledova X alebo U. Formuly, ktor nie s CTL: E(x=1 AX(x>3)), EX(trueU(x=1)) Prv nie je preto, lebo x=1 AX(x>3) je nie path-formula. Druh preto, lebo trueU(x=1) je path-formula a preto U mus predchdza A alebo E Smantika CTL:Nech p je atomick vrok, K Kripkeho truktra,s S,, s CTL stateformuly a je pathformula, Path(s) = { S | [0] = s}. Relcia je definovan: s p iff p L(s) s iff neplat s s iff (s) (s) s iff (s) (s) sE iff ak existuje Path(s), e sA iff pre vetky Path(s) sEX iff Path(s) tak, e [1] sAX iff Path(s) tak, e [1] sA( U ) iff Path(s).( j0.( [j] ( k 0k<j. [k] ))) sE( U ) iff Path(s).( j0.( [j] ( k 0k<j. [k] ))) Aximy: EF EX(EF), AF AX(AF), EG EX(EG), AG AX(AG), E(U) ( EX E(U)), A(U) ( AX A(U))

Podobne ako v logike LTL kde plat pre akkovek cestu nasl. ekvivalen.:F( )F F V logike CTL plat podobn axima pre, ktorkovek stav: EF( ) EF EF Pozor! Neplat podobn ekvivalencia pre A: AF( ) AF AF Odvodenie AF: Prv tyri aximy mme odvodi z poslednch dvoch. Naprklad AF (poda defincie AF) A(true U) (poda aximy pre A( U )) (true AX(A(true U))) (prediktov kalkul, defincia AF) AX(AF ) Odvodenie AG:Pomocou predchdzajceho vsledku odvodme aximu pre EG EG ( poda defincie EG) AF (pouijeme odvodenie pre AF) ( AX(AF)) (prediktov kalkul) AX(AF) (definicie AX) EX((AF)) (defincie EG) EX(EG ) Plat veta: Mnoina temporlnych opertorov CTL je adekvtna (vetky formuly CTL sa daj pomocou nej vyjadri) ak obsahuje aspo jeden z opertorov {AX, EX}, aspo jeden z opertorov {EG, AF, AU} a EU Znakovac algoritmus: 1. Dekomponova formulu na podformuly a induktivn oznai uzly grafu takmi podformulami, ktor v danom uzle platia. 2. Pre kad tak podformulu analyzova graf a vyvodi jej pravdivos v uzle grafu poda vznamu opertorov a pravdivostnych hodnt jej podforml. lohy verifikcie a) Dan je model M stav s0 a formula . Vsledok model ckeckingu: 1. no ak M,s0 2. nie ak M,s0 b) Dan je model M a CTL formula najs vetky stavy s modelu, v ktorch je formula splnen. loha a) automaticky vyplva z b)- sta zisti i s0 patr do vstupnej mnoiny stavov lohy b). Algoritmus verifikcie: Vstup: model M a CTL formula , Vstup: mnoina stavov M splujcich . Znakovac algoritmus verifikcie:

Nech je podformula a stavy modelu splujce vetky priame podformuly u boli oznaen. (Priama podformula je formula maximlnej dky). Ktor stavy modelu oznakujeme podformulou ? Ak je: - elementrny vrok p: ozname stav s s p ak p L(s). - 1 2: ozname stav s s 1 2 ak u bol oznaen s 1 a 2. - 1: ozname stav s s 1, ak ete nebol oznaen s 1 - AF 1: ak ktorkovek stav je oznaen s 1, ozname ho s AF 1, opakujeme: ozname kad stav s AF 1, ak vetky jeho nasledujce stavy s oznaen s AF 1 -E[1 U 2]: ak ktorkovek stav s je oznaen s 2 ozname ho s E[1 U 2]. opakujeme: kad stav oznaen s 1 , ktor m aspo jeden nasledujci stav oznaen E[1 U 2] ozname s E[1 U 2] - EX 1: kad stav, ktorho nasledujci stav je oznaen s 1 ozname s EX 1 Znakovac algoritmus sa vykon pre vetky podformuly , vtane samotnej. Vsledkom s stavy oznaen s . Znakovac algoritmus zloitos: O(k.m.(m+n)) k je poet opertorov vo formule, m je poet stavov modelu, n je poet prechodov modelu Techniky rieenia problmu explzie stavov Problm explzie stavov Znakovac algoritmus je linerny vzhadom k vekosti modelu Samotn model me by vemi vek- poet stavov narast exponencilne s potom komponent modelu (napr. 10 komponent kad s 10 stavmi m za nsledok model s 1010 stavmi). Takto exponencilne narastanie stavov sa tie vol state explosion problem V sasnosti nem tto loha veobecn rieenie Techniky rieiace problm explzie stavov 1. inn dtov truktry - usporiadan binrne rozhodovacie diagramy (reprezentuj mnoiny stavov nie individulne stavy). 2. Abstrakcie abstrahuj sa premenn, ktor s nie dleit pre formulu, ktor sa verifikuje. 3. Redukcia iastonho usporiadania pre verifikovan formulu sa tvoria ekvivalentn cesty, redukcia spova v tom, e sa verifikuje formula len na jednej takejto ceste. 4. Indukcie technika sa pouva v prpade vekho potu identickch komponent. 5. Kompozcia problm sa rozdel na iaston podlohy, ktor sa potom rieia samostatne.

Verifikcia programov. Floydova metda, Hoarov trojice, dokazovacie pravidl.


Verifikcia programov na rozdiel od verifikcie modelov pracuje na metdach, ktor: s zaloen na dkazoch nekontroluje sa kad stav do ktorho sa me systm dosta. Namiesto toho sa zostroj dkaz, e systm spa podmienku s poloautomatick na rozdiel od verifikcie modelov, ktor bola plne automatick, obsahuje verifikcia programov niektor kroky, ktor vyaduj inteligenciu a nemu by vykonan potaom ako aj pri verifikcii modelov sa kontroluj vlastnosti programu namiesto jeho sprvania pouvaj sa na iastkov fragmenty kdu hovorme o verifikcii sekvennch transformanch programov program be na jednom procesore (iadne sbene beiace programy), program m vstup a po uritom vpote sa ukon a generuje vstup. Preo pecifikova a verifikova kd? pecifikcia programu je vznamnou sasou dokumentcie. Peme ju v prslunej logike a je to zklad pre robenie dkazov. Verifikovanie programov na zklade formlnej pecifikcie me vrazne skrti dobu trvania vvoja softvru a jeho drbu eliminciou chb vo vvojovej fze. Softvr sa jednoduchie znovu vyuije. Potaov systmy, na ktorch bezpenos sa kladie vek draz (jadrov elektrrne, lietadl), vyaduj aby ich softvr bol pecifikovan a verifikovan tak, aby spal o najprsnejie podmienky. Formlna pecifikcia programov 1. Transformova informatvny popis D v danej aplikanej oblasti do formuly D vyjadrenej v nejakej symbolickej logike 2. Napsa program P, ktor by mal realizova D v nejakom programovacom prostred 3. Dokza, e P spa formulu D . Dleit je pecifikova program pomocou dohodnutho jazyka. Definujme jazyk v Backus Naurovom tvare. Vetko o me by naprogramovan v jazykoch ako C, C++, Java, me by vyjadren aj v tomto jazyku, aj ke nie tak efektvne, pretoe nem iadne objekty, procedry, vlkna, ... Pouva len:

1. celoseln vrazy

E ::= n I x I (-E) I (E
2. Booleovsk vrazy

+ E) I (E - E) I (E * E),

kde n je slo a x je premenn.

B : : = t r u e I false I (!B) I (B&B) I (B||B) I (E<E)


3. Prkazy

C ::= x = E I C;C I i f B {C} else {C} I while B {C}


x = E je priradenie, kde E predstavuje celoseln vraz. Hoarove trojice

( ) P( ) ,
kde , s formuly prediktovej logiky. Formula je podmienka pred vykonanm programu a formula je podmienka po vykonan programu P. prklad:

( x > 0 ) P( y * y < x )
ak program P vykonme v stave, ke x>0, potom po vykonan programu bude urite plati, e y*y<x Smantika splnenia je rzna pre iaston a pln korektnos. iaston korektnos znamen, e nepoadujeme, aby program skonil, ale pri plnej korektnosti poadujeme aby program skonil. iaston korektnos teda hovor, e ak program zaal spajc podmienku , tak ak skon, bude spa podmienku

pln korektnos zaruuje, e ak program zaal spajc podmienku , tak urite skon a bude spa podmienku programu. Ak meme dokza korektnos pomocou logiky peme alebo

asto je jednoduchie najprv dokza iaston korektnos a potom dokza ukonenie

Pre niektor programy potrebuje zavies al typ premennej, tzv. logick premenn. Tento typ premennej sa vyskytuje len v logickch podmienkach, ktor tvoria podmienky pred a po vykonan programu. Nikdy sa nevyskytuje v kde programu. Dokazovacie pravidl (Floyd, Hoare)

Pravidl vdy znamenaj, e na to, aby sme dokzali o je pod iarou, potrebuje dokza o je nad iarou.

You might also like