====== Ř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 * Licence GPL * 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? ===== * user * user space (aplikace, knihovny) * kernel space (ovladače, komunikace s hw, API pro aplikace) * hardware ===== 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 ===== Které základní informace a data uchovávají systémy pro správu zdrojových kódů (SCM)? ===== * které složky a soubory jsou pod SCM * commity s diffy změn uspořádané do DAG - directed acyclic graph * odkazy na branche a tagy * odkaz na HEAD branch ===== 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é. * Select O(n) * Poll O(N) * ePol O(1) * Periodické dotazování O(n_registered+n_active) ale zároveň zbytečné čekání a plýtvání zdroji ===== 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? ===== * Release – soubory jsou uloženy v jejich počáteční podobě + seznam změn jedntlivých souborů (neni to spis vydani nove verze aplikace?) * snapshot – sadu snímků vlastního malého systému souborů. ===== 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 [[http://www.makelinux.net/books/ulk3/understandlk-CHP-17-SECT-2|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í. * Výrobci testují proti binární podobě OS, dodávají binární ovladač. * Hrozí porušení funkce ovladače se změnou ABI (např. update, service pack). ===== Co znamená koncept "Všechno je soubor(inode)" kde je použit a jaké jsou výjimky? ===== * Linux * Veškerá zařízení (myš, klávesnice ...) jsou v linuxu jako soubory * Sockety jsou výjimky ~~DISCUSSION~~