Vysledky pisomky z predmetu Operacne systemy (december 2001) - Excel

Operačné systémy

(Študijné materiály ku prednáške Operačné systémy a siete určenej pre 2. ročník odboru Matematika. Spracované podľa knihy W.Stallings: Operating Systems, Internals and Design Principles)

Spracoval: doc. RNDr. Peter Mederly, CSc.

Slidy k tejto prednáške sú dostupné tu.

Kapitola 1
Základné pojmy z počítačových systémov

Operačný systém využíva technické prostriedky (hardvér – hardware) tvoriace počítačový systém na poskytovanie služieb používateľovi systému. Preto pred štúdiom operačných systémov je potrebné rozumieť základným princípom fungovania týchto technických prostriedkov.

1.1 Základné časti počítača

Pri najvšeobecnejšom pohľade na počítačový systém je možné rozoznať dve základné zložky: technické prostriedky (hardvér - hardware) a programové vybavenie (softvér - software).

Bežný používateľ počítača pracuje najmä s tzv. aplikačnými programami. Príkladmi štandardných aplikačných programov sú programy na písanie textov (editory, textové procesory), tvorbu tabuliek (tabuľkové procesory) alebo posielanie elektronickej pošty. Medzi špeciálnejšie aplikácie možno zaradiť napríklad program pre evidenciu pracovníkov alebo spracovanie študijnej agendy.

Aplikačné programy pri svojom behu nevyužívajú služby hardvéru priamo, ale pristupujú k nim prostredníctvom služieb poskytovaných operačným systémom.

Hlavnými súčasťami počítača sú procesor, operačná pamäť a časti zabezpečujúce vstup resp. výstup údajov. Počítač môže obsahovať aj viac modulov daného typu (napríklad viac procesorov).

Súčasti počítača sú vzájomne prepojené tak, aby počítač bol schopný plniť svoju základnú úlohu - vykonávať program.

Procesor (processor): riadi činnosť počítača a spracúvajú sa v ňom údaje (dáta). Ak počítač obsahuje len jeden procesor, tento sa zvykne tiež označovať skratkou CPU - Central Processing Unit.

Operačná (hlavná, RAM) pamäť (main memory, central memory): slúži na uloženie údajov a programov. Jej obsah sa po vypnutí elektrického napájania stráca.

Vstupné/výstupné moduly (I/O modules): zabezpečujú prenos údajov medzi počítačom a okolím. Pomocou nich sa k počítaču pripájajú rôzne periférne zariadenia ako napríklad disky, terminály, tlačiarne, klavesnice, sieťové komunikačné zariadenia a ďalšie.

Systémové prepojenia (system interconnections) alebo tiež zbernice (buses): slúžia pre prepojenie jednotlivých súčastí počítača.

Hlavné časti počítača sú znázornené na obr. 1.1.

Jednou z typických činností procesora je čítanie resp. zápis údajov do pamäte. Procesor pri týchto činnostiach využíva dva svoje vnútorné registre. Sú to:

MAR (Memory Address Register): uchováva adresu pamäťovej bunky, z ktorej sa má čítať alebo do ktorej sa má zapisovať.

MBR (Memory Buffer Register): uchováva údaj, ktorý sa má zapísať do pamäte alebo ktorý bol z pamäte prečítaný.

Iné 2 registre sa používajú pri komunikácii s V/V modulmi resp. zariadeniami. Ide o:

I/OAR (I/O Address Register): obsahuje adresu vstupného/výstupného zariadenia, s ktorým má prebiehať komunikácia.

I/OBR (I/O Buffer Register): používa sa pri výmene údajov medzi procesorom a V/V modulom.

Pamäť pozostáva z množiny pamäťových buniek. Pristupuje sa k nim pomocou ich adries. Každá pamäťová bunka obsahuje binárne kódovaný údaj (číslo). Toto číslo môže byť kódom inštrukcie alebo údajom. Zo samotného obsahu pamäťovej bunky nie je možné určiť, či ide o kód inštrukcie alebo o údaj. Interpretácia závisí od kontextu, v ktorom procesor obsah bunky spracováva.

V/V moduly zabezpečujú prenos údajov z periférnych zariadení do procesora resp. pamäte a naopak. Obsahujú vnútorné vyrovnávacie pamäte (buffers) pre dočasné uloženie prenášaných údajov.

1.2 Registre procesora

Registre (registers) sú pamäťové bunky umiestnené obvykle v procesore. Oproti pamäťovým bunkám v operačnej pamäti má k nim procesor rýchlejší prístup. Registre vo všeobecnosti slúžia na uchovávavanie údajov počas ich spracovávavania procesorom. Kapacita registrov je podstatne menšia ako kapacita operačnej pamäte.

Registre procesora možno rozdeliť do dvoch skupín:

Deliaca čiara medzi týmito dvomi skupinami nie je vždy celkom ostrá. Toto rozdelenie je však vhodné pre ďalšiu diskusiu.

Registre prístupné používateľovi

K týmto registrom možno pristupovať z programov písaných v strojovom kóde resp. asembleri, ako aj v niektorých vyšších jazykoch (napríklad jazyk C), a to bez ohľadu na to, či ide o aplikačné alebo systémové programy. Ich vhodným využitím sa znižuje potreba prístupu do pamäte, a tak sa zvyšuje efektívnosť vykonávania programu. Inteligentné kompilátory vyšších programovacích jazykov využívajú registre pre implementáciu niektorých premenných programu.

Typy registrov obvykle prístupných používateľovi sú:

Dátové registre má používateľ k dispozícii pre zápis a čítanie údajov. Môžu byť univerzálne, teda použiteľné pre rôzne typy údajov, alebo určené len pre niektoré typy, napríklad čísla v pohyblivej rádovej čiarke (floating-point). V závislosti od toho môžu s nimi pracovať všetky inštrukcie pre prácu s dátami alebo iba niektoré.

Adresové registre obsahujú adresy pamäťových buniek v operačnej pamäti. Môžu však tiež obsahovať iba časť adresy, ktorá sa použije na výpočet celej adresy. Podobne ako u dátových registrov, môžu byť viac-menej univerzálne, alebo určené len pre niektoré adresné spôsoby. Príkladmi takýchto jednoúčelových adresných registrov sú:

Indexový register (index register) sa používa pri indexovom adresovaní. Pri tomto spôsobe adresovania sa skutočná adresa získa pripočítaním indexu (obsiahnutého v indexovom registri) k nejakej základnej hodnote (base value).

Smerník segmentu (segment pointer) sa používa pri segmentovom spôsobe adresovania. Pri ňom je pamäť rozdelená na segmenty. Segmenty sú bloky pamäťových buniek s premenlivou dĺžkou. Adresa potom pozostáva z odkazu na odpovedajúci segment a posunutia v rámci segmentu, t.j. vzdialenosti od začiatku segmentu (offset). Registre sa používajú pre uloženie adresy začiatku segmentu. Môže existovať viacero takýchto registrov: jeden pre operačný systém a iné pre aplikácie.

Smerník zásobníka (stack pointer). Ak daný počítač umožňuje používateľovi adresovanie zásobníka (stack addressing), potom je zásobník obvykle v operačnej pamäti a jeden register je vyhradený na udržiavanie adresy vrchu zásobníka. To umožňuje používanie inštrukcií neobsahujúcich adresovací operand, ako sú napríklad push a pop.

Podmienkové kódy (condition codes, flags) sú bity, ktoré nastavuje procesor v závislosti od výsledku predchádzajúcej operácie. Napríklad, pri aritmetickej operácii môže byť výsledok kladný, záporný, nula alebo môže prísť k pretečeniu. Okrem toho, že sa výsledok uloží do registra alebo pamäte, nastaví sa aj príslušný podmienkový kód. Tento sa potom môže použiť v rámci operácie podmieneného vetvenia.

Podmienkové kódy sú obvykle súčasťou niektorého resp. niektorých riadiacich registrov. Používateľovi sú obvykle prístupné na čítanie. Nedajú sa však priamo meniť programom.

Riadiace a stavové registre

Viacero registrov sa využíva pre riadenie práce procesora. Väčšina z týchto registrov obvykle nie je pre používateľa prístupná.

Rôzne počítače majú rôznu organizáciu registrov a používajú tiež rôznu terminológiu.

Pre proces vykonávania inštrukcií majú podstatný význam nasledujúce 2 registre:

Čítač inštrukcií obsahuje adresu inštrukcie, ktorá má byť vyvolaná (vytiahnutá - fetched) z pamäte.

Inštrukčný register obsahuje posledne vyvolanú inštrukciu.

Všetky procesory obsahujú tiež register alebo registre známe pod menom stavové slovo programu (Program Status Word - PSW), ktoré obsahujú stavové informácie. Obvykle to sú:

1.3 Vykonávanie inštrukcií

Základnou funkciou počítača je vykonávanie programu. Program pozostáva z postupnosti inštrukcií uložených v pamäti. Práca procesora spočíva vo vykonávaní týchto inštrukcií.

Spracovanie inštrukcie v najjednoduchšom prípade pozostáva z dvoch krokov:

Spracovanie jednej inštrukcie sa označuje ako inštrukčný cyklus (instruction cycle). Tento pozostáva z vyvolávacieho cyklu (fetch cycle) a vykonávacieho cyklu (execute cycle).

Vyvolanie a vykonanie inštrukcie

Na začiatku inštrukčného cyklu procesor prečíta inštrukciu z pamäte. Adresu inštrukcie, ktorú má procesor načítať, si berie vždy z registra PC. Obsah tohoto registra sa po načítaní inštrukcie automaticky zvyšuje. To znamená, že ak počas spracovania inštrukcie nepríde ku zmene obsahu registra PC, po spracovaní inštrukcie procesor načíta ďalšiu inštrukciu v poradí.

Grafické znázornenie inštrukčného cyklu je na obr. 1.2.

Inštrukcia prečítaná z pamäte sa ukladá do inštrukčného registra (instruction register). Inštrukcia obsahuje bity, ktoré určujú, aké činnosti má procesor pri jej spracovávaní vykonať. Tieto činnosti možno rozdeliť do 4 kategórií:

Vykonanie inštrukcie môže v sebe zahŕňať kombináciu viacerých z uvedených činností.

Príklad: Ilustrujme činnosť procesora na jednoduchom príklade. Nech náš hypotetický procesor obsahuje jeden dátový register nazývaný akumulátor (accumulator - AC). Nech jeho inštrukcie i dáta majú dĺžku 16 bitov. Nech aj pamäť je organizovaná po slovách o dĺžke 16 bitov. Nech prvé štyri bity v inštrukcii určujú kód operácie (opcode). Celkove teda existuje 24 = 16 rôznych kódov operácií. Zvyšných 12 bitov nech je vyhradených pre určenie adresy operandu. Pomocou nich sa teda dá priamo adresovať 212 = 4.096 (4K) slov pamäte.

Nech niektoré operačné kódy nášho procesora majú nasledujúci tvar:

0001 = načítanie z pamäte do akumulátora (load AC from memory)

0010 = uloženie obsahu akumulátora do pamäte (store AC to memory)

0101 = pripočítanie hodnoty z pamäte do akumulátora (add to AC from memory)

Na obrázku 1.4 obsahujúcom odpovedajúce časti pamäte a registre procesora je zobrazené vykonávanie časti programu.

Znázornený úsek programu pripočítava obsah slova na adrese 940 k obsahu slova na adrese 941 a výsledok ukladá do slova na adrese 941. Sú na to potrebné tri inštrukcie, v rámci vykonania každej z nich prebehne vyvolávací a vykonávací cyklus.

Ak by náš počítač mal komplexnejšiu množinu inštrukcií, ktoré by napríklad pracovali s viac ako jednou adresou, stačilo by na vykonanie popísanej činnosti menej inštrukčných cyklov.

Priamy prístup do pamäte

Pre odľahčenie procesora je často vhodné, aby výmena údajov medzi pamäťou a V/V zariadením nešla cez procesor, ale priamo. Pre realizáciu takejto výmeny existuje mechanizmus, pomocou ktorého V/V modul získa právo tzv. priameho prístupu do pamäte (direct memory access). V/V modul potom realizuje čítanie resp. zápis do pamäte bez zaangažovania procesora do tohoto prenosu, čím je procesor odľahčený a môže plniť iné úlohy.

1.4 Prerušenia

Prakticky všetky počítače poskytujú mechanizmus, pomocou ktorého rôzne moduly môžu prerušiť štandardný beh procesora. Prerušenie môže spôsobiť bežiaci program, časovač (timer), V/V modul a môže vzniknúť aj ako dôsledok výskytu hardvérovej chyby.

Udalosti, ktoré generujú prerušenie v súvislosti s bežiacim programom sú:

Prerušenia generované časovačom umožňujú operačnému systému vykonávať v pravidelných intervaloch isté činnosti.

V/V moduly generujú prerušenia po úspešnom ukončení V/V operácie alebo pri vzniku chyby.

Prerušenia vznikajú aj pri hardvérových poruchách ako napríklad pri výpadku napätia alebo pri chybe parity v pamäti.

Mechanizmus prerušenia umožňuje v prvom rade zvýšiť efektívnosť práce počítača. Napríklad, väčšina periférnych zariadení je omnoho pomalšia ako procesor. Ak by, povedzme, pri prenose údajov na tlačiareň mal procesor čakať po každom znaku, kým sa vytlačí a až potom poslať na tlačiareň ďalší znak, prestávky v práci procesora by odpovedali stovkám alebo tisíckam inštrukčných cyklov. Procesor by bol teda využitý veľmi neefektívne.

Priebeh V/V operácie v prípade, keď sa nevyužíva mechanizmus prerušenia, je znázornený na obr. 1.5a. Predpokladajme, že používateľský program realizuje niekoľko zápisov na periférne zariadenie volaním systémovej služby WRITE. Medzi jednotlivými volaniami tejto služby bežia úseky kódu 1, 2 a 3, ktoré neobsahujú V/V operácie. Služba WRITE je realizovaná systémovým V/V programom, ktorý zrealizuje vlastnú V/V operáciu. Tento program pozostáva z 3 častí:

Pri takomto spôsobe vykonávania V/V operácií beží teda procesor počas vlastnej V/V operácie realizovanej zariadením “naprázdno”.

Prerušenie a inštrukčný cyklus

Mechanizmus prerušenia odstraňuje tento nedostatok. Pri jeho použití procesor počas vykonávania V/V operácie vykonáva iné inštrukcie. Situácia je znázornená na obr. 1.5b. Keď program zavolá príkaz WRITE, riadenie sa odovzdá V/V programu. V/V program však v tomto prípade pozostáva iba z prípravného kódu a vlastného V/V príkazu. Po týchto niekoľkých inštrukciách sa riadenie opäť vráti do pôvodného programu. Medzitým periférne zariadenie realizuje operáciu, na ktorú dostalo príkaz (napríklad tlačí znak alebo skupinu znakov). Teda V/V operácia prebieha súčasne s vykonávaním inštrukcií v používateľskom programe.

Keď periférne zariadenie ukončí vykonávanie V/V operácie a je pripravené na prijímanie ďalších príkazov, V/V modul, prostredníctvom ktorého je pripojené do systému, vyšle procesoru signál žiadosť o prerušenie (interrupt request). Ako odpoveď procesor pozastaví vykonávanie aktuálneho programu a odovzdá riadenie programu, ktorý sa nazýva obslužný program prerušenia (interrupt handler). Pozastavenie vykonávania programu sa pritom realizuje tak, že sa jeho beh dá po ukončení činnosti obslužného programu prerušenia obnoviť. Bod, v ktorom nastalo prerušenie, je na obr. 1.5b vyznačený znakom x.

Z pohľadu používateľského programu je prerušenie iba prerušením normálnej postupnosti vykonávania inštrukcií. Po zbehnutí obslužného programu prerušenia pokračuje vykonávanie prerušeného programu. Pre používateľský program je prerušenie transparentnou udalosťou, o jeho obslúženie ako i o obnovenie činnosti pôvodného programu sa stará operačný systém.

Mechanizmus prerušenia je založený na tom, že v rámci inštrukčného cyklu existuje okrem vyvolávacieho a vykonávacie cyklu aj prerušovací cyklus (interrupt cycle). V rámci neho procesor zisťuje, či niektorý modul žiada o prerušenie. Ak nie, procesor pokračuje natiahnutím ďalšej inštrukcie vykonávaného programu. Ak áno, procesor pozastaví vykonávanie aktuálneho programu a začne vykonávať obslužný program prerušenia (obr. 1.7).

