03

Úloha operačních systémů

V této kapitole se dozvíte:

  • Proč studujeme operační systémy?

  • Jaké jsou základní funkce operačních systémů?

  • Jakou úlohu mají operační systémy z hlediska komunikace člověka s počítačem?

  • Jaké je typické rozhraní operačních systémů s aplikačními programy?

  • 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ů?

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

  • Charakterizovat základní funkce operačních systémů.

  • Znát způsob komunikace operačního systému s člověkem a s aplikačními programy.

  • Porozumět vrstvené architektuře operačních systémů.

  • Popsat oblasti zájmů operačních systémů.

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

Klíčová slova této kapitoly:

Správce zdrojů, virtuální počítač, multiprogramování, rozhraní člověk/stroj, rozhraní proces/operační systém, generické komponenty.

Doba potřebná ke studiu: 2 hodiny

Průvodce studiem

Studium této kapitoly je jednoduché a popisným způsobem zde nastudujete základní úlohy a funkce operačních systémů.

Na studium této části si vyhraďte 4 hodiny.Po celkovém prostudování a vyřešení všech příkladů doporučujeme vypracovat korespondenční úkol.

Operační systémy jsou jedny z nejrozsáhlejších a nejsložitějších programových systémů ve kterých se uplatňují mnohé vědecké poznatky z oblasti softwarového inženýrství, struktur dat, sítí, algoritmů apod. Během posledních let byly při konstrukci operačních systémů objeveny řady nových metod, které jsou stejně užitečné i v jiných programových aplikacích. Problémy a těžkosti, které se vyskytují při tvorbě efektivních a spolehlivých operačních systémů jsou stejné jako ty, s nimiž se setkávají programátoři či autoři jiných rozsáhlých programů. Čas od času je potřeba operační systém upravit, modifikovat či parametrizovat. Pak je ovšem potřeba jim rozumět a znát algoritmy základních funkcí. Detailní znalost principů operačních systémů je naprosto nezbytná při vytváření těch částí, které jsou závislé na funkčnosti nestandardních technických prostředků. Příkladem jsou ovladače periferních zařízení. Techniky a metodiky tvorby operačních systémů lze s výhodou uplatnit i v jiných oblastech tvorby rozsáhlých programových systémů.

Účelem vzniku operačních systémů bylo zabezpečit programové sdílení prostředků, plánování úloh, plánování a přidělování paměti, ochrana dat a programů, odhalování chyb při běhu programů. Takto vzniklé operační systémy byly tvořeny množinou automatických a manuálních procedur, umožňující skupině lidí sdílet výpočetní systém, tj. sdílet čas procesoru(ů), operační paměti, periferních zařízení a procesů.

3.1 Služby operačního systému

Jedna z prvních definic operačního systému jej charakterizovala jako programové vybavení nezbytné pro provoz počítače. Tato definice však nic neříká, co je nezbytné pro provoz počítače. Proto si raději definujme operační systém na funkcích a to jako:

  • správce zdrojů - resource manager,

  • virtuální počítač - virtual machine.

Správce zdrojů. Zdroje jsou vstupní/výstupní (I/O) zařízení, soubory, procesor, paměť apod. Operační systém vlastní jednotlivé systémové zdroje - přiděluje a odebírá je jednotlivým procesům.

Virtuální počítač. Operační systém skrývá detaily ovládání jednotlivých zařízení (transparentnost), definuje standardní rozhraní pro volání systémových služeb. Programátor se může věnovat vlastní úloze a nemusí znovu programovat I/O operace. Program může díky "odizolování" od konkrétních zařízení pracovat i se zařízeními, o kterých jeho autor v době vytváření programu neměl ani ponětí (program se o ovládání I/O nestará).

Další definice operačního systému jej charakterizuje jako:

  • Správce prostředků – spravuje a přiděluje zdroje systému.

  • Řídicí program – řídí provádění uživatelských programů a operací I/O zařízení.

  • Jádro – trvale běžící program – všechny ostatní programy lze chápat jako aplikační.

Všechny tyto definice operačního systému oddělují striktně jednotlivé komponenty výpočetního systému, jak je zřejmé z následujícího obrázku.

Abstraktní pohled na systémové komponenty

Z předchozích definic vyplývají oblasti služeb operačních systémů, které jsou zřejmé z následujícího obrázku.


Zájmy operačních systémů

Základním účelem operačního systému je využití sdílených prostředků. Znamená to, že jeden nebo více uživatelů výpočetního systému se budou ucházet o používání fyzických prostředků, konkrétně o sdílení času procesoru event. více procesorů, operační paměti, periferních zařízení apod. Operační systém je z tohoto pohledu množina automatických a manuálních procedur umožňující skupině lidí sdílet výpočetní systém. Každý uživatel získává iluzi, že pracuje s počítačem, který umí provádět jakékoliv programy, tj. že pracuje na virtuálním počítači. Operační systém pak poskytuje každému uživateli vlastní virtuální počítač a navíc chrání každý z těchto počítačů proti destruktivnímu zásahu ostatních. Operační systém přitom nabízí uživateli daleko atraktivnější rozhraní než poskytuje vlastní hardware. Operační systémy jsou rozsáhlé programy zabezpečující multiprogramování, plánování a přidělování paměti, plánování úloh, ochranu dat a programů a odhalování chyb při běhu programů. Operační systém je z tohoto pohledu program, který řídí běh ostatních procesů tzn. ostatním procesům bezpečně a efektivně předává řízení a získává je zpět, sděluje procesoru, kdy má spouštět ostatní procesy. Přitom vytváří rozhraní mezi uživatelem a hardware a skrývá ostatním procesům detaily o hardware tj. musí zvládnout správu detailů hardware ve své režii.

