04

Architektura operačních systémů

V této kapitole se dozvíte:

  • Z jakých generických komponent se skládají operační systémy?

  • Jaké jsou hlavní funkce jednotlivých komponent operačních systémů?

  • Jaké jsou základní algoritmy činnosti jednotlivých správců operačního systému?

  • Jak jsou jednotlivé komponenty operačních systémů vzájemně propojeny?

Po jejím prostudování byste měli být schopni:

  • Charakterizovat funkce jednotlivých částí operačních systémů.

  • Znát základní algoritmy činnosti jednotlivých správců operačního systému.

  • Porozumět způsobům komunikace jednotlivých částí operačního systému.

  • Popsat činnost operačního systému z hlediska funkcí jednotlivých částí operačního systému.

Klíčová slova této kapitoly:

Správa procesoru, správa procesů, správa paměti, správa I/O systému, správa sekundární paměti, správa souborů, networking, interpret příkazů, systém ochran, multithreading, stavový model, plánovač, preemptivní plánování, nepreemptivní plánování, kooperativní multitasking, ochrana paměti, stránkování, segmentace, přerušení, DMA, sběrnice.

Doba potřebná ke studiu: 8 hodin

Průvodce studiem

Tato kapitola je nejnáročnějším tématem studijního textu a jsou v ní popsány principy činnosti operačních systémů. Poměrně náročné téma je zejména pro ty z Vás, kteří dosud nemají žádné znalosti z oblasti architektury operačních systémů. V takovém případě Vám zřejmě některé principy funkcí operačních systémů budou připadat obtížně pochopitelné, ovšem nenechte se tím odradit, neboť pochopením této části jste pochopili, jak operační systémy pracují.

Na studium této části si vyhraďte alespoň 8 hodin. Doporučujeme studovat s přestávkami vždy po pochopení jednotlivých podkapitol. Po celkovém prostudování a vyřešení všech příkladů doporučujeme dát si pauzu, třeba 1 den, a pak se pusťte do vypracování korespondenčních úkolů.

Pro popis obecné architektury operačních systémů použijme model vrstvené architektury uvedené v předchozím odstavci. Při studiu architektury operačních systémů vycházíme z principu, že operační systém je „správce prostředků“, je to soubor programů (algoritmů) vytvořených k ovládání systémových prostředků tj. paměti, procesorů, periferních zařízení a souborů informací (tj. programů a dat). Funkcí operačního systému je dbát, aby tyto prostředky byly efektivně využívány, řešit konflikty vzniklé při „soutěžení“ o jednotlivé prostředky mezi různými uživateli (mezi jejich programy). Operační systém musí sledovat stav každého prostředku, rozhodovat, kterému procesu bude prostředek přidělen (v jakém rozsahu a na jak dlouho), prostředek přidělit a případně žádat jeho navracení. Podle toho, jak dělíme prostředky, se dělí i jejich správci. Na následujícím obrázku je naznačeno rozdělení operačního systému na jednotlivé správce.

Generické komponenty OS

Obecná architektura operačních systémů je budovaná na principech hierarchických vrstev. Operační systém se dělí do jistého počtu vrstev (úrovní). Každá vrstva je budována na funkcionalitě nižších vrstev tzn. že nejnižší vrstva je tvořena hardwarem počítače a nejvyšší vrstva je vrstva uživatelského rozhraní. Tím se řeší problém přílišné složitosti velkého systému. Nižší vrstva nabízí vyšší vrstvě „primitivní“ funkce (služby) a přitom nižší vrstva nemůže požadovat provedení služeb vyšší vrstvy. Používají se přesně definovaná rozhraní umožňující v rámci jedné vrstvy jejich vlastnosti a funkčnosti modifikovat, aniž to ovlivní ostatní vrstvy.

V klasickém operačním systému (z pohledu historického) jsou procesy jen uživatelské programy a vlastní operační systém je prováděn jako samostatná entita v privilegovaném režimu. K přepínání kontextu procesů dochází jen tehdy, je-li to nutné z hlediska plánování.

V procesově konstruovaném operačním systému je vlastní operační systém kolekcí systémových procesů. Funkcí jádra je procesy separovat a přitom jim umožnit kooperovat. Minimum funkcí je třeba realizovat v privilegovaném režimu, kdy jádro je pouze ústředna pro přepojování zpráv.

Samostatnou variantou operačního systému je realizace architekturou tzv. mikrojádra, kde malé jádro plní pouze několik málo nezbytných funkcí, jako je primitivní správa paměti (adresového prostoru), komunikaci mezi procesy a základní plánování a správu I/O zařízení a přerušení. Ostatní služby jádra řeší procesy (servery) běžící v uživatelském režimu. Jsou to ovladače, služby systému souborů a virtualizace paměti. Výhody v architektuře mikrojádra jsou v pružnějším a snadněji rozšiřitelném řešení, lze doplňovat nové služby, odstraňovat nepotřebné služby a všechny služby jsou poskytovány jednotně (výměnou zpráv). Toto řešení je jednoduše přenositelné, tj. při implementaci na nový procesor stačí změnit mikrojádro. Spolehlivějším řešením jsou různá modulární řešení. Moduly jsou snadněji testovatelné a umožňují podporu distribuovanosti tj. výměna zpráv je implementovatelná v síti i v jednom systému.

