Řešení otázek z roku 2010
Pozor, některé otázky jsou chybně vypracované upozorňoval na to ve zkoušce z 28.6.2012, prý dá příště jiné otázky!
Co je znakem OS software a produktů obecně?
OS popisuje způsoby výroby a vývoje, které upřednostňují přístup ke kompletnímu výrobnímu postupu pro všechny účastníky.
OS software není zatížen patenty a NDAs, je volně přístupný pro všechny. Na vývoji se podílí komunita, produkty pro koncové uživatele jsou obvykle zdarma. Zdarma ale není podpora a zakázkový vývoj navazujících komponent.
Na jaké úrovni jsou svázané zdrojové kódy a historie unix, GNU, GNU Linux?
1970 Unix vznikl ze zaniklého projektu Multics od Bell Labs
1983 Richard Stallman z MIT založil GNU project pro unix-like system. Založil Free Software Foundation, napsal spoustu toolů pod free licencí
1991 Linus Torvalds napsal vlastní jádro a složil ho s GNU prostředím, vzniká GNU/Linux
Jaké základní fce má Busybox a které programy nahrazuje a proč?
Minimalizované alternativy základních linuxových nástrojů
Minimalizovaný webserver
Minimalizovaná C knihovna
-
Velikost 500 kB
Použití pro vestavěné zařízení s ramdiskem
Jak vypadá základní návaznost komponent od výkonného HW, kde běží aplikace po grafický výstup na XWIN architektuře?
XServer komunikuje přímo s HW a generuje výstup na monitor
Klienti jsou aplikace, může jich být víc a na různých mašinách. Přijímají vstupy přes X protokol a říkají Xserveru, co zobrazovat.
Jaký je význam termínu branch (větev) v systému správy verzí (vznik, kdy a proč redukované)?
Branch je kopie zdrojového kódu, na které se může pracovat paralelně s jinými větvemi a později mergovat.
Proč a kdy je v jádře a aplikacích vhodné zjemnit granualitu zamykání na úkor častějšího zamykání (potřeba více cyklů CPU)?
Granualita je množství dat, které zámek chrání. Pokud máme málo procesů, je vhodnější hrubší granulalita, protože režie zamykání bude menší. Pokud ale máme hodně procesů, hrubá granualita by způsobovala kolize a zbytečné čekání.
Vysvětlete jaký je základní přínos signal-slot oproti callback.
Signal-slot je koncept ve frameworku QT, vysílají se signály a kdo má zaregistrovaný příslušný slot, správu přijme.
Callback je je pointer na funkci, která se zavolá když je něco hotovo.
Callbacky nejsou type-safe, nemůžeme si být jisti, že se zavolá funkce se správnými argumenty.
Callbacky jsou silně vázány se zpracovávací funkcí, nemůžeme jí jen tak vyměnit.
Jak je, případně může být generován zisk společnosti, která investuje do OS systému?
Výrobci HW - zvedne poptávky po HW
Placená podpora
Dvojí licencování - GNU/proprietální licence, když nechci svůj kód mít open-source
Reklama
Zakázkový vývoj rozšíření
Jaké jsou základní 2 možnosti pro umístění vyrovnávací paměti pro přístup k souborům na disku a podle jakých klíčů jsou data v paměti organizovaná?
diskové buffery
pagecache v RAM
Pagecache je organizovaná podle příslušnosti a offsetu v souboru inode. Offsety jsou zarovnány tak, aby odpovídaly velikosti paměťové stránky (4 kB u x86).
Základní 2 koncepty pro obsluhu klientů, proč pro více klientů je nutná kombinace?
jedno vlakno na klienta + vlakno pro prijem spojeni a zakladani vlaken
zpracovani vseho v jednom vlakne (odpada rezie, ale nevyuzije se vice cpu)
thread-pool (pripravena vlakna + rizeni pridelovani)
Jak je omezena cena open-source produktů obecně a specificky pro GPL licenci?
Cena není omezena, binárky se mohou prodávat. Musí být ale možnost si to zkompilovat sám.
Jaké jsou základní vrstvy operačního systému unixového typu od HW k uživateli?
Jak vznikl projekt X Windows a jaké základní principy si tvůrci stanovili?
Projekt vznikl v roce 1984 na MIT
Principy: omezovat složitost, přidávat funkce jenom když to jinak nejde, podporovat rozšiřitelnost, když to nerozumíš, raději to nedělej
Jaký je rozdíl ve výsledném grafu historie/návaznosti verzí při použití „git merge“ a „git rebase“?
Merge spojí dvě větve a k oboum větvím je možno se vrátit.
Rebase také udělá merge, ale jednu větev kompletně vyřadí z grafu, nejde s už k ní vrátit.
Čím je zajímavé řešení výlučného běhu (mutex) použité v GLIBC s NPTL na GNU/Linux a za jaké podmínky na souběh úloh se nejvíce výhody projeví?
Používá se futex. Skládá se z wait fronty v kernel space, která je spojená s integerem v user space. Více vláken a procesů může rychle operovat s integerem v user space, relativně náročná změna wait fronty v kernel space se nemusí volat moc často. Výhody se projeví, když jsou aplikace dobře napsané a nevolají změnu wait fronty moc často.
Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě?
snížení licenčních nákladů
nezávislost na dodavateli
nezávislost na podpoře
možnost upravit SW vlastním potřebám
Vysvětlete činnost systémového volání mmap() a jak se váže koncepce použitá k implementaci tohoto volání ke spuštění aplikace v systému GNU/Linux (ale i Windows a Unix)?
MMAP je systémové volání, které umožňuje mapovat soubory nebo zařízení do paměti. Je to výhodné pokud více aplikací přistupuje k stejnému souboru - nemusí si každý nahrávat soubor zvlášť do paměti. Pamět sdílená MMAP je přístupná všemi forky. Dá se použít pro komunikaci mezi procesy.
Proč jádro Linux přešlo zcela na koncept stránkové vyrovnávací paměti (pagecache) a vyrovnávací paměť na úrovni diskových bloků se nepoužívá?
Protože byl požadavek na mapování souborů do paměti (mmap) a data se mohla objevit ve dvou kopiích (nepřípustné).
Porovnejte časovou (algoritmickou) komplexitu různých mechanizmů pro čekání na více událostí (periodické dotazování, select, poll, epoll)?
Select a poll bezi v linearnim case O(n), kde n je pocet deskriptoru. Deskriptorum rozumime jako jednotlivejm prostredkum (I-O, souborum) se kteryma pracujeme. Pokud jich jsou stovky, tak hodne zalezi na vykonu HW.
Select je v BSD, poll je soucasti Solarisu
Všechny tyto mechanismy se zeptají, jestli je možné čtení/zápis k danému souboru a a případně proces blokují, než je to možné.
Ve kterých případech je vhodné použí Model/View architekturu u návrhu GUI?
Pokud je víc zobrazení závislých na jedněch datech (např. tabulka a graf v Excelu).
Popište rozdíl mezi GPL a LGPL, MIT, Apache a Creative Commons licencemi.
GPL je nejvíc virová, cokoliv používá GPL kód musí být taky GPL.
LGPL umožňuje linkovat LGPL kód z jiných licencí. Typické použití je pro knihovny.
MIT a Apache licence nejsou copyleft. Odvozenina může být pod jinou licencí. Je ale nutné uvést disclaimer a z jakého projektu byla odvozenina vytvořena.
Creative commons je license pro jakýkoli obsah, nejenom pro software. Do license si člověk může dát 1-4 z těchto atributů:
Attribution - nutno uvést autora originálního projektu
Noncommercial - možno upravovat jenom pro nekomerční účely
NoDerivatives - možno pouze kopírovat dané dílo, ale nikoliv ho upravovat
Share-alike - znamená virální copyleft
Popište správa aplikací a koncepce balíčků (Debian DEB, RedHat RPM)
Správa aplikací v Linuxu probíhá přes package manager na jednom místě. Package managers: Aptitude, Yum
Balíčkovací systémy:
DEB (Debian) - obsahuje tři soubory: debian-binary (identifikátor formátu), control (meta-data o balíčku), data (vlastní soubory balíčku)
RPM (Red Hat, Fedora) - obsahuje jeden soubor, na jménu záleží. Uvnitř souboru je hlavička, ověření integrity, metadata, soubory v taru.
Co to je OS POSIXového typu?
POSIX je přenositelné rozhraní pro operační systémy standartizované IEEE, vycházejí ze systémů UNIX a popisují jaké API má systém podporovat a jak má API vypadat.
Jaké jsou architektury procesorů?
x86
x86_64
ARM
PowerPC
Sparc
Co znamená křížový překlad?
Tzv. cross-compiler se používá k překladu softwaru pro jinou platformu než na který běží/na který je ten kód napsán. Např. na linuxu kompilujete program pro Windows.
Jaký je rozdíl mezi shell, core-utils, BusyBox?
Shell - vyhodnocovač příkazů na příkazové řádce
core-utils - základní množina příkazů v linuxu - cat, ls, pwd, vi, …
BusyBox - emulace shellu a core-utils v embedded zařízení při minimální velikosti binárky
Debian projekt a distribuce, popsat a myslím i jeho balíčkovací systém.
Projek založil Ian Murdock v roce 1993. Od začátku předpokládal kompletně nekomerční projekt vyvíjený stovkami dobrovolníků. Přes 1000 dobrovolníků, přes 22000 balíčků, 12 architektur
5 hlavních věcí omezující výkon počítače
Výkon a počet CPU,
velikost fyzikcé paměti (počet stránek)
šířka pásma pro přístup k paměti
šířka pásma pro přístup k datům na disku
šířka pásma síťového připojení / infrastruktury
Rozdíl vzdálená (remote) větev vs lokální větev, jak se změní lokální po zavolání git fetch?
Upravy jsou vždy provadeny na lokalní větvi, po zavolání git fetch je stažen aktuální stav větve nový ukazatel je označen jako server/označení_záložky (tady asi nekdo myslel repo/branch). Lokální větev je větev v PC. Vzálená je někde na serveru.
Co je release a co snapshot?
Jaké jsou role v Model View vzhledem ke QT
Odděluje data od jejich prezentace.
Data jsou v aplikaci jen jednou, řeší data redundancy hell
Jedny data mohou být zobrazeny více způsoby či perspektivami.
Jeden pohled lze použít pro zobrazní různých dat, pro různé modely
Modely generující data, data vubec nemusí existovat, počítají se na požádání.
Delegát/Controller slouží pro zobrazení/editaci dat
Co je reverzní mapování a kdy se použije?
Otázka se vztahuje k paměti a reverznímu nalezení všech Page Table, který vedou na stejný Page Frame. Viz například zde.
Kromě IP musíme někdy vyhledat zpětně kanonický název hostitele. Proto byla vytvořena speciální doména in-addr.arpa (4 úrovňová). Ta obsahuje IP adresy v obrácené tečkové notaci. tj. 149.251.48.1 odpovídá 1.48.251.149.in-addr.arpa Mezi zónami a IP sítěmi může být vztah 1:n ke každé IP podsíti se musí vytvořit odpovídající zóny v in-addr.arpa a ty musí být zpřístupněny správcům podsítě.
3 hlavní požadavky (na co si dát pozor) na ABI při přenosu binárních dat (struktury, nativní typy) vzhledem k síťovému přenosu?
rozhraní, které nabízí služby jádra směrem k zařízení.
Co znamená koncept "Všechno je soubor(inode)" kde je použit a jaké jsou výjimky?
Nahoru