3.2 Struktura operačního systému

Cílem operačního systému je rovněž zajištění pohodlnosti používání počítače, tzn. že operační systém je správcem rozhraní člověk/stroj a správcem rozhraní proces/operační systém. Operační systém je z tohoto pohledu tvůrcem virtuálního počítače a skrývá tak detailní pravdu o holém počítači (hardware).

Rozhraní člověk stroj

Operační systém z hlediska rozhraní člověk/stroj typicky poskytuje služby pro:

  • vytváření programů na uživatelském rozhraní (editory, kompilátory, sestavovací programy, ladící programy, apod.),

  • provádění programů, tj. zavádění programů do operační paměti a jejich spouštění,

  • běh procesů, podpora komunikace a synchronizace procesů,

  • zpřístupňování vstupních/výstupních zařízení a operací na nich,

  • řízení přístupů k souborům,

  • řízení přístupu k systému,

  • detekce chyb a chybové řízení (chyby hardware, programové),

  • protokolování činností.

Rozhraní proces/operační systém je typickým rozhraním služeb jádra, což jsou služby:

  • unifikace vstupních a výstupních operací,

  • virtualizace paměti,

  • ochrana a reakce na chyby,

  • protokolování a řízení přístupu ke zdrojům,

  • synchronizace procesů,

  • komunikace mezi procesy.

Dalším cílem operačního systému je zajištění dostatečné výkonnosti a efektivity. Operační systém je tak správcem systémových prostředků (procesorů, paměti, vstupních a výstupních zařízení a souborů) a správcem jejich užívání. Operační systém tak řídí přístup k vstupním a výstupním zařízením a souborům, provádí správu paměti a určuje, který program bude používat procesor. Operační systém konečně musí zajistit schopnost vývoje tj. doplňování a vývoj hardware, doplňování nových služeb do počítačového systému. Operační systém musí být schopen reagovat na inovace v technických prostředcích, na nové komponenty počítačů.

Operační systémy, z hlediska své struktury, lze popsat architekturou:

  • monolitickou,

  • víceúrovňovou,

  • virtuální,

  • klient-server.

3.2.1 Monolitická architektura operačního systému

Monolitickou architekturu operačního systému lze vyjádřit následujícím obrázkem.

Služby monolitického operačního systému v operační paměti

Z obrázku vyplývá určitá „vnitřní strukturovanost“, kdy hlavní program volá obslužné procedury pro jednotlivá systémová volání. Systémová volání přepínají zpracování z uživatelského módu do módu servisního (mód jádra operačního systému).

Systémová volání u obecného operačního systému lze rozdělit do několika skupin:

  • řízení procesů (vytvoření procesu, výměna procesů v paměti, ukončení zpracování procesu apod.),

  • programová přerušení ( nastavení přerušení pro jeho zachycení nebo ignoraci, přerušení procesu, plánování přerušení v čase, suspendace volaného procesu až do příštího přerušení),

  • řízení souborů (vytvoření nebo zrušení souboru, vytvoření adresáře, otevření souboru pro čtení nebo zápis, zavření souboru,čtení dat ze souboru do vyrovnávací paměti, zápis dat do souboru z vyrovnávací paměti apod.),

  • řízení adresářů a systému řízení souborů (vytvoření nového vstupu adresáře, přemístění vstupu adresáře, připojení systému souborů, přesun diskových bloků ze zásobníku v paměti na disk, změna pracovního adresáře, změna kořenového adresáře),

  • ochrana (změna bitů ochrany souboru, získání identifikace uživatele, získání identifikace skupiny, nastavení identifikace uživatele, nastavení identifikace skupiny, změna vlastníka souboru nebo skupiny, nastavení nebo zrušení masky ochrany),

  • řízení v čase (nastavení času ukončení, získání času ukončení, nastavení času posledního přístupu k souboru, získání uživatelského a systémového času pro další použití).

Nevýhodou monolitické architektury operačního systému je realizace jádra jako velkého programového celku, ve kterém lze snadno implementovat chyby, tím je obtížné ladění funkčnosti a složitá rozhraní procedur mající jednoznačnou vazbu na použitý hardware počítače. Výhodou je relativně snadná implementace operačního systému a zabezpečení velkého výkonu i na poměrně nevýkonném hardware.

3.2.2 Víceúrovňová architektura operačních systémů

Řada moderních operačních systémů je vytvářena na principu hierarchického uspořádání služeb dle příkladu na následujícím obrázku.

Struktura víceúrovňového operačního systému

Hierarchické uspořádání služeb operačního systému je založeno na následujících principech:

  • 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,

  • nejnižší vrstva (0) je hardware,

  • nejvyšší vrstva je uživatelské rozhraní,

  • pomocí principu modularity jsou vrstvy navrženy tak, aby každá používala funkcí (operací) a služeb pouze vrstvy n – 1 tj. vyšší vrstva využívá pouze služeb nejbližší nižší vrstvy a nabízí služby nejbližší vyšší vrstvě.

Pomocí této vrstvené architektury lze řešit problém přílišné složitosti velkého operačního systému a to tak, že se realizuje dekompozice velkého problému na několik menších zvládnutelných problémů. Přitom každá úroveň řeší konzistentní podmnožinu funkcí, nižší vrstva nabízí vyšší vrstvě „primitivní“ funkce (služby) a nižší vrstva nemůže požadovat provedení služeb vyšší vrstvy. Používají se přesně definovaná rozhraní a tím lze každou vrstvu uvnitř modifikovat, aniž to ovlivní ostatní vrstvy (principy modularity).

