Toto je starší verze dokumentu!


Open Source Programování

Cvičení

Zkouška

Co říkal přednášející na poslední přednášce:

  • důraz bude kladen na snahu se zorientovat v daé věci a umět si jednotlivé věci spojovat
  • písemná podoba, rozepisovací otázky - ne a/b/c..
  • prý se dá docela čerpat z Wikipedie k většině tématům (až na správu paměti)

Určil 4 základní okruhy:

  1. sprava projektu - git, sprava verzi, diffy
  2. historie OpenSource a projektu (podstatne co se k cemu hodi), mit prehled o tom o cem jsme se tady bavili, zakladni koncepcni navrhy typu(xWindows - server je tady a klient dava data)
  3. technicka stranka
    • Qt, reakce na udalosti a spojeni
    • kernelove principy - potize s velkym mnozstvim pameti, procesoru
    • obecna skladba operacniho systemu predevsim Unixoveho typu
  4. licence - GPL, LGP, CreativeCommons, MIT, BSD - hlavni rozdily (ale ty tam moc pry asi nebudou)

Zkouška 26.5.

  1. Co je znakem OS software a produktů obecně?
  2. Na jaké úrovni jsou svázané zdrojové kódy a historie unix, GNU, GNU Linux?
  3. Jaké základní fce má Busybox a které programy nahrazuje a proč?
  4. Jak vypadá základní návaznost komponent od výkonného HW, kde běží aplikace po grafický výstup na XWIN architektuře?
  5. Jaký je význam termínu branch (větev) v systému správy verzí (vznik, kdy a proč redukované)?
  6. 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)?
  7. Vysvětlete jaký je základní přínos signal-slot oproti callback.
  8. Jak je, případně může být generován zisk společnosti, která investuje do OS systému?
  9. 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á?
  10. Základní 2 koncepty pro obsluhu klientů, proč pro více klientů je nutná kombinace?

Zkouška 9.6.2010

  1. Jak je omezena cena open-source produktů obecně a specificky pro GPL licenci?
  2. Jaké jsou základní vrstvy operačního systému unixového typu od HW k uživateli?
  3. Jak vznikl projekt X Windows a jaké základní principy si tvůrci stanovili?
  4. Které základní informace a data uchovávají systémy pro správu zdrojových kódů (SCM)?
  5. Jaký je rozdíl ve výsledném grafu historie/návaznosti verzí při použití „git merge“ a „git rebase“?
  6. Čí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í?
  7. Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě?
  8. 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)?
  9. 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á?
  10. Porovnejte časovou (algoritmickou) komplexitu různých mechanizmů pro čekání na více událostí (periodické dotazování, select, poll, epoll)?

Zkouška 6.6.2011

3 body na otázku, hodina na vypracování. Když něco není úplně přesně, spíš lehce strhával body, opravuje v poho. Ne vše si pamatuju přesně, třeba někdo doplní:

  1. Na jaké úrovni jsou svázané zdrojové kódy a historie unix, GNU, GNU Linux? viz vypracovaná otázka tady - šlo mu o to co je odkud přebrané, co je nové
  2. Jaké jsou základní vrstvy operačního systému unixového typu od HW k uživateli? nestačí vypsat kernel space, user space ale i co v nich je
  3. Jak vypadá základní návaznost komponent od výkonného HW k XWindow kde co běží když je to po síti?(podobné tomu co už bylo)
  4. Jaké jsou role v Model View vzhledem ke QT. prostě popsat model view
  5. 5 hlavních věcí omezující výkon počítače. takovéto paměť, šířka sběrnice…
  6. Rozdíl vzdálená (remote) větev vs lokální větev, jak se změní lokální po zavolání git fetch?
  7. Co je release a co snapshot?
  8. Co je reverzní mapování a kdy se použije?
  9. 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? nepřesné
  10. Debian projekt a distribuce, popsat a myslím i jeho balíčkovací systém.

Zkouška 28.5.2012

