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