Toto je starší verze dokumentu!
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.
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
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
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.
Branch je kopie zdrojového kódu, na které se může pracovat paralelně s jinými větvemi a později mergovat.
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í.
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.
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í
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).
GUI vs příkazová řádka?
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.
user user space (aplikace, knihovny) kernel space (ovladače, komunikace s hw, API pro aplikace) hardware
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é 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
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.
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.
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
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.
Protože byl požadavek na mapování souborů do paměti (mmap) a data se mohla objevit ve dvou kopiích (nepřípustné).
The same functionality is offered by multiple functions, because two were implemented in Unix almost at the same time by two different groups: select was introduced in BSD Unix, whereas poll was the System V solution. The epoll call[4] was added in 2.5.45 as a way of making the polling function scale to thousands of file descriptors.
Actually, epoll is a set of three calls that together can be used to achieve the polling functionality. For our purposes, though, we can think of it as a single call.