Verze 1

  1. Na jaké úrovni jsou svázané historie a zdrojové kódy systémů Unix, GNU a GNU/Linux
  2. Popište koncept signálů a slotů a které nejzásadnější situace řeší?
  3. Jaký je rozdíl mezi operacemi „git pull“ a „git fetch“ ?
  4. Čí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í?
  5. Jaký je význam pojmu release (vydání) softwarového projektu a snapshot (snímek)?
  6. Porovnejte časovou (algoritmickou¨komplexitu různých mechanizmů pro čekání na více událostí (periodické dotazování, select, poll, epoll)?
  7. Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě?
  8. Jaký je vztah velikosti odkládacího oddílu, fyzické a virtuální paměti k maximální velikosti programu a dat jedné aplikace a jejího vícenásobného spuštění?
  9. Popište různé možnosti pořadí ukládání vícebytových slov (číselných datových typů) do paměti a jak se označují?
  10. Co vyjadřuje koncepce „všechno je soubor/pojmenovaný uzel (inode)“, jak se kterého systému týká a kde lze pozorovat výjimky z této koncepce?

Verze 2

  1. Co je základním znakem open-source software a produktů obecně?
  2. Vysvětlete jaký je zásadní přínos konceptu signálů a slotů oproti běžným zpětným voláním (callback) ?
  3. V případě, že máme git repozitář s tisíci commity obsahující tisíce souborů, jehož celková velikost je 1 MiB. O kolik více řádově (/procentuálně) místa zabere repozitíř po vykonání příkazu pro vytvoření nové větve?
  4. Proč (a kdy) je v jádře systému a aplikacích výhodné zjemnit granularitu zamykání (např. na jednotlivé stránky, jména souborů, PID atd), a to přesto, že se pak zamyká častěji a je tedy spotřebováno více cyklů CPU?
  5. Popište využití programů diff a patch pro přenos úprav mezi různými verzemi projektu nebo jeho dvěma vývojáři?
  6. Jakých je pět základních faktorů/zdrojů, které limitují běh počítačových aplikací?
  7. Jaké jsou obecně možné formy řízení open-source projektů a jaký je stav v případě Linuxového jádra a projektu Debian?
  8. 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)?
  9. Pro které typy komunikačních protokolů je potřeba řešit rozdíly v reprezentaci nativních datových typů mezi architekturami počítačů a naopak pro které není a čím za to druhá skupina platí?
  10. Základní způsoby čekání na více zdrojů událostí v jednom vlákně?

Ústní otázka:

  1. Reprezentace commitu (ve smyslu, že commit v sobě má nějaký hashe apod)
  2. Co sa deje v systeme pri volani napriklad copy z shellu - otazka na systemove volani.

Zkouška 4.6.2012

Verze 1

  1. Jaké jsou základní myšlenky společenské smlouvy projektu Debian?
  2. Jak probíhá proces alokace fyzických paměťových stránek a na základě čeho je vhodná stránka vybrána a co je s ní (nejčastěji) potřeba před alokací udělat?
  3. Které typy objektů ukládá verzovací systém GIT v adresáři .git/object/XX? (správná odpověď: commits, tags, trees, blobs)
  4. Lilo,…,U-boot k čemu slouží? (K zavedení operačního systému.)
  5. Jak probíhá vývoj, když právo zápisu do hlavního repozitáře(GIT) má pouze jeden člen týmu?
  6. Popište jak vypadá sled událostí (na úrovni OS) při využití přímého přístupu do paměti(DMA)?
  7. Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě?
  8. Jaký je vztah velikosti odkládacího oddílu, fyzické a virtuální paměti k maximální velikosti programu a dat jedné aplikace a jejího vícenásobného spuštění?
  9. Popište různé možnosti pořadí ukládání vícebytových slov (číselných datových typů) do paměti a jak se označují? Little, big endian
  10. Jaké kompilátory budete potřebovat při úplné portaci OS na novou architekturu CPU. Uvažujeme, že se na cílové platformě bude systém dále vyvíjet? Nativní překladač, crosscompiler, překladač na dané platformě

