Operační systémy Elektronická skripta
Mgr. Jiří Pech, Ph.D. Jihočeská Univerzita Přírodovědecká fakulta 2012 1
Obsah Obsah ............................................................................................................................................................. 2 Úvod ............................................................................................................................................................... 3 Co je to operační systém .......................................................................................................................... 4 Zavedení OS u PC .................................................................................................................................................. 5 Rozdělení OS ............................................................................................................................................... 6 Přidělování paměti ................................................................................................................................... 8 Přidělování jedné souvislé oblasti paměti .................................................................................................. 8 Přidělování paměti po sekcích ........................................................................................................................ 9 Dynamické přemísťování sekcí ..................................................................................................................... 11 Stránkování paměti ........................................................................................................................................... 12 Stránkování paměti na žádost ....................................................................................................................... 13 Segmentace paměti ............................................................................................................................................ 15 Segmentace se stránkováním. ....................................................................................................................... 15 Správa paměti v reálných OS .......................................................................................................................... 16 Procesy ....................................................................................................................................................... 17 Pojem procesu ..................................................................................................................................................... 17 Stavy procesu ....................................................................................................................................................... 19 Synchronizace procesů ......................................................................................................................... 22 Kritická sekce ...................................................................................................................................................... 23 Synchronizační problémy ............................................................................................................................... 26 Deadlock .................................................................................................................................................... 28 Podmínky pro vznik deadlocku .................................................................................................................... 29 Metody řešení deadlocku ................................................................................................................................ 29 Odkládací zařízení ................................................................................................................................. 31 Adresářová struktura ....................................................................................................................................... 31 Soubor .................................................................................................................................................................... 31 Souborové systémy ................................................................................................................................ 36 FAT .......................................................................................................................................................................... 36 NTFS ........................................................................................................................................................................ 37 Extended (Ext) ..................................................................................................................................................... 37 Přehled operačních systémů .............................................................................................................. 39 UNIX ........................................................................................................................................................................ 39 Microsoft a jeho operační systémy ............................................................................................................... 46 Apple a jeho operační systémy ...................................................................................................................... 52 Závěr ........................................................................................................................................................... 54 Přehled použité literatury ................................................................................................................... 55
2
Úvod Operační systém tvoří nedílnou součást všech počítačů, ať již stolních, notebooků anebo mobilních zařízení. Tato publikace by měla přispět k lepšímu pochopení jejich funkce a struktury a současně podat přehled nejběžnějších operačních systémů a jejich vlastností. Text podává přehled o obecných vlastnostech operačních systémů a současně vysvětluje, jakým způsobem operační systémy fungují a jak řeší základní požadavky, které jsou na ně kladené – správu paměti, procesů a organizaci úložiště dat. Dále jsou v textu popsány nejpoužívanější operační systémy, jejich struktura, vývoj a vzájemné vztahy a odlišnosti. Publikace je primárně určena jako studijní materiál studentům Přírodovědecké fakulty Jihočeské univerzity v Českých Budějovicích pro studenty předmětu Operační systémy 1 a 2.
3
Co je to operační systém Definice: Operační systém (dále OS) jsou ty programové moduly ve výpočetním systému, jež ovládají řízení prostředku, jimiž je tento výpočetní systém vybaven, jako jsou procesory, paměť (operační i vnější), I/O zařízení a soubory dat. Tyto moduly rozhodují spory, snaží se optimalizovat výkon a zjednodušují efektivní využívání výpočetního systému. Jiná definice ještě říká, že operační systém zajišťuje nezávislost software na hardware. Jedná se vlastně o první program, který se spustí při startu počítače a zůstává v paměti po celou dobu běhu počítače. Tento program má za úkol umožnit běh ostatních programů, kterým se říká aplikace a jejich bezchybnou komunikaci s hardwarem. Aplikace, by tak na stejném OS měly běžet stejným způsobem nezávisle na použitém hardware. Základní funkce operačního systému jsou: •
Správa a přidělování paměti, virtuální paměť
•
Správa procesů, synchronizace procesů
•
Přidělování procesoru, multitasking
•
Řešení zablokování, řešení deadlocku
•
Správa systému souborů, virtuální souborový systém
OS umožňuje uživateli aplikacím komunikovat s hardwarem pomocí jasně daných pravidel. V ideálním případě by celý systém měl vypadat takto:
Uživatel Aplikace
Shell
OS Hardware Obrázek 1 Správně fungující operační systém Shell je speciální aplikace, která uživateli umožňuje komunikovat přímo s operačním systémem pomocí příkazů. Aplikace pak musí požívat předem dané knihovny, které komunikují prostřednictvím OS s potřebným hardwarem. OS tak může zvolit správnou sekvenci užití zdrojů a některé nevhodné aplikace od hardware odstínit. Pokud OS nedokáže poskytnout aplikaci všechny potřebné nástroje, musí jej aplikace obejít a použití OS pak ztrácí smysl.
4
Uživatel
Aplikace
Shell
OS Hardware Obrázek 2 Nesprávně fungující operační systém Například Windows ve verzích 9X (a dřívějších) nedokázaly poskytnout některým hrám všechny potřebné prostředky, proto tyto hry obsahovaly prostředí DOS4G (DOS for games), které dokázalo aktuální OS odsunout na pozadí a samo převzalo správu počítače. Proto tyto hry nefungovaly ve Windows 2000 nebo Windows XP, které takovéto chování neumožňovaly.
Zavedení OS u PC Po připojení PC k elektrickému proudu se zjistí z paměti BIOS (Basic Input Output System) anebo nověji UEFI (Unified Extensible Firmware Interface) médium (úložiště) ze kterého se má zavádět OS. Z tohoto média se z předem známého místa zvaného MBR (Master Boot Record) načtou potřebné instrukce pro zavedení OS. Může se zde nacházet buď přímo samotný OS nebo jeho zavaděč. Pokud je v počítači více OS, pak zde může být i takzvaný zaváděcí program, který umožňuje uživateli vybrat žádaný OS a pak jej zavést. Nejčastěji jsou to programy Grub nebo Lilo, ale takový zavaděč v sobě obsahují i Windows nebo Mac OS X. Dnes již častěji na počítači najdeme jen jeden hlavní OS, který umožňuje další OS zavést pomocí virtuálních počítačů.
5
Rozdělení OS OS můžeme dělit podle různých kritérií. Tato kritéria nejsou vždy jednoznačná a někdy je ani na některý OS nelze aplikovat.
Podle počtu ovládaných procesorů •
Jednoprocesorové (monoprocesorové) – dokáže pracovat pouze s jedním procesorem.
•
Víceprocesorové (multiprocesorové) – dokáže rozdělovat úlohy současně na více procesorů. o Asymetrický processing (ASMP) – na jednom procesoru běží procesy systému, na dalších uživatelské procesy o Symetrický multiprocessing (SMP) – kterýkoliv proces může běžet na kterémkoliv procesoru
Podle správy uživatelů •
Jednouživatelské (monouser) – Se systémem může pracovat v daném okamžiku pouze jeden uživatel.
•
Víceuživatelské (multiuser) – Více uživatelů pracuje současně v reálném čase. Musí se zajistit rozdělení a oddělení prostředků (paměti) mezi uživatele.
Podle počtu spuštěných programů •
Jednoprogramové (monotasking) – v systému lze spustit pouze jednu úlohu. Další lze spustit až po jejím ukončení.
•
Více programové (multitasking) – více úloh je spuštěno současně. o Preemptivní multitasking – pravidelné střídání úloh (Mac OS X, UNIX, Windows NT, Windows95) o Nepreemptivní multitasking – lze spustit více úloh, ale úloha opustí procesor pouze při ukončení anebo čekání na vstupně-výstupní operaci o Kooperativní – jako preemptivní, ale o předání procesoru se starají samotné úlohy (Windows 3.X, Mac OS před X, iOS)
Podle schopnosti práce v síti •
Lokální – nedokáží pracovat v síti bez přídavných modulů
•
Síťové – mají klientskou i serverovou verzi
Podle míry specializace •
Speciální – pro jeden typ úloh
•
Univerzální – různé typy úloh 6
Realtimové operační systémy Takové OS, které musí být schopny práce v reálném čase a reagovat okamžitě (reálně do určité časové hranice). Např. při řízení letadla nebo jaderné elektrárny, kde velké prodlevy jsou nemožné. Většinou mají malé jádro (mikrojádro), které ovládá jen základní funkce a na vše další se volají moduly Příklady: •
QNX – UNIXový operační systém
•
RTLinux – rozšíření jádra Linuxu
•
RTX – RealTime eXtension – nadstavba pro Windows
Základní typy struktur OS •
Monolitická struktura – jádro a rozhraní - MS DOS, zařízení (tiskárny)
•
Vrstvená struktura – části systémů uspořádány do vrstev – každá vrstva využívá služeb nižších vrstev. Systém je budován od vnitřních vrstev k vnějším. Vnitřní vrstvy jsou proto nejdůležitější z hlediska bezpečnosti. V současnosti nejčastější struktura
•
Virtuální počítače – systém je rozdělen do samostatných modulů. Každý z nich vybaven všemi potřebnými prostředky. Obvykle se vzájemně neovlivňují.
•
Abstraktní počítače – jako virtuální počítače. Každý modul má svou pevnou specifickou funkci. Ovladače zařízení.
•
Model klient – server – systém má mikrojádro, které obsahuje jen základní funkce, ostatní funkce systému provádějí speciální systémové procesy – servery. Procesy, které spouští uživatel se nazývají klienti a využívají služeb serveru. Typicky realtimové OS
•
Stavebnicová struktura – co nejmenší jádro. Zbytek je přilinkován pouze tehdy, vyžaduje-li ho některý z klientů. Opět typicky realtimové OS.
7
Přidělování paměti Definice: Pod pojmem paměť zde myslíme operační paměť – paměť, kterou přímo využívají procesory při zpracování toku instrukcí a dat. O tuto paměť se stará modul přidělování paměti, který má následující funkce: §
Sledování stavu každého místa operační paměti
§
Určování strategie přidělování paměti
§
Realizace přidělování paměti
§
Realizace uvolňování paměti
§
Realizace virtuální paměti
Techniky přidělování paměti V praxi se pro přidělování paměti používají nebo používaly následující techniky: 1. Přidělování jedné souvislé oblasti paměti 2. Přidělování paměti po sekcích 3. Dynamické přemísťování sekcí 4. Stránkování 5. Stránkování na žádost 6. Segmentace 7. Segmentace a stránkování na žádost Tyto techniky si nyní podrobněji probereme:
Přidělování jedné souvislé oblasti paměti Při této metodě nepotřebujeme žádné zvláštní technické prostředky. Celá paměť je vlastně rozdělena do tří částí – OS, aplikace a nevyužitá část. Není zde možný žádný multitasking. Nutné technické prostředky •
Mezní registr OS
Výhody •
Jednoduchost
•
Rychlost
8
Nevýhody •
Není využita celá paměť
•
Neexistuje multitasking – pokud úloha čeká, zahálí i procesor
•
Nelze zavést úlohu, která vyžaduje více paměti než kolik je jí k dispozici.
Operační systém
Úloha
Nevyužitá oblast Obrázek 3 Přidělování jedné souvislé oblasti paměti
Přidělování paměti po sekcích Paměť se rozdělí na samostatné části zvané sekce, každá obsahuje paměťový prostor jedné úlohy. Sekce mohou být buď stejně velké (statické přidělování) nebo podle potřeb úlohy (dynamické přidělování). Moduly a technické prostředky •
Sledování stavu každé sekce o používá se, o nepoužívá se o rozsah
•
Plánovač úloh – strategie přidělování
•
Přidělení paměti
•
Uvolnění paměti
•
Mezní registry jednotlivých sekcí
9
Výhody •
Multiprogramování
•
Není nutné speciální technické řešení
•
Jednoduchá implementace
Nevýhody •
Časté změny stavových registrů
•
Fragmentace paměti o Vnější o Vnitřní
Operační systém Úloha 1 Úloha 1 – nevyužitý prostor
Úloha 2 Úloha 2 – nevyužitý prostor
Úloha 3 Úloha 3 – nevyužitý prostor
Obrázek 4 Vnitřní fragmentace Nevyužité prostory v jednotlivých sekcích znamenají vnitřní fragmentaci. K této situaci dojde tehdy, pokud úlohy ve skutečnosti využijí méně paměti než deklarují před spuštěním anebo pokud během svého běhu část paměti přestanou využívat. Tato paměť je nevyužitelná až do skončení úlohy. Pokud dojde k uvolnění úlohy, která zabírá paměťový prostor „mezi“ jinými úlohami vznikne v paměti neobsazené místo. Toto místo lze zaplnit pouze úlohou, která vyžaduje stejné nebo menší množství paměti, než je zde k dispozici. Tento případ se nazývá vnější fragmentace. Může tak nastat situace, že nelze zavést úlohu, ačkoliv je celkově k dispozici dostatečné množství paměti.
10
OS
OS
Úloha 1
Úloha 1 Ukončení
Úloha 2
Úloha 4 Nelze umístit
úlohy 2
Úloha 3
Úloha 3
Obrázek 5 Vnější fragmentace
Dynamické přemísťování sekcí Tato metoda řeší problém vnější fragmentace. Periodicky dochází k přesouvání sekcí, tak aby volné oblasti byly sloučeny do jedné. Při této metodě může docházet k problémům, pokud dojde k přemístění sekce za běhu úlohy, která ji využívá. Může tak dojít k situaci, že některý odkaz ukazuje na neplatné místo paměti. K těmto situacím typicky dochází, pokud programátor používá přímé adresování paměti (konkrétní místo). Potřebné technické vybavení •
registry relokace
Výhody •
Eliminace vnější fragmentace
•
Možnost více sekcí oproti předchozí metodě
•
Lepší využití paměti i procesoru
Nevýhody •
Náročné technické vybavení
•
Snížení rychlosti
•
Limitováno rozsahem paměti
11
Stránkování paměti Operační paměť se rozdělí na stejně velké dílky – bloky. Na stejně velké dílky – stránky se rozdělí každá úloha která se má zavést. Pokud je dostatečný počet volných bloků pro všechny stránky pak se úloha zavede a spustí. Bloky se stránkami jedné úlohy na sebe nemusí navazovat. Každá stránka má registr, který je uložen v tabulce stránek úlohy. Při tomto způsobu téměř odpadá vnitřní fragmentace, neboť pokud se zmenší potřeba stránek pro jednu úlohu, mohou být volné bloky uvolněny. Fragmentovaný tak je obvykle pouze poslední blok úlohy, který obvykle není zcela zaplněn. Vzhledem, k relativně malé velikosti stránek, lze toto však pominout. Základním problémem je jak velké stránky je třeba zvolit. Pokud zvolíme příliš velké, může teoreticky dojít k významnější vnitřní fragmentaci, naopak příliš malé znamenají mnoho registrů a rozsáhlé tabulky stránek a tedy i vyšší výpočetní náročnost. Technické prostředky •
Sledování stavu – tabulka stránek pro každou úlohu
•
Tabulka bloků – volný nebo užitý
•
Plánovač úloh
•
Přidělování a uvolňování bloků
Výhody •
Odstranění fragmentace
•
Větší počet úloh
Nevýhody •
Náročné řešení
•
Snížení rychlosti
•
Tabulky zabírají paměť a snižují rychlost
•
Omezeno fyzickým rozsahem paměti
12
OS
Obsazená paměť Zaváděná úloha
Obsazená paměť
Obrázek 6 Stránkování paměti
Stránkování paměti na žádost Odstraňuje problém s maximální velikostí paměti. Část externí paměti – obvykle disk je využita jako pokračování paměti a rozdělena na bloky. Tato část se nazývá virtuální paměť (swap, odkládací prostor). V paměti se nachází pouze právě prováděná část úlohy. Pokud je třeba použít část úlohy, která se nachází na disku je nutné jí zavést do paměti vzhledem k velkým rozdílům v rychlosti přístupu. Problém nastane, pokud v paměti není místo – je pak nutné nějakou stránku z paměti přenést na disk. Může se stát, že tato je vzápětí požadována a dojde k takzvanému swapování, kdy velká část výkonu počítače je věnována k přesunu stránek mezi pamětí a diskem. Je nutná strategie rozhodování, které stránky mají být zavedeny do paměti. Tabulka stránek nyní musí být rozšířena o stavový bit, který indikuje, zda je stránka právě zavedena, či nikoliv.
13
Technické prostředky •
Sledování stavu paměti o tabulky stránek (každá úloha) o bloků (jedna v systému) o tabulka souborů (pro každý adresový prostor úlohy) v záložní paměti
•
Rozhodování o přidělení paměti
•
Přidělování paměti
•
Uvolňování paměti
Výhody •
Odstranění fragmentace
•
Není omezení fyzickým rozsahem paměti
•
Efektivní využití paměti
Nevýhody •
Nákladnost
•
Nutnost ošetřit zahlcení systému swapováním
Algoritmy výměny – jak nalézt správnou stránku, která má být v případě potřeby přenesena z paměti na disk. •
FIFO (First In First Out) – klasická fronta
•
LRU (Last Recently Used) – nejdéle nepoužívaná
•
LFU (Least Frequently Used) – nejméně používaná
•
NUR (Not Used Recently) – hodinový algoritmus – obdoba LRU. Každá stránka má přiřazen used bit. Při použití stránky je nastaven na 1. Správce paměti cyklicky prochází tabulku a tyto bity nuluje. Pokud je požádán kandidáta na uvolnění z paměti, volí následující stránku, která má used bit 0.
14
OS
Virtuální paměť
Vnitřní paměť
Disk
Obrázek 7 Představa virtuální paměti
Segmentace paměti Každá úloha je rozdělena na několik segmentů. Segment je logické uskupení – program, podprogramy, knihovny, data ... Každý odkaz na paměť pak obsahuje adresovou dvojici segment (číslo segmentu) a offset (pozice v daném segmentu). Je nutné přemapovávat dvourozměrnou adresu (segment, offset) na jednorozměrnou. Musí existovat tabulka segmentů obsahující počáteční adresu a rozsah segmentu. Offset nesmí být větší než je velikost segmentu. Výhody •
Snadné odhalení potencionálních chyb v programech – offset ukazuje mimo segment
•
Možnost sdílení kódu mezi úlohami (podprogramy)
Nevýhody •
Sdílený kód se nesmí změnit
•
Fragmentace – stejný problém jako u stránkování, rozdíl je v tom, že segmenty nemají stejnou délku
V praxi se tento systém již pro velkou složitost a náchylnost k chybám nepoužívá.
Segmentace se stránkováním. Kombinace obou předchozích metod. V současné době nejpoužívanější systém. Paměťový prostor každé úlohy je rozdělen na globální (sdílenou) a lokální (pouze tato úloha) část. Dvě tabulky •
LDT – Local Description Table
•
GDT – Global Description Table
15
Logická adresa paměti je dvojice (selector, offset), ze které se vytvoří lineární adresa. Pokud ukazuje mimo daný segment vznikne chyba memory fault. Každý segment je stránkován. Lineární adresa tak není jednorozměrná, ale obsahuje dvojici (stránka, pozice v stránce).
Správa paměti v reálných OS MS DOS Používal segmentaci paměti. Jednalo se sice o jednoprogramový systém, ale v paměti byly ještě zavedeny rezidentní programy (antiviry, ovladače, atd.). Neexistovala žádná ochrana paměti, každý program si mohl zapisovat, kam chtěl.
Windows Virtuální metoda segmentace se stránkováním na žádost. U novějších Windows je již sdílení kódu hodně omezeno. Odkládací soubor se jmenuje pagefile.sys a je obvykle v kořenovém adresáři Windows. Jeho velikost pak lze uživatelsky nastavit, ale pro změnu je nutné systém restartovat. 32 bitové Windows pak umožňují adresovat maximálně 4 GB paměti, která je rozdělena mezi systém a aplikace v poměru 1:1.
Linux (UNIX) První verze UNIXu používaly přidělování jedné souvislé oblasti paměti neboť tehdejší systém nic jiného neumožňoval. Nyní se obvykle používá segmentace se stránkováním na žádost, ale odkládá se paměť celého procesu. Linux používá stránkování na žádost s modifikovaným algoritmem NRU. Namísto used bitu se používá proměnná, jejíž hodnota vzroste použitím o 3. Cyklický algoritmus jí při každém průchodu sníží o 1 až k nule. Při požadavku na výměnu se pak vezme první následující stránka s hodnotou 0. Používá se jak odkládací soubor, tak odkládací logický disk. Jejich použití lze kombinovat. Např. pokud dojde místo na logickém swap disku, lze vytvořit nový swap soubor a za běhu jej připojit. Swap disk je díky speciálním algoritmům rychlejší a bezpečnější (nehrozí smazání za běhu omylem), na druhou stranu použití swap souboru je jednodušší – nastavíme si velikost dle skutečné potřeby.
Mac OS X Používá stránkování na žádost. Pokud dojde paměť, pak v adresáři /private/var/vm jsou automaticky vytvářeny soubory swapfile0, swapfile1 dle potřeby. Tento systém byl převzat ze systému NextStep.
16
Procesy Pojem procesu Definice: Proces je základní jednotka práce moderního OS se sdílením času. Program (aplikace) není proces, ale proces vzniká spuštěním programu (aplikace). Uživatel spustí aplikaci a počítač si při jejím zavedení vytvoří proces. Tento proces si pak může vytvořit další takzvané synovské procesy (children process). Opačný vztah se nazývá rodičovský proces (parent process). Každá aplikace má tedy přiřazen nejméně jeden proces. Při ukončení jsou ukončeny všechny její procesy. Rodičovský proces nemůže zcela skončit dříve než jeho synovské procesy. Pokud je rodičovský proces ukončen násilím, jsou násilím ukončeny i všechny procesy synovské. V případě, že proces ukončí svou činnost a má ještě běžící synovské procesy, zůstane v paměti ve stádiu tzv. zombie procesu, ve kterém setrvá až do ukončení všech potomků. Současně v počítači obvykle běží více procesů, které můžeme rozdělit na: •
Procesy OS
•
Procesy aplikací
OS se musí postarat o to, aby byl schopen v reálném čase všechny procesy obsloužit. Každý proces obsahuje následující informace: •
Ukazatel programu
•
Obsah registrů procesoru
•
Zásobník o dočasná data §
parametry podprogramů
§
návratové adresy
§
dočasné proměnné
o data pro globální proměnné Každý proces je v paměti reprezentován záznamem, který se nazývá Process Control Block (PCB), který obsahuje informace o procesu například: •
Stav procesu – nový, probíhající ... (viz dále)
•
Program Counter (Čítač programu) – paměťovou adresu následující instrukce
•
Registers (registry procesoru) – obsah registrů procesoru
•
Scheduling information (plánovací informace) – priorita procesu a ukazatele do front, ve kterých proces čeká (viz dále)
•
Memory management information (informace správy paměti) – paměťové tabulky, počet stránek či segmentů
17
•
Accounting information (účtovací informace) – čas přidělení procesorům časový limit, číslo procesu
•
I/O status information (V/V stavové informace) – seznam V/V přidělených pro tento proces, seznam otevřených souborů.
Proces při svém vzniku potřebuje zdroje – čas procesoru, paměť, soubory, periferie atd. Vztah rodičovského a synovského procesu může být dvojí: •
synovský proces je duplikátem rodičovského
•
synovský proces má vlastní program
Procesy vzhledem k vzájemné spolupráci mohou být: •
autonomní
•
kooperující
Procesy mohou sdílet informace a moduly (podprogramy). Procesy mohou běžet následujícími způsoby: •
sekvenčně – proces je spuštěn až po skončení předchozího – monotasking
•
sekvenčně-paralelně – více procesů se dělí o čas procesoru – vzniká multitasking
•
paralelně – u víceprocesorových (více jádrových) systémů, obvykle rovněž s podporou multitaskingu pro každý procesor o symetricky – všechny procesory obsluhují všechny procesy stejně o asymetricky – na některých procesorech běží pouze procesy OS a na jiných aplikace
Komunikace procesů Procesy spolu mohou komunikovat. Při komunikaci rozlišujeme odesílající proces (sender) a přijímající proces (receiver). Odesílatel může příjemci poslat: •
data či textový řetězec
•
odkaz na data
•
signál
Rozlišujeme dva typy komunikace: •
přímá – příjemce je znám
•
nepřímá – odesílatel nezná příjemce – komunikace přes schránku nebo pomocí roury
18
Přímou komunikaci dělíme na: •
symetrická – příjemce i odesílatel se navzájem znají
•
asymetrická – příjemce nemusí znát odesílatele
anebo podle jiného hlediska na: •
asynchronní – odesílající proces nečeká na odpověď
•
synchronní – čeká se na odpověď nebo potvrzení zprávy, odesílající proces je do té doby pozdržen
Stavy procesu
Ukonče n
Nový Přerušen
Přijat
Ukončen
Probíhající
Připraven Vybrán ke zpracování V/V událost ukončena
V/V událost
Čekající Obrázek 8 Stavový diagram procesu Během spouštění se proces nachází ve stadiu Nový. Jakmile má proces přiděleny všechny potřebné prostředky a vytvořen Process Control Block, přesune se do stadia Připraven, kde čeká mezi dalšími připravenými procesy na okamžik, kdy bude vybrán ke zpracování. Jakmile je proces vybrán, přejde do stadia Probíhající, to je okamžik, kdy je proces přidělen procesoru a zpracovává se. Tento stav může proces ukončit třemi různými způsoby: 1. Je ukončen a uvolní všechny přidělené zdroje včetně procesoru. 2. Je předčasně přerušen anebo se sám vzdá procesoru a přesune se opět mezi čekající procesory do stadia Připraven, čímž uvolní místo jinému procesu. Existence této možnosti je podmínkou realizace preemptivního multitaskingu. 3. Pokud proces má požadavek na nějakou vstupně výstupní operaci (čtení nebo zápis do souboru, tisk atd.), která je časově náročná, je přesunut do stadia Čekající, kde čeká na vyřízení tohoto požadavku a poté je opět přesunut mezi čekající procesy do stadia Připraven.
19
Ve všech těchto třech případech se do stadia Probíhající přesune jiný proces. Ve stadiu Připraven s procesy pracují dva moduly systému: •
Plánovač procesů (Scheduler) – vybírá vhodný proces ke zpracování
•
Dispečer (Dispatcher) – stará se o zavedení procesu
Dispečer se musí postarat kromě zavedení procesu i o proces, který procesor opouští. Pokud používáme preemptivní plánování (viz dále), procesy se na procesoru pravidelně střídají po určitém časovém kvantu (kromě případů, že je proces ukončen nebo přejde do stadia čekající). Vzájemné výměně dvou procesů na procesoru se říká přepnutí kontextu. Během něj je třeba uložit informace o procesu, který procesor opouští a naopak načíst informace o procesu, který je zaváděn. Například stav registrů atd. Je nutné zvolit vhodné časové kvantum, po které má proces přidělen procesor. Je-li velké má uživatel pocit, že se procesy zadrhávají, pokud je příliš malé, pak může být větší čas, který je potřebný pro přepnutí kontextu než ten po který je proces přidělen procesoru.
Metody plánování procesu Existují dva druhy procesů •
I/O bound – více zatěžují V/V zařízení a obvykle nevyužijí celé své časové kvantum
•
CPU bound – využívají více procesor a téměř vždy využijí celé časové kvantum
Je vhodné toho využít, ale není to obvykle možné, protože nelze předem obvykle jednoduše odhadnout, jak se daný proces bude chovat. Nejobvyklejší metody výběru procesů jsou následující: •
FIFO fronta – procesy jsou vybírány v pořadí v jakém vstoupily do stavu Připraven. Někdy se dělí na tyto přístupy: o FCFS (First Come First Served) – nepreemptivní metoda o Round Robin – preemptivní metoda
•
Prioritní fronta – procesům je přidělena priorita. Pro zpracování je vybrán proces s nejvyšší prioritou. Aby bylo zabráněno zastarání procesů (proces s nízkou prioritou by nemusel přijít teoreticky na řadu nikdy), tak pokud není proces vybrán po určitý počet cyklů, zvýší se mu priorita a poté co se dostane na řadu je mu vrácena opět priorita původní.
•
SJF (Short Job First) – nejprve je vybrána úloha u které se předpokládá nejkratší zpracování. Fronta je vedena jako prioritní, kde hodnotou priority je předpokládaná doba přidělení procesoru.
20
Druhy multitaskingu •
Nepreemptivní – procesy se nestřídají pravidelně o Pseudomultitasking §
MS DOSu – běží pouze jeden program, ale na pozadí běží tzv. rezidentní programy (ovladače, antivir ...), kterým může být předán procesor v případě potřeby.
§
Mac OS do verze 5 – o přepínání procesů se stará zvláštní program (Finder). Může přepínat pouze aplikace, které to dovolí.
§
Mac OS 6 – Finder přepíná libovolné programy
◦ Kooperativní multitasking – Lze spustit více aplikací. Aplikace se samy mohou rozhodnout, že předají procesor jiné aplikaci. Musí být dobře naprogramovány a musí být schopné spolupracovat (musí si umět předat procesor), jinak může dojít k zatuhnutí systému. Jedna aplikace běží na popředí a ostatní na pozadí. Uživatel může sám rozhodnout, která aplikace bude na popředí. Je to jednoduchý systém, ale při špatně naprogramované aplikace, nelze přepnout kontext a je po multitaskingu. Používalo se u Windows 3.X a Mac OS 7 až 9. V současné době je tento druh multitaskingu využit u iOS. Tím je zajištěna jednoduchost a rychlost tohoto systému. •
Preemptivní – procesy se na procesoru pravidelně střídají. Pokud po uplynutí určitého časového kvanta není proces ukončen nebo přerušen, dojde k přepnutí kontextu.
Vlákna Moderní způsob práce s procesy. Proces může být rozdělen na vlákna (threads). Každý proces má alespoň jedno vlákno. Například každý panel webového prohlížeče je reprezentován jiným vláknem. Komunikace mezi vlákny jednoho procesu je jednodušší a rychlejší. Proces je ukončen až po ukončení všech vláken. Procesor není přidělován procesům, ale vláknům. Vlákna mají buď svůj paměťový prostor anebo (častěji) vlákna jednoho procesu mají společný paměťový prostor – vlákna jednoho procesu nepotřebují paměťovou ochranu, jen je nutná synchronizace. Pokud vlákno ukončí používání procesoru před svým časovým lim, předá jej jinému vláknu téhož procesu.
21
Synchronizace procesů V této kapitole mluvíme o procesech, ale v praxi probíhá synchronizace na úrovni vláken. V následujícím textu lze kdekoliv nahradit slovo proces slovem vlákno. Je nutné synchronizovat zejména paralelní procesy. Chyby se mohou projevit pouze při určitém souběhu okolností, říkáme tomu časově závislá chyba – vzniká podle pořadí přístupu procesů k proměnné. Například pokud by banka obdržela současně požadavek pro vklad i výběr z jednoho účtu a oba požadavky by byly vyřizovány nezávisle na sobě vzhledem k původní částce, nelze říci jaký bude nový zůstatek. Teoreticky lze tyto problémy řešit pomocí Bernsteinových podmínek a Petriho sítí.
Bernsteinovy podmínky Pokud máme čas t, dva procesy P a Q a dvě operace read (čtení) a write (zápis), kde např. read(P,t) znamená množinu míst paměti, kterou v čase t načte proces P a write(Q,t) značí množinu paměťových míst, kam proces Q zapíše v čase t, pak musí platit: 𝑤𝑟𝑖𝑡𝑒 𝑃, 𝑡 ∩ 𝑟𝑒𝑎𝑑 𝑃, 𝑡 = ∅ a 𝑤𝑟𝑖𝑡𝑒 𝑃, 𝑡 ∩ 𝑟𝑒𝑎𝑑 𝑄, 𝑡 = ∅ což znamená, že pokud do paměti jeden proces zapisuje, pak k ní ve stejném okamžiku nesmí žádný jiný proces přistupovat a to ani pro čtení. Bernsteinovy podmínky jsou velmi silné a dostačující, ale v praxi bývá problém je dodržet a často neodpovídají skutečným potřebám.
Petriho sítě Jedná se o abstraktní vizualizační nástroj, kde jsou stavy procesů a přechody popisovány pomocí grafických nástrojů. Nejedná se vlastně o metodu řešení synchronizace, ale o metodu popisu stavů a přechodů procesů, kterou lze využít pro plánování synchronizace. Jedná se vlastně o orientovaný graf, jehož uzly se nazývají stavy (procesů) a přechody (mezi stavy procesů). Každá hrana má ohodnocení celým číslem větším nebo rovno jedné. Pokud je ohodnocení jedna, nic se nezapisuje, je-li vyšší, zapisuje se vedle hrany. Stavy a přechody se musí střídat, nesmí být po sobě dva uzly stejného typu. Použité symboly jsou: stav přechod -
22
V uzlech stav se mohou nacházet tečky (zvané token), znamenající povolení k pokračování z uzlu. Pro povolení přechodu musí každý stav, z něhož vede hrana do přechodu obsahovat nejméně tolik teček jako je hodnota přidružené hrany. V případě, že dojde ke konkrétnímu přechodu nastanou následující dvě události: 1. Z každého stavu, ze kterého vede do přechodu hrana se odečte tolik teček, jako je hodnota hrany. 2. Do každého stavu, do kterého vede z přechodu hrana se přidá tolik teček, jako je hodnota hrany.
Kritická sekce Kritická sekce je taková část kódu, kterou nelze sdílet. Např. kód, který mění zůstatek na účtu. Je třeba zajistit následující skutečnosti: •
Vzájemné vyloučení – do kritické sekce smí jen jeden proces
•
Dostupnost kritické sekce – proces musí mít možnost se k ní v přiměřeném časovém kvantu dostat
•
Proces je v kritické sekci konečnou dobu
Problémy, které mohou při práci s kritickou sekcí nastat jsou: •
Uváznutí – deadlock
•
Blokování – proces do kritické sekce nemůže i když je volná
•
Stárnutí – příliš dlouhé čekání
Tyto problémy si nyní předvedeme na dopravních situacích:
Obrázek 9 Uváznutí (deadlock)
23
Obrázek 10 Blokování (semaforem)
Obrázek 11 Zastarání
Algoritmy pro přístup do kritické sekce Petersonův algoritmus Tento algoritmus lze použít pro dva procesy. Pokud první proces se chystá vstoupit do kritické sekce, pak označí zájem do ní vstoupit a dá přednost druhému procesu. Pak čeká až nastane jedna z dvou následujících možností: 1. Druhý proces odpoví, že nemá zájem do kritické sekce vstoupit a vrátí mu přednost 2. Druhý proces ukončil činnost v kritické sekci.
Pekařův (bakery) algoritmus Připomíná řešení pořadí na poště nebo úřadech. Před vstupem do kritické sekce získá proces lístek s číslem jeho pořadí. Pokud získají dva procesy stejné číslo, pak rozhoduje nižší PID1. Kdo má aktuálně nejnižší číslo smí vstoupit do kritické sekce, jakmile se uvolní. Přidělovaná přístupová čísla se zvyšují o jedničku a po vyčerpání datového typu pokračují od jedné.
Hardwarové řešeni Procesory i386 a novější obsahují implementaci funkci TestAndSet. Jedná se o tzv. atomickou funkci – smí ji vždy vykonávat pouze jeden proces. Na platformě Intel se funkce nazývá Lock Bts. Pracuje se sdílenou Booleovskou proměnnou, která ukazuje, zda je volný vstup do kritické sekce. 1 PID - Proces Identificater – jednoznačné číslo procesu.
2
Jazyk A = Assembler, B je vyšší jazyk, jehož následovníkem je C. Následovníkem C pak 24
Při každém volání funkce, je vstup do kritické sekce nejprve uzamčen bez ohledu na návratovou hodnotu. Pokud funkce vrátí hodnotu volno, nastaví se obsazeno, proces vstoupí do kritické sekce a po skončení opět nastaví na volno. Vrátí-li se obsazeno, proces čeká ve smyčce. Tomu se říká aktivní čekání. Toto čekání poměrně hodně zatěžuje procesor, proto není vhodné používat tuto metodu, tam kde se očekává dlouhé čekání.
Semafor Je vlastně celočíselná proměnná P, pro kterou jsou definovány dvě atomické operace: •
Lock (P) – snížení hodnoty semaforu P o 1
•
Unlock (P) – zvýšení hodnoty semaforu P o 1
Pokud semafor P hlídá kritickou sekci, pak význam jeho hodnoty je následující: •
kladná hodnota – počet procesů, které do sekce mohou vstoupit
•
nulová hodnota – sekce obsazena, ale žádný proces nečeká
•
záporná hodnota – sekce obsazena, absolutní hodnota proměnné udává aktuální počet procesů čekajících na vstup do kritické sekce
Čekající procesy jsou pozastaveny. Je-li sekce volná, proces do ní vstoupí a zavolá funkci lock. Není-li volná zavolá funkci lock a přesune se do fronty čekajících procesů. Při východu z kritické sekce zavolá proces funkci unlock, a pokud čekají procesy ve frontě je první aktivován. Samy funkce lock a unlock jsou atomické – musí se řešit jako kritické sekce, aby hodnota proměnné P byla určena jednoznačně. Nelze zde použít semafory, proto se použije obvykle hardwarové řešení, neboť v tomto případě je pobyt v kritické sekci krátký (změna proměnné) a tak smyčky netrvají dlouho. Binární semafor je takový semafor, který má jen dva stavy – stůj a volno
Monitor Je abstraktní datový typ obsahující sdílená data, operace s nimi prováděné a podmínky. Požadavky se řadí do fronty a monitor je postupně řeší, čímž je zajištěno vzájemné vyloučení. Můžeme si jej představit jako outsourcování požadavků procesů na přístup do kritické sekce do monitoru. Tím, že monitor má kompletní přehled o stavu kritické sekce a počtu procesů, které se nacházejí jak uvnitř sekce, tak do ní chtějí vstoupit, může zajistit její bezproblémovou obsluhu. Viz obrázek 12.
25
Sdílená data
Fronta procesů
Operace s daty Čekající procesy Obrázek 12 Představa monitoru
Synchronizační problémy Producent a konzument Obvykle se řeší pro dva procesy, ale lze jej zobecnit i pro více. Jeden z nich pouze generuje data (producent) a druhý je naopak pouze zpracovává (konzument). Data si vzájemně posílají přes vyrovnávací paměť o N položkách. Je-li paměť plná musí čekat producent, naopak pokud je paměť prázdná musí čekat konzument. Tento problém se obvykle řeší pomocí semaforů. Tento problém si můžeme představit v praxi jako pásovou výrobu.
Model a obraz Jedná se o podobný problém jako v předchozí situaci. V tomto případě nás zajímá vždy aktuální stav některé proměnné. Můžeme si jej představit jako procesy obsluhující letadlo za letu. Jedny procesy zjišťují aktuální údaje (výška, rychlost, spotřeba paliva…), jiné je zobrazují. Je nutné mít vždy co nejpřesnější údaje, na druhou stranu je zase nesmíme zjišťovat extrémně často, neboť by pak mohly ukazatele poblikávat a být nečitelné. Procesy produkující informace nám mohou nastavit proměnnou (např. Binární semafor), která ukazuje, že došlo ke změně a proces, který si informace načte, jí opět vynuluje.
26
Čtenáři a písaři Jedná se o problém přístupu ke sdíleným datům. Některé procesy data pouze modifikují (písaři), jiné je pouze čtou (čtenáři). Libovolný počet čtenářů smí k datům přistoupit současně, ale pokud přistoupí písař, nesmí přistoupit ani čtenář ani jiný písař. Řeší se pomocí binárních semaforů. Dokud k datům přistupují čtenáři nesmí přistoupit písař, takže zde hrozí zastarání dat.
Hladoví filozofové
Obrázek 13 Hladoví filozofové Okolo stolu sedí filozofové. Před každým je miska rýže a jedna hůlka. Filozofové přemýšlejí o stejné věci a všichni najednou dostanou hlad. Každý vezme jednu hůlku, čímž vznikne situace, kdy každý filozof drží jednu hůlku (kterou se nenají), další hůlku nemůže dostat, ale odmítá se vzdát své. Takové situaci říkáme deadlock.
27
Deadlock Definice: V multiprogramovém prostředí si mohou různé prostředky konkurovat v získání konečného počtu zdrojů. Proces požaduje zdroje, a jestliže tyto zdroje nejsou v danou chvíli dostupné, je proces přesunut do stavu čekající. Může se stát, že čekající proces svůj stav již nikdy nezmění, protože zdroje, na které čeká, drží jiné čekající procesy. Tato situace je nazývána deadlock (zablokování). Klasickým příkladem je problém hladových filozofů z předchozí kapitoly. Jiný typický případ z prostředí výpočetní techniky, je situace, kdy dva procesy drží každý po jednom souboru otevřeném pro zápis a potřebují zapsat do souboru, který má otevřený konkurenční proces. Samy však nejsou ochotné uvolnit svůj soubor dříve, než zapíšou do konkurenčního. Ještě jiný příklad deadlocku, opět z dopravy – křižovatka dvou cest nerozlišená dopravními značkami, kde přijede současně po každé cestě automobil, který chce jet rovně.
Obrázek 14 Deadlock v dopravě
Přidělování zdrojů procesům Systém obsahuje konečný počet zdrojů, například paměť, procesor (procesory, jádra), vstupně výstupní zařízení. Některá jsou nesdílitelná (nemohou je využívat dva procesy současně), například tiskárna, soubor pro zápis apod. Proces musí o zdroj požádat před jeho užitím a po jeho použití jej musí opět uvolnit. Proces současně nesmí požadovat více zdrojů, než jsou možnosti systému.
28
Sekvence užití zdrojů Správná sekvence užití zdrojů vypadá následovně: 1. Dotaz na dostupnost zdroje – nelze-li dotaz vyplnit okamžitě, musí proces čekat 2. Užití – proces pracuje se zdrojem 3. Uvolnění zdroje Dotaz a uvolnění jsou systémová volání, jedná se vlastně o kritickou sekci. Příklad: dotaz a uvolnění zařízení, otevření a uzavření souboru, alokace a uvolnění paměti. Není-li zdroj k dispozici, zařadí se proces do fronty procesů čekajících na daný zdroj. Pokud každý proces z určité skupiny čeká na událost, kterou může vyvolat pouze jiný proces z této skupiny, pak se jedná o zablokování. Například, když dva procesy potřebují otevřít soubor, který zrovna užívá ten druhý.
Podmínky pro vznik deadlocku 1. Vzájemná jedinečnost – v systému existuje nesdílitelný zdroj – může jej v daném okamžiku mít jen jeden proces 2. Drží a čeká – existuje proces, který drží nesdílitelný zdroj a čeká na přidělení jiného nesdílitelného zdroje 3. Nepreemptivnost – zdroj může být uvolněn pouze po ukončení úlohy 4. Kruhové čekání – procesy čekající vzájemně na zdroje Tyto čtyři podmínky musí nastat současně,
Metody řešení deadlocku Existují čtyři metody řešení deadlocku: 1. Prevence deadlocku 2. Vyhýbání se deadlocku 3. Detekce deadlocku a zotavení po uváznutí 4. Neřešení deadlocku a ponechání řešení na lidské obsluze Body 1 až 3 jsou složité a náročné na zdroje, proto je běžné operační systémy používají pouze okrajově a většinou nechávají řešení deadlocku na obsluze.
29
Prevence deadlocku Řeší se zrušením některé podmínky deadlocku •
Nepoužívat zámky u prostředků umožňujících sdílený přístup
•
Proces může žádat o další prostředky až tehdy když všechny své uvolnil
•
Pokud proces požádá o nedostupný prostředek je pozastaven, jsou mu všechny prostředky odebrány a čeká se, až může všechny prostředky obdržet
•
Prostředky mají stanovené pořadí a lze je získat pouze v tomto pořadí
Vyhýbání se deadlocku Každý proces před začátkem oznámí kolik bude potřebovat prostředků. Nelze jej spustit, pokud existuje možnost, že mu prostředky nebudou moci být zajištěny. Užívá se tzv. bankéřův algoritmus – bankéř nemůže půjčit prostředky, pokud nemůže zajistit požadavek na výběr nejvyššího vkladu. Tuto metodu používají obvykle real time operační systémy.
Řešení deadlocku Vychází z předpokladu, že je deadlock nepravděpodobný. Systém se snaží cyklicky detekovat deadlock a řešit ho. Možné způsoby jsou: •
Ukončení procesu (restart procesu)
•
Přidání zdroje – obvykle nemožné
•
Odebrání zdroje nějakému procesu
Ponechání řešení na lidské obsluze Typickým příznakem deadlocku je zaplněná paměť a současně málo zatížený procesor. Nejlepší způsob řešení v takovém případě je postupné ukončování procesů a sledování, zda se systém rozběhne. Nejjednodušší řešení je samozřejmě restart systému a opětovné spuštění aplikací. Může však dojít ke ztrátě dat a je pravděpodobné, že při spuštění stejných aplikací může opět nastat deadlock. Jedná se vlastně o předchozí metodu, ale namísto operačního systému je do role supervizora dosazen uživatel.
30
Odkládací zařízení Definice: Odkládací zařízení (jinak zvané paměťové médium nebo úložiště) je periferní zařízení, na které se ukládají data. Jedná se o zařízení extrémní důležitosti, neboť i samotný operační systém je uložen na paměťovém zařízení. Správa paměťového média je proto jeden z nejdůležitějších úkolů operačního systému. Tato média dělíme na: •
pevná – např. pevný disk
•
vyměnitelná – např. diskety, USB flash disk, CD ROM
Adresářová struktura Data se nalézají v souborech. Soubor můžeme pokládat za základní jednotku ukládání dat. Soubory se slučují do adresářů. Adresáře tvoří strukturu, obvykle obsahují další adresáře a soubory. Adresář, který obsahuje vše, co se na disku nachází se nazývá kořenový (root).
Dělení adresářových struktur •
Jednoúrovňová struktura – existuje pouze adresář root a vše je v něm (CP/M)
•
Dvouúrovňová struktura – v rootu jsou adresáře, ale ty už nemohou obsahovat další adresáře jen soubory (RSX)
•
Stromová – v každém adresáři mohou být další soubory i adresáře. Připomíná to strom s kořenem (root). (DOS, Windows)
•
Acyklická – soubory a adresáře mohou být ve více adresářích – nesmí tam být ale cykly (dva adresáře se nemohou odkazovat vzájemně na sebe). Snadný přístup k témuž souboru z více adresářů (linky). (UNIX)
•
Cyklická struktura – může obsahovat cykly
Soubor Definice: Základní organizační jednotka pro uchování dat. Nad souborem jsou definovány následující operace, které zajišťuje operační systém: •
Vytvoření
•
Čtení
•
Zápis
•
Změna pozice v souboru
•
Smazání
31
Vlastnosti souborů Rozlišujeme různé druhy souborů: •
Standardní – dokumenty, programy.
•
Adresáře – z pohledu většiny operačních systémů je adresář zvláštním typem souboru.
•
Simulované – přístup k I/O zařízením.
•
Odkládací soubory – virtuální paměť.
Fragmentace souborů •
vnější – soubory jsou rozdělené po celém paměťovém médiu
•
vnitřní – velký počet malých souborů – volná místa v clusterech
Soubory dále dělíme dle přístupu na médiu: •
Přímý (CD, disk) – kterýkoliv soubor (nebo místo v souboru) je kdykoliv k dispozici
•
Sekvenční (magnetická páska) – Pokud chceme konkrétní místo musí se projet vše od začátku (nebo aktuálního místa) až po místo požadované. Jako magnetofonová páska.
•
Indexový (magnetická páska s přeskakováním) – Lze adresovat některá místa. Jako magnetofonová páska, která umí najít začátky písní.
U souborů (a adresářů) navíc můžeme nastavit přístupová práva.
Harddisk
Obrázek 15 Harddisk
32
Vlastnosti disku Abychom si mohli povědět o tom, jak OS pracuje s diskem, je nutné znát následující vlastnosti disku. Čtenář mající dobré znalosti hardware může tuto kapitolu bez obav přeskočit. Disky obsahují: ñ stopy (Track) – soustředné kružnice ñ sektory (Sector) – výseče kruhu (obsahují 512 B). U novějších disků je na vnějších stopách více sektorů. ñ desky a povrchy (Plater) ñ hlavy (Head) – čtecí zařízení ñ cylindry (Cylinder) – stopy nad sebou
Obrázek 16 Struktura harddisku Fyzická adresa na disku je uspořádaná množina několika proměnných – buď [povrch, stopa, sektor] anebo [cylindr, hlava, sektor] se kterou pracuje hardware. Operační systém pracuje s logickou adresou. b = k +s * (j + i * t) b – jednorozměrná adresa i – číslo cylindru t – počet stop v cylindru j – strana s – počet sektorů v stopě k - sektor
33
Cluster je jeden nebo více průsečíků stop a sektorů. Je to nejmenší část disku se kterou dokáže pracovat operační systém (32 až 4096 B, obvykle 512 B). Rychlost disku určujeme z následujících tří parametrů: •
Čas vyhledávání (seek time) – doba než se hlava nastaví nad správnou stopu
•
Čekací doba (latency time) – doba než se požadovaný sektor natočí pod hlavu
•
Čas přenosu (transfer time) – doba přenosu mezi diskem a pamětí
Plánování disku Je činnost, která nám říká, jakým způsobem se budou vyřizovat požadavky na čtení a zápis u disku. Je třeba zvolit vhodný způsob, abychom zbytečně nečekali a na druhou stranu disk nezatěžovali zbytečnými posuny hlavy. •
Plánování FCFS (First-Come First-Served) – požadavky jsou vyřizovány v pořadí v jakém došly. Výhoda – poměrně rychlý systém, nevýhoda – velké přesuny hlavy a z toho plynoucí značné namáhání pohyblivých částí.
•
Plánování SSTF (Shortest-Seek-Time-First) – nejprve vyřízen ten požadavek který vyvolá nejmenší posun hlavy. Nevýhody – Hlava se může pohybovat tam a zpět. Požadavky na vzdálenější stopy mohou teoreticky čekat nekonečně dlouho.
•
SCAN plánování – hlava projíždí disk tam a zpět z jednoho konce na druhý a cestou vyřizuje požadavky. Elevator algoritmus (podobá se výtahu).
•
C-SCAN – hlava se po dojetí na konec vrátí na začátek jako by začátek navazoval na konec. Ještě je možné vylepšit tak, že pokud mezi hlavou a krajem disku není žádný požadavek, hlava se začne vracet zpět.
Management disku Tři funkce operačního systému pro přípravu a správu disku: 1. Počáteční iniciace disku – formátován 2. Bootování z disku – zavedení operačního systému 3. Práce s vadnými bloky – jejich vyhledání a označení Formátováním se nazývá příprava média k použití. Dělíme je na: •
Nízkoúrovňové (low level) – příprava stop a sektorů. Zbytečné opakované low-level formátování může médium zničit.
•
Vysokoúrovňové – příprava struktury dle zvoleného formátu dat (FAT, NTFS, ext3…)
Bootování – postup: •
Bootstrap program – inicializační program umístěný v ROM, po iniciaci počítači zavádí OS z disku. V BIOS paměti je uvedeno pořadí úložišť, ze kterých se má pokusit zavést OS.
•
Disk, na kterém je umístěn – bootovací (systémový) disk. Musí tak být označen při přípravě disku.
34
•
Zaváděcí program OS musí být umístěn na předem daném místě na disku, kterému se říká boot block.
•
Při více OS na počítači je zde umístěn nějaký zavaděč OS (GRUB, LILO), který vyhledá příslušný OS a začne jej zavádět.
Vadné bloky musí být označeny, aby je systém nepoužíval. U PC s IDE se označí při formátování disků. U SCSI disků se jejich seznam obnovuje během používání disku.
Další pojmy z oblasti úložišť dat RAID ñ Redundant Arrays of Inexpensive/Independent Disks levných/nezávislých disků – více disků se tváří jako jeden.
-
Redundantní
řady
◦ RAID 0 (stripping) – data střídavě ukládána na dva disky ◦ RAID 1 (mirroring) – stejná data ukládána na dva nebo více disků ◦ RAID 5 – data ukládána střídavě na více disků a jeden použit na ukládání parity. Při výpadku kteréhokoliv disku je možná výměna disku za běhu a obnovení dat na nově vložený disk ◦ RAID 6 – pro kontrolní součty použity dva disky ◦ Různé další kombinace – různá jména u různých výrobců ñ Softwarový a hardwarový RAID ◦ Hardwarový RAID – řešen hardwarovými prostředky. Nezávisí na OS. Rychlejší a dražší. ◦ Softwarový RAID – řešený pomocí prostředků OS. Jednodušší, pomalejší a levnější.
LVM (Logical Volume Manager) •
Vytvoření logických disků z fyzických
•
Možnost změny za chodu systému bez restartu – oddíl lze snadno zvětšit přidáním disku
VFS (Virtual File System) •
Definice operací, které musí zvládnout každý souborový systém bez ohledu na skutečné hardwarové umístění. Se souborem se musí pracovat stejně ať je na disku nebo USB flash. Samozřejmě s ohledem na možnosti zařízení.
•
Je to vlastně abstrakce FS
SWAP (Virtuální paměť) •
Přístup k disku je pomalejší než k paměti, proto je tomuto třeba věnovat pozornost
•
Je to buď soubor (Windows) nebo samostatný disk (Linux). Vhodnější je samostatný disk, protože swap disk používá speciální algoritmus přístupu a je tedy rychlejší.
35
Souborové systémy V této kapitole si probereme několik skutečných souborových systémů. U každého si povíme základní vlastnosti a jeho výhody a nevýhody. Nejprve si uvedeme několik vlastností souborových systémů: •
Souborové systémy s okamžitým zápisem – v daném okamžiku pouze jedna operace a další musí čekat. Data se nemohou ztratit, ale je to pomalejší (FAT)
•
Opatrný zápis – bezpečná posloupnost operací, jako u databází.
•
Opožděný zápis – cache paměť. Rychlé, ale při havárii se data, která jsou dosud v cache, ale nejsou ještě zapsána, mohou ztratit.
•
Žurnálovací souborové systémy – uchovávají se informace o provedených operacích. Při výpadku je možné data obnovit (NTFS, většina Linuxových FS).
FAT Historicky první široce rozšířený souborový systém, používaný již u operačního systému MS DOS. Dodnes se používá na různých flash pamětech a paměťových kartách. Přes všechny možné nevýhody je totiž velmi rychlý, protože nepoužívá žurnálování a proto i pomalé médium působí rychlým dojmem. To samozřejmě s sebou nese nebezpečí ztráty dat např. při předčasném odpojení média. U tohoto typu jsou informace o souborech a adresářích uložena v tabulce FAT (File Alocation Table), podle které se i tento souborový systém jmenuje. Pokud dojde k poškození této tabulky, pak ztratíme informace o uložení dat. To se dnes již řeší záložní FAT tabulkou, ze které lze poškozenou část obnovit. Jedná se o souborový systém se stromovou strukturou. V hlavním adresáři smí být maximálně 255 položek. Postupně existovaly systémy FAT12, FAT16 a FAT32, které uměly adresovat až 212, 216 a 232 clusterů. Dle velikosti clusteru tak je možné určit maximální velikost disku v tomto souborovém systému. Samozřejmě, pokud zvolíme velmi velké clustery ve snaze mít co největší systém, dojde k vnitřní fragmentaci. FAT systém byl původně znám pravidlem 8+3. To znamenalo, že jméno souboru mohlo mít maximálně 8 znaků a 3 znaky přípony. Povolená byla pouze písmena anglické abecedy (přičemž se nerozlišovala malá a velká), číslice, podtržítko a pomlčka. Přípona byla od jména oddělena tečkou. Přípona se dodnes používá pro rozlišení typu souboru. Jména adresářů pak mohla mít maximálně osm znaků. S nástupem Windows95 se objevilo rozšíření VFAT, které umožňuje použít pro názvy souborů a adresářů až 255 znaků. Je použita spojovaná struktura, takže je-li soubor rozdělen po více clusterech je známo pouze umístění prvního clusteru a každý cluster se odkazuje na pokračovací. Ztratíme-li libovolný cluster, ztratíme celý soubor. FAT12 smí být velký maximálně 2 GB. FAT32 naopak nesmí být menší než 512 MB. Ve Windows lze vytvořit maximálně 32 GB velký FAT oddíl, ale lze vytvořit větší pomocí jiných nástrojů (např. V Linuxu). Maximální velikost souboru je 4 GB. K souborům a adresářům nelze uložit informace o vlastníkovi a právech.
36
NTFS Žurnálovací souborový systém vyvinutý Microsoftem. Prvně byl použit u Windows NT. Neumožňuje práci s malými disky, proto jej nelze použít na disketách. Lze nastavovat práva pro uživatele nebo pro skupinu uživatelů. Podobně jako v UNIXu je vše soubor. Lze indexovat dle typu souboru, což umožňuje rychlejší vyhledávání. Názvy souborů mohou být v Unicode, takže je možné použít znaky národního prostředí, ale znamená to problém při kopírování souboru do jiného národního prostředí. Další vlastnosti: ñ Dynamické přemapování vadných sektorů ñ Šifrování a komprese ñ Pevné odkazy – funkční i po přesunu odkazovaného souboru ñ Řídké soubory – lepší uložení souborů, které mají velké části vyplněné 0 – tyto části nezaberou místo na disku V následující tabulce naleznete srovnání FAT a NTFS Maximální Max počet Maximální Maximální velikost disku clusterů počet objektů velikost (GB) v rootu souboru v GB
Maximální počet souborů
FAT16
4
216
255
2 GB
216
FAT32
2 TB (32 GB
232
65 354
4 GB
232
264 (232 v XP)
neomezeno
264 (244 v XP)
232
ve Windows) NTFS
-
Extended (Ext) Souborový systém pro UNIXové systémy. Původní verze Ext se již dnes nepoužívá. Dnes se používá verze Ext2 až Ext4. Oddíl je rozdělen na bloky o velikosti 512, 1024, 2048 nebo 4096 B. První blok je boot blok, který na systémovém disku obsahuje zavaděč a na ostatních je nepoužit. Další bloky jsou rozděleny do skupin bloků – každá obsahuje superblok s informacemi o celém disku – při ztrátě jednoho superbloku se použije jiný. i-node (i-uzel) – obsahuje informace o souboru. Volný prostor je evidován v řetězovém seznamu. Každý adresář může obsahovat další adresáře a soubory. Lze použít odkazy (links), které mohou být následujícího typu: ñ pevný odkaz (hard link) více odkazů na stejný soubor, žádný není hlavní. Soubor smí být smazán, když na něj již nevede žádný takovýto odkaz. Nesmí vzniknout cykly. Nesmí odkazovat na sebe sama a nesmí vést na jiný disk ñ symbolické odkazy (soft link) – odkazují na umístění souborů, odpadají omezení u pevných odkazů
37
Název souboru může mít až 255 znaků. Od verze ext3 se jedná o žurnálovací systém. Systém ext2 je naproti tomu významně rychlejší a používá se tam, kde záleží na rychlosti a data se často nemění – typicky u disku ze kterého se zavádí systém. Vlastnosti jednotlivých verzí shrnuje následující tabulka: Ext2 = Ext3
Ext4
Maximální velikost oddílu
16 TB
1 EB
Maximální velikost souboru
12 TB
16 TB
Maximální počet souborů
232
232
Maximální počet podadresářů
32 768
neomezeno
Jiné UNIXové souborové systémy XFS Žurnálovací souborový systém, který je 64 bitový, a proto je velikost souboru i souborového systému z našeho pohledu téměř neomezená. Je možné rezervovat přístupové pásmo pro přístup k souborům, to je výhoda u multimédií. Jsou žurnálována metadata ale ne samotná data – rychlejší ale méně bezpečný než ext3.
ZFS Zettabyte File System. 128 bitový souborový systém vyvinutý původně firmou Sun pro operační systém Solaris, nyní je používán i v BSD a připravují se ovladače pro Linux. Má v sobě přímo integrován manažér logických oddílů. Může uchovávat až 1 ZB dat (1 ZB = 1 bilión TB). Umí automaticky opravovat chyby.
ISO 9660 Souborový systém pro datová CD a DVD. Je omezení maximální délkou jména souboru 32 znaků a hloubkou adresářové struktury maximálně 7. Je možné, ale doplnit rozšíření pro vylepšení: ñ Joliet – dlouhá jména souborů pro Windows ñ El Torito – možnost bootování ñ Rock Ridge – dlouhá jména souborů pro UNIX Tato rozšíření musíme zapnout při vypalování CD a DVD. Většina moderních vypalovacích programů to dělá automaticky, takže si toho uživatel téměř nevšimne.
38
Přehled operačních systémů V této části je čtenáři podán krátký přehled historicky významných anebo současných operačních systémů. Tento přehled samozřejmě nemůže být kompletní a je mi jasné, že každý čtenář jistě známe alespoň jeden operační systém zde neuvedený. Přesto si myslím, že je tento výčet dostatečně reprezentativní a přinese čtenáři solidní přehled o existujících operačních systémech. Jsou postupně probrány UNIXové operační systémy a následně operační systémy firem Microsoft a Apple.
UNIX Základní vlastnosti UNIXu Operační systém UNIX, je vlastně nejstarší dodnes používaný operační systém, přesto panuje názor, že se jedná o operační systém nejlepší. Jeho vznik se datuje do druhé poloviny šedesátých let, kdy byl vyvinut ze systému Multics, původně jako systém pro zpracování textů. Jeho autoři jsou Ken Thompson a Denis Ritchie a název vymyslel Brian Kernighan. UNIX byl původně napsán v jazyce B, z kterého byl vyvinut v r. 1971 jazyk C2.
Obrázek 17 Zleva Ken Thompson a Denis Ritchie
Obrázek 18 Brian Kernighan 2 Jazyk A = Assembler, B je vyšší jazyk, jehož následovníkem je C. Následovníkem C pak není D, ale C++ 39
Pro vývoj UNIXu jsou charakteristická následující pravidla, která jsou stále dodržována: • • • •
Psát programy, které budou dělat právě jednu věc, a tu budou dělat dobře. Psát programy tak, aby mohly navzájem spolupracovat. Psát programy tak, aby povely přijímaly hromadně ze vstupu v textové podobě. Psát programy tak, aby výstupy produkovaly v textové podobě a mohly být použity jako vstupy do programů dalších.
UNIX je charakterizován následujícími vlastnostmi: • • • •
multiprogramový multiuživatelský víceprocesorový s terminálovým přístupem
Operační systém UNIX musí uživateli u terminálu vytvořit pocit, že počítač schovaný terminálem je "pouze" jeho.
za
Struktura UNIXu Jádro systému běží v privilegovaném režimu a obvykle je tvořeno jedním souborem (monolitický systém). Vše ostatní běží v uživatelském režimu. Jádro systému je tvořeno dvěma vrstvami: 1. HAL (Hardware Abstraction Layer) – část jádra závislá na hardware, především ovladače zařízení. 2. Kernel – část nezávislá na HW. Běží zde démoni – systémové procesy, které běží na pozadí bez ohledu na uživatele. Struktura UNIXu: • • •
Knihovny – obsahují objekty a různé rutiny (jako DLL ve Windows). Shell – rozhraní pro komunikaci s uživatelem. Současné UNIXy mají i grafické rozhraní, které jej nahrazuje a běžný uživatel se shellem nemusí vůbec přijít do styku. Skripty – posloupnosti příkazů shellu zapsané do souboru.
40
Programy
Shell, vestavěné programy
Aplikace
Skripty shellu
Knihovny Jádro (privilegovaný režim) Kernel
Démoni HAL Obrázek 19 Představa struktury UNIXu
Rozhraní systémových volání VFS
Síťové služby
Správce paměti
Správce procesů
Ovladač TCP/IP
Souborové systémy Ovladač prvního HD
Ovladač druhého HD
Ovladač DVD
První pevný disk
Druhý pevný disk
DVD
Ovladač síťové karty
Síťová karta
Obrázek 20 Představa struktury jádra UNIXu
Struktura jádra Souborový systém – rozhraní mezi ovladačem paměťového média a vyššími vrstvami jádra. V UNIXu platí, že „vše je soubor“. VFS ( Virtual File System) – rozhraní pro podobný přístup k různým souborovým systémům. Uživatel se nemusí starat o fyzické umístění konkrétního souboru Rozhraní systémových volání – rozhraní mezi jádrem a uživatelem (programy) s touto vrstvou se komunikuje (Application Programming Interface)
pomocí
knihoven
41
obsahujících
definice API funkcí
• • •
zajištění bezpečnosti znemožnění zásahu uživatele do jádra zjednodušení práce programátorů
Prvky ochrany uživatelů v UNIXu Pro přihlášení k UNIXu je nutný uživatelský účet, který obsahuje následující informace: • • • • • •
Jméno účtu a heslo Skupina a číslo uživatele Identifikace uživatele (jméno, příjmení…) Domácí adresář (/home/jmeno) Interpret příkazů shell (bash) Další informace (datum a místo posledního přihlášení)
Každý uživatelský účet je reprezentován jednoznačným identifikačním číslem (UID) a patří do nejméně jedné skupiny uživatelů (reprezentované jednoznačným identifikačním číslem GID). Prvky ochrany se určují zvlášť pro: • • • •
majitele souboru (u - user) skupinu uživatelů (g - group) ostatní, svět (o - other) všechny (a - all)
Přidělují se práva pro soubor • čtení (r) • zápis (w) • provedení (spuštění - x) • adresář • výpis obsahu (r) • přejmenování (smazání) (w) • vstup do adresáře (x) •
Existuje jeden speciální uživatel zvaný superuživatel (root), který má právo na cokoliv. Tyto prvky lze rozšířit pomocí rozšíření ACL (Access Control List).
Struktura adresářů UNIX má jednotnou strukturu adresářů, která je popsána v normách POSIX a POSIX-2. Aby byl systém považován za UNIX musí této normě vyhovovat.
42
Typický strom adresářů UNIXu vypadá následujícím způsobem: /unix, /bsd, /boot – Adresář obsahující jádro OS a zavaděč systému /bin – Základní systémové programy a příkazy /dev – Adresář speciálních souborů pro obsluhu periferií /etc – Adresář konfiguračních souborů systému /lib – Adresář knihoven /mnt – Pomocný adresář pro připojování dočasných systémů souborů /tmp – Veřejný adresář pro pomocné a dočasné soubory (temp) /home – Adresář s domovskými adresáři uživatelů /usr/bin, etc, lib, tmp – Adresáře se soubory, které typicky z kapacitních důvodů nejsou v kořenovém adresáři. /usr/include – soubory pro překladač jazyka C /usr/man – Manuálové stránky /usr/local/bin, man, etc, lib, ... – Lokálně instalované programy /usr/sbin, /sbin – Systémové programy určené zpravidla superuživateli /var – Adresář pracovních a administrativních souborů systému /opt – adresář s dalšími programy (pouze Linux) /srv – kořenový adresář WWW, FTP … (pouze některé distribuce Linuxu)
Současné i historické UNIXy BSD Jedná se vlastně o celou rodinu příbuzných operačních systémů (FreeBSD, OpenBSD, PC BSD, NetBSD ...). Zkratka BSD znamená Berkeley Software Distribution. Tento UNIX vznikl již na začátku osmdesátých let kompletním přepsáním tehdejších UNIXů. Je šířen zdarma pod licencí BSD, která je ještě volnější a svobodnější než běžná BSD licence. BSD je často používán jako bezpečný systém neboť není tak znám jako Linux a mnoho hackerů jej neumí napadnout. Tomuto se říká security by obscurity. Je často nasazován na firewally nebo WWW servery, ale existují i uživatelé, kteří jej používají na pracovních stanicích.
MINIX Tento UNIX napsal kompletně profesor Andrew Tanenbaum, který je znám svou kritikou jádra Linuxu (Linux is obsolete) a sporem s Linusem Torvaldsem. Tento UNIX pro osobní počítače byl poměrně rozšířen v osmdesátých letech, ale byl placený, proto většina uživatelů dala v devadesátých letech přednost alternativám zdarma. MINIX se stále vyvíjí a je již zdarma, ale není příliš rozšířen.
43
Linux Asi dnes nejznámější UNIX. Jeho původním autorem je Linus Torvalds, který jeho jádro vytvořil za pomoci MINIXu jako svou studentskou práci v roce 1991 a dal jej volně k dispozici na internet. Spojením tohoto jádra s programy vyvíjenými nezávislou iniciativou GNU vznikl GNU/Linux, dnes již většinou nazývaný pouze Linux. Existuje zhruba tři sta takzvaných distribucí Linuxu, často se vzájemně velmi lišících. Lze je rozdělit dle použitých balíčkovacích systémů. To jest podle toho v jakém tvaru se nabízejí jednotlivé programy a části dané distribuce. Distribuce založené na balíčkovacím systému rpm Jedná se o systém rpm (Red Hat Packge Manager) vyvinutý firmou Red Hat. Tento systém míval problém s cyklickými závislostmi kdy např. dva balíčky na sobě závisely navzájem a jeden bez druhého se odmítal nainstalovat, což je dnes již výjimkou. Red Hat Linux Jedná se o komerční verzi Linuxu, uživatel má v ceně i podporu a databázi znalostí. Existuje verze pro servery i pro desktopy. Firma podporuje mnoho certifikátů, což je systém školení po jehož úspěšném absolvování lze říci, že jeho účastník má určitou úroveň znalostí. Existuje i varianta pro školství nazvaná Red Hat Academy. Firma Red Hat přímo podporuje i vývoj dvou variant RH Linuxu šířených zdarma: Cent OS – vlastně RH Linux bez některých konfiguračních nástrojů. Používá se především u serverů. Fedora – distribuce pro desktopy s poměrně novými verzemi programů (samotný RH Linux je poměrně konzervativní). Red Hat si při jejím vývoji zkouší postupy které později uplatňuje RH Linuxu. SUSE Linux Rovněž komerční distribuce původem z Německá dnes vlastněná firmou Novell. Dříve u nás hodně populární a rozšířená, dnes trochu na ústupu. Existuje i varianta OpenSuse, která je zdarma, ale postrádá některé nástroje. Distribuce založené na balíčkovacím systému deb Tento systém pochází z distribuce Debian, která je od počátku svobodná a zdarma vyvíjená pod heslem „Programátoři programátorům“. Debian Jedna z nejstarších distribucí. Je velmi populární zejména na serverech, neboť je poměrně konzervativní a existuje pro ní mnoho návodů a řešení na internetu. Ubuntu Dnes asi nejznámější distribuce Linuxu, která vznikla úpravou Debianu. Velmi populární zejména na desktopech. Existují různé varianty a odvozeniny oficiální i neoficiální (Kubuntu, Edubuntu ...). Linux Mint Jiná velmi populární odvozenina Debianu, dnes ještě možná více rozšířená než Ubuntu.
44
Ostatní distribuce Android Distribuce vyvíjená Googlem speciálně pro mobilní zařízení. Mnoho jejo uživatelů ani netuší, že se jedná o variantu Linuxu. Gentoo Nejpopulárnější z takzvaných překládaných distribucí. Při její instalaci se nejprve nainstaluje minimální základní systém a pak se všechny zbývající části přeloží na míru pro daný počítač. Systém je takto o něco rychlejší a upravený na míru, ale na druhou stranu instalace (a případný upgrade) vyžaduje delší dobu v řádech i dnů. Arch Linux Nekomerční varianta Linuxu používající co nejnovější verze programů občas trochu i na úkor stability.
SunOS, Solaris a OpenSolaris Čistě komerční UNIX vyvinutý původně firmou Sun, v současné době vlastněný firmou Oracle. Používá se převážně na serverech.
MacOS X Operační systém počítačů Apple, vyvinutý ze systému NextStep, který byl vlastně klonem BSD. Systém je považován za nejbezpečnější a nejstabilnější systém na desktopu. Jeho úpravou a zjednodušením vznikl systém iOS, který je používán na mobilních zařízeních firmy Apple. Více v kapitole o firmě Apple.
GNU/Hurd Operační systém vyvíjený od poloviny osmdesátých let společenstvím FSF (Free Software Foundation). Namísto něj byl použito jako jádro tohoto systému Linux, což mělo být dočasné řešení. Systém však není dodnes hotový. Zajímavostí je, že je systém založen na mikrojádru a modelu klient/server.
45
Microsoft a jeho operační systémy Historie firmy Firma Microsoft byla založena v Albuquerque, stát Nové Mexiko 4. dubna 1975. Založili jí spolužáci Bill Gates a Paul Allen. Původně prodávala interpretr jazyka BASIC pro Altair 8800 a od roku 1980 operační systém MS DOS. V současnosti zisk 14,07 miliard dolarů a 78 565 zaměstnanců (prosinec 2007) a sídlí v Redmondu ve státě Washington. V současné době firmu řídí obchodní ředitel Steve Ballmer.
Obrázek 21 Zleva B. Gates, P. Allen, S. Ballmer
Operační systém MS DOS Vyvinut v roce 1980 pro firmu IBM pro počítač IBM PC 5150. Ve skutečnosti koupen za 50 000 dolarů od firmy Seattle Computer Products jako QDOS (Quick and Dirty Operating System) a upraven pro IBM PC. Vycházel z OS CP/M. Pro zajímavost parametry IBM PC 5150 – procesor 8086 4,77 Mhz, 64 kB RAM, černobílý monitor, disketová jednotka, klávesnice, stál cca. 4500 dolarů. MS DOS byl jednouživatelský jednoúlohový operační systém s vrstvenou strukturou. Jeho verze byly postupně 1.0 až 8.00 (ve Windows Me). Poslední čistá verze byla 6.22.
Vrstvy MS DOSu BIOS – základní ovládání HW pomocí softwarových a hardwarových přerušení IO.SYS – obsluha periferií jádro systému – soubor MSDOS.SYS – monolitické jádro textové rozhraní mezi systémem a uživatelem – soubor COMMAND.COM (obsahuje některé příkazy = vnitřní příkazy). Ostatní příkazy (externí) jsou programy s koncovkou COM (do 64 kB) a EXE Poslední vrstva obsahuje tyto vnější příkazy, dále uživatelské programy a dva konfigurační soubory
46
CONFIG.SYS – nastavení hardware – ovladače pro monitor, CD ROM, znaková sada AUTOEXEC.BAT – nastavení software.
Obrázek 22 Počítač IBM PC 5150
Konfigurace (AUTOEXEC.BAT, CONFIG.SYS) vnější programy, uživatelské programy Komunikace s uživatelem (COMMAND.COM) Jádro (MSDOS.SYS) Obsluha hardware (BIOS, IO.SYS)
Obrázek 23 Představa vrstev MS DOS Existuje volně šiřitelný operační systém FreeDOS, který je s MS DOSem kompatibilní a umožňuje spouštět programy psané pro MS DOS.
Grafické nadstavby Protože pracovat pouze s příkazovým řádkem není jednoduché, vznikají grafické nadstavby. Součástí MS DOSu od verze 4.0 byl Dos Shell, ale uživatelé jej nepřijali pro jeho nehezký vzhled a malou funkčnost. Proto Microsoft vyvinul Windows nejprve jako grafickou nadstavbu MS DOSu, která s ním později splynula v jeden systém.
47
Windows Vývoj Windows Vývoj verzí Windows je zjednodušeně a schématicky ukázán na následujícím obrázku. Windows
MS DOS 1.0 až 6.22
+
1.0 až 3.X Windows NT
Windows 95
3.1 až 4.0
SR 1 a SR 2
Windows 2000
Windows 98 Windows 98 SE
Windows Me
Windows XP
Windows Vista
Windows 7
Windows 8 Obrázek 24 Vývoj Windows
48
Struktura hlavních vývojových verzí Windows Struktura MS DOS 6.22 a Windows 3.X Pod pojmem Windows 3.X se označují Windows 3.0, 3.1 a 3.11. K BIOS a MSDOS.SYS přibyl WIN.COM, který spouští Windows a ovladače (Windows přidávají multitasking, ovladače sítě a 16 bitové knihovny (MS DOS je 8 bitový)) Spouštění ovladačů zařízení je popsáno v souboru WIN.INI pomocí příkazu DEVICE Správce virtuálních zařízení – (VMM) spouští programy DOSu neběžící pod Windows (účetnictví, Norton, T602) Jádro Windows • • • •
•
KRNL386.EXE – správce paměti a procesů GDI.EXE – grafické rozhraní USER.EXE – uživatelské ovládání rozhraní Konfigurační soubory INI o WIN.INI – software, uživatelé o SYSTEM.INI – hardware Rozhraní mezi uživatelem, programy a systémem (PROGMAN.EXE), grafické a textové rozhraní (shell)
API rozhraní (Application Programming Interface) – jednotné rozhraní pro aplikace DOS programy nemají o Windows ani tušení Protože, ale MS DOS je jednoprogramový a nemá omezení pro paměť musí se DOS programy umístit do virtuálních počítačů Aplikace Win16, API Správce programů (PROGMAN.EXE), shell INI soubory (SYSTEM.INI, WIN.INI)
VM
VM
DOS 1
DOS 2
Jádro (KRNL38.EXE, USER.EXE,GDI.EXE) DOS Extender (WIN386.EXE), řadiče VM BIOS, MS DOS, řadiče, WIN.COM Hardware Obrázek 25 Struktura MS DOS 6.22 a Windows3.X 49
...
Struktura Windows 9X Jako Windows 9X se označují Windows 95, 98 a Me Nejdolejší vrstva - komunikace s hardwarem Pak abstraktní vrstva pro komunikace s hardwarem • •
VMM ( Virtual Machine Manager) – správce virtuálních zařízení ISFM (Instalable File Systems) – správce souborových systémů
Správce konfigurace – správce ovladačů zejména zařízení Plug & Play Jádro – tři moduly • • •
KERNEL – správce procesů, paměti, multitasking, synchronizace GDI (Graphics Device Interface) – správce tisku, grafiky, grafických zařízení USER – vstupy z klávesnice, výstupy do uživatelského rozhraní
Registr – centrální informační databáze (místo INI souborů). Uloženy v USER.DAT a SYSTEM.DAT Aplikace pro Win32 (Windows95 a vyšší) a Win16 (Windows 3.X) běží v systémovém virtuálním počítači. Každá Win32 aplikace má svůj vlastní adresový prostor. Aplikace Win16 mají společný adresový prostor DOS aplikace mají opět každá svůj virtuální počítač
Nástroje
Win32
Win16
systému,
aplikace
aplikace
shell
Jádro (KERNEL,
VM
VM
DOS 1
DOS 2
Registr
USER, GDI) VMM
ISFM
Správce konfigurace
BIOS a ovladače zařízení Hardware Obrázek 26 Struktura Windows 9X
50
...
Struktura Windows řady NT Do řady NT se počítají NT verze 3.1, 3.5 a 4.0 a Windows 2000. Dnešní verze Windows (XP, Vista, 7 a 8) de facto pracují stále na stejném principu. Systém je rozdělen do dvou částí • •
část běží v privilegovaném režimu část běží v uživatelském režimu
HAL (Hardware Abstraction Layer) – rozhraní mezi hardwarem a zbytkem jádra Jádro (NTOSKRNL.EXE) – přerušení a správa procesů NTDLL.DLL – rozhraní mezi běžnými procesy a systémem Systémové procesy – procesy, které spouští systém. K privilegovanému režimu mají jednodušší přístup Správa oken a grafiky – je z důvodu rychlosti přímo v jádře. Vyplývá z toho: • •
bezpečnostní riziko – narušení stability systému při chybě tohoto modulu náročnost výměny uživatelského rozhraní za alternativní
NT nejsou vrstvený systém, ale modulární Systémové
Podsystémy prostředí
Služby systému
procesy
Aplikace
NTDLL.DLL
Uživatelský režim Privilegovaný režim Exekutiva Správa paměti
Správa objektů
I/O systém
Správa procesů
Správa vyrovnávací pamět
Správa zabezpečení
Správa oken a grafiky
Jádro a ovladače zařízení HAL Hardware Obrázek 27 Struktura Windows NT
51
Apple a jeho operační systémy Historie firmy Apple Počítače a operační systémy od firmy Apple jsou pro někoho srdeční záležitost, pro jiné naopak velká neznámá. Firma má bohatou historii a její počítače a operační systémy vždy udávaly směr vývoje a vyznačovaly se futuristickým designem. Firma byla založena v roce 1976 dvěma přáteli Stevenem Wozniakem a Stevem Jobsem. Od počátku vyráběla počítače s vlastním operačním systémem.
Obrázek 28 Steven Wozniak (vlevo) a Steve Jobs Slávu (a bohatství) získala firma díky počítači Apple II, který se prodával 15 let od roku 1977 do roku 1992 a byl kompletně zkonstruován Stevem Wozniakem. Dalším zlomem byl počítač Macintosh z roku 1984 s kompletním grafickým prostředím. V té době však po nehodě opustil firmu Steve Wozniak a krátce na to byl dozorčí radou vyhozen i Steve Jobs. Firma v první polovině devadesátých let začala postupně upadat a dokonce povolila licenční výrobu svých produktů. V této situaci se opět navrátil Steve Jobs, který firmu řídil až do své smrti v roce 2011 a přivedl jí zpět na vrchol. Dnes je firma mimo počítače (MacBook, iMac) známa díky přehrávačům iPod, mobilním telefonům iPhone a tabletům iPad. Pokud vás zajímá více o historii firmy, doporučuji přečíst si [5].
52
Operační systémy Apple MacOS Jedná se o operační systém vyvinutý firmou Apple a určený pouze pro počítače Apple Macintosh a jeho následovníky. Nebyl nikdy upraven pro jiné počítače. Vyvíjel se od roku 1984 do roku 2000 postupně ve verzích 1 až 9. Starší verze pracovali na bázi kooperativního multitaskingu, novější verze již používají preemptivní multitasking.
MacOS X Vznikl přidáním některých vlastností Mac OS do operačního systému Next Step. Tento systém je vlastně UNIX s jádrem vzniklým úpravou BSD. Mnoho uživatelů Mac OS X si ani neuvědomuje, že vlastně pracují s UNIXem. X v názvu se správně má číst jako 10 (nástupce Mac OS 9) a současně má ukazovat příbuznost s UNIXem. Původně byl systém pro procesory PowerPC G3 dnes je pro procesory Intel. Jeho rychlost a spolehlivost je dána tím, že Apple používá ve svých počítačích omezenou množinu hardware, což mu umožňuje OS dobře vyladit. Verze Mac OS X jsou: 10.0 Cheetah – 24.3.2001 10.1 Puma – 25.9.2001 10.2 Jaguar – 23.8.2002 10.3 Panther – 24.10.2003 10.4 Tiger – 29.5.2005 10.5 Leopard – 26.10.2007 10.6 Snow Leopard – 28. 8. 2009 10.7 Lion – 20. 7. 2011 10.8 Mountain Lion – 19.7. 2012
iOS Operační systém pro mobilní zařízení Apple, konkrétně iPhone, iPad a iPod Touch. Jedná se o ořezaný Mac OS X s nepreemptivním multitaskingem. Původně chtěl Apple použít pro tato zařízení Linux, ale nakonec se vydal touto cestou. Zajímavostí iOS je, že se jedná o operační systém používající nepreemptivní multitasking (o přepínání aplikací se stará uživatel). Systém je díky tomu velmi rychlý. Pro komunikaci mezi stolními počítači a mobilními zařízeními Apple slouží program iTunes, který současně plní i roli správce multimediálních souborů včetně možnosti nákupu.
53
Závěr Dočetli jste elektronickou publikaci o operačních systémech. Autor doufá, že Vám přinesla poučení a že jste třeba díky ní o něco lépe pochopili, jak funguje váš počítač, tablet nebo mobilní telefon. Operační systém tvoří a zřejmě ještě dlouho bude základ drtivé většiny těchto přístrojů. Autor je vděčen za jakékoliv připomínky, náměty a návrhy k tomuto textu. Pokud mu budete chtít cokoliv vzkázat, udělejte to nejlépe pomocí e-mailu:
[email protected].
54
Přehled použité literatury Omluva Tato studijní podpora vznikla převážně kompilací mých přednášek z posledních zhruba deseti let. Bohužel jsem si ne vždy pamatoval u všech textů, které zdroje jsem použil. Sice jsem se vše snažil dohledat a doplnit, ale nejsem si zcela jist, zda úspěšně. Pokud máte dojem, že zde není uveden některý v textu použitý zdroj, pak prosím, aby jste mne neprodleně informovali, ihned jej doplním. [1] MRÁZEK, Lubor. Operační systémy. České Budějovice : Skripta JU, 1996. 172 s. [2] VAVREČKOVÁ, Šárka. Operační systémy - přednášky. Opava : Slezská univerzita, 2010. 130 s. [3] KEPRT, Aleš. Operační systémy. Olomouc : Univerzita Palackého, 2007. 173 s. [4] KAŠPÁREK, Tomáš, et al. Operační systémy. Brno : VUT Brno, 2006. 108 s. [5] ISAACSON, Walter. Steve Jobs. New York: Simon, 2011. ISBN 978-145-1648-553.
55
Operační systémy Elektronická skripta Mgr. Jiří Pech, Ph.D. Jihočeská univerzita v Českých Budějovicích Přírodovědecká fakulta ISBN 978-80-7394-384-4 URL: http://rum.prf.jcu.cz/public/informatika/osy.pdf
56