Aj keď aj mechanizmus prerušenia prináša so sebou nutnosť vykonať nejaké inštrukcie navyše, v porovnaní s vykonávaním V/V operácií bez využitia mechanizmu prerušenia prináša podstatné zvýšenie efektívnosti práce počítačového systému. Grafické znázornenie časových prínosov je na obr. 1.8 a 1.9.

Spracovanie prerušenia

Proces spracovania prerušenia pozostáva pri bližšom pohľade z viacerých krokov. Ich typická postupnosť je na obr. 1.10.

Na úrovni hardvéru to sú:

Je dôležité, aby sa pri vzniku prerušenia odpamätali všetky stavové informácie o prerušenom programe dôležité pre neskoršie obnovenie jeho chodu. Prerušenie totiž nie je podprogram volaný používateľským programom. Môže sa vyskytnúť v ľubovoľnom momente vykonávania používateľského programu.

Viacero prerušení

V počítači môže naraz vzniknúť aj viacero žiadostí o prerušenie, resp. žiadosť o prerušenie môže prísť počas behu obslužného programu pre iné prerušenie. Program môže napríklad počas tlačenia výsledkov dostať údaje zo siete. Tlačiareň požiada o prerušenie vždy po ukončení požadovanej operácie a modul, prostredníctvom ktorého je počítač pripojený do siete, požiada o prerušenie vždy, keď prídu nové údaje.

Pre riešenie problému viacerých prerušení sú možné dva prístupy:

Sekvenčný prístup je založený na zákaze vzniku prerušenia (disable interrupt) počas behu obslužného programu. Žiadosť o prerušenie, ktorá príde v čase, keď je prerušenie zakázané, ostáva v platnosti až do doby, kým jej procesor nebude môcť vyhovieť. Žiadosti o prerušenia sa teda vybavujú v poradí, v akom prichádzajú t.j. sekvenčne. Prístup je ilustrovaný na obr. 1.12a.

Ide o jednoduchý a prehľadný prístup, jeho nevýhodou však je, že neumožňuje selektívne reagovať na rôzne druhy žiadostí o prerušenie. U niektorých sa môže stať, že keď nebudú obslúžené dostatočne rýchlo, môže prísť k strate údajov (napríklad pri údajoch prichádzajúcich zo siete).

Prístup s použitím priorít spočíva v priradení priorít pre jednotlivé žiadosti o prerušenie. Žiadosť o prerušenie s vyššou prioritou spôsobí prerušenie behu obslužného programu, ktorý vznikol na základe žiadosti s nižšou prioritou, a tak sa zabezpečí jej prednostné obslúženie (pozri obr. 1.12b). Na obr. 1.13 je znázornená postupnosť obslúženia žiadostí o prerušenie v prípade 3 zariadení: tlačiarne (priorita 2), disku (priorita 4) a komunikačnej linky (priorita 5), pričom žiadosť o prerušenie od tlačiarne prišla v 10. sekunde vykonávania programu, od komunikačnej linky v 15. sekunde a od disku v 20. sekunde.

Multiprogramovanie

Aj pri použití mechanizmu prerušenia vznikajú situácie, že procesor beží “naprázdno” a nie je teda efektívne využitý. Prichádza k tomu vtedy, keď čas potrebný na vykonanie V/V operácie je väčší, ako je čas potrebný na vykonanie kódu medzi dvomi volaniami V/V operácie (pozri obr. 1.9b). Riešením tohoto problému je umožniť viacerým používateľským programom byť aktívnymi naraz.

Ak by napríklad boli súčasne aktívne dva programy, z ktorých jeden by obsahoval viacero prenosov z pamäti na disk a druhý mal prevažne výpočtový charakter, s minimálnym množstvom V/V operácií, procesor by mohol začať vykonávať prvý program, vyvolať V/V operáciu a kým táto neskončí odovzať riadenie druhému, na výpočty náročnému programu. Po skončení prvej V/V operácie by sa riadenie odovzdalo znovu prvému programu, ktorý by vyvolal ďalšiu V/V operáciu a znovu odovzdal riadenie. Takýmto spôsobom by prišlo k optimálnemu využitiu kapacít procesora.

Vo všeobecnosti, keď má procesor spracovávať viacero programov, postupnosť, v ktorej sú programy vykonávané bude závisieť od ich relatívnej priority, ako aj od toho, či čakajú na dokončenie V/V operácie. Po prerušení vykonávaného programu sa riadenie odovzdá do obslužného programu prerušenia. Keď obslužný program ukončí svoju činnosť, riadenie sa nemusí vrátiť hneď prerušenému programu, ale môže byť odovzdané inému čakajúcemu programu, ak má tento vyššiu prioritu. Takýto prístup, pri ktorom je naraz vykonávaných viacero programov, ktorým je striedavo odovzdávané riadenie, sa volá multiprogramovanie (multiprogramming).

1.5 Hierarchia pamätí

Pri návrhu pamäte počítača sa návrhár musí zaoberať 3 otázkami:

Na otázku o veľkosti neexistuje jednoznačná odpoveď. Aplikácie vedia využiť hocijako veľkú pamäť.

Rýchlosť pamäte by mala odpovedať rýchlosti procesora, aby tento nemusel čakať na načítavanie inštrukcií alebo údajov.

Cena pamäte musí byť primeraná k cene ostatných súčastí počítača.

Pre implementáciu pamäťového podsystému existuje viacero technológií. Pre všetky však platia nasledujúce pravidlá:

Návrhár počítača teda stojí pred dilemou: z hľadiska kapacity a ceny na jeden bit chce navrhnúť čo najväčšiu pamäť. Aby sa však dosiahla dostatočná výkonnosť, musí skôr použiť drahšiu a menšiu pamäť s krátkou dobou prístupu.

Východiskom z tejto dilemy je využitie nie jedného, ale viacerých pamäťových komponentov postavených na rôznych technológiách. V súčasnosti existujúce technológie vytvárajú nasledujúcu hierarchiu:

Pri prechode hierarchiou pamätí smerom zhora nadol možno pozorovať, že: Vrchná časť v pamäťovej hierarchii pozostáva z rýchlejších a drahších pamäťových prvkov s menšou kapacitou. V spodnej časti sú prvky s väčšou kapacitou, s pomalším prístupom a nižšou cenou. Praktická použiteľnosť takejto organizácie je založená na rôznej frekvencii prístupu procesora k jednotlivým zložkám pamäťového podsystému.

Táto rôzna frekvencia prístupu procesora vychádza z platnosti princípu lokálnosti prístupov (locality of reference). Tento princíp hovorí, že počas vykonávania programu majú prístupy procesora k inštrukciám a údajom tendenciu vyskytovať sa v zhlukoch, teda procesor pri práci s pamäťou obvykle “neskáče” z jedného konca pamäte na druhý, ale pracuje len s jej istou časťou. Je to dané tým, že program obvykle obsahuje cykly a podprogramy.

Najrýchlejšia, najdrahšia a najmenšia časť pamäťového podsystému počítača je tvorená registrami procesora. Obvykle ich je iba niekoľko málo desiatok. O dve úrovne nižšie je operačná pamäť tvoriaca základnú zložku pamäťového podsystému počítača. Každé miesto v operačnej pamäti má svoju jednoznačne určenú adresu.

Medzi operačnou pamäťou a procesorom sa obvykle nachádza cache pamäť. Je to rýchla pamäť s menšou kapacitou, ktorá zvyšuje rýchlosť prístupu procesora k údajom v pamäti. Jej činnosť je založená na platnosti princípu lokálnosti prístupov.

Registre, cache pamäť a operačná pamäť obvykle využívajú polovodičovú technológiu a sú volatilné (ich obsah sa stráca po vypnutí napájania). Trvalejšie uloženie údajov zabezpečujú externé pamäťové zariadenia, z ktorých najdôležitejšie sú pevné disky (hard disks). Patria sem tiež magnetické pásky a optické disky. Tieto externé pamäťové zariadenia, ktoré nie sú volatilné, sa tiež zvyknú nazývať sekundárnou (secondary) alebo pomocnou (auxiliary) pamäťou. Používajú sa na ukladanie programov a dátových súborov. Disky sa používajú tiež ako rozšírenie operačnej pamäte známe pod menom virtuálna pamäť (virtual memory).

Efektívnosť pamäťového podsystému sa dá zvýšiť aj softvérovými prostriedkami. Príkladom je tzv. disková cache. Disková cache je časť operačnej pamäte používaná ako buffer pre dočasné uloženie údajov určených pre disk. Zvyšuje výkonnosť systému v dvoch smeroch:

1.6 Cache pamäť

Cache pamäť je pre operačný systém neviditeľná, spolupracuje však s ostatným hardvérom pre správu pamäte. Navyše, mnohé princípy používané pri schémach virtuálnej pamäte sú použité aj pri cache pamätiach.

Motivácia

Dôvod existencie cache pamäte je nasledujúci: aby procesor mohol vykonať inštrukciu, musí sa aspoň raz obrátiť na pamäť (na jej načítanie). Rýchlosť vykonávania inštrukcií je teda jednoznačne limitovaná časom potrebným na prístup do pamäte. Toto obmedzenie je už dlhý čas vážnym problémom pretože rýchlosti procesorov rastú rýchlejšie ako rýchlosti pamätí.

Ideálne by bolo, keby pamäte mohli byť robené rovnakou technológiou ako registre procesora, čo by zabezpečilo, že pamäťové cykly by trvali približne rovnako ako cykly procesora. Tento prístup je však príliš drahý. Riešením tohoto problému je mala rýchla pamäť nazývaná cache zaradená medzi procesor a operačnú pamäť využívajúca princíp lokálnosti prístupov.

Princípy cache pamätí

Princíp cache pamäte je ilustrovaný na obr. 1.16. Rýchla cache pamäť obsahuje kópiu istej časti pomalšej operačnej pamäte. Keď sa procesor pokúsi prečítať nejaký údaj z pamäte, najprv sa zistí, či tento nie je v cache. Ak áno, prečíta sa z cache. Ak nie, do cache sa z operačnej pamäte prenesie istý blok údajov obsahujúci aj požadovaný údaj a tento sa načíta do procesora. Na základe princípu lokality prístupov je pravdepodobné, že aj nasledujúca žiadosť procesora o údaj bude patriť do bloku, ktorý sa preniesol do cache.

Ak procesor realizuje zápis do cache, musí sa táto zmena následne premietnuť aj do operačnej pamäte.

Na obrázku 1.17 je podrobnejšie znázonená štruktúra podsystému cache/operačná pamäť. Operačná pamäť pozostáva z 2n adresovateľných pamäťových miest - slov (words). Každé slovo má jednoznačne určenú n-bitovú adresu. Pre účely mapovenia do cache je operačná pamäť rozdelená do blokov o pevnej dĺžke K slov. Aj cache pamäť pozostáva z blokov K slov, počet týchto blokov je však podstatne menší ako v operačnej pamäti. V každom momente je v blokoch v cache skopírovaná istá podmnožina blokov operačnej pamäti. Ak sa má do procesora načítať nejaké slovo, ktoré nie je v cache, odpovedajúci blok z operačnej pamäte sa skopíruje do niektorého z blokov v cache a žiadané slovo sa načíta do procesora.

Aby sa dalo zistiť, ktorý blok z operačnej pamäte je skopírovaný do daného bloku v cache, každý blok v cache obsahuje príznak, ktorý určuje jeho obsah. Obvykle je týmto príznakom niekoľko najvyšších bitov adries tých slov z operačnej pamäte, ktoré sú skopírované v danom bloku.

Operácia čítania s využitím cache pamäte je znázornená na obr. 1.18.

Návrh cache pamätí

Pri konkrétnom návrhu cache treba vyriešiť nasledujúce problémy:

1.7 Techniky používané pri V/V operáciách

Pre realizáciu V/V operácií existujú 3 prístupy:

Programové V/V operácie

Pri programových V/V operáciách procesor vydá príslušnému V/V modulu príkaz na vykonanie operácie. V/V modul operáciu vykoná a podľa jej výsledku nastaví odpovedajúce bity vo svojom stavovom registri. Tým jeho aktivity končia a je úlohou procesora, aby testovaním stavového registra V/V modulu zistil, či a ako požadovaná operácia skončila.

Pri tomto prístupe sa procesor musí postarať aj o presun údajov, ktoré sa majú zapisovať na výstupné zariadenie z pamäte resp. uloženie údajov, ktoré prišli prostredníctvom vstupného zariadenia do pamäte.

Typický priebeh programovej V/V operácie je na obr. 1.19a. Z neho vyplýva aj hlavná nevýhoda tohoto prístupu, ktorou je veľké časové zaťaženie procesora vo všeobecnosti neužitočnou prácou (testovanie stavového registra V/V zariadenia v slučke).

V/V operácie riadené prerušením

Pri V/V operáciách riadených prerušením procesor vydá príkaz pre odpovedajúce V/V zariadenie a pokračuje vykonávaním ďalších inštrukcií. Po ukončení V/V operácie V/V modul preruší prácu procesora, ktorý mu môže dať ďalšie príkazy.

Vstupná operácia z hľadiska V/V modulu vyzerá nasledovne: V/V modul dostane od procesora príkaz READ. Na základe tohoto príkazu modul začne čítať údaje z odpovedajúceho periférneho zariadenia. Načítaný údaj sa uloží do dátového registra V/V modulu a následne sa generuje žiadosť o prerušenie. Modul čaká, kým si procesor od neho vyžiada načítaný údaj a keď sa tak stane, umiestni ho na dátovú zbernicu a je pripravený na vykonanie ďalšej operácie.

Vstupná operácia z hľadiska procesora vyzerá nasledovne: Procesor vydá príkaz READ pre odpovedajúci modul a pokračuje vykonávaním postupnosti ďalších inštrukcií. Na konci každého inštrukčného cyklu testuje, či neprišla žiadosť o prerušenie. Ak prišla, procesor odpamätá kontext programu, ktorý práve vykonáva, a začne vykonávať obslužný program prerušenia. V rámci neho si z V/V modulu prečíta načítaný údaj a uloží ho do operačnej pamäte. Potom obnoví kontext programu, ktorého vykonávanie bolo prerušené (alebo nejakého iného) a pokračuje v jeho vykonávaní.

Priebeh načítania bloku údajov pomocou V/V operácie riadenej prerušením je na obr. 1.19b. Takéto V/V operácie sú efektívnejšie ako programové V/V operácie, lebo pri nich neprichádza k neužitočnej práci procesora v čakacej slučke. Aj tieto však dosť zaťažujú procesor, lebo tento musí preniesť medzi V/V modulom a pamäťou každé načítané resp. zapisované slovo.

Priamy prístup do pamäte

Pre V/V operáciách s väčším objemov údajov sa používa tzv. priamy prístup do pamäte (direct memory access - DMA). V tomto prípade, keď procesor chce čítať alebo zapisovať nejaký blok údajov, vydá príkaz modulu DMA (tento môže byť buď samostatný alebo súčasťou V/V modulu). Príkaz obsahuje nasledujúce informácie:

Procesor potom pokračuje vykonávaním ďalších inštrukcií a o V/V operáciu sa ďalej stará modul DMA. Tento zabezpečí presun špecifikovaného bloku údajov, po jednom slove, priamo z alebo do pamäte, bez účasti procesora. Keď sa presun ukončí, požiada procesor o prerušenie. Procesor je teda do V/V operácie zaangažovaný len na začiatku a na konci.

Pri prenosoch do pamäte modul DMA súťaží o zbernicu s procesorom. Môže sa stať, že procesor musí na prístup na zbernicu čakať. Nejde však pritom o prerušenie jeho práce spojené s odpamätávaním kontextu, procesor iba vynechá vykonanie jedného cyklu. Celkový efekt je, že procesor síce pracuje pomalšie počas DMA prenosu, napriek tomu však pre blokové prenosy je DMA podstatne efektívnejší prístup ako prístup založený na programových resp. prerušením riadených operácií.

Kapitola 2
Základné pojmy z operačných systémov

Táto kapitola sa zaoberá stručným popisom histórie operačných systémov, na ktorej ilustrujeme aj základné pojmy a princípy z tejto oblasti.

2.1 Ciele a funkcie operačného systému

Operačný systém je program, ktorý riadi vykonávanie aplikačných programov a slúži ako rozhranie (interfejs – interface) medzi používateľom počítača a hardvérom. Operačný systém má tri ciele:

Operačný systém ako rozhranie medzi používateľom a počítačom

Na hardvérové a softvérové komponenty počítačového systému pri práci používateľa s nejakou aplikáciou sa možno pozerať ako na hierarchický systém pozostávajúci z viacerých vrstiev (obr. 2.1). Používateľ vníma počítač prostredníctvom využívanej aplikácie. Aplikáciu vytvára aplikačný programátor v niektorom z programovacích jazykov. Keby ju mal programovať v strojovom kóde a zaoberať sa bezprostredným programovaním jednotlivých hardvérových komponentov, bola by to mimoriadne obtiažna a u zložitejších aplikácií prakticky neriešiteľná úloha.

Pre uľahčenie tvorby aplikácií sú k dispozícii aj systémové programy. Niektoré z nich sa nazývajú utility. Implementujú často používané funkcie pomáhajúce pri vývoji programov, správe súborov a riadení V/V zariadení. Programátor ich využíva pri vývoji aplikácie a aplikácia pri svojom behu. Najdôležitejším systémovým programom je operačný systém. Tento zakrýva pred programátorom detaily hardvéru a poskytuje mu pohodlné rozhranie pre používanie systému.

Operačný systém štandardne ponúka služby v nasledujúcich oblastiach:

Operačný systém ako správca prostriedkov

Počítačový systém sa dá chápať ako množina prostriedkov pre presun, uchovávanie a spracovanie údajov a prostriedkov pre riadenie týchto funkcií. Zodpovednosť za riadenie týchto prostriedkov má operačný systém.

Operačný systém, keď sa naň pozeráme ako na kontrolný mechanizmus, však má nasledujúce dve špecifiká:

Operačný systém ako program sa líši od ostatných programov len svojim zameraním. Dôsledkom jeho vykonávania procesorom je prideľovanie prostriedkov počítačového systému ostatným programom. Aby však ostatné programy mohli bežať, musí im operačný systém odovzdať riadenie. Teda operačný systém odovzdá riadenie, aby procesor mohol vykonávať “užitočnú” činnosť a potom ho musí zase získať späť, aby mohol prideliť prostriedky počítačového systému iným programom.

Hlavné prostriedky riadené operačným systémom sú na obr. 2.2. Časť operačného systému je uložená v pamäti. Patrí do nej jadro (kernel) pozostávajúce z najčastejšie používaných funkcií operačného systému a ďalej tie časti operačného systému, ktoré sú používané v danom momente. Vo zvyšku operačnej pamäte sú uložené používateľské programy a dáta. Operačný systém rozhoduje o tom, kedy môže daný program použiť V/V zariadenia. Predmetom prideľovania je aj čas samotného procesora.

Vývoj operačného systému

Operačný systém sa počas svojej existencie vyvíja. Dôvody sú nasledujúce:

Potreba pravidelných zmien operačného systému kladie určité nároky aj na jeho návrh. Systém by mal mať modulárnu štruktúru s jasne definovanými rozhraniami a mal by byť dobre dokumentovaný.

2.2 Vývoj operačných systémov

Pre porozumenie problematiky súčasných operačných systémov je užitočné oboznámiť sa s historickým vývojom v tejto oblasti.

Sériové spracovávanie

V období prvých počítačov, teda od konca 40-tych do polovice 50-tych rokov, programátori komunikovali priamo s hardvérom. Žiadny operačný systém neexistoval. Počítače sa ovládali z panelu (konzoly) pozostávajúceho zo svetelnej signalizácie (kontrolné žiarovky), prepínačov, nejakého vstupného zariadenia a tlačiarne. Program napísaný v strojovom kóde bol do počítača zavedený cez vstupné zariadenie (napríklad čítač diernych štítkov alebo diernej pásky). Ak počas vykonávania programu prišlo k chybe, odpovedajúca informácia bola indikovaná svetelnou signalizáciou. Programátor mal možnosť preskúmať obsah registrov a pamäte, a tak zistiť príčinu chyby. Ak program skončil úspešne, výsledok sa vytlačil na tlačiarni.

Dva hlavné nedostatky týchto prvých počítačových systémov boli:

Takáto prevádzka počítača sa charakterizuje ako sériové spracovávanie, lebo používatelia používali počítač postupne jeden za druhým.

Jednoduché systémy s dávkovým spracovávaním (batch systems)

Prvé počítače boli veľmi drahé a preto bolo dôležité využívať ich čo najviac. Pre zlepšenie využívania oproti sériovému spracovaniu bol vyvinutý operačný systém s dávkovým spracovávaním (batchový operačný systém). Batchové operačné systémy boli prvými operačnými systémami vôbec a objavili sa v polovici 50-tych rokov na systémoch IBM 701. Začiatkom 60-tych rokov už viacerí výrobcovia ponúkali na svojich počítačoch tento typ operačných systémov.

Fungovanie batchového operačného systému sa zakladá na existencii špeciálneho programu s názvom monitor. Pri tomto type operačného systému už používateľ nemá priamy prístup k počítaču. Namiesto toho svoj program, nazývaný tiež job, odovzdáva na diernych štítkoch alebo diernej páske operátorovi, ktorý zoradí jednotlivé joby za sebou a vytvorí z nich jednu dávku (batch). Túto dávku alebo batch vloží do vstupného zariadenia a spracuje ju pomocou monitora. Každý program je zostavený tak, že po ukončení svojej činnosti odovzdá riadenie do monitora. Monitor následne začne s načítavaním ďalšieho programu z batchu.

Monitor teda kontroluje sled udalostí odohrávajúci sa v počítači. Jeho podstatná časť je trvalo uložená v operačnej pamäti a pripravená na vykonanie (obr. 2.3). Táto časť monitora sa volá rezidentná (resident monitor). Zvyšok monitora pozostáva z utilít a všeobecných funkcií, ktoré sa do pamäte načítavajú ako podprogramy k používateľskému programu na začiatku každého jobu, ktorý ich požaduje.

Monitor číta zo vstupného zariadenia postupne po jednom jeden job za druhým. Keď je job načítaný, je uložený do oblasti pamäte určenej pre používateľské programy a monitor mu odovzdá riadenie. Po ukončení vykonávania jobu sa riadenie vráti monitoru, ktorý hneď načíta ďalší job. Výsledky predchádzajúceho jobu sa vytlačia na tlačiarni.

Odovzdávanie riadenia medzi monitorom a používateľským programom sa uskutočňuje inštrukciami vetvenia (skokové inštrukcie).

Z vyššieuvedeného vyplýva, že takýto systém rieši problém prestojov počítačového systému, ktorý sa vyskytoval pri sériovom spracovávaní.

Batchový operačný systém však riešil aj problém prípravných fáz pred spustením vykonávania programu. Používal sa na to špeciálny programovací jazyk s názvom job control language (JCL). Jeho úlohou bolo dávať príkazy pre monitor. Použitie JCL budeme ilustrovať na nasledujúcom jednoduchom príklade: Používateľ napísal program v programovacom jazyku FORTRAN. Každá inštrukcia tohoto programu sa nachádzala na jednom diernom štítku a každý údaj, s ktorým mal program pracovať, bol tiež na jednom diernom štítku. Okrem štítkov s fortranovskými inštrukciami a dátami obsahoval job aj štítky s príkazmi v jazyku JCL určenými pre monitor. Tieto začínali znakom $. Celkový tvar jobu bol potom nasledovný:

$JOB
$FTN
.
. štítky s fortranovskými inštrukciami
.
$LOAD
$RUN
.
. štítky s dátami, s ktorými má program pracovať
.
$END

Monitor po prečítaní príkazu $FTN načítal z vonkajšieho pamäťového zariadenia fortranovský kompilátor. Tento následne preložil používateľský program, ktorý si načítal z ďalších štítkov v jobe. Výsledný objektový modul uložil na vonkajšie pamäťové zariadenie a odovzdal riadenie monitoru. Monitor si prečítal inštrukciu $LOAD a na jej základe natiahol do pamäti na miesto, kde bol kompilátor, preložený objektový modul. Na základe príkazu $RUN mu potom odovzdal riadenie. Program, ktorý sa takto začal vykonávať, si potom príkazmi vstupu načítaval štítky zo vstupného zariadenia. Vydanie vstupného príkazu vyvolalo podprogram na realizáciu vstupu, ktorý bol časťou operačného systému. Tento program v rámci svojej činnosti tiež skontroloval, či načítavaný štítok nezačína znakom $, teda či nie je určený ako príkaz pre monitor. Ak na taký štítok natrafil, ohlásil chybu a vrátil riadenie monitoru. Po ukončení vykonávania používateľského programu, či už úspešnom alebo neúspešnom, monitor načítaval štítky zo vstupného zariadenia až kým nenatrafil na štítok začínajúci znakom $, ktorý predstavoval ďalší príkaz preň.

Pre dobré fungovanie takéhoto systému sa ukazovali ako potrebné nasledujúce vlastnosti hardvéru:

Pri batchovom operačnom systéme sa čas procesora delí medzi vykonávanie monitora a používateľského programu. To isté platí aj o využívaní operačnej pamäti: jedna jej časť je prideľovaná monitoru a druhá používateľskému programu. Napriek tomu, že časť prostriedkov počítačového systému je využívaná monitorom a z hľadiska vykonávania používateľských programov predstavuje teda réžiu, priniesli batchové systémy zlepšenie využívania počítačových systémov.

Multiprogramové batchové systémy

Jednoduché batchové systémy zabezpečili automatické zaraďovanie vykonávania jednotlivých jobov jeden po druhom. Aj pri takomto režime však procesor beží často naprázdno. Dôvodom je, že V/V operácie sú podstatne pomalšie v porovnaní s procesorom. Ak by sme mali napríklad program, ktorý načíta záznam z disku, spracuje ho s použitím približne 100 inštrukcií, a potom ho znovu zapíše na disk, vyzerala by časová kalkulácia týchto operácií zhruba nasledovne:

Načítanie záznamu                   0.0015 sekundy
Vykonanie 100 inštrukcií          0.0001 sekundy
Zápis záznamu                         0.0015 sekundy

Celkový čas                            0.0031 sekundy

Využitie procesora 0.0001/0.0031 = 3.2%

V tomto príklade teda procesor strávi viac ako 96% času čakaním kým V/V zariadenie ukončí prenos údajov.

Táto neefektívnosť sa dá zlepšiť uložením viacerých programov (jobov) do operačnej pamäte a prepnutím procesora na vykonávanie iného programu, kým program, ktorý sa vykonával dovtedy, čaká na dokončenie V/V operácie. Takýto prístup sa nazýva multiprogramovanie (multiprogramming) alebo viacúlohovosť (multitasking). Graficky je ilustrovaný na obr. 2.5.

Podobne ako u jednoduchých batchových systémov, aj u multiprogramových batchových systémov sa pre ich dobré fungovanie vyžadujú isté špecifické vlastnosti hardvéru. Ako najdôležitejšie sa ukazujú podpora prerušení od V/V zariadení a DMA. V takomto prípade totiž procesor môže vydať príkaz na V/V operáciu v rámci jedného jobu a kým sa táto operácia dokončí vykonávať inštrukcie iného jobu. Keď sa V/V operácia ukončí, vznikne prerušenie a riadenie sa odovzdá obslužnému programu prerušenia, ktorý je časťou operačného systému. Ten môže následne odovzdať riadenie inému jobu.

Multiprogramové operačné systémy sú podstatne zložitejšie v porovnaní s uniprogramovými. Aby v pamäti mohlo byť pripravené na vykonávanie viacero jobov, musí byť k dispozícii nejaká forma správy pamäte (memory management). Navyše, ak je na vykonávanie pripravených viacero jobov, treba rozhodnúť, ktorý bude vybratý. Na to je potrebný nejaký plánovací mechanizmus (scheduling).

Systémy so zdieľaním času (time sharing systems)

S použitím multiprogramovania sa efektívnosť batchových systémov zvýšila. Objavila sa však ďalšia požiadavka – umožniť používateľom komunikovať s vykonávaným jobom, inými slovami pracovať s počítačom interaktívne.

Možnosť interaktívnej práce je dnes zabezpečená prostredníctvom osobných počítačov. Tieto však v 60-tych rokoch neboli k dispozícii, v tom období prevládali veľké a drahé sálové počítače. Pre umožnenie interaktívnej práce na takýchto počítačoch boli vyvinuté systémy so zdieľaním času.

Systémy so zdieľaním času sú, podobne ako multiprogramové batchové systémy, založené na multiprogramovom princípe. U týchto systémov viacero používateľov súčasne komunikuje so systémom prostredníctvom terminálov. Svoj názov dostali systémy so zdieľaním času podľa toho, že čas procesora je rozdelený medzi jeho používateľov, a teda je nimi vlastne zdieľaný. Operačný systém postupne prideľuje isté množstvo času na vykonávanie každému z používateľských programov. Ak súčasne pracuje n používateľov, každý vníma výkonnosť počítačového systému ako 1/n jeho skutočnej výkonosti (zanedbávajúc čas spotrebovaný na beh operačného systému).

Základné rozdiely medzi batchovým multiprogramovým systémom a multiprogramovým systémom so zdieľaním času sú nasledujúce:
 
 
 
  

 

Batchový systém Systém so zdieľaním času
Základný cieľ Maximalizovať využitie 

procesora

Minimalizovať dobu odpovede systému
Zdroj príkazov pre operačný systém Inštrukcie jazyka JCL 

poskytnuté spolu s jobom

Príkazy zadávané z terminálu
 

Jeden z prvých systémov so zdieľaním času bol Compatible Time-Sharing System (CTSS) vyvinutý na MIT skupinou známou ako Project MAC. Systém bol vyvinutý pre počítač IBM 709 v roku 1961 a neskôr prenesený na počítač IBM 7094.

V porovnaní s dnešnými systémami bol CTSS veľmi jednoduchý. Systém bežal na počítači s operačnou pamäťou 32K 36-bitových slov. Rezidentný monitor z nej zaberal 5K. Keď sa riadenie odovzdalo niektorému z používateľských programov, tento mal k dispozícii zvyšných 27K slov. Systémový časovač generoval prerušenia približne každú 0.2 sekundy. Pri každom prerušení sa riadenie vracalo operačnému systému a ten mohol prideliť procesor ďalšiemu používateľovi. Kvôli zachovaniu stavu prerušeného programu, aby bolo možné jeho opätovné spustenie, prerušený program a jeho dáta boli pred natiahnutím nového programu uložené na disk. Pretože každý job bol vždy uložený od tej istej adresy, nebola potrebná žiadna relokácia adries v čase ukladania jobu do operačnej pamäte. Systém CTSS na počítači 7094 podporoval súčasnú prácu až 32 používateľov.

Systémy so zdieľaním času a multiprogramové systémy priniesli so sebou nutnosť riešiť množstvo ďalších problémov. Prítomnosť viacerých programov v pamäti si vyžadovala riešiť problém ich vzájomnej ochrany, aby napríklad jeden druhému nemodifikovali údaje. Pri súčasnej práci viacerých používateľov musel byť vytvorený aj systém regulujúci prístup k jednotlivým súborom. Bolo treba zaviesť tiež mechanizmy riešenia problémov pri výskyte súčasných pokusov o prístup k rôznym zariadeniam.

2.3 Hlavné výsledky v oblasti OS

Operačné systémy patria medzi najzložitejšie programy aké boli doteraz vytvorené. Za hlavné intelektuálne výsledky dosiahnuté pri ich vývoji možno považovať výsledky v nasledujúcich oblastiach:

Každý z týchto výsledkov v sebe obsahuje isté princípy alebo abstrakcie vyvinuté pre riešenie praktických problémov. Týchto päť oblastí pokrýva všetky základné problémy návrhu a implementácie moderných operačných systémov. V nasledujúcich častiach postupne uvedieme základné myšlienky každej z nich.

Procesy

Pojem procesu je základným pojmom z hľadiska štruktúry operačných systémov. Prvýkrát bol použitý návrhármi systému Multics v 60-tych rokoch. Je o niečo všeobecnejší ako pojem job. Existuje viacero definícií pojmu proces. Napríklad:

Pojem procesu by sa nám mal postupne ujasniť na základe nasledujúcich úvah.

Na kryštalizovanie pojmu procesu mali vplyv tri línie, ktoré sa objavili vo vývoji počítačových systémov, a to multiprogramové batchové systémy, systémy so zdieľaním času a transakčné systému pracujúce v reálnom čase (real time transaction systems).