V další části si stručně popíšeme hlavní funkce jednotlivých komponent operačních systémů.

4.1 Správa procesorů/procesů

Správce procesoru má tyto funkce:

  • sleduje prostředek (procesor a stav procesů),

  • rozhoduje, komu bude dána možnost užít procesor,

  • přiděluje procesu prostředek, tj. procesor,

  • požaduje vrácení prostředku (procesoru).

Pod pojmem proces (task) chápejme provedení nějakého programu. Proces potřebuje pro svoji realizaci jisté zdroje:

  • doba procesoru,

  • paměť,

  • I/O zařízení, atd.

Operační systém je z hlediska správy procesů zodpovědný za:

  • vytváření a rušení procesů,

  • potlačení a obnovení procesů,

  • poskytnutí mechanismů pro synchronizaci procesů a pro komunikaci mezi procesy.

Operační systém je z hlediska správy procesorů zodpovědný za výběr procesu běžícího na volném procesoru.

4.2 Správa (hlavní, operační) paměti

Správce paměti je úložiště připravených tj. rychle dostupných dat sdílených procesorem a vstupními/výstupními zařízeními. Hlavní (operační, primární) paměť je pole samostatně adresovatelných slov nebo bytů, zpravidla energeticky závislá, tj. po výpadku napájení se data z ní ztrácí. Operační systém je z hlediska správy (hlavní) paměti odpovědný za:

  • vedení přehledu kdo a kterou část paměti v daném okamžiku využívá,

  • rozhodování kterému procesu uspokojit jeho požadavek na prostor paměti po uvolnění,

  • přidělování a uvolňování paměti podle potřeby,

  • řízení virtuální paměti.

Z hlediska těchto zodpovědností správce operační paměti:

  • udržuje přehled o přidělené a volné paměti,

  • ve spolupráci se správou procesů rozhoduje o tom, kterému procesu, kolik, kde a kdy má přidělit operační paměť,

  • provádí přidělení volné části paměti,

  • určuje strategii odnímání dříve přidělené operační paměti procesům (opět po předchozí domluvě se správou procesů).

V této souvislosti několik poznámek k řízení tzv. virtuální paměti. K základním problémům návrhu architektury počítače patří rozhodnutí, jak se bude zobrazovat tzv. logický adresový prostor – LAP, do tzv. fyzického adresového prostoru – FAP. Uživatel vidí logický adresní prostor – LAP. Programy a data z LAP jsou do fyzického adresního prostoru - FAP zaváděny podle potřeby. LAP je vymezen množinou adres určenou počtem bitů vnitřní adresní sběrnice. Obvykle je jednodimenzionální. S dvoudimenzionální strukturalizací LAP se setkáme u kolekce samostatných lineárních segmentů (proměnné délky). V takovém případě bude adresa paměťového místa tvořena dvěma složkami. Fyzický adresový prostor FAP je vymezen množinou adres určenou počtem bitů vnější adresní sběrnice počítače. FAP je určen velikostí operační paměti. Zobrazení LAP do dostupného FAP se provádí pomocí hardware (Dynamic Address Tranlation – DAT, Memory Management Unit - MMU). Tyto prostředky musí řešit různé konflikty. Např. při odkázání místa s adresou LAP, které není zobrazeno ve FAP se ve FAP nalezne (vytvoří) volný blok a na toto místo se zavede blok z obrazu LAP s požadovanou informací.

4.3 Správa I/O systému

Správce periferních zařízení (vstupního/výstupního systému) má tyto funkce:

  • sleduje stav prostředků (periferních zařízení, jejich řídících jednotek),

  • rozhoduje o efektivním způsobu přidělování prostředku – periferního zařízení,

  • přiřazuje prostředek (periferní zařízení) a zahajuje I/O operaci,

  • požaduje navracení prostředku.

Z hlediska funkce operačního systému lze správce I/O systému chápat jako:

  • úložiště vyrovnávacích pamětí,

  • univerzální rozhraní ovladače I/O zařízení,

  • ovladače jednotlivých hardwarových I/O zařízení.

Do správy I/O systému patří i správa vnější (sekundární) paměti. Počítačový systém musí poskytnout pro zálohování hlavní paměti sekundární paměť, v poslední době nejvíce používané pevné disky (hard disky) s perspektivou přechodu na velkokapacitní paměti typu „flash“. Operační systém je z hlediska správy vnější (sekundární) paměti odpovědný za:

  • správu volné paměti,

  • přidělování paměti,

  • plánování činnosti disku.

4.4 Správa souborů

Správce souborů má tyto funkce:

  • sleduje prostředek (soubor), jeho umístění, užití, stav atd.,

  • rozhoduje, komu budou prostředky přiděleny, realizuje požadavky na ochranu informací uložených v souborech a realizuje operace přístupu k souborům,

  • přiděluje prostředek, tj. otevírá soubor,

  • uvolňuje prostředek, tj. uzavírá soubor.