Nevýhodou takové architektury je především vyšší systémová režie a tím pomalejší vykonávání systémových volání. Protože efektivita hraje v jádře operačního systému významnou roli, je třeba volit kompromis v počtu vrstev tj. definovat pouze omezený počet úrovní pokrývající vyšší funkcionalitu. Výhodou takové architektury je přehlednost a oddělené datové struktury.

Typická struktura operačních systémů je hierarchická, čímž se řeší problém přílišné složitosti. Dekompozice velkého problému na několik menších umožňuje zvládnout řešení složitého operačního systému. Každá takto dekomponovaná úroveň řeší konzistentní podmnožinu funkcí, kde nižší vrstva nabízí vyšší vrstvě primitivní funkce (služby) a přitom nižší vrstva nemůže požadovat provedení služeb vyšší vrstvy. Rozhraní mezi vrstvami musí být přesně definovaná, což umožní modifikovat každou vrstvu uvnitř, aniž to ovlivní ostatní vrstvy. Typická struktura vrstev operačního systému je zřejmá na následujícím obrázku.

Poskytované služby OS

Typickým příkladem hierarchické struktury podsystémů je návaznost obecného operačního systému na hardware počítače typu PC. Struktura návaznosti je zřejmá z následujícího obrázku.

Rozhraní v PC

BIOS - Basic Input Output System, jak už vyplývá z názvu, zabezpečuje základní služby při přístupu k periferním zařízením. Jinými slovy, tvoří rozhraní mezi hardwarem a vyššími vrstvami programového vybavení. Je to rozhraní standardizované, tzn. že vstupní body a parametry obslužných procedur operačního systému nezávisí na typu hardware a je jednoznačně navázáno na funkce operačního systému. BIOS zabezpečuje v počítači ještě další úkoly:

  • provádí úvodní test po spuštění počítače,

  • umožňuje nastavit základní parametry počítače,

  • zavádí operační systém,

  • poskytuje operačnímu systému prostředky pro realizaci víceúlohového prostředí.

3.2.3 Architektura operačního systému s virtuálními počítači

Operační systémy navrhované na principech virtuálních počítačů jsou převážně určeny pro režim sdílení času (time-sharing). Operační systém tak emuluje existenci více jednouživatelských systémů s vlastním hardwarem (virtual machine monitor - VM), které jsou přesnou kopií skutečného hardware HW (VM vrstva emuluje HW). Pro realizaci je však třeba rozšířených vlastností rozhraní procesoru a oddělení funkce multiprogramování od funkce rozšířeného stroje (extended machine). Na následujícím obrázku je naznačena činnost systému zajišťující funkci rozšířeného počítače pomocí CMS (Conversational Monitor System), což je interaktivní systém pro sdílení času mezi uživateli. Když CMS zpracovává systémová volání převede jej do operačního systému vlastního virtuálního počítače. Tyto instrukce jsou pak převáděny do OS jako část vlastních simulací na skutečném hardwaru.

Struktura operačního systému s virtuálními počítači

Jádro systému tvoří monitor virtuálního počítače, který pracuje s prostým hardwarem a zajišťuje multiprogramování s použitím ne jednoho, ale několika virtuálních počítačů na vyšší úrovni. Virtuální počítače nejsou počítače se systémem souborů a ostatními možnostmi. Jsou pouze přesnými kopiemi prostého hardwaru, zahrnující mód jádra a mód uživatele, vstupů a výstupů, přerušení a vše čím je skutečný počítač vybaven.

Každý virtuální počítač je identický se skutečným hardwarem, každý z nich může pracovat s nějakým operačním systémem, který běží přímo na skutečném hardwaru. Nevýhodou této architektury může být zpomalení poskytovaných služeb operačním systémem a to z důvodu emulace. Výhodou je možnost koexistence více operačních systémů na jednom hardware a využití programového vybavení z jiného hardwarového systému.

3.2.4 Architektura operačního systému s modelem klient-server

Architektura operačních systémů na principu komunikace klient-server vznikla z potřeby minimalizace rozsahu jádra. Cílem je implementovat většinu funkcí operačního systému v uživatelských procesech, tedy v uživatelském módu. Například při požadavku na službu, jako je čtení bloku dat ze souboru, zašle uživatelský proces (nyní klient proces) požadavek na obsluhu souborů (file server), která vykoná práci a zašle zpět přečtená data jako odpověď na požadavek. Tzn. že mikrojádro zajišťuje zejména komunikaci.

Základní struktura takového operačního systému může být následující:

  • obsluha klienta ( klient process),

  • obsluha procesů (process server),

  • obsluha terminálů (terminal server),

  • obsluha souborů (file server),

  • obsluha paměti (memory server).

Na následujícím obrázku je naznačena struktura takového operačního systému a způsob komunikace.

Struktura operačního systému klient-server

Skutečné rozdělení na jednotlivé obsluhy – servery může být samozřejmě v každém systému jiné, jednotlivé servery mohou být vytvářeny i uživatelem. Po rozdělení operačního systému na jednotlivé části se pak při vyvolání požadované služby aktivuje vždy pouze obsluha příslušné části operačního systému. Jednotlivé části operačního systému nejsou rozsáhlé a jsou takto snadno řiditelné. Většina služeb operačního systému pak pracuje v uživatelském módu a ne v módu jádra systému.

Použití systému klient-server je velmi výhodné zejména pro distribuované operační systémy. U takového systému jádro příslušného systému řídí pouze přenos zpráv od klienta k příslušné obsluze – serveru. Ve skutečnosti to není možné, neboť některé funkce operačního systému, např. práce s vstupními a výstupními jednotkami, nelze provádět z uživatelského programu. Řeší se to pak tak, že tyto kritické procesy se zpracovávají v módu jádra.