Základným mechanizmom u multiprogramových batchových systémov, ktorých cieľom bolo dosiahnuť maximálnu efektívnosť práce jednotlivých súčastí počítačového systému, bolo: Pri vzniku signálu indikujúceho ukončenie V/V operácie prišlo k prideleniu procesora inému programu uloženému v operačnej pamäti.

Cieľom systémov so zdieľaním času bolo, aby vedeli dostatočne citlivo reagovať na požiadavky individuálnych používateľov a aby ich vedeli obslúžiť čo najviac.

Treťou vývojovou líniou sú transakčné systémy pracujúce v reálnom čase. Ide o systémy, kde istý počet používateľov vyhľadáva alebo ukladá údaje do nejakej databázy. Príkladom takéhoto systému je systém pre rezerváciu leteniek. Transakčné systémy sa od všeobecných systémov so zdieľaním času odlišujú tým, že sú určené len na využívanie niekoľko málo aplikácií kým systémy so zdieľaním času umožňujú prácu širokej škály aplikácií od vývoja programov, cez spúšťanie programov až po používanie rôznych aplikácií. V oboch prípadoch je však rozhodujúca rýchlosť odozvy systému.

Základným nástrojom systémových programátorov pri vývoji prvých multiprogramových a multiužívateľských operačných systémov bolo prerušenie. Aktivita hociktorého jobu mohla byť pozastavená pri výskyte definovanej udalosti, napríklad pri ukončení V/V operácie. Procesor odpamätal kontext a riadenie bolo odovzdané do obslužného programu prerušenia, ktorý vykonal potrebné aktivity a po obnovení príslušného kontextu odovzdal riadenie prerušenému alebo niektorému inému jobu.

Implementácia uvedeného princípu však bola mimoriadne náročná. V prípade viacerých jobov vznikalo veľké množstvo možných kombinácií ich stavov. Pri neexistencii systematického prístupu programátori riešili vznikajúce problémy ad hoc prostriedkami. Takýto prístup bol veľmi citlivý na drobné programátorské nedostatky, ktoré sa mohli prejaviť len pri niektorých zriedkavých kombináciách stavov. Chyby bolo preto veľmi ťažké diagnostikovať a teda aj odstraňovať. Vo všeobecnosti sa hlavné príčiny chýb dali zhrnúť do 4 skupín:

Riešenie takýchto problémov spočíva v systematickom spôsobe monitorovania a riadenia vykonávania programov. Základom takéhoto systematického prístupu je pojem procesu. Na proces sa môžeme pozerať ako na entitu pozostávajúcu z troch zložiek: Vykonávací kontext (execution context) zahŕňa všetky informácie, ktoré operačný systém potrebuje pre riadenie procesu, a ktoré proces potrebuje pre svoje riadne vykonávanie. Patrí do neho napríklad obsah registrov alebo priorita procesu.

Jeden zo spôsobov implementácie procesov je na obr. 2.9. Znázorňuje situáciu, keď sú v pamäti 2 procesy. Každý z nich má pridelený istý blok pamäte obsahujúci programy, data a kontextové informácie. Každý proces má svoj záznam v zozname procesov vytvorenom operačným systémom. Tento zoznam obsahuje pre každý proces položku, ktorá zahŕňa aj smerník na uloženie procesu v pamäti. Položka môže obsahovať aj časť alebo celý kontext, v prvom prípade sa zvyšok kontextu nachádza v priestore vyhradenom pre samotný proces.

Register indexu procesu (process index register) obsahuje index do zoznamu procesov na aktuálne vykonávaný proces. PC obsahuje adresu nasledujúcej inštrukcie, ktorá sa bude vykonávať. Bázový a limitný register definujú oblasť v pamäti pridelenú procesu. Obsahy PC a všetky odkazy na dáta sú interpretované relatívne k bázovému registru a nesmú presiahnuť hodnotu danú v limitnom registri. Tým sa zabezpečí vzájomná ochrana procesov.

Obrázok znázorňuje situáciu, keď sa vykonáva proces B. Proces A sa vykonával predtým a je dočasne prerušený. Obsahy všetkých registrov v čase, keď prišlo k prerušeniu procesu A, sa uložili do jeho vykonávacieho kontextu. Pri neskoršom prepnutí procesov (process switch) sa opätovne začne vykonávať proces A. Prepnutie procesov pozostáva z uloženia kontextu procesu B a obnovenia kontextu procesu A. Vykonávanie procesu A sa vykoná automaticky po naplnení registra PC hodnotou ukazujúcou do oblasti tohoto procesu.

Proces je teda realizovaný ako dátová štruktúra. Proces môže byť alebo vykonávaný, alebo čakajúci. Celá informácia o stave procesu je uložená v jeho kontexte. Táto štruktúra umožňuje vývoj účinných postupov pre zabezpečenie koordinácie a spolupráce medzi procesmi. Pri zaradení novej vlastnosti do operačného systému, napríklad priority procesu, sa jeho kontext rozšíri tak, aby zahrňoval aj túto vlastnosť.

Správa pamäte

Používatelia potrebujú, aby prostredie, v ktorom pracujú, podporovalo modulárne programovanie a pružné používanie údajov. Správcovia systému potrebujú mať možnosť účinne a systematicky riadiť prideľovanie pamäťových prostriedkov. Aby operačný systém spĺňal tieto požiadavky, musí v oblasti správy pamäťových prostriedkov zabezpečiť nasledujúcich 5 úloh:

Operačný systém plní uvedené úlohy obvykle prostredníctvom tzv. virtuálnej pamäte (virtual memory) a súborového systému (file system). Virtuálna pamäť je prostriedok, ktorý umožňuje programu adresovať pamäť na logickej úrovni, bez ohľadu na kapacitu operačnej pamäte, ktorá je v počítači v skutočnosti k dispozícii. Mechanizmus virtuálnej pamäte je založený na skutočnosti, že pri vykonávaní programu je iba jeho časť skutočne uložená v operačnej pamäti, zvyšok je na disku.

Dlhodobé uchovávanie údajov zabezpečuje súborový systém. Informormácie sú v ňom uložené vo forme súborov (files). Pojem súboru je vhodný tak pre programátora, ako aj pre operačný systém, pre ktorý predstavuje jednotku pre riadenie prístupu a ochrany.

Všeobecná schéma pamäťového systému je na obr. 2.10. Operačný systém a hardvér počítačového systému poskytujú používateľovi predstavu (obr. 2.10a), že pracuje s virtuálnym procesorom pristupujúcim do virtuálnej pamäte. Virtuálna pamäť sa mu môže javiť ako lineárny zoznam pamäťových miest alebo ako skupina segmentov, teda blokov súvislých adries s premenlivou dĺžkou. V oboch prípadoch inštrukcie programu pracujú s virtuálnymi adresami. Izolácia procesov sa dosiahne pridelením neprekrývajúcich sa častí fyzickej pamäte ich virtuálnym pamäťovým priestorom. Zdieľanie častí pamäťového priestoru medzi procesmi sa naopak dosiahne pridelením tých istých častí fyzickej pamäte častiam virtuálnych pamäti týchto procesov. Pre dlhodobé uchovávanie údajov sú používateľovi k dispozícii súbory nachádzajúce sa na pamäťových zariadeniach. Tieto súbory alebo ich časti možno kopírovať do virtuálnej pamäte, kde s nimi môže pracovať program.

Z hľadiska návrhára operačného systému (obr. 2.10b) vyzerá situácia nasledovne: Pamäťový priestor pozostáva z priamo adresovateľnej operačnej pamäte (prístup do nej sa realizuje pomocou strojových inštrukcií) a pomalšej sekundárnej pamäte, do ktorej sa pristupuje nepriamo naťahovaním jej blokov do operačnej pamäte (a ich následným spätným zápisom). Medzi procesorom a pamäťovým podsystémom je zaradený hardvér na mapovanie adries (mapper, address translator). Program sa obracia na miesta v pamäti prostredníctvom ich virtuálnych adries. Tieto sú mapperom mapované na skutočné adresy. Ak je urobený odkaz na adresu, ktorá sa v danom momente nenachádza v operačnej pamäti, je niektorá časť operačnej pamäte zapísaná do sekundárnej pamäte (obvykle na disk) a do pamäte je načítaný blok zo sekundárnej pamäte obsahujúci adresu, na ktorú bol urobený odkaz. Počas tohoto prenosu je proces, ktorý generoval prístup do pamäte, pozastavený.

Ochrana informácií a bezpečnosť

S nárastom používania systémov so zdieľaním času a v poslednom čase i počítačových sietí stúpa naliehavosť riešenia problému ochrany informácií v počítačových systémoch. Vo všeobecnosti treba riešiť problém riadenia prístupu k počítačovému systému a problém prístupu k informáciám v ňom uloženým.

Pokiaľ ide o bezpečnosť a ochranu v oblasti operačných systémov, možno práce v tejto oblasti rozdeliť do troch kategórií:

Plánovanie (scheduling) a riadenie prostriedkov (resource management)

Kľúčovou úlohou operačného systému je správa rôznych prostriedkov, ktoré má k dispozícii a ich prideľovanie aktívnym procesom. Pri tejto činnosti musí operačný systém dodržiavať 3 zásady:

Na obr. 2.11 sú hlavné komponenty operačného systému podieľajúce sa na plánovaní procesov a prideľovaní prostriedkov v multiprogramovom prostredí.

Operačný systém si udržuje istý počet front (queues). Každá z týchto front je vlastne jednoduchý zoznam procesov čakajúci na niektorý z prostriedkov.

Krátkodobá fronta (short-term queue) pozostáva z procesov, ktoré sú v operačnej pamäti pripravené na vykonávanie a čakajú len na pridelenie procesora. Toto pridelenie robí krátkodobý plánovač (short-term scheduler). Jeho základná stratégia spočíva v tom, že postupne prideľuje každému z čakajúcich procesov na istý čas procesor. Takýto postup sa nazýva round-robin algoritmus. Môžu sa pritom zohľadňovať aj priority jednotlivých procesov.

Dlhodobá fronta (long-term queue) je zoznam nových procesov čakajúcich na možnosť použiť počítačový systém. Operačný systém postupne preraďuje procesy z tejto fronty do krátkodobej fronty a tak im umožňuje pridelenie procesora. Pri zaradení do krátkodobej fronty im musí prideliť časť operačnej pamäte.

Pre čakanie na pridelenie V/V zariadení sú zriadené odpovedajúce V/V fronty (I/O queues).

Proces môže priamo využívať služby operačného systému zavolaním niektorej zo systémových služieb (service call). Vstupným bodom do operačného systému v tomto prípade je obslužný program pre systémové služby (service call handler).

Operačný systém získava kontrolu nad procesorom pri vyskyte prerušení (obslužné programy prerušení sú súčasťou operačného systému) i pri volaní systémových služieb. V tomto čase realizuje prideľovanie procesora jednotlivým procesom.

Technické detaily a implementácia vyššieuvedenej schémy sa u jednotlivých druhov operačných systémov líšia.

Štruktúra systému

Zložitosť operačných systémov v priebehu histórie rýchlo narastala. Bolo to dané rozširovaním ich funkčnosti, ako i rastom zložitosti hardvéru.

Systém CTSS vyvinutý na MIT v roku 1963 mal okolo 32.000 36-bitových inštrukcií. OS/360 vyvinutý v IBM o rok neskôr ich už mal viac ako milión a systém MULTICS v roku 1975 už obsahoval viac ako 20 miliónov inštrukcií. Potom síce prišli pre menšie počítače opäť o niečo menšie systémy, ale s narastaním komplexnosti hardvéru a požiadaviek používateľov ich zložitosť prudko vzrástla. Operačné systémy 70-tych rokov vytvorené niekoľkými talentovanými programátormi sú v porovnaní s dnešnými operačnými systémami detské hračky.

Rozsah dnešných operačných systémov a náročnosť ich vývoja majú za následok, že u väčšiny operačných systémov sa dnes stretávame s 3 problémami:

Pre zvládnutie problémov pri vývoji operačných systémov vyplývajúcich z ich zložitosti sa pozornosť sústredila na štruktúru operačných systémov. Zdôrazňovala sa nutnosť modulárneho prístupu s jasne definovanými rozhraniami medzi jednotlivými modulmi.

Pre veľké operačné systémy však modulárny prístup samotný nestačí. Namiesto neho sa prešlo k budovaniu operačných systémov s použitím tzv. vrstvovej architektúry. Pri tomto prístupe sa systém javí ako sústava na seba naukladaných vrstiev. Každá vrstva realizuje istú skupinu funkcií operačného systému. Vrstva využíva pre implementáciu svojich funkcií služby susednej nižšej vrstvy a poskytuje svoje služby vrstve nad sebou. Je snaha navrhovať vrstvy tak, aby zmeny v jednej z nich nevyžadovali zmeny v ostatných.

Najnižšie vrstvy operačného systému komunikujú priamo s hardvérom. Najvyššie zase predstavujú interfejs na používateľa.

Princípy vrstvovej architektúry sú u rôznych operačných systémov implementované rôznym spôsobom.

Jeden z teoretických modelov vrstvovej architektúry operačných systémov vyzerá nasledovne:
  



Level     Name                         Objects Example                                 Operations

13         Shell                     User programming environment                 Statements in shell language
12         User processes     User processes                                         Quit, kill, suspend, resume
11         Directories            Directories                                                Create, destroy, attach, detach
                                                                                                          search, list
10         Devices                External devices, such as printers,              Create, destroy, open, close, read,
                                         displays, and keybords write
9           File system           Files                                                           Create, destroy, open, close, read,
                                                                                                           write
8           Communications Pipes                                                            Create, destroy, open, close, read,
                                                                                                           write

7           Virtual memory             Segments, pages                                 Read, write, fetch
6           Local secondary store   Blocks of data, device channels           Read, write, allocate, free
5           Primitive processes       Primitive processes,                             Suspend, resume, wait, signal
                                                 semaphores, ready list


4          Interrupts                       Interrupt-handling programs                Invoke, mask, unmask, retry
3          Procedures                    Procedures, call stacks, display           Mark stack, call, return
2          Instruction set                Evaluation stack, microprogram           Load, store, add, subtract
                                                 interpreter, scalar and array data
1          Electronic circuits          Registers, gates, buses                         Clear, transfer, activate


 
Prvé štyri vrstvy nepatria operačnému systému, sú tvorené skôr hardvérom. Objavujú sa tu však už niektoré prvky operačného systému, napríklad obslužné programy prerušenia. Typické prvky operačného systému sa objavujú od vrstvy 5.

Až po vrstvu 7 ide o prostriedky súvisiace s jedným procesorom. Od vrstvy 8 sa operačný systém už zaoberá externými objektami ako sú periférne zariadenia, siete a počítače pripojené do siete. Objekty v týchto vrstvách majú už logickú povahu, sú pomenované a môžu byť zdieľané viacerými procesmi.

2.4 Charakteristiky moderných operačných systémov

Rozvoj štruktúry a funkčnosti operačných systémov prebiehal počas celej histórie počítačov, v posledných rokoch sa však vďaka novým trendom v oblasti hardvéru (multiprocesorové systémy, vysokorýchlostné siete, rastúca kapacita pamäťových zariadení), ako i novým aplikáciám (multimédiá, Internet, Web, client/server computing) objavilo v operačných systémoch niekoľko nových prvkov. Možno ich rozdeliť do nasledujúcich kategórií:

Pre operačné systémy s mikrokernelovou architektúrou je typické, že na rozdiel od predchádzajúcich operačných systémov s veľkým monolitickým jadrom realizujúcim väčšinu funkcionality operačného systému, realizuje ich jadro len niekoľko základných funkcií ako sú prideľovanie adresných priestorov, medziprocesová komunikácia a základné plánovanie. Všetky ostatné služby sú zabezpečované pomocou procesov nazývaných servermi pracujúcich v používateľskom režime (user mode). Takýto prístup zjednodušuje implementáciu, poskytuje pružnosť a je vhodný pre distribuované prostredie.

Multithreading znamená, že procesy môžu byť rozdelené do viacerých vlakien (threads), ktoré môžu bežať súčasne. Operačný systém prideľuje procesor vláknam, ostatné prostriedky prideľuje procesom. Prínos vlákien je v tom, že prepnutie procesora medzi vláknami podstatne menej zaťaží procesor ako jeho prepnutie medzi procesmi. Použitie tohoto prístupu je výhodné u aplikácií pozostávajúcich z vykonávania viacerých nezávislých úloh, ktoré nemusia byť zoradené za sebou.

