1) Zaškrtnout správná tvrzení:
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