Výhodou architektury klient-server je v oddělení adresních prostorů procesů a tím dobrá strukturovanost operačního systému, odolnost systému v případě selhání serverového procesu a použitelnost v síťovém a distribuovaném prostředí.

3.2.5 Charakteristiky moderních operačních systémů

Moderní operační systémy musí reagovat na rozvoj hardware, zvýrazněný multiprocesorovými stroji, připojením na vysokorychlostní sítě, rychlejšími procesory a větší kapacitou paměti.

Při vytváření operačních systémů se vyžaduje aplikovat nové softwarové technologie podporující multimédia, webovské aplikace, internet a technologie klient/server. Dalším směrem vývoje jsou distribuované operační systémy, vytvářející ilusi jedné společné paměti, jednoho paralelního stroje, distribuovaného systému souborů s jednotným pohledem na ně. Zde je směr vývoje pomocí objektově orientovaných nástrojů s cílem modulárního rozšiřování funkcionality celého operačního systému, postaveného na malém jádře a přizpůsobování se konkrétním potřebám bez porušení integrity celého systému.

Pro uživatele to znamená, aby operační systém byl snadno použitelný, snadno naučitelný, spolehlivý, bezpečný a rychlý. Z hlediska systémového návrhu se jedná jeho snadný návrh, implementaci, udržovatelnost, přizpůsobivost, spolehlivost a bezchybnost.

Tradičně bývaly operační systémy napsaný v symbolickém strojovém jazyku (assembleru), v současnosti se stále častěji píší v běžných programovacích jazycích vysoké úrovně (obvykle C/C++). Tím se docílí rychlejšího naprogramování, kompaktnějšího výsledku, srozumitelnějšího a tím snadnějšího ladění a snadnější přenositelnosti na jinou architekturu

3.3 Historie operačních systémů

V dřívějších dobách operační systémy jako takové neexistovaly a programátor musel komunikovat s počítačem pomocí strojového kódu (na úrovni 1-0). Navíc ještě musel znát přesnou konfiguraci počítače a jednotlivých připojených zařízení. Postupem času s rozvojem výpočetní techniky se však tento postup stal neúnosným, a tak začaly vznikat první programovací jazyky. Programovací jazyky mohou být buď vázány na konkrétní hardware (např. assembler), nebo jsou na hardware nezávislé (tzv. vyšší programovací jazyky). Nejstarším vyšším programovacím jazykem byl Short Code z roku 1949, později vznikl Fortran (1956, vyvinut IBM), COBOL (1959), BASIC (1965, později standardní jazyk pro PC), Pascal (1971), C (1972) atd.

S dalším rozvojem však bylo třeba programu, který by sám zvládal základní funkce systému a ulehčil programátorům práci. Počátkem 60. let tak pomalu začaly vznikat operační systémy a v polovině 60. let (s příchodem minipočítačů) již vyvstává potřeba takových operačních systémů, jaké známe dnes. Mezi nejznámější a nejrozšířenější platformy patří především operační systém Windows od firmy Microsoft a operační systémy na bázi UNIXu, vyvinutého původně firmou AT&T. Mezi nejznámější operační systémy na bázi UNIXu patří Linux a Mac OS X.

Významným prvkem ve vývoji operačních systémů bylo vytvoření grafického uživatelského rozhraní (GUI - graphics unit interface), které má své kořeny v padesátých letech, ale rozvinulo se až v sedmdesátých letech, kdy skupina v Xerox Palo Alto Research Center (PARC) vyvinula Alto, počítač založený na GUI. Skutečným mezníkem byl ale až GUI vyvinutý společností Apple pro její počítač Lisa, resp. Macintosh, který jako první tuto myšlenku již v roce 1983, resp. 1984 zpřístupnil masám. Pro kancelářské využití je dále účelné se zaměřit pouze na OS s GUI.

3.3.1 Operační systémy Windows

Historie operačního systému Windows sahá do roku 1981, kdy firma IBM uvedla na trh první PC spolu se 16bitovým operačním systémem MS-DOS (Microsoft Disk Operating System). Pro další vývoj počítačového průmyslu a šíření operačních systémů od Microsoftu se ukázalo jako rozhodující, že firma IBM umožnila výrobu klonů svých počítačů - velmi rychle se pak rozšířily do celého světa.

Ačkoliv MS-DOS v podstatě umožnil masivní rozvoj mikropočítačů, byl již v době svého vzniku nepohodlný a z hlediska návrhu nedostatečný a v podstatě zastaralý. MS-DOS podporoval pouze jednoho připojeného uživatele, který mohl v čase pracovat s pouze jedním programem (chybějící podpora víceúlohového režimu). MS-DOS měl hardwarová omezení, např. nedokázal pracovat s pamětí větší než 640 kB nebo s disky většími než 30 MB. Většina nedostatků MS-DOSu, především uživatelská nepřívětivost a absence víceúlohového režimu, byla postupně překonána pozdějšími verzemi systému Windows.

Významným mezníkem ve vývoji počítačů bylo uvedení počítače Apple Lisa s operačním systémem LisaDesk na bázi GUI v lednu 1983. U Microsoftu začal vznikat OS Windows jako GUI nadstavba MS-DOS. První verze OS s GUI od Microsoftu - Windows 1.0 byla uvedena na trh 20. listopadu 1985. Tato nadstavba OS DOS sice nebyla příliš použitelná, ale např. již nenutila uživatele ukončovat a znovu spouštět programy. Pokud chtěl s programy pracovat současně, mohl se mezi nimi přepínat, avšak okna se nemohla překrývat. Tento nedostatek byl odstraněn ve verzi 2.0, která byla uvedena na trh v roce 1987. Zde již bylo možno okna překrývat jedno přes druhé, bez nutnosti je mozaikovitě skládat vedle sebe.

