Operační systémy – okruhy k ústní zkoušce
1. Definice OS: typy OS, abstrakce a služby, systémová volání. -
Definice OS Rozšíření stroje – pohled „shora“ (tvůrce prostředí pro uživatele a jejich programy) Správce prostředků – pohled „zdola“ (paměť, procesor, periferie)
-
OS je v informatice základní programové vybavení počítače, které je zavedeno do paměti počítače při jeho startu a zůstává v činnosti až do jeho vypnutí Hlavní funkce OS Správa prostředků Abstrakce a rozšíření počítače Management zdrojů Virtualizace a rozšíření HW
-
-
Typy OS Mainframe (sálové počítače) Serverové OS Víceprocesorové OS Osobní (Windows, Mac OS) Real-Time OS (nemocnice, telekomunikace; QNX, VxWorks) Vestavěné OS (set-top boxy, kalkulačky, bankomaty) Smart-Card OS
-
Abstrakce - uživateli je prostřednictvím OS předkládána abstrakce; snazší k pochopení a ovládání (pomocí abstraktní vrstvy s jednoduchými funkcemi - API) Služby Prostředí pro tvorbu programů Prostředí pro provádění programů (plánování pořadí úloh, spouštění programu) Přístup k I/O zařízením a souborům Přístup k systému (správa a přidělování systémových prostředků) Detekce chyb (softwarové, hardwarové) Reakce na chyby (ohlášení chyby, opakovaný pokus o provedení, ukončení) Sledování činnosti systému
-
-
Systémové volání (system call, syscall) – mechanismus sloužící procesům k volání funkcí jádra OS (pouze Unix, Windows používá meziprocesovou komunikaci - API) Procesy (vznik procesu) Soubory (otevření souboru) Adresáře a souborové systémy Ostatní (práva, signály)
2. Moderní koncepce OS, architektura jádra: monolitický systém, vrstvený systém, virtuální stroj, mikrojádro. -
Moderní koncepce OS obsahuje obsloužení Procesů Správy pamětí Správy V/V Správy úložišť Systémových volání
-
Jádro - základní kámen OS; přiděluje paměť a čas procesům; zajišťuje abstrakci; řídí HW a volá systémové programy; mikrojádro x klientské procesy Monolitický systém – všechny funkce systému v jádře; velké, nerozšiřitelné, komplikovaná změna aplikací; Solaris; centralizace Vrstvený systém – Windows; nižší složitost, vyšší rychlost volání funkcí, snazší modifikace; operátor -> uživatelské programy -> správa V/V, buffering -> komunikace mezi procesy a konzolí operátora -> správa paměti -> alokace CPU a multiprogramming; vrstva smí volat jen procedury stejné nebo nejbližší nižší vrstvy Mikrojádro – jádro obsahuje pouze malý počet základních funkcí (komunikace procesů a jejich základní plánování, správa paměti), spolehlivost, bezpečnost, rozšiřitelnost; snížení výkonnosti; Symbian OS Virtuální stroj – vytváří abstraktní stroj, virtualizované prostředí; aplikační virtuální stroj Java Virtual Machine
-
-
-
3. Návrh OS a jeho bezpečnost: důvody náročnosti implementace OS, principy jeho vývoje, zabezpečení, typy útoků a prevence, ochrana systému, dat, uživatelů, procesů. -
Cíle návrhu Hlavní společné cíle (definovat abstrakce, spravovat HW, poskytnout základní operace, zajistit izolaci) Uživatelský pohled (snadno použitelný a naučitelný, spolehlivý, rychlý, bezpečný) Systémové hledisko (snadná implementace, bezchybnost, údržba)
-
Důvody náročnosti implementace OS – rozsáhlost, konkurence procesů v přístupu k systémovým prostředkům, ochrana dat, sdílení dat a systémových prostředků, životnost, obecnost použití, přenositelnost, zpětná kompatibilita Principy vývoje OS – jednoduchost, jasné chování, jedna funkce (volání) by měla dělat jednu věc; pokud je vlastnost „možná“ potřeba, je lepší jí dát do knihovny nikoli do jádra
-
-
Zabezpečení a ochrana – integrita dat, řízený přistup k systémovým prostředkům, autentizace, autorizace, zamezení přístupu, šifrování Typy útoků – zvenčí (trojské koně, DoS), zevnitř (od uživatelů) Prevence – stanovení práv uživatelům, antiviry, firewally, proškolení zaměstnanců Zajištění izolace – uživatelé si nesmí zasahovat do svých procesů, systémových prostředků a dat
4. CPU: provádění instrukce, atomicita a přerušitelnost procesu a instrukce, přerušovací systém, průběh přerušení, časovač, sdílení času. -
-
-
-
-
Provádění instrukce – čítač instrukcí obsahuje adresu příští instrukce -> CPU načte instrukci -> dekóduje -> provede -> čítač se inkrementuje Instrukční cyklus s přerušením – CPU ověřuje požadavky na přerušení vždy před načtením nové instrukce, pokud není přerušení povoleno nebo požadováno, načte se následující instrukce; pokud je přerušení povoleno a požadováno, uloží se automaticky obsah čítače do zásobníku a do čítače se nahraje přerušovací vektor – tím se změní adresa příští instrukce a nastavení přerušovacího systému Typy provádění Sekvenční - jedna za druhou Multiprogramming – (pseudo)paralelní běh více úloh najednou, způsob plánovače OS; timesharing – sdílení času CPU mezi procesy Atomicita – činnost se provede najednou, nemůže být přerušena (zaručuje vzájemné vylučování) Přerušení procesu a instrukce Preemptivní – plánovač určuje, kdy má který proces CPU (proces se CPU sám nevzdá) Nepreemptivní – proces se musí sám vzdát CPU (úloha s větší prioritou jde dřív, jinak FIFO) Přerušovací systém - umožňuje efektivní využití CPU; arbitr = řadič přerušení (rozhoduje o pořadí přerušených úloh; vybírání dle priority); výhody a nevýhody při řešení kritické sekce pomocí zákazu přerušení – jednoduchost použití, neaktivní čekání x nemožnost použití na SMP systému, zvyšování latence systému Průběh přerušení - přepnutí stavu -> uložení stavu procesu -> obsluha ovladačem v jádře -> plánovač rozhodne, který proces poté poběží Časovač – pravidelně generuje přerušení (standardně 10ms) a umožňuje preempci Sdílení času - multitasking (více procesů se dělí o čas CPU; přepínání kontextu bez uživatelova vědomí)
5. Vstupně-výstupní zařízení: techniky programování vstupu a výstupu, DMA. Paměť cache, střední přístupová doba. -
Vstupně-výstupní zařízení Zařízení, řadič OS zjednodušuje práci s V/V zařízeními (ovladače) – zařazení do jádra, načtení při spuštění/běhu systému Registry na zařízení, V/V porty, přerušení Přístup pomocí instrukcí CPU DMA (Direct Memory Access)
-
Techniky programování vstupu a výstupu Programovaný I/O přenos – nepreemptivní, procesor zaměstnán testováním stavu I/O modulu I/O přenos s přerušením – během provádění I/O operace může CPU pracovat na jiné operaci
-
DMA (Direct Memory Access – přímý přístup k paměti) - umožňuje přístup hardwarovému subsystému do operační paměti bez účasti procesoru (CPU pouze iniciuje přenos a může dál pracovat), DMA přenos v podstatě jen kopíruje bloky dat z jednoho zařízení do druhého Cache – vyrovnávací paměť; urychluje přístup k často používaným datům; přístupná jen při napájení Střední přístupová doba Doba od zadání požadavku do zpřístupnění požadované informace Ts = Tc + (1 – HR) * Top Ts – střední přístupová doba Tc – přístupová doba do cache Top – přístupová doba do operační paměti HR = Tcelk / Tcache – Hit Radio (činitel úspěšnosti)
-
6. Požadavky OS na HW nutné pro jeho implementaci: zejména na procesor, správu a adresování paměti. -
Požadavky OS na HW (měl by obsahovat) Přerušovací systém (efektivní využití CPU) Časovač – pravidelně generované přerušení (umožní preempci) CPU s podporou režimů kernel a user (při neprivilegované operaci umožňuje skok z režimu user do režimu kernel - TRAP) CPU s podporou ochrany a virtualizace paměti (logické adresování – umožnění realokace; pokus o přístup k nepřidělené paměti – TRAP)
-
Požadavky na procesor
-
Řadič nebo řídicí jednotka (načítání, dekódování, ukládání) Sada registrů (uchovávání operandů a mezivýsledků) Aritmeticko-logická jednotka (provádí aritmetické a logické operace) Cache
Požadavky na paměť Uvolňování paměti (když už proces paměť nepotřebuje) Ochrana paměti (proces nesmí odkazovat bez povolení na paměťová místa přidělená jiným procesům) Správa adresace paměti (odkazy na paměť v programu se musí dynamicky překládat na fyzické adresy) Logická organizace (OS a HW musí podporovat práci se sekcemi – ochrana a sdílení) Sdílení paměti (více procesů může sdílet úseky paměti bez narušení ochrany paměti)
7. Implementace procesu v OS: proces a program, tabulka procesů, přepínání kontextu, stav procesu, třístavový a sedmistavový model. -
Program – postup operací, který popisuje realizaci dané úlohy („recept na dort“) Proces - instance programu v paměti („pečení podle receptu“); pro běh je potřeba: procesor, vnitřní paměť, další prostředky (I/O zařízení, soubory,…) Tabulka procesů Každý proces má své PID, tvoří strom Uchovává: adresový prostor, přidělené prostředky, stav, atributy
-
Přepínání kontextu (při přerušení) Uložení kontextu procesu Obsluha ovladačem v jádře Plánovač rozhodne, který proces poběží poté
-
Třístavový model Běžící (používá CPU) Připravený (pozastaven jádrem OS) Blokovaný (čeká na vnější událost)
-
Sedmistavový (rozšířený) Běžící (nemůže se stát z blokovaného) Připravený Blokovaný (nemůže se stát z připraveného) Nový (nelze zatím spustit) Ukončený (již nemůžeme spustit, ale je nutné ho nadále drže v paměti) Odložený blokovaný (blokovaný proces odložený na disk)
Odložený připravený (připravený proces odložený na disku)
8. Procesy v OS UNIX/Linux: vznik a zánik procesu, systémová volání fork(), exec(), exit(); hierarchie procesů, stavy procesů a v Linuxu, příkaz ps, adresář /proc; posixové signály a jejich zpracování. -
Vznik procesu Při inicializaci systému Systémovým voláním Požadavkem uživatele, startem dávky
-
Ukončení procesu Normální (dobrovolné) Při chybě (dobrovolné) Fatální chyba (nedobrovolné) Zabití (jiným procesem, jádrem)
-
Fork() – nástroj pro vytváření nových procesů; jednotná hierarchie procesů (strom s jediným kořenem s procesem PID = 1); po zavolání se aktuální proces rozdvojí a běh programu pokračuje ve dvou nezávislých větvích (rodičovskému procesu je vráceno PID nového procesu a novému procesu je vrácena nula, negativní hodnota je chyba) Exec() – systémové volání poskytované jádrem operačního systému; kód běžícího procesu je nahrazen programem, který je předán jako parametr; zachováno zůstane PID a prostředí procesu; typické využití pro volání fork() Exit() – proces případně vlákno ukončí svojí činnost (vráceny prostředky, které proces alokoval - operační paměť, otevřené soubory,…) Hierarchie procesů – každý proces má svého rodiče, jehož číslo proces eviduje (PPID); vzniká strom, který lze vypsat příkazem pstree Příkaz ps (od process) – vypíše běžící procesy, má přepínače jako –ef (-e všechny procesy, -f plný výstup) Adresář /proc – virtuální filesystém, pro komunikaci uživatelských programů s jádrem OS; každý soubor reprezentuje funkci nebo program Stavy procesů R – připravený nebo běžící (runnable/running) S – blokovaný (sleep) Z – ukončený (defunct, zombie) T – pozastavený nebo krokovaný (stopped, traced) D – nepřerušitelný spánek (uninterruptible sleep) X – mrtvý (dead, nemělo by se nikdy vyskytovat) W – paging (používaný pouze dříve)
-
-
-
Posixové signály a jejich zpracování
Posixové systémy (jednotné rozhraní, přenositelnost mezi HW platformami - API a utility pro příkazový řádek; lepší kontrola při zpracování signálu - rozšířené možnosti práce se signály sigaction()) Posixové signály Komunikační meziprocesový standard, který měl zajistit přenositelnost a nezávislost na HW platformě; jednoduchá zpráva poslaná všem procesům; posílá implicitně OS případně příkazem kill(); po obdržení signálu začne proces okamžitě provádět příslušné akce – asynchronní signál, poté pokračuje od místa přerušení reakce na signál Implicitní akce Ignorování signálu Obsluha signálu (pomocí uživatelsky definované funkce) Zpracování Ukončení Pozastavení Pokračování (ignorování)
9. Vlákna: možné implementace vláken, obecné problémy při implementaci; posixová vlákna: mutex, podmínková proměnná a jejich použití. -
Vlákno (thread) Odlehčený proces, pomocí něhož se snižuje režie operačního systému při změně kontextu, které je nutné pro zajištění multitaskingu nebo při masivních paralelních výpočtech Skupina vláken v jednom adresáři tvoří proces Systémové zdroje jsou přiděleny na úrovni procesu Zatímco běžné procesy jsou navzájem striktně odděleny, vlákna sdílí nejen společný paměťový prostor ale i další struktury - komplikace Při podpoře vláken operačním systémem lze v rámci jediného procesu vytvořit mnoho vláken Vlákna spolu nesdílejí: PrC, registry, zásobník, stav
-
Multithreading – možnost běhu více vláken Implementace vláken Bez podpory jádra OS Výhody: lepší režie (rychlejší vznik, přepnutí kontextu, nevyžaduje se přechod do kernel mode), strategie plánovače se dá přizpůsobit aplikaci Nevýhody: složitá implementace, page-fault zastaví všechna vlákna, nutnost převodu blokovaných volání na neblokovaná Implementace v jádře OS
Výhody: není potřeba neblokovaných volání, lze zavádět i vlákno procesu, jehož jiné vlákno způsobilo page-fault Nevýhody: horší režie (přechod do režimu jádra), pevná strategie plánovače vláken Hybridní implementace (Solaris) – implementace na úrovni jádra i uživatele (eliminuje nevýhody)
-
Výhody vláken Jednodušší a rychlejší správa Rychlejší zpracování rovnoměrné zatížení systému
-
Nevýhody vláken Globální proměnné nutné alokovat pro každé vlákno Nereentrantní volání některých knihovních funkcí (alokace paměti) Signály a jejich obsluha vláken Stack (při přetečení jádro nemusí vědět o více zásobnících pro každé vlákno)
-
Posixová vlákna Vlákna vyhovující standardu POSIX – knihovna pthread.h (2 implementace – vlákna se chovají jako standardní procesy se zvláštními vlastnostmi x implementace přímo na úrovni jádra) Mutex zámek, který zaručuje: atomicitu a vzájemné vylučování, neaktivní čekání fast mutex (lze zamknout pouze jednou) x recursive mutex (lze zamknout „na více západů“) Podmínková proměnná Slouží k synchronizaci vláken Umožňuje vláknu neaktivně čekat na událost Nezaručuje exkluzivitu přístupu (přístup pomocí mutexu) Na událost může čekat i několik vláken Událost oznamuje některé vlákno signálem (signál probudí jedno případně všechny vlákna)
10. Plánovač. Cíle plánování, režimy plánování, plánovací kritéria pro plánovací algoritmy, plánovací algoritmy. -
Plánovač (scheduler) – rozhoduje, který proces (vlákno) má CPU, zodpovědný za multitasking; odebírá CPU (preempce); řídí se plánovacím algoritmem Cíle plánování podle prostředí Spravedlnost (každý proces stejně času) Dodržování politik
Rovnováha zatížení Interaktivní systémy (minimalizovat latenci a odezvu, proporcionalita k očekávání uživatelů)
-
Cíle plánování Dávkové systémy (maximalizovat propustnost, minimalizace obratu, maximální využití CPU) Real-time systémy (zabránění ztráty dat a degradace kvality, předvídatelnost, dodržení časových termínů, rychlé přepínání kontextu, multitasking)
-
Plánování dle času Dlouhodobé (které nové úlohy se mají zpracovávat a které ukončit) Střednědobé (které procesy se mají odložit nebo vrátit do paměti) Krátkodobé (který připravený proces dostane CPU)
-
Režimy plánování Preemptivní (plánovač rozhodne, který proces má CPU; HW musí obsahovat přerušovací systém a časovač) Nepreemptivní (proces se musí sám vzdát CPU)
-
Plánovací kritéria Uživatelsky orientovaná (minimální doba odezvy – doba od předložení požadavku k vydání výstupu) Systémově orientovaná (efektivní využití procesoru, paměti) Výkonově orientovaná (podle doby odezvy, propustnosti)
-
Plánovací Algoritmy FCFS – First-Come First-Served (nepreemptivní, FIFO, krátké úlohy musí zbytečně dlouho čekat) SJF – Shortest Job First (nepreemptivní, krátké procesy mají přednost, možné vyhladovění dlouhých procesů) SRTN – Shortest Remaining Time Next (preemptivní varianta JSF) RR – Round-Robin (cyklická obsluha, preempce založena na časovači, každý proces dostane určitý čas na CPU) Prioritní plánování (přednost procesu s vyšší prioritou, možné vyhladovění procesů s nízkou prioritou) LS – Lottery Scheduling (loteriové plánování, každý proces dostane tikety a periodicky se losuje o CPU, důležité procesy mohou mít více tiketů) GS, FS – Guaranteed Scheduling, Fair-Share (každý uživatel má stejně času na CPU, každý uživatelův proces má stejně času jako ostatní uživatelovy procesy)
11. Časové a periodické plánování úloh uživatelem – příkazy at a crontab. Požadavky na plánování v systémech reálného času. Možnosti plánování vláken na víceprocesorových systémech (SMP). -
-
Příkaz at - v Unixových systémech; provede příkaz pouze jednou v určitý čas; pro naplánování (odložení) spouštění programů; umožňuje naplánovat více sekvenčních úloh Příkaz crontab - provede příkaz opakovaně (například každou středu v 10 hodin); na víceuživatelském systému mohou mít uživatelé vlastní crontab Požadavky na plánování v systémech reálného času Rychlý souborový systém (rychlé čtení, zápis) Rychlá komunikace procesů Rychlé přepínání kontextu Preemptivní plánování založené na prioritách Možnosti plánování vláken na víceprocesorových systémech Sdílení zátěže Skupinové plánování (související vlákna jsou plánována tak, aby běžela na různých procesorech současně, vzájemná synchronizace) Pevné přiřazení procesoru (při plánování jsou všem vláknům aplikace napevno přiřazeny procesory) Dynamické plánování (počet vláken se může během provádění měnit)
12. Relokace paměti a procesorů, typy alokace paměti, relativní adresování, pevné a proměnné dělení paměti, fragmentace paměti, typy fragmentace. -
-
-
Relokace paměti a procesů – přemístění paměti procesu na jiné adresy; proces pracuje s logickými adresami, které se za běhu převedou na fyzické adresy Alokace paměti – vymezení prostoru, které proces potřebuje Statická (místo v paměti se alokuje před spuštěním programu) Dynamická (místo v paměti se alokuje za běhu programu) Relativní adresování – adresa vzhledem k počátku oblasti; odkaz přizpůsobující se nové pozici, nutné převádět na fyzické adresy Pevné dělení paměti Stejná velikost všech oblastí (malý proces zabere celou oblast – neefektivní, vzniká vnitřní fragmentace) Nestejná velikost všech oblastí (vnitřní fragmentace se redukuje, ale neodstraňuje) Proměnné dělení paměti - proměnný počet oblastní i jejich velikost; odstraněna vnitřní fragmentace, ale vzniká vnější fragmentace; používání defragmentace Fragmentace paměti – nesouvislé uložení dat (zpomalení práce s daty) Typy fragmentace
Vnitřní (plýtvání místem UVNITŘ alokovaných oblastí) Vnější (plýtvání MEZI alokovanými oblastmi; zpomalení přístupu, nemožnost alokovat souvislý blok paměti; používání defragmentace)
13. Problémy nedostatku operační paměti, odkládání obsahu paměti na disk, virtuální paměť, motivace k zavedení virtuální paměti, výhody virtualizace paměti, princip lokality odkazů, thrashing. -
-
Problém nedostatku operační paměti – při nehospodárnosti OS nebo při úlohách náročných na operační paměť Odkládání obsahu paměti na disk – swapování, virtualizace paměti (nevyužívaná data se z paměti odloží na jiný odkládací prostor a v případě potřeby se opět zavedou do operační paměti; zpomalení) Virtuální paměť – používá CPU; prostor v operační nebo sekundární paměti; nutný převod na fyzickou adresu Motivace k zavedení virtuální paměti Aby šlo spouštět i programy, které potřebují více paměti než je fyzicky dostupná Aby šlo využívat multitasking
-
Výhody virtualizace paměti Paměť, kterou má běžící proces k dispozici, není omezena fyzickou velikostí instalované pamětí Je omezeno plýtvání pamětí, kterou proces ve skutečnosti nevyužije nebo jí začne využívat až později Paměť jednotlivým procesům lze tak organizovat, že se z hlediska procesu jeví jako lineární, i když fyzicky není Každý běžící proces má k dispozici svojí vlastní paměťovou oblast, ke které má přístup pouze on sám
-
Princip lokality odkazů - proces má tendenci přistupovat k okolí svého adresového prostoru, kam přistupoval nedávno; lze odvodit, kterou část paměti bude proces v nejbližší době využívat Thrashing – vzniká při odkládání části paměti procesu na disk těsně předtím, než jí proces potřebuje; může být následkem neoptimalizovaného překladem programu kompilátorem; lze zabránit zvýšením operační paměti nebo snížení běžících procesů, nedostatečné dodržení principu lokality odkazů
-
14. Stránkování paměti, převod adresy, vlastnosti stránkování, sdílení stránek, volba velikosti stránky, řešení problému rozsáhlých stránkových tabulek, TLB.
-
Stránkování paměti – technika adresace operační paměti, která umožňuje zobrazit virtuální paměťový prostor (virtuální paměť) do fyzického adresového prostoru operační paměti; mapování paměťového prostoru se provádí po stránkách; alternativou stránkování je segmentace Fyzická operační paměť je rozdělena na oblasti malé velikosti – rámce Logický adresový prostor procesu se rozdělí na stejně velké části jako FOP (fyzická operační paměť) – stránky (512 B až 64 KiB) OS udržuje pro každý proces tabulku přiřazení stránek k rámcům Logická adresace se skládá z čísla stránky a offsetu (relativní adresa vzhledem k začátku stránky) Odstraňuje vnější fragmentaci, je pro programátora transparentní
-
Sdílení stránek – není potřeba mít v paměti stejná data; stejné stránky různých procesů mohou sdílet rámec; lze sdílet i stránky obsahující stránkové tabulky Volba velikosti stránky Pevná alokace (procesu je při nahrávání vyhrazen pevný počet rámců FOP; rovné či proporcionální rozdělení rámců mezi procesy Proměnná alokace (počet rámců procesu se může průběžně měnit)
-
-
Řešení problémů rozsáhlých stránkových tabulek – vedle FOP se využije i sekundární paměť (swap) TLB (Translation Lookaside Buffer) – speciální vyrovnávací paměť (používá cache); je součástí procesoru; obsahuje poslední použité položky stránkové tabulky, aby se při opakovaném přístupu nemusely znovu vyhledávat
15. Řídicí bity ve stránkových tabulkách, strategie zavádění, umisťování, nahrazování a uklízení stránek paměti, vliv velikosti resident-set na běh procesů. -
-
Řídicí bity ve stránkovacích tabulkách – určují, která stránka ze stránkovací tabulky se použije pro namapování rámce ve FOP, CPU převádí virtuální/logické adresy na fyzickéadresy Strategie zavádění stránek do paměti FOP Demand paging (zavádění jen jsou-li potřeba) Lookahead paging (zavádění stránek předem z okolí) Umisťování stránek v paměti – určuje, do které části FOP se stránka zavede; skutečnou adresu určuje a používá hardware Nahrazování stránek v paměti – odstranění stránky z FOP na disk, která bude nejdelší dobu nevyužitá (pokud stránka nesmí být odstraněna – zamkne se rámec) Uklízení stránek paměti (ukládání změněných stránek na disk) Demand cleaning (ukládání stránky z rámce pro nahrazení) Precleaning (periodické ukládání v dávce)
-
Vliv velikosti resident-set na běh procesů (resident-set = část adresového prostoru ve FOP) Pevná alokace (pevný počet rámců, rovné či proporcionální rozdělení mezi procesy) Proměnná alokace (počet rámců se může průběžně měnit; vyžaduje režii OS při odhadu chování procesů)
16. Registry CPU používané pro práci s pamětí, segmentace paměti, převod adresy, vlastnosti segmentace, sdílení segmentů, kombinace segmentace a stránkování. -
Registry CPU pro práci s pamětí (nastavení OS při zavádění procesu) Bázový registr (počáteční adresa alokované paměti v procesu) Mezní registr (koncová adresa alokované paměti v procesu) Adresní registr (logická relativní adresa…)
-
Segmentace paměti – logické seskupování informací; paměť procesu rozdělena na různě velké oblasti; alokace podobná dynamickému dělení; založeno na myšlence, že si o vlastním členění na logicky související části nejlépe rozhoduje úloha sama, sama určuje, co tvoří logický celek (segment), který přenáší do paměti vždy celý; na rozdíl od stránkování je celý mechanismus segmentace pro vlastní úlohu plně viditelný, zatímco při stránkování může úloha vycházet z představy, že má k dispozici souvislý lineární prostor, při segmentaci již musí počítat s nesouvislým prostorem (výhoda minimalizace počtu výpadků); usnadňuje sdílení paměti mezi procesy a pomáhá implicitně řešit problém ochrany Převod adresy
-
-
Vlastnosti segmentace Zjednodušení práce s datovými strukturami Zjednodušení sdílení mezi procesy Logická adresa se skládá z čísla segmentu a offsetu (relativní adresa vzhledem k začátku) OS udržuje pro každý proces tabulku umístění segmentů v paměti společně s jejich délkami
-
Sdílení segmentu - moduly procesů mohou být snadno sdíleny; procesy sdílejí celý segment; segmentové tabulky procesů mohou odkazovat na stejné segmenty Kombinace stránkování a segmentace – vzniká rozdělením segmentů na stránky (odstranění vnější fragmentace; segmenty mohou růst bez nutnosti přesunu ve FOP); proces má jednu segmentovou tabulku a stránkovou tabulku pro každý segment; ochrana a sdílení může být na úrovni segmentu
17. Požadavky na OS pro práci v reálném čase, rozdělení RTOS, pojmy latence a odezva; vestavěné systémy a typické požadavky na ně. -
Požadavky na OS pro práci v reálném čase Některé procesy trvale uloženy v operační paměti Preemptivní plánování založené na prioritách Minimalizace intervalů, ve kterých je zakázáno přerušení Rychlý souborový systém Rychlá komunikace procesů Musí obsahovat speciální systémové služby (alarmy, time-outy) Zpracování dat ve stanoveném časovém limitu Minimalizace rizika selhání Konstrukční a signálové unifikace Spolehlivost Rychlé přepínání kontextu Multitasking
-
Pojmy latence a odezva Latence – doba mezi okamžikem příchodu požadavku na přerušení a okamžikem kdy se začne provádět odpovídající program Doba odezvy – čas, ve kterém musí systém přiměřeně reagovat na událost (latence + doba obsluhy přerušení)
-
Vestavěné systémy – jednoúčelový systém, ve kterém je počítač zcela zabudován do zařízení, které ovládá; schopnost práce v reálném čase; využití 98% mikroprocesorů; kalkulačky, herní konzole, mikrovlny
18. Víceprocesorové systémy, rozdělení dle vazby a dle symetrie, granularita úlohy a stupně paralelismu, alokace procesorů v SMP-systémech, distribuované OS. -
Rozdělení dle vazby
S volnou vazbou (každý procesor má vlastní operační paměť a V/V subsystém) S těsnou vazbou (procesory sdílejí operační paměť)
-
Rozdělení dle symetrie Symetrický víceprocesorový systém – SMP (shodné procesory; jádro OS, procesy i vlákna může provádět libovolný procesor; kritickou sekci je výhodné ošetřit pomocí jednoduše použitelné instrukce test-and-set) Asymetrický víceprocesorový systém (procesory jsou funkčně specializované, systém řízen centrálním procesorem)
-
Granularita úlohy – každou úlohu můžeme rozčlenit na samostatně proveditelné úseky; pokud jeden úsek potřebuje výsledky druhého, které ještě nejsou k dispozici, musí čekat; různé typy úloh se liší počtem a velikostí takových úseků Granularita a stupeň vazby (čím je vazba systému volnější, tím větší časové ztráty přináší komunikace a synchronizace) Hrubě granulovaná úloha (vhodné kooperující procesy) Jemněji granulovaná úloha (kratší úseky; pokud běží na oddělených procesorech, jsou vhodnější vlákna)
-
-
Stupně parelelismu Nezávislý (v jednotlivých procesorech běží nezávislé procesy; zkrácení střední doby pro uživatele) Velmi hrubý paralelismus (vhodný, když interakce mezi procesory nejsou časté) Hrubý paralelismus Střední paralelismus (paralelní zpracování v rámci jedné aplikace; interakce mezi vlákny jsou časté)
-
Alokace procesorů v SMP systémech – přístup k paměti obvykle výlučný; za každý proces běžící na jiném počítači - plus body, neuspokojený požadavek – mínus body, pokud nic z toho – směrem k nule; v okamžiku uvolnění procesoru se vezme proces s nejméně trestnými body z fronty neuspokojených požadavků Distribuované OS – systémy rozmístěné na větší ploše tvářící se jako jednoprocesorový systém; architektura založena na modelu klient/server (Beowulf cluster, ParallelKnoppix)
-
19. Soutěžení procesů (o prostředky), problémy s konkurencí, vzájemné vylučování, kritická sekce, předpoklady pro řešení KS, požadované vlastnosti řešení KS, příklady nevhodných SW řešení. -
Konkurence procesů Sdílení prostředků (paměť, CPU, soubory) Komunikace procesů (přístup ke sdílené paměti, fronty zpráv) Synchronizace procesů (semafory, předávání zpráv)
-
-
-
Soutěžení procesů (o prostředky) – OS provádí procesy (pseudo)paralelně; provádění procesu může ovlivnit chování ostatních procesů v systému; blokovaný proces může bez omezení čekat Problémy s konkurencí Vzájemné vylučování (v každém okamžiku smí mít přístup ke sdílenému prostředku pouze jeden proces) Smrtící objetí (procesy vzájemně čekají na uvolnění prostředků – každý ze dvou procesů chce zařízení toho druhého) Vyhladovění (nekončící čekání procesu na získání prostředku – proces s nízkou prioritou čeká na přidělení CPU) Kritická sekce (KS) – část kódu procesu, kde proces manipuluje se sdíleným prostředkem, provádění tohoto kódu musí být vzájemně výlučné; Struktura programu v KS Vstupní sekce Kritická sekce Výstupní sekce Zbytková sekce
-
Požadované vlastnosti řešení KS Vzájemné vylučování (vždy jediný proces v KS) Pokrok v přidělování (rozhodování o udělení povolení vstupu procesu do KS se mohou podílet výhradně procesy, které nejsou ve zbytkové sekci) Omezené čekání (žádný proces nesmí čekat do nekonečna)
-
Typy řešení KS SW řešení (použití algoritmu pro vstupní a výstupní sekci) HW řešení (využití speciálních instrukcí procesoru) Řešení OS (semafor, předávání zpráv) Řešení programovacího jazyka (monitor)
20. Řízení přístupu do kritické sekce pomocí prostředků OS, semafor, problém obědvajících filozofů, mutex, řešení KS pomocí fronty zpráv. -
Řízení přístupu do kritické sekce pomocí prostředků OS Předávání zpráv (používá krátkou vstupní a výstupní sekci, výhodné pro použití neaktivního čekání) Semafory
-
Semafor - prostředek OS, který určuje, jaký proces z fronty půjde do KS; operace: init (inicializuje čítač), wait (snižuje čítač, je-li záporný blokuje volající proces a zařadí jej do
-
-
-
fronty), signal (zvyšuje čítač, je-li kladný, vybere proces z fronty a zařadí jej do seznamu připravených procesů); binární semafor – místo čítače booleanovská proměnná; obvykle se označuje pojmem mutex Mutex – zámek, který zaručuje atomicitu a vzájemné vylučování, neaktivní čekání; vlákno je při pokusu zamknout uzamčený mutex blokováno fast mutex (lez zamknout pouze jednou) recursive mutex (lze zamknout „na více západů“) Řešení kritické sekce pomocí fronty zpráv – vstupní sekce volá blokující receive, výstupní sekce volá neblokující send; první proces, který provede receive se dostane do KS, ostatní čekají Problém obědvajících filosofů Může nastat deadlock (nemá k dispozici hůlku, musí čekat) vyhladovění (nedostane se po určité době k jídlu, při velmi krátkých intervalech jezení a filozofování, nebo pokud je filosof neschopný získat obě hůlky najednou) livelock (filosofové najednou hůlky položí a filosofují a pak si je chtějí ve stejný čas zase vzít) Řešení – musíme dovolit začít jíst nejvýše n-1 filosofům; pro omezení počtu jedníků použijeme semafor
22. Řízení přístupu do kritické sekce a synchronizace pomocí programovacích jazyků, monitor, problém producentů a konzumentů. -
Řízní přístupu do kritické sekce a synchronizace pomocí programovacích jazyků Petersonův algoritmus (signalizace připravenosti ke vstupu do KS nastavením flag[i]=true) Bakery algoritmus (pro n procesů; před vstupem do KS dostane každý proces své číslo, do KS vstupuje držitel nejmenšího čísla)
-
Monitory konstrukce ve vyšším programovacím jazyce poskytující stejné služby jako semafory, ale snadněji ovladatelné (C++, Java, C#) mohou být implementovány pomocí semaforů SW modul (lokální proměnné, funkce zpřístupni lokální data, inicializační část) V monitoru smí být v daném okamžiku pouze jediný proces - zajišťuje vzájemné vylučování a synchronizaci (podmínkovými proměnnými) Podmínkové proměnné - lokální proměnné dostupné pouze pomocí funkcí monitoru; lze měnit funkcemi cwait (blokuje proces, dokud není zavoláno), csignal (obnoví provádění procesu blokovaného podmínkovou proměnnou)
-
Problém producentů a konzumentů
Dva typy procesů: producenti (produkují) x konzumenti (spotřebovávají) Pro lepší efektivitu je potřeba zavést mezisklad (vyrovnávající paměť na vyprodukovaná data, nevzniknou tak zbytečné čekací doby) Řešení pomocí semaforů (kapacita skladu – pro počet výrobků na skladě; možnost vstupu do skladu) Řešení pomocí zasílání zpráv (prázdné zprávy se posílají do mailboxu, ze kterého je producent postupně vybírá; dokud tam zprávy jsou – sklad má místo, pokud tam žádné nejsou – sklad je plný; konzument poté musí po vybrání položky ze skladu posílat prázdné zprávy do mailboxu, aby dal vědět, že se uvolnilo místo)
23. Synchronizace procesů pomocí semaforů a pomocí předávání zpráv, synchronizace vláken pomocí bariér a podmínkových proměnných. -
Klasické synchronizační úlohy Producent – konzument (předávání zpráv mezi dvěma procesy) Čtenáři a písaři (souběžnost čtení a modifikace dat) Úloha o večeřících filozofech (problém pro řešení uváznutí)
-
Semafory – podobný účel jako mutexy (kontrolování vstupu do KS), ale na rozdíl od mutexu (kdy v KS může být pouze jeden proces) lez docílit, že v KS může být více vláken Synchronizace pomocí předávání zpráv Mailbox (schránka pro zpráv) – může být soukromá (2 komunikující procesy nebo sdílená pro více procesů); jádro OS vytvoří mailbox na žádost procesů a tento proces je pak jeho vlastníkem (může mailbox zrušit nebo bude zrušen při skončení vlastníka) Port (schránka vlastněná jediným příjemcem) – zprávy do portu může zasílat více procesů, v modelu klient/server je přijímacím procesem server; port zaniká ukončením přijímacího procesu
-
-
-
Bariéra – zarážka; synchronizace vláken na konkrétní místo v programu; dokud se na bariéře nezastaví specifikovaný počet vláken, jsou všechna blokována, následně jsou všechna najednou probuzena (použití předávání zpráv) Podmínkové proměnné – slouží k synchronizaci; obdoba bariéry, ale nečeká se na určitý počet čekajících vláken, ale na splnění podmínky; při jejím splnění mohou být spuštěna všechna vlákna nebo jen jedno; využívá pomocný mutex; zatímco mutexy poskytují prostředky pro synchronizaci přístupu k proměnným, podmínkové proměnné umožňují synchronizovat vlákna na základě hodnot proměnných
24. Deadlock, starvation (a rozdíl), nutné podmínky pro vznik stavu deadlock, řešení problému vzniku stavu deadlock, algoritmus bankéře.
-
Deadlock (smrtící objetí) – procesy čekají na uvolnění prostředků (proces 1 používá zařízení A, proces B používá zařízení B a jeden chce zařízení toho druhého) Vyhladovění (starvation) – nekončící čekání procesu na získání prostředku (proces s nízkou prioritou čeká na přidělení CPU) Podmínky vzniku deadlocku Vzájemné vylučování Alokace a čekání (proces vlastnící prostředek může požadovat další) Neodnímatelné prostředky (OS je nemůže odejmout, musí být explicitně uvolněny vlastnícím procesem) Cyklické čekání (řetěz vzájemně čekajících procesů uzavírá cyklus)
-
Řešení deadlocku Ignorování problému Detekce a obnovení Vyloučení možnosti vzniku opatrnou alokací Negování alespoň jedné z předešlých podmínek (splnění všech podmínek je nutné pro vznik deadlocku)
-
Bankéřův algoritmus – řešení situace bankéře při jednání s klienty, kterým poskytuje půjčku; pokud požadavek klienta vede k nebezpečnému stavu, je tento požadavek odmítnut; pevný počet prostředků i procesů; každý proces deklaruje své maximální požadavky (postupná alokace prostředků); prostředek je přidělen pouze tehdy, vede-li situace do bezpečného stavu (nebezpečný stav je vznik cyklického čekání); slabiny: nelze vždy garantovat pevný počet procesů, proces nemusí znát maximální požadavek předem
25. Komunikace procesů: roura, pojmenovaná a nepojmenovaná roura; socket, funkce pro sockety. -
-
Komunikace procesů rourou – spojování procesů do řetězce pomocí vzájemného propojení tak, že výstup je vždy nasměrován přímo do vstupu; jednosměrná meziprocesorová komunikace (FIFO), automaticky zaniká po jejím ukončení; data zapisovaná do roury jedním procesem lze jiným bezprostředně číst; data jsou čtena v pořadí, ve kterém byla zapsána Roura – nástroj pro spojování procesů do řetězce pomocí vzájemného propojení tak, že je vždy výstup procesu nasměrován do vstupu následujícího procesu Pojmenované roury – u nepříbuzných procesů; uživatel jí musí vytvořit a po ukončení jí odstranit Nepojmenované roury – pouze mezi příbuznými procesy, zanikají automaticky v okamžiku ukončení; pouze jednosměrné Komunikace pomocí socketů – umožňují obousměrnou komunikaci; prostředek pro lokální či vzdálenou komunikaci uzlů (charakter klient/server); na rozdíl od roury dokáže odlišit komunikující strany; komunikaci zahajuje server (žádá volný socket pomocí systémového volání)
26. Dělení disku na oddíly, důvody dělení, swap, MBR, tabulka oddílů, zavaděč OS. -
Důvody dělení disku Instalace více OS na jednom disku Obcházení omezení souborového systému Použití různých souborových systémů pro různé účely
-
Swap – oddíl na disku, který se využívá pro odkládání procesu z operační paměti MBR (Master Boot Record) – hlavní spouštěcí záznam; umístěn v prvním sektoru disku (prvních 512 bajtů); obsahuje zavaděč OS a tabulku rozdělení disku (oddílů) Tabulka oddílů (MPT – Master Partion Table) – obsahuje seznam logických oddílů na daném fyzickém disku a informace o umístění zaváděcích sektorů (boot sektorů) jednotlivých oddílů Zavaděč OS – program, který je spuštěn při bootování po provedení testů BIOSu a jeho cílem je aktivace jádra operačního systému; uložen v MBR v boot sektoru
-
27. Souborový systém, jeho obecná struktura, způsoby alokace prostoru na paměťovém médiu (např. disku). -
-
-
Souborový systém – určuje, jakým způsobem jsou na disku uložena data; kořenový adresář, cesta (relativní, absolutní), pracovní adresář; operace: čtení, zápis, posun; obsahuje speciální soubory (blokové, znakové, roura) Obecná struktura – fyzické disky jsou obvykle děleny na oddíly, to umožňuje na jednom disku využít více souborových systémů; informace obsažené ve file systému (FS) obsahují data a metadata (popisují strukturu FS a doplňující informace jako velikost souboru, čas poslední změny, čas posledního přístupu,…); software realizující konkrétní FS je součástí OS Způsoby alokace prostoru na paměťovém médiu Souvislá alokace – každý soubor obsahuje sled po sobě jdoucích diskových bloků; adresování je lineární; počet nutných vyhledávání je minimální; potíž nastává v nalezení dostatečně velkého souvislého prostoru k uložení nového souboru Spojovaná alokace – řeší problémy souvislé alokace; při spojové alokaci je každý soubor spojovým seznamem diskových bloků a tyto bloky mohou být rozmístěny kdekoliv na disku; adresářová položka obsahuje ukazatel na první a poslední blok souboru; každý blok dále obsahuje ukazatel na následující blok; problém – sekvenční přístup k souboru (hledání začíná na prvním bloku a i-krát se posune po ukazateli z bloku na blok, než najde požadovaný soubor - špatná podpora přímého přístupu k disku) Indexovaná alokace – uchovává všechny ukazatele dohromady v indexovací tabulce (je uložena v několika indexovacích blocích); dva druhy: všechny soubory v jednom indexu x samostatný index pro každý soubor (přímý přístup)
28. Soubor a jeho atributy, hierarchická organizace souborů, adresář, cesta, omezení přístupu k souboru, vlastnictví a přístupová práva. -
-
-
-
Soubor a jeho atributy – označuje v informatice pojmenovanou posloupnost bitů uloženou na nějakém datovém médiu; atributy: jméno, délka, typ, přístupová oprávnění, vlastník, časové informace Hierarchická organizace souborů (stromová struktura) – jeden hlavní/kořenový adresář obsahující podadresáře; počet úrovní může být omezen; soubory mohou mít stejná jména, pokud mají jinou cestu; cestu k souboru lze vyjádřit relativně vzhledem k pracovnímu adresáři; při práci je možné zvolit libovolný adresář Adresář – organizační jednotka v souborovém systému, může obsahovat další adresáře a soubory Cesta – identifikuje soubor v rámci adresářové struktury; tvořena seznamem adresářů, kterými je nutné projít z počátečního místa až k cílovému souboru Omezení přístupu souboru (použití práv) Žádná (uživatel o souboru neví, není povoleno číst obsah adresáře) Znalost existence (uživatel zjistí existenci souboru a jeho vlastníka) Provádění (uživatel smí soubor provádět, ale nesmí ho kopírovat) Čtení (může obsah souboru číst a smí přidávat data na konec) Přepisování (uživatel může soubor číst, provádět, modifikovat a smazat) Změna ochrany (uživatel může měnit nastavení přístupových práv souboru jiného uživatele) Mazání (uživatel může odstranit soubor) Vlastnictví a přístupová práva – uživatel se při vytváření souboru automaticky stává jeho vlastníkem se všemi přístupovými právy
29. Vzdálený přístup k OS, telnet, ssh, autentizace, autorizace, zásady tvorby hesla. -
-
Vzdálený přístup k OS – vzdálený přístup do sítě či k aplikaci je metoda zajišťující přímou nebo nepřímou komunikaci klienta se vzdáleným systémem (zajištěno pomocí autentizace a autorizace a ochrannými prvky zajišťujícími komunikaci) Typy vzdálených přístupů a jejich bezpečnost Dial-up (vytáčená linka) On demand (přístup na určitou dobu pouze z IP adresy, pro kterou proběhlo ověření) SSL VPN (může jít pouze přes webový prohlížeč; přístup na bázi SSL spojení; spojení k webovým aplikacím) VPN (tunelovaný šifrovaný přístup)
-
-
-
-
Telnet – protokol používaný v počítačových sítích, který pomocí stejnojmenné aplikace umožňuje uživateli připojení ke vzdálenému počítači; nešifrovaný přenos (nedoporučuje se používat) SSH – zabezpečený komunikační protokol, zabezpečuje připojení, autentizaci a šifrovaný přenos; standardně na portu 22; data mohou být bezztrátově komprimována; klienti: Putty, WinSCP Autentizace – proces ověření identity (biometrické údaje, průkazy); loginspoofing – simulování přihlašovací obrazovky Autorizace – povolení provádět nějakou činnost (práva: read, write, execute) Zásady tvorby hesla – nemělo by obsahovat žádné slovo nebo odhadnutelnou posloupnost znaků; alespoň 8 znaků; jiné heslo pro každou službu; kombinace velkých a malých písmen, číslic a speciálních znaků Nejčastější útoky na systém Využití chyby ve službách typu buffer overflow Hádání uživatelských loginů a jejich hesel slovníkovou metodou