Operační systémy
Jiří Zacpal
DEPARTMENT OF COMPUTER SCIENCE
PALACKÝ UNIVERSITY, OLOMOUC
KMI/YUDIT Úvod do informačních technologií
Osnova
Co je to operační systém
Proces
Správa operační paměti
Souborový systém
Správa zařízení
Literatura
Operační systém
Co to je operační systém
-
umožňuje
programům (aplikacím) běh na/v počítači pomocí programového rozhraní
(API) a uživatelům práci s počítačem pomocí svého uživatelského rozhraní (UI) a programů
cíl: snadné a efektivní využití počítače (pro uživatele i aplikace)
víceméně protichůdné požadavky - dříve důraz na efektivitu (a vůbec možnost), nyní spíše snadnost
kompromis, závisí na způsobu využití a typu počítače → různé
OS
poskytuje abstrakci (funkcí) hardware počítače, odstiňuje uživatele a aplikace od hardware
-
Operační systém
Virtuální počítač –
OS prostředník mezi hardwarem a aplikačními programy
Správa prostředků –
OS přiděluje a odebírá systémové prostředky procesům
Části OS
-
základní obslužné programy - pro práci s
OS a zdroji počítače, např. administrátorské a
diagnostické nástroje, diskové utility, programy pro práci se zařízeními, sítí apod.
uživatelské rozhraní (UI) - součást
OS (jádra?) nebo programy? → záleží na typu
OS,
neinteraktivní (dávkové), interaktivní - textová konzole s interpretem příkazů (shell) nebo
grafické s okenním systémem
Jádro
Jádro je základním kamenem operačního systému. Zavádí se do operační paměti
počítače při startu a zůstává v činnosti po celou dobu běhu operačního systému.
Druhy:
Monolitické jádro – jádro je jedním funkčním celkem. Tento typ jádra je použit v operačním systému UNIX.
Mikrojádro – jádro je velmi malé a všechny oddělitelné části pracují samostatně jako běžné procesy.
Hybridní jádro – kombinuje vlastnosti monolitického jádra i mikrojádra.
Tento typ jádra je použit u operačních systémů Windows.
Typy OS
univerzální - pro desktopové a přenosné počítače typu PC, servery, mainframe aj.
embedded - specializované pro embedded zařízení, dnes i upravené univerzální (např.
Linux, MS Windows)
reálného času - zaručení vyřízení požadavku/odpovědi v pevně daném čase, např.
VxWorks, QNX, upravené univerzální (např. RTLinux, MS WindowsCE) i HW řešení, např. pro řízení strojů
paměti, pro počítačové klastry (cluster)
dnes nejvíce používané: na desktopových PC MS Windows (majoritní), Mac
OS X,
GNU/Linux, Unix, na (síťových) serverech unixové, na embedded zařízeních různé (MS Windows, Linux)
Linux
Windows
Vykonávání instrukcí
hodnoty adres do operační paměti a vstupně/výstupních zařízení)
přípustné kombinace pro každou instrukci
výsledek instrukce často ukládán do prvního operandu
vykonávání instrukce
trvá určitý počet taktů (na vnitřní frekvenci procesoru), jednotky až desítky
až 7 fází: např. načtení, dekódování, načtení operandů, provedení, uložení výsledku
pipelining – částečně současné provádění instrukcí, fáze za sebou, nelze vždy, např. podmíněné skoky
-
Programovací jazyky
-
jazyk (textově) pojmenovaných instrukcí, např. MOV, ADD, MUL, AND, CMP, JE, JMP, a registrů
procesoru, (zápisů) čísel a textu, hodnot adres, proměnných atd.
MOV eax, promenna1; CMP ebx, promenna2; JE adresa
* překládán do kódu instrukcí
* přímá a nepřímá adresa do paměti - adresa vypočítána z hodnot v registrech a zadaných
přímo, např. posunutí + báze + index x faktor, použití pro přístup do pole, k lokální proměnné apod.
* Vyšší programovací jazyky
* vyšší úroveň abstrakce, např. iterace přes prvky seznamu -> cyklus průchodu seznamem ->
jména instrukcí procesoru (přesuny z/do paměti, log. operace, skoky aj.) -> kódy instrukcí
* [[cs>Překladač]] - přeloží (přepíše) program z jednoho (vyššího) prog. jazyka do jiného (nižšího)
jazyka, typicky až do kódù instrukcí
* interpret - přeloží program z prog. jazyka do programových bloků interní formy a tyto vykoná
Přerušení (Interrupt)
-
původně pro řešení komunikace (rychlého) procesoru s (pomalými) zařízeními:
dříve: vyslání požadavku, aktivní čekání na vyřízení (= smyčka testující stav oznamující
vyřízení), pokračování ve výpočtu
požadavek, oznámení vyřízení požadavku = přerušení procesoru
sběrnici) a pokračuje ve výpočtu, disk najde sektor, načte do své cache a vyvolá
přerušení, procesor vyšle požadavek zaslání bytu dat, disk pošle, procesor uloží do
operační paměti, další byte atd.
* pozastavení vykonávání programu, vykonání programu (rutiny) obsluhy přerušení
implementované OS (např. ovladači zařízení), pokračování vykonávání programu (od
následující instrukce)
* během vykonávání obsluhy přerušení další přerušení zakázána nebo systém priorit přerušení
Přerušení (Interrupt)
hardwarová - přídavné karty (dříve), disková zařízení (dříve), vstupně/výstupní zařízení
aj., 256 přerušení u Intel 80×86
softwarová - vyvolána
OS pro vlastní potřeby fungování, programy pro služby
OS (tzv.
systémová volání)
DMA (Direct Memory Access) - způsob přenosu dat mezi zařízením a pamětí přímo, pro
větší množství dat, např. disková zařízení, procesor pouze naprogramuje řadič DMA a
vyšle prvotní požadavek, zbytek řeší řadič
Procesy
-
Vlákno je prvek reprezentující vykonávání kódu procesu. Neformálně řečeno, vlákno je
„vykonávání kódu“, zatímco proces je „paměť a další prostředky“.
Stavy procesů
Vytvořený (created)
Běžící (running)
Připravený (ready)
Blokovaný (blocked)
Ukončený (terminated)
obrázek
Plánování procesů
Plánování procesů řeší výběr, kterému následujícímu procesu bude přidělen procesor a proces tak poběží.
Tuto úlohu má na starosti plánovač (scheduler), který je součástí operačního systému.
Plánovače používají dvě základní strategie:
cyklickou obsluhu - každému procesu je přiděleno stejné časové kvantum
systém priorit - každý proces má určitou prioritu s tím, že procesům s vyšší prioritou je přidělován procesor přednostně
V praxi se používá kombinace obou strategií
Přepnutí kontextu
stejného místa, ve kterém byl přerušen a aby v procesu až na časové zpoždění nebylo
poznat, že k přerušení došlo => [[cs>Změna kontextu|přepínaní kontextu]]
* uložení kontextu (anglicky context save) - kompletní uložení stavu procesu
* obnovení kontextu (anglicky context restore) – zpětné načtení stavu procesu do procesoru
* změna kontextu (anglicky context switch) - uložení kontextu jednoho a obnovení kontextu druhého
Komunikace a synchronizace
pomocí speciální sdílené paměti a posíláním zpráv IPC
sdílenou paměť a jiné zdroje počítače, zvláště při více procesorech
při konfliktních operacích, např. čtení-zápis - fáze operací (i instrukcí procesoru) např.
čtení z paměti, operace, zápis do paměti
Synchronizace
určení specifického pořadí běhu
atomické operace = nedělitelné, nepřerušitelné, sekvenčně prováděné (ty konfliktní),
např. nastavení nebo inkrementace atomické proměnné, použití pro implementaci tzv.
synchronizačních primitiv
* [[cs>synchronizační primitiva]]: zámek ([[cs>mutex]]), [[cs>semafor]] (počítadlo), [[cs>kritická sekce]], událost, monitor a další
* hardwarová podpora: atomické instrukce procesoru (test-and-set, fetch-and-add,
compare-and-swap aj.), zakázání přerušení (při jednom procesoru), preempce (při více procesorech)
* softwarové implementace: Dekkerův (1965), Petersonův (1981) algoritmus, vyžadují atomické uložení hodnoty do proměnné
* implementovaná a poskytovaná OS, ale i využívaná v rámci samotného OS!
Uváznutí (deadlock)
vzájemné čekání na výlučně vlastněné zdroje (např. chráněné zámky) při modelu využívání
„požadavek na přivlastnění-používání-uvolnění”
1. výlučné vlastnictví,
2. čekaní při vlastnictví jiného,
3. vzájemné (cyklické) čekání,
4. nemožnost [[cs>preempce]] (násilné odebrání prostředku)
* řešení deadlocku:
* neřešení (ignorování),
* detekce a zotavení,
* prevence (zamezení vzniku, tj. nenaplnění podmínek),
* vyhýbání se (přidělování prostředkù tak, aby nenastaly podmínky)
* dnešní OS neřeší (ignorují)
Správa operační paměti
S operační pamětí souvisí především tyto funkce, na kterých se podílí hardware a operační systém:
přidělování (alokace) a uvolňování (dealokace) paměti procesům na požádání
udržování informací o obsazení paměti
zabezpečení ochrany paměti – zabránění přístupu procesu k paměti mimo jeho přidělený region
realizace virtuální paměti
Přidělování operační paměti
Operační systém může přidělovat procesům buď:
souvislé úseky paměti
přidělování pevných bloků paměti
přidělování bloků paměti proměnné velikosti
nebo malé bloky paměti – stránky
fyzický adresový prostor - rámce
logický adresový prostor – stránky
Kdykoliv proces přistupuje do paměti, je logická adresa hardwarově přeložena na fyzickou adresu
Virtuální paměť
paměť), které je sice výrazně pomalejší, ale také výrazně lacinější
Systém virtuální paměti funguje stejně jako stránkování, jen fyzický prostor je rozšířen o místo na disku
Při přístupu procesu ke stránce, která není v primární paměti zajistit její nahrání do primární paměti.
Pokud není v primární paměti volné místo, je nutno ještě nějakou stránku z primární
paměti přemísti do sekundární. Tomuto procesu se říká swapování.
honza: celá? tato kapitola je nesmysl? viz Stránkování paměti, viz stránkování na disk.
Virtuální paměť je podle mne o tomto: Virtual memory Virtual address space
Souborový systém
Úkolem operačního systému je především:
Umožnit procesům ukládat velké množství informací obvykle ve formě souborů.
Umožnit přístup k těmto informacím všem procesům, které o to požádají.
Aby bylo možné tyto úkoly správně plnit, musí být data ve vnější paměti nějak
organizována. Organizaci těchto dat se říká souborový systém.
Souborový systém
Pevné disky jsou obvykle na fyzické úrovni rozděleny na oddíly (partitions).
-
honza: hmm, a co Logical Volume Management
připojují pomocí tzv. mountování (2/mounting).
Soubory
Soubor je pojmenovaná posloupnost bytů, která je uložena na nějakém datovém médiu (pevný disk, CD disk, flash disk, …)
Každý soubor je charakterizován svým jménem.
Část jména, která je za znakem „.“, se nazývá přípona názvu souboru.
Většina operačních systému podporuje různé druhy souborů. Nejzákladnější rozdělení je na:
Normální soubory – soubory, které obsahují uživatelské informace. Tyto se pak rozdělují na textové a binární soubory.
Adresáře – systémové soubory, které udržují strukturu souborového systému.
honza:
UNIX “všechno je soubor”
Atributy souboru
Atributy - další informace o souboru:
délka – velikost souboru v počtech bajtů,
přístupová oprávnění – kdo smí se souborem pracovat (čtení, zápis, …) pro uživatele a skupiny,
vlastník – uživatel vlastnící soubor (též skupina),
časové informace (čas vytvoření, čas posledního přístupu k souboru, čas poslední změny v obsahu souboru, …).
Tyto atributy jsou většinou uloženy v adresáři, ve kterém je soubor uložen
-
Adresáře
jméno, atributy a adresu, kde je na disku uložen.
Některé operační systémy umožňují vytvořit jen jeden adresář (tento se nazývá kořen – root), který obsahuje všechny soubory
Většina moderních operačních systémů však umožňuje vytvářet libovolné množství
adresářů, které vytvářejí hierarchickou strukturu souborového systému.
Linky
je tedy vlastně hard link. Moderní operační systémy umožňují vytvářet více hard linků k jednomu souboru.
Soft link je odkaz na jiný soubor, který je specifikován jeho cestou.
Souborové systémy
FAT32 je jednoduchý souborový systém, proto je podporován prakticky všemi operačními systémy
FAT tabulka
kořenový adresář
NTFS byl navržen jako souborový systém pro Windows NT
podpora pro přidělování práv k souborům
kompresi na úrovni souborového systému
šifrování
diskové kvóty umožňující nastavit maximálně využitelné místo na diskovém oddíle pro konkrétního uživatele
struktura
bootovací sektor
master file table (MFT), což je seznam všech souborů na disku
systémové soubory
ostatní soubory.
UFS (Unix File Systém) je souborový systém používaný v Unixu
Správa zařízení
Jednou ze základních funkcí operačního systémů je správa vstupně výstupních zařízení
Vstupní zařízení se dělí na:
Bloková (například disky). V těchto zařízeních se data ukládají v blocích (nejčastější
velikost bloku je od 128 B do 1 024 B), které mají svou adresu. Základní vlastností
těchto zařízení je to, že umožňují čtení či zápis celého bloku.
* Znaková (například klávesnice, myši, tiskárny). Tato zařízení pracují s proudy znaků,
které nemají žádnou adresu. Data se tedy čtou a jsou i ukládána po znacích.
Správa zařízení
Úkolem operačního systému při správě zařízení je především:
Zajistit nezávislost na zařízení. To znamená, že například můžeme napsat program,
který vytváří a ukládá soubory na libovolná zařízení (disk, flash disk, …) a pro každé
z těchto zařízení není potřeba tento program měnit.
* Zajistit ošetření chyb zařízení. Při čtení nebo zápisu na zařízení se může vyskytnout
chyba. Operační systém by měl tuto chybu odstranit, pokud to jde, a pokud ne, měl by
tuto chybu ošetřit (pokusit se o danou akci znovu, ohlásit chybu, …).
* Zajistit sdílení zařízení. Každé zařízení může využívat více uživatelů v tu samou chvíli.
* Tyto cíle zajišťuje operační systém pomocí ovladačů zařízení
Disky
RAID
uložená data zachována i při selhání některého z nich
Metody:
Pruhování
Zrcadlení
Druhy:
RAID 0, RAID 1, RAID 5, RAID 6
Příště
• Počítačové sítě, technologie a principy fungování. Celosvětová síť Internet a její služby.
Studijní texty:
P. Příhoda: Počítačové sítě
uvt_3_pocitacove_site.pdf (Vyuka\KMI_UVT\vyukovy_text)
Andrew S. Tanenbauma Computer Networks.
-