Komerčního úspěchu a reálné použitelnosti se ale dočkal až OS MS Windows 3, uvedený na trh v roce 1990, který lze označovat za první reálně použitelný Windows s GUI. Windows verze 3.0 se velmi rychle rozšířily, především díky velké hardwarové i softwarové podpoře významných nezávislých výrobců a předinstalováváním na nová PC. V roce 1991 byla vydána rozšířená verze Multimedia Extension pro práci Windows s multimédii. Na jádře pracujícím pod DOSem byly na trh později uvedeny další OS Windows:

  • Windows 3.1 z dubna 1992 s řadou vylepšení (jako podpora OLE, vylepšení správce souborů, vylepšení podpory tiskáren, nových ovladačů podporujících MS-DOS grafiku v okně, virtuální paměť lze měnit v ovládacím panelu, atd.) a odstraněním některých chyb v uživatelském rozhraní. Následně byly vydány i Windows 3.11, kde byla přidána síťová podpora.

  • Windows 95 uvedený v srpnu 1995. Tento systém byl opatřen řadou vylepšení, například částečně 32bitovým jádrem (hybridní 16/32bitové), podporou dlouhých názvů souborů, lepší podporou sítí (byl integrován protokol TCP/IP) a zcela novým grafickým rozhraním (GUI Windows 95 bylo tak úspěšné, že se jej Microsoft rozhodl využít i ve verzi Windows NT 4.0). Lze jej označit za povedenou, klíčovou a přelomovou verzi Windows (bývá označován za první uživatelsky přívětivý operační systém od Microsoftu).

  • Windows 98 - již 32bitový, uvedený v červnu 1998. Tento systém přinesl hezčí grafické prostředí, integraci Webu do oken průzkumníka, již plně funkční podporu USB, nový Microsoft Explorer 4.

  • Windows 98 SE, uvedený v roce 1999 coby druhé vydání Windows 98 (Second Edition), byl již stabilním a kvalitním systémem.

  • Windows Me (Millenium Edition) - je posledním zástupcem této kategorie, který již restart do režimu čistého MS-DOSu neumožňuje (obsahuje nové grafické prostředí z Windows 2000 Profesional, Windows Media Player 7 a nové DirectX).

Operační systémy na základě DOSu však měly koncepční nedostatky. Již v roce 1987 proto IBM ve spolupráci s Microsoftem začal vytvářet nový operační systém pro PC, tentokrát již nezatížený nedostatky DOSu a nazvaný OS/2. Spolupráce obou firem se ale rozpadla a každá z nich si vyvíjela svou vlastní verzi OS/2 (Microsoft tu svou záhy přejmenoval na Windows NT a IBM na OS/2 Warp). V polovině roku 1993 se tak dostávají na scénu Windows NT, která jsou zaměřená především na náročné uživatele a servery (zkratka NT znamená New Technology). Pátou verzi Windows NT uvedl Microsoft na trh 17. února 2000. Přesto, že je tento systém volným pokračováním Windows NT 4.0, obsahoval tolik změn, že byl přejmenován na Windows 2000. Pro většinu domácích uživatelů je však tento systém příliš robustní a náročný na hardware. Bývá nasazován především na výkonných serverech.

Až v roce 2001 Microsoft konečně uvedl na trh operační systém pro běžné uživatele postavený nikoliv na DOSu, ale na přizpůsobené technologii NT, nazvaný Windows XP (eXPerience). V tomto případě Microsoft oznámil, že se jedná o nástupce operačních systémů, který si z obou větví má vzít jen to nejlepší. Z větve NT to má být vysoká spolehlivost, z větve 9x pak kompatibilitu a podporu multimédií (až do verze XP nebyly aplikace pro řadu NT kompatibilní s aplikacemi pro řadu 9x a naopak). Jeho další odlišností oproti předchozím verzím je nová podoba grafického rozhraní, a možnost jeho změny (skinovatelnost); celý systém je multimediální, umožňuje práci s videem, zvuky a Internetem. V některých operacích je Windows XP až o 30% pomalejší než na starém jádře pracující Windows Me, přesto je to však (za předpokladu doinstalování service packů) významný krok směrem vpřed na poli OS Windows.

Operační systém Windows je dnes zejména díky masivním marketingovým kampaním a podpoře nezávislých výrobců HW v 90. letech nejrozšířenějším OS v oblasti kancelářských počítačů. Systémy Windows různých verzí jsou instalovány na cca 90% všech kancelářských počítačů. Mezi největší výhody MS Windows patří právě jejich masivní rozšíření. To je však zároveň pro Microsoft i omezením - vývoj trpí velkou setrvačností (viz např. problém roku 2000 "Y2K" - pouze dvouciferné ukládání letopočtu) a omezenými možnostmi Microsoftu zavádět moderní technologie ještě v době, kdy jsou nové (viz například setrvávání u BIOSu). Součástí MS Windows je množství aplikací pro běžnou kancelářskou práci (MS Explorer, základní multimediální aplikace, atd.). Vývoj aplikací pro platformu Windows je co do míry standardizace a chování jednotlivých aplikací různorodý.

Od verze Windows 2000, resp. Windows XP, se nevyskytují výrazné problémy se stabilitou systému. Pro dostatečnou bezpečnost systému je potřeba důsledně dbát na pravidelné aktualizace a jeho dobrou správu více než u méně rozšířených systémů. Aktualizace systému bývá obvykle v intervalech 1 měsíce.

3.3.2 Operační systémy UNIX