Pod pojmem soubor chápeme jak programy, tak data. Operační systém je z hlediska správy souborů odpovědný za:

  • vytváření a rušení souborů,

  • vytváření a rušení adresářů (katalogů, složek),

  • podporu primitivních operací pro manipulaci se soubory a s adresáři,

  • zobrazení souborů do sekundární paměti,

  • archivování souborů na energeticky nezávislá média.

4.5 Networking, distribuované systémy

Pod pojmem distribuovaný systém chápeme kolekci procesorů, které nesdílejí ani fyzickou paměť ani hodiny, synchronizující činnost procesoru. Každý procesor má svoji lokální paměť a lokální hodiny. Procesory distribuovaného systému jsou propojeny komunikační sítí. Komunikace jsou řízeny protokoly. Distribuovaný systém uživateli zprostředkovává přístup k různým zdrojům systému.

4.6 Systém ochran

Pod pojmem systém ochran rozumíme mechanismy pro řízení přístupu k systémovým a uživatelským zdrojům. Systém ochran musí:

  • rozlišovat mezi autorizovaným a neautorizovaným použitím,

  • specifikovat problém vnucovaného řízení,

  • poskytnou prostředky pro své prosazení.

4.7 Uživatelské rozhraní - interpret příkazů

Interpret příkazů je program, umožňující vykonávat příkazy pro:

  • správu a vytváření procesů - služby operačního systému poskytované interpretem příkazů slouží k provedení programu, tj. k schopnosti operačního systému zavést program do hlavní paměti a spustit jeho běh,

  • ovládání I/O zařízení - uživatelský program nesmí provádět I/O operace přímo, operační systém musí poskytovat prostředky k provádění I/O operací,

  • správu sekundární paměti - manipulace se systémem souborů, schopnost číst, zapisovat, vytvářet a rušit soubory,

  • správu hlavní paměti,

  • zpřístupňování souborů,

  • ochranu – tj. detekci chyb v procesoru a paměti, I/O zařízeních a v programech uživatelů pro zajištění správnosti výpočtu,

  • práci v síti - výměna informací mezi procesy realizovaná buďto v rámci jednoho počítače nebo mezi různými počítači pomocí sítě, tj. implementace sdílenou pamětí nebo předáváním zpráv.

Tento program se nazývá příkazový interpret. Jeho funkcí je získávat a provádět příští příkaz.

Uživatelská rozhraní jsou realizovaná znakově (někdy označované řádkově) nebo graficky. Znakově orientovaným interpretům zadáváme příkazy pomocí klíčových slov, graficky orientovaným pomocí poklepání myši nebo dotykem na dotykové obrazovce na ikonu, pomocí dialogů apod.

4.8 Vnitřní služby operačního systému

Vnitřní služby operačního systému nejsou určeny k tomu, aby pomáhaly uživateli, v prvé řadě slouží pro zabezpečení efektivního provozu systému, tj. slouží pro:

  • Přidělování prostředků (zdrojů) mezi více souběžně operujících uživatelů nebo úloh.

  • Účtování a udržování přehledu o tom, kolik jakých zdrojů systému který uživatel používá. Cílem je účtování za služby a sběr statistik pro plánování.

  • Ochranu tj. péči o to, aby veškerý přístup k systémovým zdrojům byl pod kontrolou.

Vnitřní služby operačního systému jsou obecně realizovány souborem systémových programů vytvářejících určité systémové struktury tzv. virtuální stroje. Typickými službami jsou programy pro:

  • práci se soubory, editaci souborů, katalogizaci souborů, modifikaci souborů,

  • získávání, definování a údržbu systémových informací,

  • podporu jazykových prostředí,

  • zavádění a provádění programů,

  • komunikace a řízení aplikačních programů.

Kontrolní otázky:

1. Ze jakých generických komponent se skládají operační systémy?

2. Jaké jsou hlavní funkce jednotlivých komponent operačních systémů?

3. Jaké jsou základní algoritmy činnosti jednotlivých správců operačního systému?

4. Jak jsou jednotlivé komponenty operačních systémů vzájemně propojeny?

5. Které zdroje potřebuje operační systém pro svoji činnost?

Úkoly k zamyšlení:

1. Rozeznáváme tři druhy plánování procesů: krátkodobé, střednědobé a dlouhodobé. Pokuste se rozhodnout ve které úrovni 5-stavového diagramu jednotlivé plánovače pracují.

Korespondenční úkol:

Prostudujte příručku nějakého operačního systému a odpovězte na tyto otázky:

    1. Za jakých základních komponent se operační systém skládá?

    2. Jakými metodami obsluhuje vybraný OS periferní zařízení?

    3. Jaký systém souborů využívá a jaké atributy souborů uchovává?

    4. V jakém jazyku je OS napsán?

Shrnutí obsahu kapitoly

V této kapitole jste se seznámili s jednotlivými generickými komponentami operačních systémů, s jejich hlavními funkcemi a základními algoritmy činnosti jednotlivých správců operačních systémů. Důraz byl kladen na pochopení vzájemné komunikace jednotlivých částí operačních systémů. Velká pozornost byla věnována komplexnímu pochopení činnosti operačních systémů.