O symetrickom multiprocesingu hovoríme, keď počítačový systém spĺňa nasledujúce podmienky:

Operačný systém v prípade symetrického multiprocesingu prideľuje procesom resp. vláknam jednotlivé procesory počítačového systému (obr. 2.12). Výhodou takýchto systémov pred systémami s jedným procesorom sú nasledujúce: Distribuovaný operačný systém zabezpečuje, že multipočítačový systém, teda systém pozostávajúci z viacerých počítačov spojených do siete, sa používateľovi javí ako jeden počítač.

Najčerstvejšou inováciou v oblasti návrhu operačných systémov je použitie objektovo-orientovaných technológií. Tento prístup uľahčuje úpravy operačného systému bez porušenia jeho integrity, uľahčuje vývoj distribuovaných nástrojov a distribuovaných operačných systémov. 


Počítačové siete

Študijné materiály k úvodu do počítačových sietí možno nájsť tu.

1. Čo je to Internet

V odbornej i populárnej literatúre možno nájsť viacero definícií pojmu Internet. Najstručnejšie a najjednoduchšie by sa Internet dal charakterizovať ako celosvetová počítačová sieť, ktorá sa mimoriadne rýchlo rozširuje. Táto definícia vystihuje Internet pri pohľade z diaľky. Pri podrobnejšom preskúmaní jeho štruktúry zbadáme, že Internet je vlastne sústava navzájom pospájaných nezávislých počítačových sietí, ktoré sú spravované rôznymi organizáciami a ktoré vedia medzi sebou komunikovať.

Z takéhoto pozorovania prirodzene vyplýva otázka, čo umožňuje vzájomnú komunikáciu rôznych nezávislých počítačových sietí. Je samozrejmé, že tieto siete musia byť v prvom rade fyzický prepojené niektorým z médií umožňujúcich prenos informácií, či už ide o kovové vodiče, optické vlákna alebo niektorý z bezdrôtových spôsobov spojenia, ako sú rádiové vlny, mikrovlny alebo laserové lúče. Samotné fyzické prepojenie však na umožnenie vzájomnej komunikácie nestačí. Musí existovať aj dohoda všetkých zúčastnených o spôsobe resp. pravidlách komunikácie a až táto tvorí vlastne glej, ktorý drží Internet spolu. V prípade Internetu je zjednocujúcim prvkom systém dohôd odborne nazývaných protokolmi s označením TCP/IP.

Internet je teda celosvetovým prepojením počítačov umožňujúcim ich vzájomnú komunikáciu. Mimoriadna popularita a rozvoj Internetu vychádza z toho, že formy komunikácie medzi počítačmi v rámci Internetu sú veľmi užitočné pre používateľov počítačov, inak povedané, Internet ponúka svojim používateľom veľmi zaujímavé služby. Týmto službám je venovaný zvláštny príspevok v tomto zborníku. Preto na tomto mieste iba spomeňme, že medzi základné internetovské služby patrí elektronická pošta a World Wide Web.

Pripojenie na Internet zabezpečujú poskytovatelia internetovských služieb, tzv. internetovskí provideri (Internet Service Providers, ISPs). Sú to organizácie, ktoré ponúkajú pripojenie na Internet pre organizácie aj jednotlivcov v rôznom rozsahu služieb a rôznych cenách. Informácie o provideroch na Slovensku možno nájsť napríklad v [3].

Poznámka: slovo internet s malým „i“ sa v odbornej literatúre štandardne používa na označenie systému pozostávajúceho z navzájom prepojených počítačových sietí. Takže Internet je vlastne jedným špeciálnym prípadom internetu.

Ako Internet vznikol

Internet nevznikol zo dňa na deň, Internet sa postupne vynoril ako dôsledok aktivít vykonávaných v oblasti prepájania počítačových sietí v Spojených štátoch od konca 60-tych rokov. Začiatkom týchto aktivít bolo rozhodnutie amerického ministerstva obrany v období vrcholiacej studenej vojny v polovici 60-tych rokov vybudovať riadiacu sieť, ktorá by mala väčšiu šancu prežiť nukleárnu vojnu ako štandardné telefónne siete. Na základe výsledkov niekoľkých výskumných úloh zadaných na riešenie univerzitám na tému vtedy radikálnej myšlienky spojenia založeného na princípe prepájania paketov vypísalo ministerstvo prostredníctvom svojej agentúry pre výskum ARPA súťaž na vytvorenie siete využívajúcej prepájanie paketov a pozostávajúcej z minipočítačov nazývaných IMP (Interface Message Processors) prepojených prenosovými linkami. Pre zvýšenie spoľahlivosti mal byť každý IMP spojený aspoň s dvomi inými IMP, takže keby niektoré z IMP alebo prepojovacích liniek boli zničené, správy by bolo možné presmerovať cez alternatívnu cestu.

Z dvanástich uchádzačov o projekt vytvorenia siete zvíťazila firma BBN z Massachusetts. Kontrakt bol podpísaný v decembri 1968 a prvá experimentálna sieť s názvom ARPANET spájajúca tri univerzity (dve v Kalifornii a jednu v Utahu) a jeden výskumný inštitút v Kalifornii bola uvedená do činnosti v decembri 1969.

ARPANET sa pokladá za priameho predchodcu Internetu. Od prvého okamihu rozsah ARPANETu rýchlo narastal. Postupom času sa ukázala potreba modifikovať jeho pôvodný protokol vzhľadom na to, že nebol vhodný pre prepájanie sietí s využitím rádiovej a satelitnej komunikácie. Z hľadiska dnešného Internetu sa ako jeden z prelomových ukazuje rok 1974, kedy bol vypracovaný model TCP/IP. Na jeho uvedení do života sa podieľala najmä univerzita v Berkeley v Kalifornii. TCP/IP sa stal oficiálnym protokolom na ARPANETe 1.1.1983.

ARPANET bola sieť, do ktorej mali prístup len vojenské organizácie a univerzity resp. výskumné inštitúcie, ktoré mali kontrakty s ministerstvom obrany. Aby sa možnosť vzájomného prepojenia rozšírila, vznikla v roku 1987 z iniciatívy americkej národnej agentúry pre vedu NSF (U.S. National Science Foundation) sieť NSFNET prepájajúca superpočítačové centrá a regionálne siete postupne s tisíckami univerzít, výskumných inštitúcií, knižníc a múzeí. NSFNET bola v jednom bode prepojená aj s ARPANETom. Táto sieť pracovala od začiatku na báze protokolov TCP/IP a jej vznik možno pokladať za priamy počiatok dnešného Internetu, aj keď v tej dobe nebol sprevádzaný žiadnou oficiálnou deklaráciou.

Od 80-tych rokov pokračoval nárast počtu počítačov zapojených do Internetu exponenciálne. V roku 1992 bol do Internetu pripojený miliónty počítač, v januári 1997 bolo do Internetu pripojených 16,1 milióna počítačov v 70 000 počítačových sieťach 194 krajín.

Kto riadi Internet

Podľa charakterizácie v najnovšom čísle časopisu Communications of the ACM [4] je Internet zložitý samoorganizujúci sa systém ovplyvňovaný trhovým mechanizmom, vládnymi agentúrami, obchodom, asociáciami a rôznymi prideľovacími organizáciami a organizáciami na tvorbu štandardov. Niektoré z týchto mechanizmov a útvarov pochádzajú ešte z dôb predchodcu Internetu, ARPANETu. Dnešná komercializácia a globalizácia Internetu si vynucuje zmeny v spôsobe prijímania riadiacich rozhodnutí i v tom, kto ich bude robiť.

Takže odpoveď na otázku „Kto riadi Internet?“ nie je jednoduchá. Isté je, že Internet ako celok nemá prezidenta alebo inak pomenovaného šéfa. Významnou autoritou ovplyvňujúcou smer vývoja Internetu je Internet Society (ISOC). Je to dobrovoľná organizácia podporujúca globálnu výmenu informácií s využitím internetovskej technológie. Na čele ISOC je výbor zložený z volených „trustees“. Tento výbor menuje členov Internet Architecture Board (IAB), ktorý sa zaoberá internetovskými štandardami. Dokumenty o rôznych aspektoch prevádzky Internetu sa volajú RFC (Requests For Comments) a sú k dispozícii aj on-line na rôznych miestach Internetu, napríklad http://www.isi.edu/rfc-editor/.

V súvislosti s riadením Internetu spomeňme ešte, že existujú organizácie koordinujúce aktivity poskytovateľov internetovských služieb. Pre Európu to je organizácia s názvom Reseaux IP Europeans (RIPE).

Kto platí Internet

Jednoduchá odpoveď na túto prirodzenú otázku je taká, že každý si platí za svoju časť. Neexistuje žiadna centrálna celosvetová organizácia, ktorej by používatelia Internetu platili za jeho používanie. Používatelia platia svojim providerom, ktorí zasa platia providerom, ktorí im poskytujú prístup. Okrem vlastných platieb za pripojenie do Internetu treba samozrejme platiť za linky používané pri komunikácii.

Niektorí používatelia Internetu žijú v presvedčení, že prístup do Internetu je zadarmo. Nie je to tak, často sa však stáva, že za služby Internetu neplatí jeho koncový používateľ.

2. Ako pracuje Internet

V prvom priblížení by sme Internet mohli považovať za analógiu telefónneho systému ako iného príkladu celosvetovej komunikačnej siete. Telefónna sieť je však, na rozdiel od Internetu, založená na princípe prepínania okruhov (circuit switched network). To znamená, že pri telefonovaní sa najprv nadviaže spojenie medzi volajúcim a volaným a toto spojenie ostáva vyhradené pre telefonický hovor, až kým nie je ukončený bez ohľadu na to, či rozhovor prebieha alebo obe strany mlčia a teda sa cez sieť neprenášajú žiadne údaje. Z uvedeného vyplýva, že pri takomto prístupe je efektívnosť využitia siete nízka.

Príkladom iného prístupu, ktorý presne odpovedá tomu, ako pracuje aj Internet, je klasická pošta. Tento prístup sa nazýva prepínanie paketov (packet switching) a je založený na tom, že komunikačné kanály alebo spojenia jednotlivých uzlov siete sa nevyhradia výlučne jednej komunikácii, ale sú zdieľané viacerými. Napríklad, po podaní listu sa na poštovom úrade zhromaždia všetky listy pre daný smer a odvezú sa jedným autom do ďalšieho poštového úradu, kde sa roztriedia a pošlú ďalej podľa miesta určenia. Výhodami tohoto prístupu oproti prístupu založeného na prepínaní okruhov je jednak lepšie využitie siete a jednak zamedzenie blokovania siete, ku ktorému prichádza napríklad pri dlhých telefonických hovoroch.

Protokol IP

Komunikáciu medzi počítačmi spojenými v Internete zabezpečujú linky rôznych druhov a špecializované počítače nazývané routre. Ak by sme sledovali našu analógiu s klasickou poštou, tak linkám odpovedajú nákladné vlaky, autá a lietadlá prepravujúce poštové zásielky a routrom zase poštové úrady triediace kam zásielky treba ďalej poslať. Je zrejmé, že tak ako každý poštový úrad nemôže mať priame spojenie s každým poštovým úradom, ani každý router nemôže byť priamo spojený s každým routrom. Aby pošta fungovala, každý poštový úrad musí vedieť, ktorými smermi môže poslať poštu ďalej a musí tiež pre každú konkrétnu zásielku vedieť, ktorým z týchto smerov ju má poslať. Routre v Internete pracujú úplne analogicky: podľa miesta určenia údajov rozhodnú, ktorou linkou ich pošlú ďalej.

Z technických i praktických dôvodov sú údaje posielané prostredníctvom Internetu (napríklad elektronická správa) rozdelené na časti nazývané IP pakety (IP packets). Informácia v rámci jedného paketu obyčajne nepresahuje dĺžku 1500 znakov. Rozdelenie na pakety zároveň zabraňuje blokovaniu siete jedným používateľom, ku ktorému by mohlo prísť, keby sa cez ňu prepravovali dlhé súvislé údaje.

Ak chceme poslať list prostredníctvom pošty, musíme sa správať podľa jej pravidiel. List teda musíme vložiť do obálky, na obálku napísať v určenej forme adresu a nalepiť známku. Obdobne aj posielanie údajov v Internete má svoje pravidlá. Tieto pravidlá resp. skupiny pravidiel sa nazývajú protokolmi.

Adresovanie v Internete a starostlivosť o doručenie paketu údajov na určenú adresu má na starosti systém pravidiel nazývaný protokol IP (Internet Protocol).

Internetovská adresa počítača pozostáva zo 4 čísiel, každé z nich je menšie ako 256. Pri jej zadávaní sa tieto čísla oddeľujú bodkami. Príkladmi internetovských adries sú:

195.112.36.7
128.100.8.53
Štruktúra internetovskej adresy odráža štruktúru Internetu ako siete sietí. Každá sieť pripojená do Internetu má pridelené svoje číslo. Toto číslo dostáva spravidla od providera, ktorý zabezpečuje jej pripojenie do Internetu. Číslo siete tvorí ľavú časť internetovskej adresy počítača nachádzajúceho sa v tejto sieti. Pravá časť adresy je potom tvorená číslom prideleným počítaču v rámci danej siete. Počítač dostáva toto číslo spravidla od správcu siete. Koľko číslic z danej internetovskej adresy odpovedá číslu siete a koľko číslu počítača nie je pevne dané a závisí od veľkosti siete. Vychádzajúc z pôvodnej koncepcie internetovských adries sa to dá zistiť z tvaru adresy, napríklad v adresách, v ktorých prvé číslo je medzi 128 a 191, je prvých 16 bitov (teda časť adresy pred druhou bodkou) adresou siete a druhých 16 bitov (časť adresy za druhou bodkou) adresou počítača. Aplikované na adresu 128.100.8.53 z nášho príkladu: 128.100 je číslo siete a 8.53 je číslo počítača v tejto sieti. Dnes je už situácia v adresovaní zložitejšia a pri určovaní, ktorá časť adresy odpovedá sieti a ktorá počítaču, sa nedá vo všeobecnosti postupovať až tak jednoducho.

Routre v sieti Internet sa zaujímajú pri doručovaní paketu len o časť adresy odpovedajúcej číslu siete, číslo počítača využíva až posledný router priamo pripojený k sieti, pre ktorú sú údaje určené. Ten zabezpečí doručenie údajov správnemu počítaču.

Protokol IP je základom celého fungovania siete Internet. Keď sieť dostane údaje vo forme IP paketu, nepotrebuje žiadne ďalšie informácie na ich doručenie na určenú adresu. Aby však túto základnú službu siete bolo možné čo najpohodlnejšie využívať pre praktické účely, treba vyriešiť niekoľko problémov, ktoré z nej vyplývajú. Sú to najmä nasledujúce problémy:

Tieto problémy už nerieši protokol IP, sú riešené pravidlami patriacimi do vyššej vrstvy súhrnne nazývanými protokolom TCP (Transmission Control Protocol).

Protokol TCP

Pre ilustráciu činnosti protokolu TCP uveďme opäť analógiu z klasickej pošty. Predstavme si, že by sme chceli poslať poštou knihu, ale mali by sme k dispozícii len službu, ktorou sa dajú posielať iba jednotlivé listy. Problém by sa dal vyriešiť tak, že by sme knihu rozobrali na jednotlivé strany a tieto posielali v oddelených listoch. Adresát takejto série listov, ak by chcel knihu opäť poskladať, by sa musel v prvom rade presvedčiť, či dostal všetky strany knihy a potom ich poskladať v správnom poradí. K podobnej situácii prichádza aj v Internete, keď treba poslať správu dlhšiu, ako je možné vložiť do jedného IP paketu. Realizácia takéhoto procesu prebieha podľa súboru pravidiel nazývaného protokolom TCP.

Na strane odosielateľa softvér realizujúci protokol TCP preberie správu, ktorá sa má odoslať a rozdelí ju na menšie časti, ktoré je možné poslať prostredníctvom IP paketov. Každú z týchto častí očísluje, takže na prijímajúcej strane sa dá jednak zistiť, či sa žiadna z častí nestratila a jednak sa dajú poskladať v správnom poradí. Na to, aby poslal cez sieť poradové číslo danej časti, použije svoju vlastnú obálku, na ktorú toto poradové číslo napíše a do ktorej vloží odpovedajúcu časť pôvodnej správy. Túto TCP obálku odovzdá ako údaje protokolu IP, ktorý ju zase vloží do svojej IP obálky a doručí cez sieť adresátovi.