UNIX byl poprvé představen Kenem Thompsonem a Dennisem Ritchiem v článku publikovaném v roce 1974 v „Communications of the ACM“. Na trh byl však uveden již v roce 1969. V roce 1964 Bell Telephone Laboratories zahájily projekt MULTICS (Multiplexed Information and Computing Service). Cílem projektu bylo vytvořit OS pro rozsáhlý počítač s velkým množstvím uživatelů. Projekt MULTICS byl v sice roce 1969 ukončen, ale jeho bývalí programátoři (Ken Thompson, Dennis Ritchie a Brian Kernighan) přišli s myšlenkou jednoduchého, elegantního a snadno ovladatelného OS a již o rok později byl nový OS dokončen (v jazyce assembler) a nazván UNICS. (Tento název vznikl z "Universal Information and Computing Service", je to slovní hříčka na název MULTICS.) Později byl název pozměněn na UNIX.

V roce 1973 byl UNIX přepsán do jazyka C, aby byl snadno přenositelný mezi platformami. Zdrojové texty UNIXu byly poskytnuty universitám (např. universitě v Berkely). Vznikly dvě hlavní větve UNIXu:

  • AT&T (původní verze od American Telephone and Telegraph company) - dnes UNIX System V (od Unix System Laboratories)

  • BSD (vytvořený na universitě v Berkeley; BSD = Berkeley Software Distribution) - dnes UNIX BSD 4.4

V roce 1984 se začaly objevovat první pokusy o standardizaci UNIXu. Vzniklo sdružení GNU (název GNU je rekursivní zkratka pro "GNU is Not UNIX"). Toto sdružení podporuje "svobodný software" a vytvořilo GPL (General Public Licence), která je legislativním prostředkem pro zaručení "svobody" softwaru.

Později vznikla řada standardů POSIX (Portable Operating System Interface), která popisuje obecný OS (standardy např. definují systémová volání, knihovní funkce a chování programů v „POSIX kompatibilním“ operačním systému). I přes tyto standardizační snahy je ve světě Unixu mnoho různých odchylek a „vylepšení“. Přesto lze konstatovat, že POSIX spolu s dalšími standardy přinesl potřebný řád.

V roce 1989 byl na bázi UNIX BSD uveden nový plně objektový operační systém NeXTStep 1.0 s jádrem Mach (tento operační systém byl úzce svázán s počítači NeXT). V roce 1996 firma NeXT vytvořila na základě částečně přepracovaného NeXTStepu otevřený standard objektového API OpenStep, který koncepčně vychází z původního NeXTStepu, výrazně však rozšiřuje jeho služby. Na OpenStep pak navázala iniciativa GNUStep, jejíž snahou je vytvořit API, konformní se standardem OpenStep, které by chodilo prakticky kdekoli a bylo volně k dispozici v rámci licence GNU. V roce 1997 nakonec došlo k odkoupení firmy NeXT firmou Apple, která následně použila NeXTStep/OpenStep 4.2 pro vývoj nového operačního systému pro počítače Apple Macintosh.

V devadesátých letech začaly vznikat nekomerční systémy na bázi UNIXU. V těchto letech vznikaly NetBSD, FreeBSD, OpenBSD (nekomerční UNIXy typu BSD) a také LINUX (reprezentující dnes mezi nekomerčnímy systémy na bázi UNIXU druhou větev Unixu zvanou System V).

V roce 1999, resp. 2000 firma Apple Computer uvedla nový komerční operační systém Mac OS X server, resp. Mac OS X navazující na technologie NextStepu/OpenStepu, který má unixové jádro Darwin (postavené na technologiích jako FreeBSD nebo kernel Mach 3.0 ). Části Darwinu jsou Open Source s licencí APL (Apple Public Licence) nebo GPL.

V současnosti se UNIX využívá na universitách a v komerční informatice (internetové aplikace, mobilní komunikace atd.), ale mezi běžnými uživateli není rozšířen. Šíří se spíše UNIXové klony, resp. operační systémy typu UNIX. Zde mezi nejvýznamnější patří Linux a Mac OS X.

3.3.3 Operační systémy Mac OS a Mac OS X

Historie operačního systému Mac OS sahá do roku 1977, kdy firma Apple Computers vyprodukovala komerčně úspěšný počítač Apple II, první all-in osobní počítač (v plastové krabici a s barevnou grafikou), resp. do roku 1983, kdy byl uveden počítač Apple Lisa s OS LisaDesk na bázi GUI. Skutečný Mac OS 1.0 však byl uveden na trh až v lednu roku 1984 spolu s prvním počítačem Macintosh. Mac OS byl velmi pokrokovým operačním systémem a kromě GUI obsahoval i další moderní prvky - ovládání myší, multitasking, multimedia, podporu práce v sítích, atd.

Mac OS byl do roku 2002 postupně uveden v 9 verzích (poslední verze 9.2). V roce 1991 vyšel v té době velmi pokročilý Mac OS 7 (jednalo se mimo jiné o plný 32bitový systém). V roce 1994 Apple oznámil práce na zcela novém operačním systému s kódovým označením Copland. Na svou dobu měl Copland mnoho převratných designových prvků jako skutečné mikrojádro a hardwarovou abstrakci. Projekt se však dostal po řadě peripetií do slepé uličky a v srpnu 96 byl zrušen vývoj.

V té době však již byla značná potřeba nového OS - Mac OS 7 po 5 letech sice procházel drobnými updaty (až k verzi systému 7.6), ale již nevyhovoval v mnoha ohledech, od neplnohodnotného multi-taskingu po nestabilitu posledních systémů 7.x (neuvedením Coplandu a uvedením Windows 95 od Microsoftu Apple přišel o své vůdčí postavení u OS s GUI a u řady vlastností OS byl Microsoftem předstižen). V roce 1997 byl proto Mac OS 7 nahrazen Mac OS 8, do kterého byly začleněny některé technologie Coplandu a který do značné míry vyřešil potřeby uživatelů. Mac OS 8.6 představil multitasking na úrovni kernelu (jádra). V roce 1998 byl uveden Mac OS 9, který je ve formě emulační vrstvy Classic spustitelný na Mac OS X dodnes. Mac OS 9 byl vyvíjen až do roku 2002, kdy byla jeho poslední verze 9.2 nahrazena zcela novým operačním systémem Mac OS X.

