Operačný systém je základná zložka programového vybavenia, ktorá prispôsobuje technické prostriedky stanoveným typom aplikácií a požadovanému režimu činnosti počítača.
Základnú skupinu funkcií operačného systému tvoria tzv. služby, ktoré dávajú k dispozícii jednotlivým aplikáciám systém dátových štruktúr a podprogramov realizujúcich nad nimi operácie a tým sa stávajú aplikačné programy nezávislé na technickom vybavení počítača. Tieto služby nad technickými prostriedkami vytvárajú tzv. virtuálny počítač a sú implementované v základnej zložke operačného systému, ktorej hovoríme jadro operačného systému.
V súčasnej dobe rozlišujeme podľa použitia tieto dve skupiny operačných systémov:
a) nešpecializované (univerzálne operačné systémy),
b) špecializované operačné systémy:
• databázové operačné systémy
• RT - systémy (orientované na riadenie v reálnom čase)
K charakteristickým rysom operačných systémov patrí ovládanie vonkajších pamätí na báze súborov, bežných periférií (klávesnica, monitor...) a hlavne spúšťanie výpočtových procesov riadených aplikačnými programami (t.j. umiestnenie programu do operačnej pamäte a následné pridelenie procesora).
Tieto funkcie vytvárajú tzv. používateľské rozhranie, ktoré slúži pre styk používateľa s počítačom. Je možné vytvoriť ho tak, že je možná práca viacerých používateľov alebo len jedného (t.j. viacužívateľský alebo monoužívateľský operačný systém).
Charakteristickým predstaviteľom tohto typu operačných systémov je operačný systém 8 bitových počítačov CP/M, ktorého implementácia spočíva predovšetkým v realizácii interpreteru riadiaceho jazyka vytvárajúceho používateľské rozhranie a v realizácii služieb pre prácu so súbormi.
Modul BIOS(Basic Input Output System), ktorý tvorí základnú vrstvu - tzv. fyzický systém vstupu a výstupu - správa periférií - obsahuje ovládače jednotlivých periférií. Modul BIOS využívajú jednotlivé služby, realizované pomocou podprogramov, ktoré sú súčasťou modulu BDOS. Väčšinu služieb predstavujú operácie systému ovládania súborov.
Primárne funkcie modulu BIOS:
a) Inicializačné funkcie:
• úplná inicializácia systému
• obnovenie CCP a BDOS
b) Ovládanie klávesnice, obrazovky, snímača, tlačiarne:
• stav klávesnice
• znak z klávesnice
• znak zo snímača
• stav tlačiarne
• znak na obrazovku
• znak na tlačiareň
c) Ovládanie diskety (disku):
• výber disku
• výber stopy
• výber sektoru
• adresa prenosu
• začatie čítania a čakania na ukončenie operácie
• začatie zápisu a čakania na ukončenie operácie
• preklad logických čísiel sektorov na fyzické čísla
• výber stopy 0
Modul BDOS, ktorý tvorí ďalšiu vrstvu programového vybavenia, využíva všetky služby BIOSu. Realizuje základné operácie so súbormi ako otvorenie a zatvorenie súboru, čítanie a zápis do súboru, ale aj vstup znaku a reťazca z klávesnice a výstup znaku a reťazca na obrazovku.
Z hierarchického usporiadania modulov BIOS a BDOS logicky vyplýva, že jedinou časťou operačného systému CP/M, ktorá je závislá na konkrétnej konfigurácii počítača je modul BIOS.
Algoritmus interpretera riadiaceho jazyka spočíva v prečítaní príkazu, jeho analýze, v presune žiadaného aplikačného programu do úseku pamäti TPA a jeho aktivizácii.
Niektoré aplikačné programy, ktoré nemajú veľké pamäťové nároky a sú frekventovane používané, sa umiestňujú pevne do pamäti - rezidentne. Interpreter riadiaceho jazyka takýto program nenahráva z disku, ale predáva mu priamo riadenie.
CP/M aj napriek tomu, že to umožňovali technické prostriedky, nevyužíval žiadnu formu paralelizmu.
Pre tieto operačné systémy je charakteristické, že triviálnym spôsobom využívajú technické prostriedky umožňujúce paralelizmus. Najrozšírenejším operačným systémom tejto triedy je MS-DOS, ktorý je svojou koncepciou veľmi blízky operačnému systému CP/M. Naviac, veľmi jednoduchou formou využíval paralelizmus jediného zariadenia - tlačiarne.
Podobne ako OS CP/M aj MS DOS má tri základné časti:
• modul BIOS obsahujúci ovládače periférií (časť je v pamäti ROM)
• modul DOS realizujúci systém ovládania súborov
• interpreter riadiaceho jazyka
Služby jadra operačného systému sú prístupné cez prerušenia, čím sa zdanlivo zvyšuje bezpečnosť celého systému. Podstatný rozdiel v porovnaní s operačným systémom CP/M je v zavedení tzv. stromových adresárov. K identifikácii súboru sa používa postupnosť mien, z ktorých iba posledný označuje priamo súbor, ostatné sú mená adresárov. V koreni stromu sa nachádza tzv. hlavný adresár označovaný znakom \
Aby nebolo nutné vypisovať celú identifikáciu súborov, je možné definovať tzv. pracovný adresár. Takže napr. pri vymazávaní súboru nie je potrebné vypisovať celú cestu, ale iba jeho meno.
Interpreter riadiaceho jazyka systému MS DOS považuje mená príkazov neoznačujúcich rezidentné programy za mená súborov obsahujúcich programy, ktoré sa majú nahrať do operačnej pamäte a spustiť. Pritom postupuje tak, že najprv prehľadáva pracovný adresár a následne tie adresáre, ktoré sú určené príkazom PATH.
Tlač na pozadí alebo paralelná tlač prebieha tak, že príkazom PRINT sa požadovaný textový súbor zaradí do tlačovej fronty, z ktorej sa postupne vyberajú jednotlivé súbory a ich obsah sa tlačí na tlačiarni. Vlastná tlač prebieha paralelne a asynchrónne s vykonávaním ďalších príkazov riadiaceho jazyka. Jedná sa o jednoduchú aplikáciu tzv. techniky spooling, ktorá sa bežne používa aj vo viacužívateľských operačných systémoch.
Predchádzajúce operačné systémy boli charakteristické sekvenčným spracovaním aplikačných programov. Mnohé aplikácie však vyžadujú ich paralelné spracovávanie (napr. aplikácia A využíva medzivýsledok aplikácie B). Praktický význam paralelného spracovávania sa zvýši, ak môže medzi súčasne bežiacimi procesmi dochádzať k výmene informácií. Jednou z najjednoduchších foriem je výmena prostredníctvom užívateľa. Užívateľ získa z jedného aplikačného programu na monitore určité medzivýsledky a pomocou manipulácie s klávesnicou ich odovzdá inému programu. Túto formu komunikácie medzi jednotlivými procesmi, bez toho aby musel byť niektorý proces ukončený, umožňujú operačné systémy pomocou užívateľom riadeného prepínania kontextu.
Implementácia tohto druhu operačného systému je pomerne jednoduchá a medzi charakteristických reprezentantov patrí operačný systém Finder, počítačov MacIntosh. Riadiaci jazyk tohto operačného systému je založený na manipulácii s grafickými symbolmi - ikonami.
Najvýznamnejšou vlastnosťou tejto skupiny OS je možnosť rozpracovania viacerých aplikačných programov súčasne, pričom je iba na užívateľovi, ktorý z programov sa práve spracováva (je aktívny). Možnosť rozpracovania viacerých programov spôsobuje nutnosť implementácie vhodnej techniky pre využívanie operačnej pamäte. K ovládačom periférií a systému ovládania súborov preto pribudnú ďalšie funkcie jadra operačného systému pre prideľovanie pamäte, ktoré sa nazývajú správa pamäte. Nakoľko je v daný okamih aktívny iba jeden program , nemá zmysel všetky ostatné rozpracované programy udržiavať v pamäti, pretože by sa znižovala ich maximálna možná dĺžka. Preto sa programy, ktoré nie sú práve aktívne, ukladajú na vonkajšiu pamäť s využitím tzv. odkladacieho súboru.
Implementácia prideľovania pamäte bude teda pozostávať z implementácie týchto štyroch procedúr:
1. Vytvor odkladací súbor (číslo procesu)
1. Zruš odkladací súbor (číslo procesu)
2. Odlož program (číslo procesu, ukazovateľ zásobníku)
3. Vráť program (číslo procesu, ukazovateľ zásobníku)
V momente, keď sa prepína kontext na ďalší proces, musí sa uschovať aktuálny stav procesora do zásobníka (registra SP).
Vizuálna realizácia jednotlivých procesov sa uskutočňuje pomocou tzv. okien, pričom každému procesu prislúcha jedno okno.
Často je riešenie problému takého charakteru, že je možný paralelný beh aplikačných programov chápať tak, akoby bol každý z nich vykonávaný samostatným procesorom a tieto procesory pracovali súčasne. Túto činnosť umožňujú operačné systémy s automatizovaným prepínaním kontextu, patrí medzi ne napr. Concurrent DOS alebo MS WINDOWS.
Operačné systémy tejto skupiny umožňujú rozpracovať niekoľko aplikačných programov. Výpočtové procesy riadené týmito programami (tzv. aplikačné procesy), bežia z hľadiska užívateľa zdanlivo súčasne, paralelne. Je to tak preto, že prepínanie kontextu (prideľovanie procesu jednotlivým aplikačným procesom) sa vykonáva automatizovane v krátkych časových intervaloch, napr. 100 ms.
Tomuto typu paralelného spracovávania hovoríme multitasking (súbežné spracovanie programov).
Pre reprezentáciu jednotlivých procesov sa využívajú, podobne ako v operačných systémoch s užívateľom riadeným prepínaním kontextu, okná na monitore. Tým umožňuje operačný systém vytvoriť na obrazovke toľko klasických užívateľských rozhraní, koľko je rozpracovaných úloh.
Pri prepínaní kontextu v pravidelných časových intervaloch (100 ms), nie je možné aby sa vymieňal celý obsah pamäte, v ktorej je uložený vždy len jeden program. Preto sa volí technika, ktorá prideľuje každému procesu určitý úsek pamäte. Kontext sa prepína tak, aby každý proces bežal vždy stanovený časový úsek, tzv. časové kvantum. Pre prepínanie kontextu sa využívajú časové signály vysielané časovačom. Od týchto signálov sa odvodzuje prerušenie a ako reakcia naň sa v jadre spúšťa pomocný časový proces, v ktorom sa zariadi prepnutie kontextu, čiže jadro cyklicky prideľuje procesor jednotlivým procesom na určité časové kvantum. Touto technikou sa vytvára každému z procesov virtuálny procesor, ktorého rýchlosť je zhruba n-tina (pri n procesoch) rýchlosti technicky realizovaného procesora.
Aby procesu, ktorý čaká na dokončenie periférnej operácie nebol zbytočne prideľovaný procesor, zavádza sa tretí stav - čakajúci - čím je vyradený z fronty procesov čakajúcich na pridelenie procesu. Tým sa zvýši rýchlosť jednotlivých virtuálnych procesorov.
Každý proces sa teda môže nachádzať v dvoch stavoch:
• má pridelený procesor - bežiaci
• nemá pridelený procesor - pripravený
Môžu však nastať situácie, keď proces čaká na dokončenie určitej operácie alebo na ďalší príkaz (napr. čakanie na stlačenie klávesy pri vstupe z klávesnice), potom je výhodné, aby tomuto procesu nebol prideľovaný procesor, nakoľko v časovom kvante pridelenia procesora pre procesu, by sa vykonávali len prázdne cykly.
Pri dvoch stavoch procesov - bežiaci a pripravený - kedy sa čakajúcemu procesu prideľuje procesor, hovoríme o aktívnom čakaní.
Aby procesu, ktorý čaká na dokončenie periférnej operácie (vstup z klávesnice) nebol zbytočne prideľovaný procesor, zavádzame tretí stav procesu - čakajúci - čím je vyradený z fronty procesov čakajúcich na pridelenie procesora a zaraďuje sa do fronty procesov čakajúcich na dokončenie určitej periférnej operácie. Po vykonaní požadovanej periférnej operácie sa proces opäť zaradí do fronty procesov čakajúcich na pridelenie procesora, pričom zaujíma svoje pôvodné miesto vo fronte. Zavedenie tretieho stavu procesov samozrejme zvyšuje frekvenciu prideľovania procesora ostatným procesom a tým zvyšuje rýchlosť jednotlivých virtuálnych procesorov patriacich príslušným procesom.
Architektúra: Každému procesu musí byť vytvorený virtuálny procesor, ktorý bude poskytovať klasické užívateľské rozhranie, ako napr. CP/M. Operačný systém musí teda poskytovať služby zohľadňujúce existenciu viacerých procesov. Napríklad služba pre výstup reťazca na obrazovku, musí byť súčasne prístupná viacerým procesom (výpis reťazca do príslušného okna), no služba pre vstup klávesnice musí slúžiť počas určitej doby len jednému procesu.
Jednotlivé moduly jadra operačného systému (viď obr.2.8.) sú usporiadané lineárne, t.j. ich funkcie sa môžu vzájomne vyvolávať smerom od vrchu. Tento spôsob zobrazenia jadra je však do určitej miery zjednodušujúci, nakoľko svojou lineárnosťou neumožňuje vyjadriť všetky väzby modulov. Naproti tomu však výstižne znázorňuje rozdiel medzi základným procesom a aplikačnými procesmi vzhľadom k povolenému volaniu funkcií jadra: aplikačnému procesu sú poskytnuté iba služby a „holý“ počítač (technické prostriedky), zatiaľ čo základnému procesu všetky funkcie jadra a „holý“ počítač.
Virtuálne počítače jednotlivých aplikačných programov, ale aj základného procesu majú spoločnú len vonkajšiu pamäť. Preto si môžu predávať údaje len prostredníctvom súborov.
Základný proces má vlastnosti tzv. služobného procesu, pre ktorý je charakteristické, že je integrálnou súčasťou operačného systému a zastáva v ňom určitú „služobnú“ funkciu. Základný proces má aj vlastnosti tzv. privilegovaného procesu, ktorý má k funkciám jadra širší prístup než predstavujú služby. Kontrola príslušnosti k privilegovaným procesom sa často realizuje pomocou technických prostriedkov.
Ich základnou myšlienkou je umožniť na jednom počítači súčasnú prácu viacerých užívateľov, pričom každý pracuje na svojom terminále. Implementácia viacužívateľských operačných systémov sa opiera o automatizované prepínanie kontextu.
Užívateľské rozhranie viacužívateľských operačných systémov je možné na jednom terminále vytvoriť principiálne dvoma spôsobmi:
1. dovoľuje spustiť najviac jeden aplikačný program
2. dovoľuje činnosť viacerých aplikačných programov súčasne (multitasking)
Základná myšlienka, vytvoriť každému aplikačnému procesu virtuálny procesor, sa nemení, no v dôsledku existencie viacerých užívateľov sa štruktúra operačného systému rozšíri o tretí rozmer.
Jediným spoločným prostriedkom virtuálnych počítačov je opäť len vonkajšia pamäť (súbory na diskoch). Ostatné periférie sú virtualizované (tlačiareň - vytvorením tlačovej fronty) alebo sa rezervujú (zapisovač).
V porovnaní s monoužívateľskými operačnými systémami pribudla v
rstva prideľovania pamäte, ktorá zabezpečuje výmeny obsahov operačnej pamäte pre jednotlivé aplikácie.
Užívateľské rozhranie obsahuje nové prostriedky, ktoré musia bezpečne oddeliť virtuálne počítače používané rôznymi užívateľmi. Nutnou podmienkou pre to, je podpora technických prostriedkov založená na rozlišovaní užívateľského a privilegovaného procesu a ochrany pamäte.
Toto oddelenie musí byť urobené tak, aby sa jednotlivé aplikačné procesy nemohli nežiadúcim spôsobom ovplyvňovať a aby sa užívatelia mohli rozhodnúť, ktoré dáta resp. programy dajú k dispozícii ostatným a ktoré nie. Z hľadiska užívateľa k tomuto účelu slúži systém ochrany súborov založený na definovaní prístupových práv k súborom.<{r>
Konkrétna realizácia môže vyzerať tak, že každý užívateľ musí svoju prácu začať prihlásením sa (tým je jednoznačne identifikovaný). Po úspešnom prihlásení sa môže využívať tie súbory, ktoré sú mu prístupné - ku každému súboru sú definované prístupové práva pre vlastníka súboru a pre ostatných užívateľov. Vlastníkom súboru je ten užívateľ, ktorý ho vytvoril. Prístupové práva určujú napr. možnosť zápisu, čítania a spúšťania súborov (Write - Read - Execution).
Základný proces viacužívateľských OS vznikne pri inicializácii celého systému. Jeho hlavnou úlohou je vytvoriť pre každý terminál základný proces terminálu, ktorý má súčasne funkciu interpretera riadiaceho jazyka. Základný proces terminálu - interpreter riadiaceho jazyka - pracuje analogicky ako interpreter riadiaceho jazyka klasických operačných systémov (napr. CP/M), no líši sa v dvoch hľadiskách:
1. prvý príkaz musí byť prihlásenie
2. odlišne sa vykonáva volanie aplikačných programov - každej aplikácii musí byť pridelená sekcia v pamäti a musí byť definovaná ako neprivilegovaný aplikačný proces
Klasickými predstaviteľmi viacužívateľských operačných systémov sú UNIX, Novell a Windows NT Server.