Na strane prijímateľa najprv protokol IP odstráni svoju obálku a odovzdá údaje zabalené v obálke TCP protokolu TCP. Protokol TCP zhromaždí svoje obálky, povyberá z nich údaje a tieto poskladá v správnom poradí. Ak zistí, že niektorá obálka chýba, požiada odosielateľa o jej opätovné poslanie. Keď má všetky údaje pohromade, odovzdá ich aplikácii, ktorá ho požiadala o prenos údajov. V reálnej prevádzke môže okrem straty paketu prísť aj k jeho poškodeniu. TCP má prostriedky pre zistenie takéhoto poškodenia a v prípade, že sa vyskytlo, opäť požiada odosielateľa o nové poslanie príslušných údajov.

Z uvedeného vyplýva, že protokol TCP vlastne zabezpečí, že jeho používateľ má dojem, ako keby medzi odosielateľom a prijímateľom bola vytvorená stála linka, teda ako keby sieť pracovala na princípe prepínania okruhov, hoci v skutočnosti táto sieť, a teda aj prenos po vytvorenej linke, pracuje na princípe prepínania paketov.

Doteraz sme sa pozerali na spojenie vytvorené protokolom TCP ako na spojenie medzi dvomi počítačmi. V skutočnosti sa každé takéto spojenie pripája k danému počítačovému systému prostredníctvom jedného zo softvérovo definovaných prípojných bodov, tzv. portov. Existencia systému portov umožňuje, aby ako cieľ dát, ktoré sa majú daným TCP spojením dopravovať, bol nielen vybraný počítač, ale presnejšie jeden z procesov, ktoré na ňom bežia. Uveďme ako príklad komunikáciu pomocou elektronickej pošty, pri ktorej sa údaje prepravované pomocou spojenia vytvoreného protokolom TCP pre doručenie správy prenášajú štandardne na port 25 prijímajúceho počítača.

Systém DNS

Pri každej komunikácii je potrebné nejakým spôsobom určiť, s kým chceme komunikovať. V Internete sa pre určenie partnera na komunikáciu používa jeho internetovská adresa. Jej číselná podoba, o ktorej sme hovorili vyššie, však nie je veľmi vhodná pre bežného používateľa, pretože sa ťažko pamätá a na prvý pohľad nehovorí nič o tom, kde sa adresát nachádza. Preto sa už od samých počiatkov komunikácie prostredníctvom počítačových sietí používali okrem číselných adries počítačov pre ich označenie aj symbolické mená.

Zavedenie symbolických mien si však vyžaduje vyriešenie niekoľkých problémov. V prvom rade treba zabezpečiť ich jednoznačnosť, teda aby sa nestalo, že dva rôzne počítače budú mať rovnaké meno. Ďalej je potrebné mať k dispozícii spôsob, ako pretransformovať symbolické mená počítačov na ich číselné adresy, pretože sieťový hardvér a softvér pri vlastnom prenose cez sieť potrebuje používať práve tieto číselné adresy.

V prvých dobách Internetu bola situácia pomerne jednoduchá: Existoval centrálny register NIC (Network Information Center), do ktorého používatelia prihlasovali svoje počítače a NIC udržoval zoznam ich mien a adries. Tieto informácie distribuoval pravidelne do každého počítača v sieti. Menami boli jednoduché slová vybrané tak, aby boli jednoznačné. Ak používateľ použil nejaké meno počítača, jeho počítač si ho vyhľadal v tabuľke a nahradil ho číselnou adresou. Ako rozsah Internetu rástol, narastala aj veľkosť súboru s informáciami o menách a adresách a doba potrebná pre zaregistrovanie nového mena ako aj pre distribúciu informácie o menách v sieti. Tento problém sa dal riešiť len distribuovaným systémom, ktorý dostal názov Domain Name System alebo DNS.

Fungovanie systému DNS je založené na zavedení rozdelenia počítačov zapojených v Internete do menších skupín, tzv. domén, ktoré vytvárajú hierarchickú stromovú štruktúru. Na vrchu tejto hierarchie je nepomenovaný koreň stromu a pod ním existovalo k januáru 1997 viac ako 200 domén najvyššej úrovne (top-level domains). Každá z nich je rozdelená na subdomény a tie sú rozdelené na ďalšie subdomény atď.

Domény najvyššej úrovne sú (z historických dôvodov) dvoch druhov: generické a odpovedajúce jednotlivým krajinám. Medzi generické domény patria domény označené com (commercial), edu (educational institutions), gov (the U.S. federal government), int (international organizations), mil (the U.S. armed forces), net (network providers), a org (nonprofit organizations). Tento systém domén vznikol ako prvý v Spojených štátoch a pravidlá pre zaradenie počítačov do týchto domén vychádzali z typu organizácie, ktorej počítače patrili. Počítače vzdelávacích inštitúcií napríklad patrili na najvyššej úrovni do domény edu.

Po rozšírení Internetu aj do oblastí mimo Spojených štátov sa systém domén na najvyššej úrovni rozšíril o domény odpovedajúce jednotlivým krajinám. Ich mená sú tvorené medzinárodne uznanými skratkami a sú definované v norme ISO 3166.

Udržiavateľnosť celého systému a zabezpečenie jednoznačného prideľovania mien spočíva na pravidle, že za každú doménu resp. subdoménu je niekto zodpovedný a len on má kompetenciu organizovať systém subdomén jemu zverenej domény. Ak však vytvorí nejakú subdoménu, musí zároveň jej ďalšie delenie zveriť do kompetencie správcu tejto novej subdomény.

Úplne meno domény vznikne zreťazením mena tejto domény s menami domén po ceste od tejto domény smerom nahor k doméne najvyššej úrovne. Jednotlivé mená domén v tomto reťazci sú oddelené bodkami, pričom doména najvyššej úrovne sa uvádza ako posledná. Teda napríklad meno fmph.uniba.sk označuje doménu fmph pridelenú počítačom Matematicko-fyzikálnej fakulty (skratka je odvodená z Faculty of Mathematics and Physics), ktorá je subdoménou domény uniba pridelenej Univerzite Komenského a tá je už priamou subdoménou domény najvyššej úrovne sk pridelenej Slovensku.

Správca domény môže prideliť, s využítím mena svojej domény, mená konkrétnym počítačom, ktoré chce do nej zaradiť. Ak sa napríklad správca domény fmph.uniba.sk rozhodne pomenovať niektorý z počítačov menom center, bude úplne meno tohoto počítača v systéme DNS mať tvar center.fmph.uniba.sk. Správca domény fmph.uniba.sk sa okrem pomenovania jedného z počítačov MFF UK menom center môže však rozhodnúť vytvoriť katedrám, ktoré majú o to záujem, vlastné subdomény. Každá katedra, ktorá dostala pridelenú subdoménu, si ju sama riadi a pomocou nej pomenováva svoje počítače. Tak môže napríklad pre počítače katedry informatiky vzniknúť subdoména s úplnym názvom dcs.fmph.uniba.sk a v rámci nej môže existovať napríklad počítač alpha.dcs.fmph.uniba.sk.

Prevod mien počítačov pridelených im v rámci systému DNS na ich číselné adresy zabezpečuje systém tzv. name serverov. Sú to počítače, na ktorých sa nachádzajú informácie o tom, ktoré mená odpovedajú akým adresám. Správca domény po pridelení symbolického mena počítaču je povinný zaviesť potrebnú informáciu do odpovedajúceho name servera. Žiadny name server neobsahuje zoznam mien všetkých počítačov v Internete, jednotlivé name servery však medzi sebou spolupracujú tak, že je zabezpečené zistenie adresy odpovedajúcej symbolickému menu hociktorého z počítačov v Internete. Vo všeobecnosti sa dá povedať, že keď používateľ zadá svojmu počítaču meno iného počítača a príkaz na komunikáciu s ním, obráti sa jeho počítač na jemu pridelený name server so žiadosťou o oznámenie adresy odpovedajúcej tomuto menu.

Uveďme na záver tejto časti ešte niekoľko poznámok pre odstránenie potenciálnych nedorozumení v súvislosti so systémom DNS:

Vrstvový model siete Internet

Počítačové siete sú zložité systémy. Na to, aby spoľahlivo fungovali, je potrebné vyriešiť veľké množstvo problémov týkajúcich sa rôznych štandardných i neštandardných situácií, ktoré môžu v počítačovej sieti vzniknúť. Preto aj softvér zaisťujúci prevádzku sietí musí zabezpečovať veľa funkcií a je, pri pohľade naň ako na celok, zložitý. Pre uľahčenie jeho návrhu a implementácie sa tento softvér buduje ako štruktúrovaný, teda zložený z viacerých nezávislých a navzájom spolupracujúcich častí, z ktorých každá plní určenú úlohu. Ako základný prístup sa pritom vo všeobecnosti prijíma tzv. vrstvový model. Tento model spočíva v organizácii sieťového softvéru ako systému na sebe ležiacich vrstiev, pričom každá z vrstiev využíva služby vrstvy nachádzajúcej sa pod ňou a poskytuje služby vrstve, ktorá je nad ňou. Tento softvér beží na jednotlivých počítačoch zapojených do siete. Komunikácia v sieti sa realizuje tak, že medzi sebou komunikujú odpovedajúce si vrstvy v jednotlivých uzloch siete, pričom pravidlá, podľa ktorých táto komunikácia prebieha, sa nazývajú protokolom pre danú vrstvu.

Výmena informácií medzi odpovedajúcimi vrstvami na rôznych komunikujúcich počítačoch zahŕňa jednak servisné údaje predpísané príslušným protokolom, ktoré sú potrebné na splnenie úloh danej vrstvy a jednak vlastné dáta, ktoré vrstva dostala za úlohu preniesť od vyššej vrstvy. Dá sa to charakterizovať aj tak, ako keby každá vrstva vložila dáta od vyššej vrstvy, ktoré má preniesť, do obálky, na ktorú napíše servisné informácie určené pre svoju partnerskú vrstvu na počítači, s ktorým bude komunikovať. Celú obálku potom odovzdá vrstve ležiacej pod ňou, ktorá si ich dá zase do svojej obálky a tak to beží až po najnižšiu vrstvu. Úlohou najnižšej vrstvy je dáta preniesť do ďalšieho počítača v sieti. V ňom prebehne opačný proces, keď údaje postupujú cez jednotlivé vrstvy zdola nahor. Každá z vrstiev si prečíta servisné informácie, ktoré dostala na obálke od partnerskej vrstvy, potom obálku odstráni a jej obsah posunie vyššej vrstve.
Rôzne systémy počítačových sietí používajú rôzne vrstvové modely. Napríklad štandardizovaný referenčný model sieťovej architektúry známy ako ISO Open System Interconnection (OSI) má 7 vrstiev. Pre sieť Internet je charakteristický už spomínaný model založený na skupine protokolov TCP/IP, ktorý má 4 vrstvy s názvami v poradí zdola nahor Host-to-network, Internet, Transport a Application.

Ústredným prvkom je vrstva Internet (jej názov je zhodou okolností rovnaký ako názov celej siete, ale v tomto prípade ide o dve rôzne veci), v ktorej beží protokol IP a ktorá umožňuje počítačom v sieti vysielať do nej pakety s požiadavkou na ich doručenie na zadanú adresu. Úlohou vrstvy Transport, ktorá je nad vrstvou Internet, je, okrem iného, vytvoriť pre ľubovoľné dva počítače v sieti možnosť priamej komunikácie. Najdôležitejším protokolom tejto vrstvy je protokol TCP. Nad vrstvou Transport sa nachádza vrstva Application, ktorá obsahuje všetky vyššie protokoly a ktorá už poskytuje služby bezprostredne používané používateľmi. Patrí do nej napríklad protokol DNS zabezpečujúci fungovanie systému DNS a protokoly ako TELNET pre prihlasovanie sa na vzdialené počítače, FTP pre prenos súborov, SMTP pre elektronickú poštu, HTTP pre sprístupňovanie stránok v systéme WWW a ďalšie. Na najspodnejšej pozícii, pod vrstvou Internet, je vrstva Host-to-Network. Model TCP/IP o nej veľa nehovorí, iba zdôrazňuje, že musí pre daný počítač zabezpečiť možnosť doručovania IP paketov zo siete do vrstvy Internet a naopak. Protokol, pomocou ktorého sa má tak stať, nešpecifikuje.
 
 

Komunikácia prostredníctvom Internetu

1. Úvod

Počítačová sieť Internet dnes poskytuje veľké možnosti tak pre komunikáciu, ako aj pre prístup k informáciám. V tejto časti sa sústredíme na dve v súčasnosti najdôležitejšie služby siete Internet: elektronickú poštu a World Wide Web. Na záver tiež stručne charakterizujeme niektoré ďalšie služby tejto siete.

O službách siete Internet existuje veľké množstvo literatúry. My sa tu sústredíme na princípy ich fungovania a uvedieme základné informácie umožňujúce vyskúšať si niektoré z predstavených služieb.

2. Elektronická pošta

2.1. Základné pojmy: poštová schránka, správa a adresa

Elektronická pošta je analógiou klasickej pošty: umožňuje používateľom výmenu správ. Dá sa povedať, že predstavuje základnú službu počítačových sietí. Princíp jej fungovania je nasledujúci.

Každý používateľ elektronickej pošty má vytvorenú poštovú schránku (mailbox) na niektorom z počítačov v sieti. Do tejto schránky sa ukladajú správy, ktoré daný používateľ dostáva. Správa (message) je analógiou listu v bežnom zmysle: ide o (obvykle) textový dokument, ktorý naviac obsahuje informácie o odosielateľovi, adresátovi, dátume a čase odoslania a pod. Tieto informácie tvoria hlavičku správy (message header), zvyšok je telo správy (message body).

S poštovou schránkou je spojená používateľova adresa, na ktorú mu môžu ostatní používatelia siete posielať správy elektronickou poštou. Adresa používaná v sieti Internet má tvar:

označenie-používateľa@označenie-počítača

pričom označenie používateľa je obvykle (nie je to nutné) spojené s jeho menom, napríklad: novak, jnovak, Jan.Novak, jn pre používateľa Ján Novák. Označenie počítača jednoznačne identifikuje počítač, na ktorom je umiestnená poštová schránka. Ide o meno v systéme DNS (Domain Name System) a ako všetky mená v tomto systéme pozostáva z niekoľkých mien oddelených bodkami, napríklad:

center.fmph.uniba.sk

kde sk je značka pre Slovenskú republiku, uniba označuje Univerzitu Komenského, fmph Matematicko-fyzikálnu fakultu UK (Faculty of Mathematics and Physics) a center je meno konkrétneho počítača na MFF UK v Bratislave.

Takže elektronická adresa Jána Nováka na počítači center by bola (za predpokladu, že na tomto počítači sú schránky pomenované podľa priezvisk používateľov):

novak@center.fmph.uniba.sk

Označenie počítača (časť adresy napravo od @) nemusí vždy označovať konkrétny počítač. Často sa ako označenie počítača používa označenie organizácie, ktorej daný počítač patrí. Táto črta sa využíva čoraz častejšie, pretože takéto adresy sú stručnejšie a zrozumiteľnejšie. V našom príklade by používateľ Novák mohol mať skrátenú adresu:

novak@fmph.uniba.sk

2.2. Všeobecná architektúra systému elektronickej pošty

Z formálneho hľadiska pozostáva systém elektronickej pošty z nasledujúcich súčastí:

Používateľský agent je program, pomocou ktorého používateľ pripravuje, odosiela, číta, tlačí alebo inak spracúva správy. Príkladmi takýchto programov sú: Netscape Mail, Microsoft Internet Mail, elm, mail a pod. Používateľský agent je jedinou súčasťou systému elektronickej pošty, s ktorou prichádza používateľ do kontaktu.

Agent na prenos správ je program, ktorý zabezpečuje prenos správ elektronickej pošty medzi jednotlivými počítačmi v sieti. Príkladom je program sendmail alebo uucp v UNIX-e, MX pre OpenVMS alebo Mercury pre Novell Netware.

Sklad správ je miesto, kde sú uložené poštové schránky jednotlivých používateľov.