Verze 2

  1. Jaká je podpora Debianu pro uživatele kteří potřebují i balíky které se neslučují se společenskou smlouvou Debianu?(sekce repozitářů non-free a contrib)
  2. Jaký je význam řádek uvozených v unidiffu znaky '+++','—','@@',' ','+','-'.
  3. Kdy se využívá sdílená paměť a jaké jsou s ní problémy. (Více procesů má namapováni danou paměť. Problémy při uvolňování paměti - kvůli tomu zavedeno reversní mapování - http://www.abclinuxu.cz/clanky/jaderne-noviny-15.-4.-2010)
  4. Co je to křížový překlad.
  5. Co je potřeba pro start a zavedení systému. (Nejen zavaděč, ale i pak co startuje jádro a tak…)
  6. Jaké je použití DMA a v čem je toto využití výhodný při přenosu velkých souborů.
  7. 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 nemapuje do sdíleného paměti, ale do virtuálního prostoru - tak mi to aspoň opravil)
  8. 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?
  9. Jaké jsou obecně možné formy řízení open-source projektů a jaký je stav v případě Linuxového jádra a projektu Debian?
  10. Poslední už nevím, kdyžtak někdo doplňte. Předchozí otázky nejsou přesně formulované, jen jak jsem si je zapamatoval.

Zkouška 23.5.2013

  1. Jaké jsou zásluhy pánů Thompson, Stallman a Torvalds?
  2. Napsat jaké znáš možnosti komunikace mezi aplikacema (api a abi) a co o nich říkají open-source licence?
  3. Popiš big endian a little endian.
  4. Lilo,Grub,U-boot k čemu slouží? (K zavedení operačního systému.)
  5. Co to je EULA?
  6. Co to je polling? Jaké má výhody a nevýhody? Kdy je třeba ho používat?
  7. Co je to operační systém posixového typu?
  8. Vysvětlit rozdíl mezi git merge a git rebase.
  9. Jak spolu souvisejí vývoje unixu, gnu a gnu linuxu?
  10. Nevím, prosím doplnit.

Zkouška 7.6.2013

zadani_7_6_2013.zip Omlouvám se za zabělení odpovědí,ale raději jsem vymazal cokoliv, co by mě mohlo identifikovat.

Odpovědi k paměti (ot. 2; nikdo ji neměl 100% dobře): a) 3 MB b) 0 MB c) 16 MB d) 18 MB - edit 1 a 1 MB jsou vyjmuty ze společného prostoru e) 31 MB (18+10+3(bss)) rekl, ze muze byt take 32 ten 1MB na vic zalezi na nejaky skript

Zkouška 28.5.2014

1. termín

  1. Máme program s .bss, .text, .data, a stack a heap. Jak budou setřídění v pamětí?
  2. Několik volání v C, jak a kde budu alokování. (otázku jsem úplně nepochopil)
  3. Jake objekty máme v ./git/objects (odpověd: blob, tree, commit, tag). Pokud přesuneme všechno z adresářu /a/b do a/c a udělame z toho nový commit, jaky objekty se vytvoře (podle mně: commit a tree jenom).
  4. Jak se shora omezená cena open source software a konkretně jak v GPL licenci?
  5. Otázka na mutex, bylo 5 tvrzení a potřeba zjistit která jsou pravdivá.
  6. Co je potřeba říct při nahlášení nového OS projektu? (moji odpověd: název, popis cílové a současně funkčností, licenca, prog. jazyk, odkaz na repositář s kodem (nebo přímo kod), odkaz na další stránky (mailing lista, blog, web stránky projektu atd))

Kompletní test:

1) Uvažujte sekce spustitelného souboru/programu (.data, .bss, a .text) a další typické oblasti adresního prostoru procesu (zásobník/stack a halda/heap). V běžných OS (POSIXového typu i Windows) je pořadí těchto oblastí stejné. Seřaďte uvedené sekce a oblasti v pořadí virtuální adresy od nejnižší virt. adr. po adr. nejvyšší

Odpověd: .text .data .bss heap stack