Historie Mac OS X sahá do roku 1997, kdy Apple odkoupil společnost NeXT a rozhodl se použít její OS NeXTSTEP (objektově orinetovaný operační systém na bázi Unixu, vybavený vlastním grafickým rozhraním) jako základ pro svůj nový OS Mac OS X. Mac OS X - na trhu od roku 2000 (Mac OS X server již od roku 1999) - je moderní objektově orientovaný systém založený na kvalitním a stabilním základu BSD Unix, vybavený novým vektorovým grafickým rozhraním Aqua GUI. Uvedením Mac OS X Apple navázal na někdejší úspěchy GUI Mac OS (i v současné době je vzhled rozhraní Mac OS X - Aqua GUI napodobován dalšími výrobci operačních systémů a aplikací, včetně Microsoftu). Mac OS X zajišťuje plnou kompatibilitu s aplikacemi napsanými pro původní Mac OS 9.2 (aplikace lze nativně spouštět).

V pozadí nového uživatelského rozhraní stojí jádro OS Darwin, otevřená základna na bázi UNIXu, postavená na takových technologiích jako Mach nebo FreeBSD. Nad Darwinem/XNU stojí set služeb a knihoven, převzatých většinou z NextStepu, které se starají o grafické rozhraní a uživatelské aplikace. Mac OS X nabízí kompletní implementaci systému X Window pro aplikace založené na X11 (umožňuje instalaci běžných Linuxových aplikací pro prostředí X11).

Technologické vlastnosti Mac OS X umožňují emulovat chod původního Mac OS 9.2 (nativní emulační vrstva Classic) i chod běžných emulátorů ostatních platforem (Virtual PC; iEmulator; Workstation 2.1 od Parallels). Počítače Apple Macintosh umožňují nativní provoz Linuxu a díky aktuálně probíhajícímu přechodu na procesory Intel a technologii Boot Camp od Apple umožňují rovněž nativní provoz Windows XP. Lze také očekávat spouštění PC aplikací pod MacOS X (již existuje první kompilace WINE pro Intelovské Macy). Mac OS X 10.4.4 lze nativně provozovat - na počítačích Apple Macintosh - jak na PowerPC (IBM, Motorola) tak na x86 procesorech (Intel). Z počítačů Apple Macintosh se tak postupně stává nejuniverzálnější platforma pro běžného i profesionálního uživatele.

Po ukončení distribuce Mac OS 9 byl Mac OS X dosud vydán v následujících verzích:

  • Mac OS X 10.2 Jaguar (uveden v roce 2002)

  • Mac OS X 10.3 Panther (uveden v roce 2003); označovaný běžnými uživateli za první plně použitelný Mac OS X

  • Mac OS X 10.4 Tiger (uveden v roce 2005); tento OS přinesl řadu vylepšení, mimo jiné vyřešení některých problémů českých specifik (např. přepínání klávesnice…).

  • Mac OS, resp. MacOS X je možné spustit pouze na HW Apple, což znamená dokonalé provázání SW a HW, neexistuje zde problém s nekompatibilitou HW a SW. Apple zatím popírá záměr umožnit provoz Mac OS X na běžných PC (nicméně přechodem na procesory Intel již tomu nebrání žádná technická omezení a zůstávají pouze omezení definovaná samotným Applem a BIOSem na PC).

Základní myšlenkou systému je jednoduchost a intuitivnost uživatelského rozhraní - ergonomie Mac OS X je ve srovnání s jinými OS na vysoké úrovni; výrazně jednodušší je mimo jiné i customizace OS, konfigurace např. internetu a sítí obecně (většinu úkonů je schopen provádět uživatel sám / není třeba zásahu správce sítě).

Jednou z největších výhod tohoto OS je rovněž prakticky nulové množství virů a spyware (Mac OS X je vůči virům z PC zcela imunní; specielní viry pro Mac OS X prakticky neexistují, mimo jiné i zásluhou nezajímavostí platformy pro strůjce virů; jedinou známou výjimkou mohou být pouze macroviry v MS Office). Reakce na bezpečnostní rizika v systému je velice rychlá – ve formě updatů systému. Tento systém je tedy v současnosti velmi bezpečný – zejména díky svému UNIX jádru. Podobně jako ostatní moderní systémy umožňuje několik stupňů zabezpečení dat.

Nevýhodou je menší podpora ze strany výrobců a prodejců HW, nicméně největší výrobci periferií tuto platformu standardně podporují (HP, Epson…) a podpora se od doby uvedení Mac OS X rozšiřuje.

3.3.4 Operační systémy Linux

Situace okolo PC byla v 80. a 90. letech pro mnoho uživatelů natolik neuspokojivá, že se některé firmy (a stejně tak vývojářská komunita) pustily do vývoje vlastních OS nebo alespoň GUI pro DOS, které by odstranilo alespoň ty největší nedostatky Dosu a Windows - uživatelskou nepřívětivost, množství chyb, složitá síťová řešení, nepřítomnost multitaskingu a chybějící podpora multimédií. Vznikaly různá řešení - řešení založená na MS-DOS, řešení nová (např. OS/2) a řešení na bázi UNIXu (X Window System; GNU/Hurd;...). Jak se však později ukázalo i po téměř 30 letech vývoje osobních počítačů je dodnes stále jedním z nejlepších systém UNIX, resp. řešení na něm založená, tzv. systémy typu UNIX. Nejnadějnějším systémem typu UNIX pro PC se stal Linux, výtvor finského studenta Linuse Torvaldse, datovaný na 25.8.1991, kdy Torvalds zaslal do diskuzní skupiny comp.os.minix příspěvek s předmětem "What would you like to see most in minix?" o tom, že vyrábí free operační systém.