V ďalšom sa pokúsime ilustrovať tieto pojmy, a to tak, že uvedieme tri najčastejšie možnosti usporiadania systému elektronickej pošty, s ktorými sa môže používateľ stretnúť.

1. možnosť: práca na pracovnej stanici v režime emulácie terminálu

Používateľ - organizácia alebo súkromná osoba - má jeden počítač (pracovnú stanicu) spojený s počítačom (serverom) poskytovateľa internetovských služieb. Na pracovnej stanici používateľa obvykle beží operačný systém typu MS-DOS alebo MS-Windows a spojenie je spravidla realizované komutovanou telefónnou linkou s modemom.

Používateľ má na serveri poskytovateľa, na ktorom beží niektorý z viacužívateľských operačných systémov, obvykle UNIX, vytvorené jedno alebo viacero kont, s ktorými pracuje v režime emulácie terminálu (terminal emulation), t.j. ako keby bol pripojený priamo k serveru ako terminál. Všetky programy, s ktorými používateľ pracuje (používateľský agent - elm, pine; textový editor - joe, vi; program na prístup k WWW - lynx; ...), bežia na serveri. Pracovná stanica prakticky len zaznamenáva stlačenia klávesov na klávesnici, posiela ich serveru, prijíma odpovede od neho a tie zobrazuje na obrazovke.

V takomto prípade sú všetky tri komponenty systému elektronickej pošty - používateľský agent (UA), agent na prenos správ (MTA) a sklad správ (MS) - uložené na serveri poskytovateľa internetovských služieb.

 

2. možnosť: práca na pracovnej stanici s priamym pripojením do Internetu

Podobne ako v prvom prípade má používateľ - organizácia alebo súkromná osoba - jednu pracovnú stanicu spojenú so serverom poskytovateľa internetovských služieb. Rovnako ako v prvom prípade na pracovnej stanici používateľa obvykle beží operačný systém typu MS-DOS alebo MS-Windows a spojenie je spravidla realizované komutovanou telefónnou linkou s modemom.

Na rozdiel od predchádzajúceho prípadu poskytovateľ umožní, aby používateľ mal na svojej pracovnej stanici k dispozícii protokoly TCP/IP, a tak mohol na prácu s Internetom (najmä s elektronickou poštou a systémom WWW) použiť programy bežiace na jeho stanici: Netscape Navigator, Microsoft Internet Explorer a pod.

V takomto prípade je teda na pracovnej stanici používateľa umiestnený používateľský agent (UA) a na serveri poskytovateľa agent na prenos správ (MTA) a sklad správ (MS) - poštová schránka používateľa. Do tejto schránky prichádzajú zo siete Internet správy určené pre používateľa. Počítač používateľa (presnejšie jeho UA) si z nej z času na čas vyberie správy, aby ich mohol prezentovať používateľovi. Podobne UA odosiela správy na server poskytovateľa (pre jeho MTA), ktorý ich posiela ďalej adresátom v Internete.

3. možnosť: práca v rámci lokálnej siete, resp. na serveri používateľa

Používateľ (spravidla organizácia) prevádzkuje počítač, s ktorým môže naraz pracovať viacero používateľov - server (obvykle s operačným systémom Novell Netware, Windows NT alebo UNIX) a má prípadne vytvorenú lokálnu počítačovú sieť s viacerými pracovnými stanicami, na ktorých beží operačný systém typu MS-DOS, resp. MS-Windows. Server organizácie používateľa je spojený so serverom poskytovateľa internetovských služieb. (Toto spojenie je realizované buď komutovanou alebo prenajatou telefónnou linkou.)

V takomto prípade sú agent na prenos správ (MTA) a sklad správ (MS) umiestnené na serveri organizácie používateľa. Používateľskí agenti (UA) bežia na pracovných staniciach používateľov alebo na serveri organizácie používateľa.

Správy z Internetu prichádzajú na server organizácie používateľa buď priamo, alebo cez server poskytovateľa - záleží na spôsobe pripojenia. Na serveri organizácie používateľa sa správy ukladajú do poštových schránok, odkiaľ si ich preberajú jednotliví používateľskí agenti. Správy odoslané používateľmi sú z ich UA posielané na MTA na serveri organizácie a odtiaľ idú do Internetu opäť buď priamo alebo cez server poskytovateľa.
2.3. Prenos správ v sieti Internet

V sieti Internet sa ako prostriedok doručovania správ medzi MTA navzájom a v istých prípadoch aj medzi UA a prvým MTA používa protokol SMTP (Simple Mail Transfer Protocol) špecifikovaný v dokumente RFC 821. Ide o skutočne jednoduchý protokol, ktorý pracuje nasledujúcim spôsobom.

Predpokladajme, že počítač A má správu, ktorú chce poslať počítaču B. Vo chvíli, keď chce správu odoslať, otvorí spojenie s počítačom B. V Internete ide o spojenie protokolom TCP, a to na dohodnutý port 25. Tento port je na počítači B obsluhovaný programom MTA. Počítač A pošle počítaču B základné informácie (najmä kto je odosielateľom a príjemcom správy), za ktorými nasleduje samotná hlavička a telo správy. Na záver počítač B potvrdí prijatie správy a spojenie je ukončené.

Nasleduje príklad komunikácie na úrovni TCP spojenia, pri ktorej je prenesená jednoduchá správa z počítača center.fmph.uniba.sk na počítač pascal.fmph.uniba.sk. (Údaje smerom z počítača pascal na počítač center sú vyznačené silnejšie. Prvá správa smeruje z počítača pascal na center - je to reakcia MTA bežiaceho na pascale na otvorenie TCP spojenia.)

220 pascal MX V4.2 VAX SMTP server ready at Wed, 27 Aug 1997 19:43:36 MET
HELO center.fmph.uniba.sk
250 Hello, center.fmph.uniba.sk
MAIL FROM:<novak@fmph.uniba.sk>
250 MAIL command accepted.
RCPT TO:<kovac@pascal.fmph.uniba.sk>
250 Recipient okay (at least in form)
DATA
354 Start mail input; end with <crlf>.<crlf>
Date: Wed, 27 Aug 1997 19:43:15 MET
From: Jan Novak <novak@fmph.uniba.sk>
To: kovac@pascal.fmph.uniba.sk
Subject: Skuska

Ahoj,
ako sa mas ?
Jano
.
250 Message received and queued.
QUIT
221 pascal Service closing transmission channel

Koľkými MTA musí správa prejsť, závisí od konkrétnych podmienok. Teoreticky by postačovali dva MTA (jeden na strane odosielateľa, druhý na strane príjemcu), avšak v praxi správa prejde niekedy aj 4-5 MTA, kým príde do cieľa.

Poznamenajme, že protokol SMTP nie je jediným protokolom, ktorý sa na prenos správ medzi MTA v sieti Internet používa. Napríklad v prípade, že MTA sú spojené komutovanou telefónnou linkou, je často výhodnejšie použiť starší, ale stále používaný protokol UUCP (Unix-to-Unix Copy). Závisí to od konkrétnych podmienok.

Obsah samotnej správy (v našom príklade od riadku „Date:“ po riadok „Jano“) je definovaný viacerými štandardami, najmä štandardom RFC 822. Formát obsahu správy je nezávislý od toho, akým spôsobom je správa prenášaná (SMTP, UUCP, POP3, IMAP a pod.).

Okrem položiek hlavičky uvedených v našom príklade sa v nej môžu nachádzať aj viaceré ďalšie. Dá sa z nich napríklad zistiť, ktorými MTA správa prešla a kedy (položka Received), ktorým UA bola správa vytvorená (položka X-Mailer), komu bola poslaná kópia správy (položka Cc) atď.

2.4. Protokoly POP3 a IMAP

Všimnime si teraz stručne, akým spôsobom sa realizuje spojenie medzi používateľským agentom a príslušnou poštovou schránkou (t.j. akým spôsobom používateľský agent z poštovej schránky vyberá správy).

Ak sa schránka nachádza na tom istom počítači ako UA (ako je to napríklad v operačnom systéme UNIX alebo OpenVMS), môže používateľský agent príjemcu k nej pristupovať priamo - ako k ľubovoľnému inému súboru v systéme (typický príklad: /usr/spool/mail/novak môže byť meno súboru s poštovou schránkou pre používateľa novak v systéme UNIX).

Druhou možnosťou je, že UA má prístup k poštovej schránke pomocou základného sieťového softvéru, ktorý umožňuje prístup k súborom uloženým na serveri (akým je napríklad Novell Netware alebo Windows NT). V tom prípade môže UA opäť pristupovať k poštovej schránke ako k ľubovoľnému inému súboru (príklad: poštová schránka pre používateľa novak môže byť v adresári f:\mail\novak).

Ak však používateľský agent nemá možnosť pristupovať k poštovej schránke priamo, musí využiť služby zvláštneho programu, ktorého úlohou je práve sprístupňovať poštové schránky používateľským agentom. Týchto programov existuje viacero druhov, rovnako tak existuje viacero protokolov pre prístup k nim. Väčšinou, podobne ako SMTP, tieto protokoly využívajú protokol TCP. V súčasnosti sa používajú najmä tieto dva: starší a jednoduchší (POP3, Post Office Protocol 3) a novší, komplexnejší (IMAP, Internet Message Access Protocol). Oba slúžia rovnako v prostredí lokálnej siete, ako aj pre prípad prístupu k serveru pomocou modemu.

2.5. Prenos binárnych súborov elektronickou poštou (uuencode, MIME)

Protokolom SMTP, ako je definovaný v RFC 821, možno posielať len správy obsahujúce 7-bitové údaje organizované ako text (s obmedzením dĺžky riadku na 1000 znakov). Toto obmedzenie je dané dobou, kedy tento protokol vznikol - v roku 1982.

Požiadavky na systém elektronickej pošty sú dnes podstatne väčšie. Po prvé, mnoho textových dokumentov obsahuje znaky využívajúce všetkých 8 bitov bajtu (príkladom môžu byť znaky pre slovenskú diakritiku) a po druhé, v súčasnosti sa elektronickou poštou prenášajú aj iné ako textové dokumenty: obrázky, programy, tabuľky, databázy. Tieto objekty využívajú plných 8 bitov a naviac nie sú ani organizované ako text (po riadkoch). Jednoducho povedané, dnes je potrebné, aby systém elektronickej pošty dokázal prenášať ľubovoľné údaje.

Napriek tomu, že protokol TCP umožňuje posielať binárne údaje bez obmedzenia a že v súčasnosti existujú rozšírenia SMTP, ktoré túto možnosť využívajú (pozri napríklad RFC 1652), stále je v prevádzke mnoho implementácií pôvodného protokolu SMTP. Je preto potrebné držať sa naďalej pôvodného štandardu a obmedziť obsah posielaných správ na 7-bitové údaje organizované ako text.

Existuje viacero riešení tohto problému na rôznej úrovni komplexnosti. Ich spoločnou črtou je, že pred odoslaním sú binárne údaje (teda údaje využívajúce všetkých 8 bitov bajtu) transformované (zakódované) do textového tvaru s využitím 7 bitov, v tejto podobe prejdú systémom elektronickej pošty a po doručení su transformované opäť do pôvodného binárneho tvaru.

Ako príklad priamočiarej realizácie tohto princípu môžeme uviesť dvojicu programov uuencode a uudecode.

Prvý z nich - program uuencode - zakóduje vstupný súbor obsahujúci potenciálne ľubovoľné údaje do výstupného súboru, ktorý je v textovom tvare. Postupuje tak, že vstupný súbor rozdelí na skupiny po 6 bitoch a každú takúto skupinu bitov (reprezentujúcu číslo od 0 do 63) prevedie na jeden znak výstupu tým spôsobom, že k nej pripočíta hodnotu 32, výsledkom čoho je tlačiteľný znak. Program uudecode postupuje obrátene, z textového súboru vytvorí zodpovedajúci súbor v binárnom tvare.

Tieto dva programy sú k dispozícii prakticky pre každú softvérovú platformu, od počítačov so systémom MS-DOS až po veľké mnohoužívateľské systémy UNIX.

Jedným z nedostatkov kódovania spôsobom uuencode je však nasledujúca skutočnosť: príjemca má o druhu obsahu (napr. textový dokument, obrázok) a formáte (napríklad MS Word, Ami Pro, GIF, JPEG) súboru k dispozícii len veľmi málo údajov - prakticky len jeho meno, ktoré je uložené v prvom riadku prenášaného textového súboru.

Problém uchovávania informácie o obsahu súboru elegantne rieši novší spôsob kódovania informácií v textovom tvare: MIME (Multipurpose Internet Mail Extensions, RFC 2045 - 2049).

MIME zavádza niektoré nové položky pre hlavičku správy, konkrétne MIME-Version (verzia formátu MIME), Content-Type (typ obsahu) a Content-Transfer-Encoding (kódovanie obsahu).

MIME pozná tri základné spôsoby kódovania obsahu:

Na základe určeného typu obsiahnutého v položke Content-Type hlavičky správy dokážu programy na prezeranie pošty tento obsah spracovať: zobraziť ako text, ako hypertextový dokument, ako obrázok, ako dokument programu Word alebo Excel a podobne. V nasledujúcej tabuľke sú uvedené príklady takýchto typov:
 
text/plain obyčajný text
text/plain; charset=ISO-8859-2 obyčajný text s diakritikou v kódovaní ISO Latin-2
text/html hypertextový dokument vo formáte HTML
audio/basic zvukový záznam (formát AU)
image/gif obrázok vo formáte GIF
application/msword dokument programu Microsoft Word
application/msexcel dokument programu Microsoft Excel
application/octet-stream nešpecifikovaný formát (prúd bajtov)
 
Špeciálnym typom obsahu správy je správa pozostávajúca z viacerých častí (multipart/mixed), takže v jednej správe je možné mať naraz napríklad text, dokument programu Word a zvukový záznam.

Ako už bolo naznačené, na to, aby príjemca vedel dekódovať správu vo formáte MIME, musí to jeho program na prezeranie pošty (používateľský agent) umožňovať. Väčšina súčasných programov v prostredí MS Windows takúto možnosť má. V ostatných prostrediach (MS-DOS, UNIX, OpenVMS) je podpora MIME buď súčasťou používateľského agenta, alebo sa dá použiť externý kódovač a dekódovač pre MIME.

2.6. Bezpečnosť systému elektronickej pošty

Z pohľadu bezpečnosti sa dajú správy elektronickej pošty (tak, ako funguje v súčasnosti) prirovnať ku korešpondenčným lístkom písaným výlučne na písacích strojoch (vrátane podpisu), a to z nasledujúcich dôvodov.

Tieto fakty neznamenajú, že elektronická pošta ako taká nemá zmysel, ale hovoria o tom, že predstava o úplnej bezpečnosti elektronickej pošty je mylná.

Čo sa dá urobiť, aby sme mali istotu, že našu správu nebude čítať osoba, ktorej nie je určená resp. že si príjemnca bude môcť overiť, že správu dostal naozaj od nás? Prakticky jediným riešením v súčasnosti je využiť možnosti kryptografie. Je možné:

Príkladom softvéru, ktorý takéto šifrovanie a podpisovanie správ umožňuje, je program PGP (Pretty Good Privacy). Podobné črty sú implementované aj v ďalších používateľských agentoch (napríklad Netscape Mail).

3. World Wide Web (WWW)

WWW je systém, ktorý umožňuje jednoduchým spôsobom pristupovať k hypertextovým a multimediálnym dokumentom uloženým na počítačoch v sieti Internet. Slovo hypertextový označuje fakt, že text dokumentu obsahuje spojenia na ďalšie dokumenty, resp. na iné miesta toho istého dokumentu. Slovo multimediálny znamená, že súčasťou týchto dokumentov môžu byť obrázky, zvukové záznamy a prípadne videosekvencie.

3.1. Základné princípy práce

Systém WWW pracuje na princípe klient-server nasledujúcim spôsobom: dokumenty sú uložené na jednotlivých WWW serveroch (počítačoch, na ktorých beží špeciálny program, nazývaný WWW server alebo HTTP server). Tieto servery ich definovaným spôsobom sprístupňujú klientom, tzv. WWW prehliadačom (browserom).

3.1.1. Universal Resource Locator - adresa v systéme WWW

