Přednáška: Čtvrtek, 15:40, S1 (Martin Děcký)
Stránka v SIS: NSWI161
Zakončení: Zkouška
Předchozí rok: 2020/21
O předmětu
Předmět Pokročilé operační systémy poskytuje formou navazujících přednášek detailní informace o vybraných tematických okruzích, které se týkají architektury a implementace moderních operačních systémů. Podle aktuální situace může být předmět doplněn zvanými přednáškami odborníků z předních softwarových společností věnujících se vývoji operačních systémů.
V letním semestru 2022/2023 se přednášky konají ve čtvrtek od 15:40 do 17:10 v posluchárně S1.
Tento předmět navazuje na předmět Operační systémy ze zimního semestru a v rozumné míře předpokládá pochopení již probraných základů.
Všechny podstatné informace o předmětu budou primárně zveřejňovány na tomto webu. Urgentní změny budou rovněž ohlašovány pomocí e-mailu (na adresy evidované v SISu). V případě technických nebo organizačních dotazů prosím vytvořte issue na fóru na GitLabu. Je také možné přihlásit se k odběru notifikací pro tento repozitář a tak sledovat dotazy položené ostatními.
Pokud máte dotaz nebo připomínku, kterou nechcete probírat veřejně, můžete také kontaktovat přednášejícího Martina Děckého nebo garanta předmětu Petra Tůmu.
Aktuální informace
- Byl vypsán termín zkoušky na čtvrtek 29. 6. 14:00 v S7.
- V případě potřeby vypsání zkouškového termínu (resp. opravného termínu) prosíme o individuální e-mailovou domluvu s přednášejícím.
Témata
Studijní materiály k probraným tématům.
- Úvod do předmětu
- Programovací jazyky, běhová prostředíí
- Paměťová hierarchie, správa paměti
- Souborové systémy, ukládání dat
-
Vlastimil Babka (SUSE): Pokročilá správa paměti v Linuxu
- Observabilita, sledování, instrumentace
- Komunikace, paralelismus
-
Carlos Pizano (Google): A tour of the Fuchsia system interface (záznam)
Konzultace
Máte-li zájem o konzultace, prosíme o individuální e-mailovou domluvu s přednášejícím nebo s garantem předmětu. Ideální konzultační časy pro přednášejícího jsou bezprostředně před a po přednášce.
Hodnocení předmětu
Předmět nabízí několik alternativních způsobů zakončení:
- Tradiční písemná zkouška z přednesených témat. Test je hodnocen bodovou stupnicí, úspěšné řešení vyžaduje získání alespoň poloviny maximálního počtu bodů (hodnocení stupněm velmi dobře alespoň 60 % a stupněm výborně alespoň 80 % maximálního počtu bodů).
- Praktický individuální či týmový projekt s tématem z operačních systémů. Konkrétní náplň projektu a kritéria hodnocení je nutné dohodnout s přednášejícím a garantem předmětu (čím dříve tím lépe).
- Vypracování přednášky nebo praktická demonstrace tématu z operačních systémů. Je možné vypracovat studijní materiály a přednést přednášku či provést praktickou demonstraci některého tématu z oblasti operačních systémů (není nutné se omezovat jen na již plánovaná témata). Konkrétní náplň, hloubku zpracování a kritéria hodnocení je nutné dohodnout s přednášejícím a garantem předmětu (čím dříve tím lépe).
Písemná zkouška
V případě potřeby vypsání zkouškového termínu (resp. opravného termínu) prosíme o individuální e-mailovou domluvu s přednášejícím (týká se také možnosti termínu v září).
Písemná zkouška obsahuje 5 až 6 náhodně vybraných otázek z následujícího seznamu. Jak bývá obvyklé, hlavním cílem testových otázek není ověření faktografických znalostí, ale míry porozumění dané problematice. Proto doporučujeme na otázky odpovídat do hloubky i do šířky (včetně vhodného kontextu) a to takovou formou (uspořádání, návaznost, jednoznačnost apod.), aby z odpovědi byla zjevná právě míra porozumění. Je vhodné, aby odpovědi říkaly spíše proč než co.
- Popište schématicky, z jakých fází se sestává proces bootování typického obecného operačního systému a proč jde zrovna o tyto fáze.
- Jaké jsou obvyklé vlastnosti programovacích jazyků, které jsou vhodné pro implementaci operačních systémů, a proč?
- Jaké části kódu operačních systémů bývají obvykle implementovány v assembleru a proč?
- Co je to freestanding prostředí v jazyce C, jaké má vlastnosti a k čemu slouží v kontextu operačních systémů?
- Definujte, co je undefined behavior v jazyce C (resp. C++), uveďte alespoň tři konkrétní příklady a popište, proč jsou relevantní pro operační systémy.
- Proč může být při implementaci operačního systému v jazyce C++ výhodné nahradit dědičnost tříd kompozicí tříd? Vhodně ilustrujte na příkladu.
- K čemu slouží v C++ tzv. guarded object v kontextu operačních systémů? Vhodně ilustrujte na příkladu.
- Popište, co je to Non-Uniform Memory Access (NUMA) a proč je relevantní pro operační systémy.
- Popište, co je to IOMMU, k čemu slouží a proč je relevantní pro operační systémy.
- Popište, co je to capability (v kontextu především mikrojádrových operačních systémů), k čemu se používá a jaké jsou její výhody/nevýhody ve srovnání s jinými abstrakcemi.
- Popište, je to capability derivation tree, k čemu se používá a proč.
- Jak se odlišují solid-state disková média od rotačních diskových médií, jak jsou tyto rozdíly reflektovány operačním systémem a proč?
- Jaké výhody (případně nevýhody) pramení z oddělení adresářových položek a záznamů souborů (tzv. i-nodes) u souborových systémů a proč?
- Jaké jsou typické vlastnosti tzv. copy-on-write souborových systémů a proč (resp. v jakých situacích) se tento typ souborových systémů používá?
- Popiště alespoň tři mechanismy používané pro tzv. interaktivní ladění a proč (resp. v jakých situacích) se používají.
- Jaké požadavky jsou obvykle kladeny na mechanismy pro tracování v operačních systémech a proč? Vhodně ilustrujte na příkladech.
- Popište, co je tzv. přesné a tzv. statistické profilování a proč (resp. v jakých situacích) se který přístup používá.
- Popiště alespoň dva různé IPC mechanismy, jejich vlastnosti a proč (resp. v jakých situacích) se používají.
- Popište, jak se v principu liší IPC mechanismy synchronní, asynchronní, blokující, neblokující a proč (resp. v jakých situacích) se používají.
- Popište, jaké jsou výhody a nevýhody mechanismu Read-Copy-Update (RCU) oproti vzájemnému vyloučení a za jakých podmínek je vhodné jej využít.
- Popište, jak se v principu liší paravirtualizace od transparentní virtualizace a proč (resp. v jakých situacích) se používají.
- Popište, co je to vCPU a jak se tato abstrakce obvykle používá.
Doplňková literatura
- Baumann A. et al.: The Multikernel: A New OS Architecture for Scalable Multicore Systems, Proc. ACM SOSP 2009.
- Bonwick J.: The Slab Allocator: An Object-Caching Kernel Memory Allocator, Proc. USENIX Summer Technical Conference 1994.
- Bonwick J. et al.: Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources, Proc. USENIX ATC 2001.
- Härtig H. et al.: The Performance of μ-Kernel-Based Systems, Proc. ACM SOSP 1997.
- Heiser G. et al.: L4 Microkernels: The Lessons from 20 Years of Research and Deployment, ACM TOCS Vol. 34 Issue 1, 2016.
- Herder J. et al.: Fault Isolation for Device Drivers, Proc. IEEE DSN 2009.
- Hunt G. et al.: Singularity: Rethinking the Software Stack, ACM SIGOPS OS Review Vol. 41 Issue 2, 2007.
- Levy H.: Capability-Based Computer Systems, Butterworth-Heinemann Newton, 1984.
- Nutt G. J.: Operating Systems: A Modern Perspective, Addison Wesley, 2002.
- Stallings W.: Operating Systems: Internals and Design Principles, Prentice Hall, 2012.
- Tanenbaum A. S. et al.: Operating Systems Design and Implementation, Prentice Hall, 2006.