2) Ze které sekce/oblasti (jedné nebo více) bude alokovaná/vyhrazená paměť pro následující konstrukce v jazyce C:

 a) #include <malloc.h>
    int global_x;
    
    Odpověď: bss
    
 b) #include <malloc.h>
    int global_x = 30;
    
    Odpověď: data
    
 c) #include <malloc.h>
    char * new_str30(void) {
       return malloc(31);
    }
    
    Odpověď: heap
    
    

3) Co vyjadřuje koncepce „všechno je soubor/pojmenovaný uzel (inode)“, jak se kterého systému týká a kde lze pozorovat výjimky z této koncepce ?

    Odpověď: Týká se zejména Unixových systémů. Lze přistupovat k různým pamětím, zařízením a socketům jako k souborům. Výjimka: síťový socket (myslím)
    

4) Jaké varianty kompilátoru GCC budeme potřebovat při kompletní portaci OS GNU/Linux z arch. x86_64-linux-gnu (x86) na novou architekturu CPU fireball-linux-gnu (FB) ? Uvažujme, že budeme dále chtít na cílové architektuře systém dále vyvíjet. Kde bude který kompilátor kompilovaný a používaný ?

    Odpověď: Nejdříve cross-kompilátor, kde pomocí cross kompilace zkompilujeme na x86 zdrojové kódy OS do bin.podoby pro arch FB. Poté opět cross kompilací z x86 zkompilujeme nativní kompilátor pro FB, kterým poté budeme nativně kompilovat na architektuře FB.
    
    

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 (myslím)
    

6) Vyjmenujte 4 typy objektů které uchovává GIT v adresáři .git/objects - odpověď: trees, blobs, tags, commits

 Dále vysvětlete, které objekty v úložišti vzniknou, pokud přesuneme všechny soubory v adresáři "a/b" do adr. "a/c" a provedeme commit - odpověď: Vytvoří se dva nové objekty typu tree a commit.
 

7) Jak je shora omezena open-source produktů obecně a specificky pro GPL ?

 Odpověď: Cena není omezena.

8) Rozdíly v bin.reprez. dat (nativní dat.typy CPU, struktury, atp.) z pohledu síťových protokolů mezi různými architekturami a ABI počítačů ?

 Odpověď: rozdílná architektura (64bit vs 32bit, x86 vs ARM), big vs little endian

9) Označte pravdivá tvrzení o implementaci mutexů v systému GNU/Linux s moderní verzí GLIBC:

  a) [ ] Při založení mutexu dynamicky či globálně se musí volat systémové volání pro inicializaci mutexu
  b) [X] Pokud je zámek volný tak se při zamykání systémové volání jádra neprovádí
  c) [X] Při odemykání zámku může být i tak potřeba jádro zavolat
  d) [ ] Při volání jádra se předává adr. instrukce, která provádí operaci zamykání v uživ. prostoru
  e) [X] Před vlastním uspáním procesu, který čeká na uvolnění zámku se nejdřív proces přidá na frontu identifikovanou kombinací inode a offsetu nebo specifikací stránky anonymní paměti a pak se znova provádí kontrola podmínky a v případě splnění se uvolní z fronty a dojde k návratu do user-space.
 

10) Co by mělo obsahovat poč. oznámení o vzniku OS projektu?

 Odpověď: 
     za jakým účelem vzniká
     čím se zabývá
     jak se lze připojit do vývoje
     kde se dá sehnat zd.kód
     pod jakou licencí je
     

2. termín

zadání obdobné jako ke zkoušce 7.6.2013

Vypracované otázky z písemek

a4m35osp_reseni otazky.odt asi 5 pridanych otazek

a4m35osp_reseni otazky_upraveny.odt Dovolil jsem si materiály trochu vylepšit.

Vypracované okruhy a vybrané přednášky z X36OSY. materials.zip

Poznámka: Píša má podezření, že máme otázky vypracované, protože se v testech opakují stále stejné chyby. Je potřeba odpovědi opravit a hrozí, že změní zkouškové otázky. Jedná se hlavně o mmap, futex, signal/slot a pár odpovědí je zjevně špatně (release/snapshot atd.)

courses/a4m35osp.1402056784.txt.gz · Poslední úprava: 2025/01/03 18:16 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0