====== Open Source Programování ====== * Stránky předmětu: http://rtime.felk.cvut.cz/osp/ * Přednášející: Pavel Píša * Cvičící: Michal Sojka, Fanda Vacek. ===== Cvičení ===== * [[courses/a4m35osp/cviceni1|Cvičení1 (úprava MC)]] * [[courses/a4m35osp/cviceni2|Cvičení2 (dmsg vypíše Hello)]] * [[Cvičení4 (úprava patche proti Git historii)]] * [[Test]] a [[http://rtime.felk.cvut.cz/osp/cviceni/6/vysledky|Výsledky testu]] ===== 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: - sprava projektu - git, sprava verzi, diffy - 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) - technicka stranka * Qt, reakce na udalosti a spojeni * kernelove principy - potize s velkym mnozstvim pameti, procesoru * obecna skladba operacniho systemu predevsim Unixoveho typu - licence - GPL, LGP, CreativeCommons, MIT, BSD - hlavni rozdily (ale ty tam moc pry asi nebudou) ==== Zkouška 26.5. ==== - Co je znakem OS software a produktů obecně? - Na jaké úrovni jsou svázané zdrojové kódy a historie unix, GNU, GNU Linux? - Jaké základní fce má Busybox a které programy nahrazuje a proč? - Jak vypadá základní návaznost komponent od výkonného HW, kde běží aplikace po grafický výstup na XWIN architektuře? - Jaký je význam termínu branch (větev) v systému správy verzí (vznik, kdy a proč redukované)? - 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)? - Vysvětlete jaký je základní přínos signal-slot oproti callback. - Jak je, případně může být generován zisk společnosti, která investuje do OS systému? - 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á? - Základní 2 koncepty pro obsluhu klientů, proč pro více klientů je nutná kombinace? ==== Zkouška 9.6.2010 ==== - Jak je omezena cena open-source produktů obecně a specificky pro GPL licenci? - 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? - Které základní informace a data uchovávají systémy pro správu zdrojových kódů (SCM)? - Jaký je rozdíl ve výsledném grafu historie/návaznosti verzí při použití "git merge" a "git rebase"? - Čí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í? - Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě? - 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)? - 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á? - 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í: - 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é// - 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// - 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)// - Jaké jsou role v Model View vzhledem ke QT. //prostě popsat model view// - 5 hlavních věcí omezující výkon počítače. //takovéto paměť, šířka sběrnice...// - Rozdíl vzdálená (remote) větev vs lokální větev, jak se změní lokální po zavolání git fetch? - Co je release a co snapshot? - Co je reverzní mapování a kdy se použije? - 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é// - Debian projekt a distribuce, popsat a myslím i jeho balíčkovací systém. ==== Zkouška 28.5.2012 ==== Verze 1 - Na jaké úrovni jsou svázané historie a zdrojové kódy systémů Unix, GNU a GNU/Linux - Popište koncept signálů a slotů a které nejzásadnější situace řeší? - Jaký je rozdíl mezi operacemi "git pull" a "git fetch" ? - Čí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í? - Jaký je význam pojmu release (vydání) softwarového projektu a snapshot (snímek)? - Porovnejte časovou (algoritmickou¨komplexitu různých mechanizmů pro čekání na více událostí (periodické dotazování, select, poll, epoll)? - Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě? - 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í? - 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í? - 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 - Co je základním znakem open-source software a produktů obecně? - Vysvětlete jaký je zásadní přínos konceptu signálů a slotů oproti běžným zpětným voláním (callback) ? - 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? - 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? - 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? - Jakých je pět základních faktorů/zdrojů, které limitují běh počítačových aplikací? - Jaké jsou obecně možné formy řízení open-source projektů a jaký je stav v případě Linuxového jádra a projektu Debian? - 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)? - 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í? - Základní způsoby čekání na více zdrojů událostí v jednom vlákně? Ústní otázka: - Reprezentace commitu (ve smyslu, že commit v sobě má nějaký hashe apod) - Co sa deje v systeme pri volani napriklad copy z shellu - otazka na systemove volani. ==== Zkouška 4.6.2012 ==== Verze 1 - Jaké jsou základní myšlenky společenské smlouvy projektu Debian? - 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? - Které typy objektů ukládá verzovací systém GIT v adresáři .git/object/XX? (správná odpověď: commits, tags, trees, blobs) - Lilo,...,U-boot k čemu slouží? (K zavedení operačního systému.) - Jak probíhá vývoj, když právo zápisu do hlavního repozitáře(GIT) má pouze jeden člen týmu? - Popište jak vypadá sled událostí (na úrovni OS) při využití přímého přístupu do paměti(DMA)? - Jak může vést použití open-source řešení ke snížení nákladů v komerční firmě? - 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í? - 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 - 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 - 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) - Jaký je význam řádek uvozených v unidiffu znaky '+++','---','@@',' ','+','-'. - 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) - Co je to křížový překlad. - Co je potřeba pro start a zavedení systému. (Nejen zavaděč, ale i pak co startuje jádro a tak...) - Jaké je použití DMA a v čem je toto využití výhodný při přenosu velkých souborů. - 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) - 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? - Jaké jsou obecně možné formy řízení open-source projektů a jaký je stav v případě Linuxového jádra a projektu Debian? - 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 ==== - Jaké jsou zásluhy pánů Thompson, Stallman a Torvalds? - Napsat jaké znáš možnosti komunikace mezi aplikacema (api a abi) a co o nich říkají open-source licence? - Popiš big endian a little endian. - Lilo,Grub,U-boot k čemu slouží? (K zavedení operačního systému.) - Co to je EULA? - Co to je polling? Jaké má výhody a nevýhody? Kdy je třeba ho používat? - Co je to operační systém posixového typu? - Vysvětlit rozdíl mezi git merge a git rebase. - Jak spolu souvisejí vývoje unixu, gnu a gnu linuxu? - Nevím, prosím doplnit. ==== Zkouška 7.6.2013 ==== {{:courses: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 ==== * [[courses/a4m35osp/zkouska_2852014|zkouska 28.05.2014]] ==== Zkouška 9.6.2014 ==== * [[courses/a4m35osp/zkouska_962014|zkouska 9.06.2014]] ==== Zkouška 25.5.2015 ==== * [[courses/a4m35osp/zkouska_25052015|zkouska 25.5.2015]] ==== Zkouška 1.6.2015 ==== * [[zkouska 1.6.2015]] ===== Vypracované otázky z písemek ===== [[a4m35osp_reseni]] {{:courses:otazky.odt|}} asi 5 pridanych otazek [[a4m35osp_reseni]] {{:courses:otazky_upraveny.odt|}} Dovolil jsem si materiály trochu vylepšit. Vypracované okruhy a vybrané přednášky z X36OSY. {{:courses: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.) ~~DISCUSSION~~