Torvaldsův Linux v poslední době pomalu dospěl do fáze komerční použitelnosti, zatím především jako síťový server, ale pomalu také jako systém pro běžného uživatele. Již v roce 2000 začínají hlavní komerční prodejci PC HW (Compaq, IBM, Dell, SGI, Fujitsu) prodávat desktop a laptop počítače s předinstalovaným Linuxem. Linux se postupně stává úspěšným konkurentem jak na serverech, kde úspěšně nahrazuje starší a hlavně drahé unixy, tak na desktopových stanicích, kde začíná úspěšně konkurovat MS Windows.

Zatím ho však částečně deklasuje, že jeho vývojářská základna je naprosto decentralizovaná. Fakt, že je Linux vyvíjen nepřehlédnutelným zástupem programátorů ze všech koutů planety, sice umožňuje, že veškerá vylepšení jsou rychle hotova a k dispozici, ale na druhé straně způsobuje nepřítomnost nějaké přesnější vývojové linie. Linux tedy trpí nemocí, známou z Unixu - každý si ho upravuje pro sebe, takže vzniká přehršel verzí až zmatek. Toto si uvědomují dokonce i sami tvůrci Linuxu, takže se objevily snahy o jeho standardizaci - zde existují dva koncepty: UnitedLinux a Linux Standard Base (LSB). Mimo OpenSource řešení existují také komerční distribuce Linuxu, které se vyznačují vyšší podporou ze strany výrobce.

Dnes tedy existuje celá řada na kancelářských stanicích a serverech využitelných distribucí OS Linuxu, jako např.:

  • SuSE Linux. Distributor Linuxu s oficiální pobočkou v České republice. SuSE Linux se dodává v několika jazykových verzích včetně české. Distribuce je placená a zahrnuje rozsáhlou českou dokumentaci a instalační podporu. Tuto distribuci převzala a dále vyvíjí fa Novell.

  • RedHat Linux (a CZ verze). Začátkem roku 2001 nejrozšířenější distribuce. Uživatelsky příjemná instalační procedura, program na konfiguraci systému X-Window, prostředky pro administraci systému přes X11, velké množství softwarových balíků.

  • Debian GNU/Linux. Tato distribuce není vyvíjena jednou firmou - na vývoji jednotlivých balíků této distribuce se podílejí lidé po celém světě. Jde o jednu z mála nekomerčních distribucí Linuxu.

  • Ubuntu Linux. Kvalitní distribuce, kde Ubuntu tým vydává novou verzi Ubuntu každých šest měsíců. Vždy obsahuje poslední verze jádra, X-Window systém, Gnome a dalších klíčových aplikací, a každá verze má bezpečnostní podporu 18 měsíců. Tato distribuce vychází z distribuce Debian, je však více zaměřena na běžné uživatele, přecházející také z jiných OS.

  • Další distribuce (Fedora; Linspire; Slackware Linux; Turbo Linux; Linux Mandrake; Caldera Network Desktop, OpenLinux).

Jednou z největších výhod mnoha distribucí Linuxu je jeho nulová pořizovací cena, stejně jako velké množství aplikací, které jsou pro tyto OS v rámci opensource a GNU licencí vyvíjeny.

Linuxové distribuce nedosahují z hlediska uživatelského rozhraní takového komfortu, jako Mac OS X, či Windows XP, nicméně při řádném zaškolení, případně nenáročného způsobu použití (např. na obsluhu konkrétního procesu u stolních počítačů) je pro kancelářské nasazení dobře použitelný, tento stav se ovšem velmi rychle mění směrem k většímu uživatelskému komfortu.

Velkou výhodou tohoto systému je možnost takřka libovolného přizpůsobení potřebám uživatele. Toto přizpůsobení si ovšem není schopen uživatel provádět sám. Pro potřeby podpory je možné využití komerčních služeb mnoha firem.

Nevýhodou tohoto OS je nižší podpora komerčních aplikací (např. absence podpory Microsoft Office), tato nevýhoda je ovšem vyvažována velkým množstvím alternativního SW zdarma, který je často technologicky vyspělejší a založen na uznávaných standardech. Další nevýhodou je také nižší podpora ze strany výrobců periferií, obvykle však existují „neautorizované“ ovladače také pro HW jejichž výrobci Linux přímo nepodporují.

Kontrolní otázky:

  1. Vyjmenujte alespoň dva důvodu, proč znalost operačních systémů je potřebná pro práci programátora?

  2. Proč je operační systém rozhraním mezi uživatelem a hardware počítače?

  3. Jaké jsou funkce BIOSu?

  4. Ze kterých generických komponent se skládá operační systém?

Úkoly k zamyšlení:

  1. Zamyslete se nad výhodami a nevýhodami grafického (Windows) a textového (MS DOS) rozhraní mezi uživatelem a operačním systémem?

Korespondenční úkol:

  1. Představte si rozhraní člověka s počítačem řízeným hlasem. Napište některé příkazy, které by musel operační systém interpretovat, aby mohl vykonávat nejzákladnější funkce.

Shrnutí obsahu kapitoly

V této kapitole jste se seznámili s důvody obecných znalostí principů operačních systémů. Důraz v této kapitole byl kladen na pochopení rozhraní člověk/stroj a proces/operační systém. Velká pozornost byla věnována vysvětlení zájmů operačních systémů.