Požadavky
Tato stránka obsahuje stručný komentář ke zkušebním požadavkům okruhu Operační systémy.
U jednotlivých požadavků jsou podle potřeby uvedeny heslovité podrobnosti o obsahu a některé základní znalosti, bez kterých zpravidla není možné zkoušku složit.
Je nutné upozornit, že komentář není oficiální, pro potřeby státní zkoušky je závazné pouze oficiální znění zkušebních požadavků a jeho výklad hodnotícími členy zkušební komise !
Struktura operačního systému
Struktura operačního systému, architektura mikrojádra, abstrakce poskytované mikrojádry.
Podrobnosti:
- Vztah mezi hardware a strukturou OS (jak procesor vykonává program a ...).
- Monolitický vs microkernel (proč, výhody, nevýhody).
- Abstrakce (virtuální paměť, IPC, procesy, vlákna), u každé jak by mohlo vypadat API (výklad ve stylu objekty a operace nad nimi).
Základy:
- Znalost principů vykonávání programu procesorem.
- Uživatelský režim a režim jádra, systémová volání.
Virtuální stroje
Podrobnosti:
- Proč je potřebné nebo vhodné virtualizovat.
- Virtualizace na úrovni procesoru..
- Privilegované instrukce, proč vadí, jak se ošetřují.
- Co se dělá když nejdou některé instrukce virtualizovat.
- Virtualizace na virtual machine ala JVM / CLI.
- Proč je zajímavá, rysy instrukční sady.
- Co to je JIT a jak se asi zhruba dělá.
Základy:
- Znalost principů vykonávání programu procesorem.
- Charakter instrukcí vyžadujících virtualizaci.
Procesy a vlákna
Správa procesů a vláken, plánování.
Podrobnosti:
- Preemptivní a kooperativní plánování, kdy se hodí, jak funguje.
- Požadavky na plánování, základní algoritmy (FIFO, round robin, fixed priority, dynamic priority, earliest deadline first).
- Příklad konkrétního plánovače v běžném systému (principy).
- Co a jak se ukládá jako stav vlákna a stav procesu, jaká je režie spojená s ukládáním.
- Zvláštnosti plánování na multiprocesorech.
- Anomálie (convoys, priority inversion).
Základy:
- Vysvětlení konceptu procesu a vlákna.
- Vysvětlení postupu přeplánování vyvolaného vypršením přiděleného kvanta (přeruší se, skočí se do kernelu, kernel udělá to a to ...).
Komunikace a synchronizace
Komunikace a synchronizace procesů, kritické sekce, synchronizační problémy a primitiva, uváznutí a jeho řešení.
Podrobnosti:
- Co to je race, jak souvisi s memory modelem (a tedy co to je memory model).
- Převoditelnost (implementace jednoho synchronizačního objektu pomocí druhého).
- Deadlock (podmínky vzniku, prevence, detekce, zotavení).
- Základní objekty (zámek (spin, recursive), semafor, monitor, conditional variable, atomic increment a spol.).
- Neblokující synchronizace (základní myšlenky).
Základy:
- Vysvětlení co to je race.
- Popis funkce zámku a semaforu.
- Implementace zámku pomocí aktivního čekání.
- Implementace problému producent konzument pomocí vhodného synchronizačního primitiva.
Podpora multiprocesorových systémů
Podrobnosti:
- Memory consistency.
- Co se sdílí v hardware (processor units, cache, memory) (hyperthreading vs multicore vs multichip).
- Kde všude musí operační systém sdílení v hardware zohlednit.
- Scheduling.
- Shared structures.
Základy:
- Vysvětlení potřeby koherence při přístupu do paměti.
Správa periferií
Mechanismus přerušení v operačním systému, DMA. Správa periferií, ovladače zařízení.
Podrobnosti:
- Topologie hardware (sběrnice, řadiče sběrnic, bridges ...).
- DMA či bus mastering, arbitrace sběrnice (ne nutně časové diagramy konkrétního hardware, ale tušit jak by to mohlo chodit).
- Struktura ovladače (request queues, interrupt handling).
- Rozhraní typických ovladačů (disk ...).
Základy:
- Vysvětlení postupu obsluhy požadavku o přerušení.
- Přesné rozdělení jednotlivých kroků obsluhy mezi hardware a software.
Správa paměti
Správa paměti, hierarchie pamětí, segmentace, stránkování, strategie alokace, odkládání.
Podrobnosti:
- Co obnáší správa paměti (jak vypadá adresový prostor procesu a co tedy musí OS udělat aby ho umístil do fyzické paměti).
- Základní řešení na úrovni hardware (stránkování, segmentace, jak vypadají datové struktury až na plech).
- Agoritmy (obsluha výpadku překladu a výpadku stránky).
Základy:
- Vysvětlení postupu překladu virtuální adresy na fyzickou adresu.
- Přesné rozdělení jednotlivých kroků překladu mezi hardware a software.
Sdílení paměti
Sdílení paměti mezi adresovými prostory, paměťově mapované soubory.
Podrobnosti:
- Jak to funguje.
- Sdílení stránek, konzistence, bariéry.
- Konzistence mezi přístupy pomocí operací read a write a mmap.
- Jak zhruba vypadá rozhraní.
Základy:
- Jak funguje paměťově mapovaný soubor.
Správa souborů
Souborové systémy, souborové a adresářové služby, síťové souborové systémy.
Podrobnosti:
- Koncepty a související rozhraní (soubory, open a close, mapování, sdílení, zamykání, adresářové operace ...).
- Typické diskové struktury (blocks, inode, free blocks bitmap, directory entries, log structured, tree structured).
- Optimalizace pro speciální situace (velké či malé soubory, zvláštní média).
- Příklady konkrétních systémů souborů (ala UNIX, FAT, ala ISO).
Základy:
- Znalost diskového formátu některého souborového systému na úrovni, která dovolí popsat jednotlivé kroky operací čtení a zápisu souboru.
Bezpečnost
Informační bezpečnost a základy šifrování.
Podrobnosti:
- Security policies (...).
- Security models (users, roles, levels ...).
Základy:
- Symetrické a asymetrické šifrování.
- Zajištění bezpečnostního modelu v operačním systému.
Správa sítě
Síťové služby operačního systému.
Podrobnosti:
- Struktura network stacku ve vztahu k protokolům.
- Rozhraní pro aplikace, efektivita.
- Síťové systémy souborů (NFS, SMB, principy, lepší distribuované systémy ...).
Základy:
- Socket, co to je.
- Znalost funkce některého síťového souborového systému.