To, na ktorý server sa má klient obrátiť a ktorý dokument si žiadať, závisí od toho, čo určí používateľ daného klienta: na začiatku explicitne, neskôr aj tým, ktoré spojenie si v zobrazenom hypertextovom dokumente vyberie. Adresy, ktoré sa používajú v systéme WWW (používa sa pre ne názov Universal Resource Locator - URL), majú nasledujúci tvar:

prístupova metóda:špecifická časť

Položka „prístupová metóda“ hovorí o tom, akým spôsobom je daný dokument dosiahnuteľný. Možné hodnoty sú napríklad: http, gopher, ftp, news, wais. Význam zvyšku URL závisí od tejto prístupovej metódy.

Pre prístupovú metódu „http“ (ktorá nás v súvislosti s WWW zaujíma najviac) má URL nasledujúci tvar:

http://počítač:port/adresár/adresár/…/adresár/súbor

Položka počítač označuje meno alebo adresu počítača, na ktorom je dokument uložený. Port je číslo TCP portu, na ktorom beží WWW server na danom počítači (nemusí sa uviesť - vtedy sa použije implicitná hodnota 80; ak sa neuvedie, neuvádza sa ani „:“ za menom počítača). /adresár/adresár/…/adresár je cesta k dokumentu a súbor je meno súboru s dokumentom. Ani toto meno, ani cestu nie je nutne potrebné uviesť - ak sa vynechajú, server pošle naspäť svoj úvodný dokument.

Príklady URL:

Poznámka: Niektoré prehliadače doplnia text http:// na začiatok URL automaticky, takže ho nie je nevyhnutné uvádzať.

Dokumentom v systéme WWW sa niekedy hovorí aj stránky (pages). Pre spojenia medzi dokumentami sa tiež používajú názvy odkazy alebo linky (links).

3.1.2. Protokol HTTP

Protokol, ktorý sa používa na prenos údajov medzi WWW serverom a klientom, sa nazýva HTTP (Hypertext Transfer Protocol). Verzia HTTP/1.0 je popísaná v RFC 1945, návrh pripravovanej verzie HTTP/1.1 je v RFC 2068.

Pre komunikáciu využíva HTTP protokol TCP, štandardné číslo portu je 80. Na nasledujúcom obrázku je znázornený príklad takejto komunikácie (odpoveď servera je zvýraznená):

GET /www/index.html HTTP/1.0
HTTP/1.0 200 Sending document
MIME-version: 1.0
Server: OSU/2.0
Content-type: text/html
Content-transfer-encoding: 8bit
Last-Modified: Wednesday, 27-Aug-97 07:24:20 GMT
Content-length: 2965

<HTML>

<HEAD>
<TITLE>Univerzita Komenskeho Bratislava</TITLE>
</HEAD>

<BODY>
<IMG SRC="/www/pic/comenius1.gif">
<H1>Univerzita Komenskeho, Bratislava</H1>
.
.
.

Všimnime si, že pre popis obsahu dokumentu sa používa formát podobný hlavičke správy elektronickej pošty a formátu MIME.

3.1.3. Proxy servery

V súčasnosti sa často pri komunikácii medzi WWW prehliadačom a serverom používajú tzv. proxy servery, ktoré túto komunikáciu sprostredkúvajú: prehliadač svoju požiadavku neposiela priamo serveru, ktorý určil jeho používateľ, ale proxy serveru, ktorý ju pošle určenému WWW serveru. Podobne odpoveď nejde k prehliadaču priamo, ale cez proxy server.

Existujú dva základné dôvody pre použitie proxy serverov:

Použitie proxy servera je potrebné nastaviť v prehliadači.

3.2. HTML a ako si spraviť vlastnú WWW stránku

HTML (Hypertext Markup Language) je jazyk umožňujúci definovať hypertextové dokumenty. Dokument v jazyku HTML obsahuje okrem bežného textu aj špeciálne príkazy (HTML tags), ktoré majú vplyv na vzhľad dokumentu a jeho väzby s ďalšími dokumentami.

Ako príklad uveďme jednoduchý dokument v jazyku HTML (príkazy jazyka HTML sú zvýraznené).

<HTML>
<HEAD>
<TITLE>Môj dokument</TITLE>
</HEAD>
<BODY>
<H1>Dobrý deň</H1>
<IMG SRC="obrazok.gif">
Toto je prvý odstavec môjho dokumentu.
<P>
A tu je ďalší. Ak máte záujem, môžete prejsť
na <A HREF="text2.html">môj druhý dokument</A>.
<HR>
</BODY>
</HTML>

Môžeme si všimnúť, že niektoré príkazy jazyka HTML sa vyskytujú v pároch (<príkaz> a </príkaz>), iné samostatne. Prejdime teraz základné príkazy HTML obsiahnuté v našom príklade.

Začiatok a koniec dokumentu sú označené príkazmi <HTML> a </HTML>. Dokument obsahuje hlavičku a telo - údaje v hlavičke sa na rozdiel od údajov v tele v dokumente priamo nezobrazujú. Hlavička dokumentu (nie je povinná; uvádza sa v nej napríklad názov dokumentu) je vyznačená príkazmi <HEAD> a </HEAD>. Samotný názov dokumentu je v rámci hlavičky uvedený medzi príkazmi <TITLE> a </TITLE>.

Nasleduje telo dokumentu, vložené medzi príkazmi <BODY> a </BODY>. Toto telo obsahuje text, ktorý sa zobrazí vo WWW prehliadači. Telo obsahuje nasledujúce príkazy:

Jazyk HTML samozrejme ponúka omnoho viac možností, než je uvedených v tejto ukážke. Jeho podrobnejší popis môžete nájsť na adrese http://www.w3.org/MarkUp.

V princípe existuje niekoľko možností, ako písať dokumenty v jazyku HTML:

Po vytvorení dokumentu ho treba umiestniť na príslušné miesto v adresárovej štruktúre WWW servera. Presné umiestnenie závisí na konkrétnom serveri, napríklad v systéme UNIX sa dokumenty používateľov (osobné stránky) ukladajú často do adresára public_html v domovskom adresári používateľa.

Jazyk HTML sa neustále vyvíja. Poslednou štandardizovanou verziou je HTML 3.2, ktorá má podporu napríklad pre tabuľky, rôznu polohu textu vzhľadom k obrázkom, dolné a horné indexy a podobne. Pripravuje sa HTML 4.0. Okrem toho jednotliví tvorcovia prehliadačov (napr. Netscape Communications Corp.) rozširujú jazyk HTML o črty špecifické pre ich prehliadač. Tieto sa neskôr môžu stať súčasťou oficiálneho štandardu alebo sa jednoducho neujmú a ostanú špecifickými pre jeden alebo malú skupinu prehliadačov. Pri tvorbe HTML dokumentov je potrebné prihliadať na to, akej skupine používateľov bude dokument prístupný a podľa toho voliť črty jazyka, ktoré bude využívať. Je tiež zvykom vytvoriť viacero verzií jedného dokumentu: jednu využívajúcu všetky črty HTML a druhú, jednoduchšiu, ktorá tieto črty nevyužíva, a tak je ju možné efektívne prezerať aj v starších typoch prehliadačov. Podobný problém je aj v oblasti slovenskej diakritiky - je vhodné buď vytvoriť dve verzie stránky (s diakritikou a bez nej), alebo využiť možnosť automatickej konverzie pomocou špeciálnych CGI programov.

3.3. Čo je to CGI, formulár, Java a Javascript

Doteraz sme sa venovali základnému princípu práce systému WWW: klient (prehliadač) pošle na server požiadavku o sprístupnenie dokumentu, na čo mu server tento dokument pošle naspäť. Prehliadač si vyžiada prípadne ďalšie dokumenty, ktoré sú v ňom vložené (obrázky, zvuky), dokument zobrazí a na základe výberu používateľa prejde v prípade potreby na ďalší dokument.

Prvým zovšeobecnením je to, že na strane servera nemusí ísť o dokument uložený v súbore - je možné, aby dokumenty HTML boli dynamicky vytvárané programami bežiacimi na serveri..
Štandard, ktorý popisuje komunikáciu WWW servera a takéhoto programu, sa nazýva CGI (Common Gateway Interface). Programy komunikujúce so serverom môžu byť napísané v ľubovoľnom programovacom jazyku: C, C++, Pascal, Fortran a podobne, ale aj v interpretovaných jazykoch typu Perl, resp. v príkazovom jazyku daného operačného systému sh, csh, ... pre UNIX, DCL pre OpenVMS. Tieto programy sa tiež označujú ako CGI skripty.

S týmto súvisí možnosť vytvárať na WWW stránkach tzv. formuláre obsahujúce ovládacie prvky (pre vkladanie textu, výber z možností, atď.), ktorých hodnoty sa na stlačenie vybraného príkazového tlačidla pošlú ako parametre určenému CGI programu (ktorý môže čosi spraviť a poslať naspäť odpoveď). Takto sa dá realizovať mnoho vecí, napríklad na WWW stránke pre konferenciu môže byť formulár pre prihlasovanie sa na ňu s tým, že CGI skript, ktorý je s ním spojený, bude automaticky zapisovať prihlásených účastníkov do databázy.

Obr. 9. Príklad WWW stránky obsahujúcej formulár

Nie všetko je však efektívne realizovať na strane servera. Niekedy je vhodné, aby program bežal na strane prehliadača. Na tento účel sa používa programovací jazyk Java (ktorý je podobný jazyku C++, avšak je jednoduchší). Programátor napíše program v Jave, skompiluje ho do tzv. bajtového kódu (bytecode) a na stránku vloží odkaz na tento kód. Na strane klienta sa kód programu aktivuje pri zobrazovaní stránky, a to v tej časti stránky, ktorá je preň vyhradená. Prečo sa na strane prehliadača nepoužívajú tiež rôzne programovacie jazyky, ako je C alebo Pascal ? V prvom rade, je tu problém vzájomnej kompatibility jednotlivých prehliadačov - kód, ktorý by bežal na PC, nebude iste bežať pod iným operačným systémom, napríklad OpenVMS. Druhým dôvodom je bezpečnosť: nie je vhodné, aby prehliadač umožňoval spustiť ľubovoľný program. Tento by totiž mohol systém a údaje v ňom poškodiť alebo zneužiť. Jazyk Java je špeciálne navrhnutý tak, že je prenositeľný medzi rôznymi systémami a bezpečný.

A napokon jazyk JavaScript je zjednodušená verzia jazyka Java. Vyvinula ho firma Netscape Communications - je ľahšie zvládnuteľný, nie je potrebné ho kompilovať a na rozdiel od jazyka Java, ktorý sa ukladá vo zvláštnych súboroch, je JavaScript priamo súčasťou HTML dokumentu. Uveďme príklad jednoduchého programu v tomto jazyku:

<SCRIPT LANGUAGE="JavaScript">
document.write ("Nasleduje tabuľka druhých mocnín čísel od 1 do 15:<p>");
for (i=1; i<=15; i++)
document.write (i + "<SUP>2</SUP> = " + i*i + "<br>");
</SCRIPT>

Tento program (ak je zahrnutý do definície dokumentu v HTML) spôsobí pri zobrazení daného dokumentu vloženie tabuľky druhých mocnín čísel od 1 do 15 na príslušné miesto v dokumente.

3.4. Vyhľadávanie informácií v systéme WWW

Často sa stáva, že v systéme WWW chceme vyhľadať nejaké informácie, ale nevieme, na ktorých stránkach sa nachádzajú. Vzhľadom na to, že WWW obsahuje dnes nesmierne množstvo údajov, je riešenie tejto úlohy veľmi náročné.

Jednou z možností je využiť služby vyhľadávacieho stroja (search engine). Vyhľadávacie stroje sú programy, ktoré prechádzajú systémom WWW, čítajú stránky, analyzujú ich a ukladajú si záznamy o tom, ktoré slová sa kde vyskytujú. Sú prevádzkované na vybraných, veľmi výkonných počítačoch v Internete (napr. www.altavista.com). Používatelia siete majú možnosť (pomocou formulára na WWW stránke vyhľadávacieho stroja) určiť, ktoré slovo, resp. slová potrebujú nájsť a vyhľadávací stroj im vráti zoznam stránok, kde sa dané slovo, resp. slová nachádzajú.

Ďalšou možnosťou sú udržiavané zoznamy stránok rozdelené podľa oblastí záujmu: obchod, počítače, veda, vzdelávanie, umenie, zábava a podobne. Najznámejším serverom v tejto oblasti je YAHOO! (www.yahoo.com).

Podobným zoznamom na Slovensku je napríklad http://www.mamto.sk.

4. Ostatné služby siete Internet

Sieť Internet poskytuje mnoho ďalších služieb, tak štandardných, používaných v rámci celej siete, ako aj špecifických pre niektorú skupinu používateľov. Príkladmi štandardných služieb sú elektronická pošta a WWW, príkladmi špecifických služieb by mohli byť styk zákazníkov so svojou bankou, prepojenie dvoch vzdialených lokálnych sietí pomocou siete Internet a pod. Charakterizujme teraz veľmi stručne niektoré ďalšie štandardné služby Internetu:

Práca na vzdialenom počítači - pomocou protokolu TELNET je možné interaktívne pracovať na vzdialenom počítači s viacužívateľským operačným systémom (UNIX, OpenVMS).
Prístup k súborom na vzdialenom počítači - protokol FTP umožňuje prenášať súbory medzi počítačmi v sieti. Často sa používa tzv. anonymné FTP, kedy je istá časť súborov sprístupnená každému používateľovi pomocou špeciálneho konta (obvykle „anonymous“).

Prístup k informáciám pomocou protokolu Gopher - ide o predchodcu WWW, obmedzeného na stromovú štruktúru (presnejšie na štruktúru orientovaného acyklického grafu) a spočiatku na textové súbory. S rozširovaním WWW sa Gopher prestáva používať.

Diskusné skupiny - kým klasická elektronická pošta je určená pre komunikáciu medzi dvomi používateľmi (resp. pre komunikáciu v malej skupine používateľov), existuje softvér, umožňujúci komunikáciu elektronickou poštou mnohým ľuďom naraz: každý účastník diskusie posiela svoje príspevky na zvláštnu adresu, odkiaľ sú rozposielané všetkým ostatným účastníkom. Tomuto sa v anglickej terminológii hovorí mailing list. Inou formou diskusných skupín sú tzv. news, ktoré používajú na komunikáciu zvláštne servery a zvláštnych klientov, ale princíp je zachovaný. Výhodou news je, že účastníci diskusie správy nedostávajú, ale môžu si ich prečítať, ak majú záujem. V súčasnosti existujú desaťtisíce diskusných skupín (či už na princípe elektronickej pošty, alebo news), zaoberajúce sa od problémov hardvéru počítačov, matematiky, medicíny, filozofie až po vtipy, záujmy, šport a podobne.

Interaktívna komunikácia používateľov (Talk, IRC) - Internet poskytuje možnosť interaktívne komunikovať dvom, resp. viacerým používateľom naraz tak, že všetko, čo píše jeden z nich, sa druhému (resp. ostatným) automaticky zobrazuje na obrazovke.

Telefonovanie po Internete a videokonferencie - so zvyšovaním prenosových možností siete Internet a kapacity počítačov k nemu pripojených sa stáva reálnou možnosť výmeny zvukových a obrazových informácií v reálnom čase tak, že ak má skupina používateľov k dispozícii popri svojich počítačoch aj mikrofóny, reproduktory a prípadne kamery, môžu spolu komunikovať hlasom a prípadne aj obrazom. Takáto komunikácia samozrejme vyžaduje rýchle prenosové kanály, ale vo svete sa postupne stáva realitou.

Použitá literatúra

[1] Ed Krol, B.C.Klopfenstein: The Whole Internet, O’Reilly & Associates, Inc., 1996
[2] A.S.Tanenbaum: Computer Networks, 3rd Ed, Prentice Hall, 1996
[3] Soňa Makulová: Sprievodca po Internete, EL&T, 1997
[4] W.A.Foster, A.M.Rutkowski, S.E.Goodman: Who Governs the Internet, Communications of the ACM, Vol.40, Num.8, 1997
[5] Július Csontó, Marek Hatala: Vstup do sveta Internetu pre začiatočníkov a pokročilých, elfa, s.r.o., Košice, 1997
[6] Fred Halsall: Data Communications, Computer Networks and Open Systems, 4th ed., Addison-Wesley Publishing Company, 1996

 
Materiály k časti o databázových systémoch nie sú v súčasnosti k dispozícii v elektronickej forme (iba slidy).