6. Operační systémy
Architektury OS
Aplikační programovací rozhraní OS
Periferie, jejich správa, ovladače
Procesy, vlákna a jejich synchronizace
fce a součásti OS
správa procesů
správa OP (alokace, dealokace,..., virtualizace,...)
správa souborů
správa I/O zařízení (ovladače, některé OS spec. soubory)
správa vnější paměti (disky) (formou souborového systému)
správa síťových služeb (přístup ke zdrojům, sdílení zdrojů,..)
ochranný systém (řízení přístupu ke zdrojům,...)
rozhraní (příkaz. řádek, shell, GUI...)
ochrana a reakce na chyby (ukončení procesu, zopakování operace, info uživateli,...)
sbírání statistik a infa o systému
architektury jádra
druhy
mikrojádro
hybridní
monolitické
úkol
přidělování paměti a času procesoru programům
ovládání zařízení PC - ovladače
abstrakce fcí (př.: načítání souborů = příkazem)
režimy
omezený
privilegovaný
aplikace
spec. stroj. instrukce pro jádro
=
kernel mód
rozsáhlé, hodně fcí, všechny aspekty činnosti OS,
všechen kód ve = pam. prostoru (kernel space)
silně provázané části
některá přidávání modulů za běhu OS
př.: UNIX, Linux
pouze nejzákl. fce
př. fcí: správa přerušení, plánování procesů,...
ostatní části běží v uživ. prostoru (user space)
př.: správa soub. syst., ovlad. zař., síť. služby,...
= servery
zajišťuje pouze kom. mezi servery pom. zasílání zpráv
př.: GNU Mach (Unix), Symbian OS (Nokia), MINIX (Unix,...)
+
vyšší výkon
-
chyba v 1 části může zablokovat 2. (sdílená paměť), silná provázanost a závislost
+
snadnější programování systému, vyšší přehlednost kódu - rozdělení na sam. celky; rozšiřitelnost (přidání serveru), flexibilita; přenositelnost
-
menší výkon (zasílání správ mezi procesy pomalé)
kombinace
podobné mikrojádru, kvůli vyššímu výkonu vlasnosti monol.
X ovládání modulů za běhu X
př.: Windows NT (Windows), XNU (Mac OS X)
rozhraní OS
systémová volání
rozhraní mezi syst. procesem a OS
příkazový řádek
grafické
impl. SW přerušením
na zásobník argumenty, do spec. registru kód syst. volání
po vyvolání přerušení --> privileg. režim --> řízení předá jádru
vyšší prog. j. volají syst. fce pom. knihoven
ty tvoří vrstvu nad skutečnými voláními
př.: POSIX (knihovna v C - open, write,...)
různé platformy - různé volání OS (POSIX - Unix, Win.API)
komunikace PC s okolím, V/V
všechny součásti PC mimo hl. komponenty
hierarchický OS
obecný princip architektury OS
každá vrstva budována na funkcionalitě nižších
nejnižší (HW)
nejvyšší (uživ. rozhr.)
nižší nabízí vyšší fce
použ. rozhraní (modifikace jen uvnitř vrstvy)
dekompozice problémů
princip modularity
model klient-server
mikrojádro
apl. vrstvy klientské x serverové
modulová architektura
modulární jádro (OOP techniky)
komponenty jádra = moduly
kom. přes rozhraní
lze je zavádět do jádra
př.: MAC OS X
virtualizace
umožňuje nahlížet na 1 fyz. entitu jako na více log. (/naopak)
systémová
1 fyz. systém na více log.
př.: JVM
proces
program zavedený do OP, prováděný procesorem
kód + data
používá syst. prostředky PC - přidělil OS (priorita/výlučnost/...)
v OP má
zásobník
datová sekce (halda)
kód programu (instrukce)
v OS uspořádány hierarchicky
krom 1. procesu mají rodiče, + potomky
OS maximalizuje využ. procesoru prokládáním běhu
multitasking = schopnost OS provést víc procesů souč.
stavy
nový
připravený
běžící
čekající
ukončený
pokud střednědobý plánovač
odložený připravený, odložený čekající
informace
v PCB
ID údaje: PID, PID rodiče, ID uživatele
stav procesů: obsah registrů, PC, ukazatel na vrchol zás.
info pro správu paměti
info o využívaných zdrojích
účtovací info (spotřebovaný čas,..)
info plánovače (stav, priorita, události, na které čeká,...)
přepínání
klíčové pro multitasking
při
přerušení od časovače
I/O přerušení
výpadku stránky
synchronizace
vlákna
= objekt
v rámci procesu
viditelné pouze uvnitř procesu
charakterizováno stavem
sekvence instrukcí
spravuje plánovač, vykonává procesor
nevlastní žádné zdroje - ty jsou asoc. s procesem
součásti
zásobník
PC
registry
TCB (thread control block)
může přistupovat k paměti aj. zdrojům procesu
může měnit nelokální obsah (mimo svůj zás.) --> ostatní vlákna to vidí
ukončení procesu ukončuje jeho vlákna
+
využití multiprocesorových strojů (vlákna 1 procesuna různých CPU), vytvoří se a skončí rychleji než proces, rychlejší přepínání, jednodušší programování
-
nutnost synchronizace dat - konzistence a aktuálnost
implementace ve 2 úrovních
uživatelská
na úrovni jádra
+
přepojování nepožaduje volání jádra - i nad OS bez podpory vláken, přepíná aplikace - volí sama algoritmus
jádro o nich neví - manipuluje s procesy
správa prostř. knihovny aplikace
-
neefektivnost, pokud se zavolá jádro, zablokuje to celý proces, jádro přiděluje procesor procesům - vlákna běží na 1 procesoru
ve všech moderních OS
správu podporuje jádro pomocí API
+
více vláken = procesu na více procesorech, blokování na úrovni jádra (tzn. ne celý proces)
př.: GUI apl., síť. server
souvisí s paralelním během programů
synchronizace procesů
komunikace mezi procesy
uváznutí
stárnutí
sdílení prostředků (paměť, zařízení, soubory)
kritická sekce
segment kódu, kde proces přistupuje ke sdíleným zdrojům
pokud více procesů přistupuje ke zdrojům + manipuluje
podmínky řešení
podmínka bezpečnosti = výhradní přístup
podmínka trvalosti postupu
podmínka spravedlivosti = omezené čekání
řešení
SW --> aktivní čekání
HW (spec. instr.) --> aktivní čekání
SW zprostředkované OS --> pasivní čekání
synchr. zajišťuje OS
semafor
mutex (vzájemné vyloučení)
zasílání zpráv
zasílání signálu
celé číslo
3 oper.: inic., wait (záp. = zablokovaný), signál (záp. --> odblokuje)
id procesu + počet uzamknutí
stavy: volný, získání mutexu, uvolnění mutexu
zajištění 2 procesům přístup k = datům/současné operace
o vstup do KS usiluje více pr., když je KS využ. -->
busy waiting (smyčka, spotřebovává čas CPU)
zablokovat proces
nesprávní použití --> zablokování/uváznutí --> ukončneí procesu