====== Zkouška OSP 25.5.2015 ====== 1) Zaškrtnout správná tvrzení: * a) NO - Unix byl od počátku vyvíjen pro komerční použití. * b) YES - Linus nepoužil pro vývoj Linuxovýho jádra žádné zdrojáky z Unixu i když byly dostupné v akademické sféře. * c) NO - Stallman napsal GCC kompilátor až potom, co bylo Linuxové jádro přizpůsobeno pro něj. * d) YES - ? (něco s Linuxem a GNU, doplnit pls) * e) NO - Linux byl od pořátku vyvíjen tak, aby byl kompatibilní pro všechny architektury. 2) Byl tam kus Cčka a napsat jaké symboly z a,b,c,fnc budou uloženy na disku ve spustitelném souboru ELF. include < char a[] = "prvni"; char *fnc () { char b[] = "druhy"; char* c; c = (char*) malloc(6); strcpy(c, "treti") return(c); } * Tady chtěl hlavně říct, že bude v soboru pouze globální proměnná **a** a definice funkce **fnc**, ostatní (b,c) jsou jen lokální a při kompilaci se neuvažují. 3) Jakými vrstvami systému a jakými volními bude procházet požadavek při vytvoření souboru, zapsání do něj a uložení na disk. chtěl že to jde od user space přes kernel space až po hardware, že se tam volá nějaký fopen() atd.. 4) Otázka na cross-kompilaci. Máme architektury A, B zkompilovat na A cross kompilací binárky pro B, pak cross kompilací opět nativní kompilátor z A pro B a pak už jen na B kompilujeme nativním kompilátorem (za 2 body) 5) Při přístupu k libovolnému souboru uloženému v soub.systému na blokovém zař. dochází v jádrech OS Linux 2.4 a vyšších k uložení dat souboru do operační paměti po úsecích v násobku určité délky. a) Z čeho je velikost těchto úseků odvozená ? Odpověď: Z násobků velikosti stránky b) Jak se tento mechanizmus vyrov.pam. nazývá ? Odpověď: PAGE CACHING c) Kdy dojde k uvolnění takto alokovaného bloku paměti ? Odpověď: Při nedostatku volné paměti 6) Jaký je výstup po použití diff. Jak můžeme tento výstup přímo aplikovat do jiné větve. Jaké znaky v diffu jsou a co znamenají znaky ---,+++,+,-,@@ => původní soubor, změněný soubor, přidaná řádka, odebraná řádka, pro který úsek (řádky) platí následující změny PATCH - dá se vytvořit, přeposlat mailem například a aplikovat v jiné větvi 7) Máme repozitář s 1000 soubory (každý jiný) a je jednou provedený commit - .git zabírá 1MB. Když do každého souboru přidáme jeden nový znak a poté provedeme commit (pro všechny soubory najednou) o kolik se zvětší velikost .git? Lze v udoucnu nějak vynutit snížení této velikosti? zvětší se 2x, protože se pro každý soubor vytvoří jeho kopie a celý strom, žádný diff... lze požádat o zmenšení zavoláním git gc (garbage collector) 8) Jak můžeme otimalizovat práci s velkými soubory na úrovni user space? mmap(), .. ??? za DMA byl půl bodu až bod (to je prý moc nízko a neovlivníme to programem) 9) Jaké jsou základní myšlenky společenské smlouvy projektu Debian? vždy 100% svobodný, nesmí použít nic nesvobodnýho, priorita je svoborný SW a uživatel, veřejná databáze chyb, pokud chceme mimo smlouvu vyvíjet tak do repozitářů contrib, non-free 10) Tabulka s licencema viz test 7.6.2013