Charakteristika operačního systému GNU/Linux
- OS Unixového typu - filozofie, procesy, uživatelé, souborový systém,
základní programy a další věci jsou shodné s Unixovými standardy.
- Čistě 32/64 bitový OS - Linux od počátku byl psán jako 32-bitový OS
a dnes podporuje řadu 64-bitových architektur - první byly procesory DEC Alpha,
nyní též Intel64, 64-bit procesory MIPS a SPARC a 64-bit z/Architektura
na S390 fy Intel. Pozn.: GNU C knihovna (GLIBC) je již částečné portována i na
128-bitové architektury.
- Víceúlohový OS - jeden člověk může mít spuštěno několik programů současně
- Víceuživatelský OS - více lidí může současně pracovat na jednom
fyzickém počítači. OS uživateli vytváří virtuální prostředí tvářící se,
jako by měl počítač sám pro sebe: nikdo nebude bez jeho povolení číst jeho
soubory, nikdo nebude zasahovat do běhu jeho programů, bude moci používat
periferní jednotky počítače (tiskárny, vstupní jednotky,..) atd.
- Víceprocesorový OS - SMP podle dané architektury - podporováno až 64
procesorů. OS zaručuje rovnoměrné využití procesorů jednotlivými procesy
- Preemptivní OS - žádná úloha si nemůže "přivlastnit" a zablokovat
systém; systém po určité době přidělení sám odebírá úlohám procesor(y). Úloha
si vůbec nemusí uvědomovat existenci střídání se o procesor.
- Real-time OS - kromě normálních typů procesů (-uloh) jsou podporovány
i real-time procesy. Jsou jinak plánovány a mají vyšší prioritu než všechny
ostatní procesy.
- Všestrannost nasazení - používá se od tzv. zapouzdřených (angl.
embedded) systémů (specializovaná nasazení většinou na mini HW a speciálních
periferiích - řídící systémy, roboti, telefony ap. Díky své modularitě Linux
pracuje v podmínkách, kde jiné OS bídně hynou) přes PDA (Personal Digital
Assistent), servery (souborové, datové-SQL, síťové, tiskové aj.) po grafické
pracovní stanice s X-Window systémy. Stejně dobře pracuje v jednouživatelském,
víceuživatelském textovém i víceuživatelském grafickém režimu.
- Svobodný SW - základem Linuxu je volně šiřitelný SW /vč. zdrojových
kódů/. Kdokoliv může zdrojové kódy volně používat, upravovat a šířit - viz GNU
GPL licence. Jádro i aplikační programy jsou vyvíjeny a spravovány tisíci
nadšenci po celém světě komunikujícími po Internetu. Současně je ale na Linux
portováno a pro něj vyvinuto mnoho komerčních programů, zpravidla za daleko
nižší cenu než odpovídající verze pro komerční Unixové systémy.
- Nejrychleji se rozvíjející OS - za 10 let existence GNU/Linux vyrostl
od původní verze (na i386, se souborovým systémem Minix a z programů pouze
překladač C a shell) k dnešnímu stavu (jádra 2.5.x, zdrojové soubory zabírají
již přes 200MB) - podpora více než 20 HW architektur, SMP, několika desítek
souborových systémů a řada dalších vlastností v hlavním vývojovém stromu jádra.
K tomu je nepřeberná řada jádro obalujících GNU systémových, uživatelských
a dalších programů, několik X-Window manažerů,...
Filozofie operačního systému Unix
Unix byl OS určený primárně na zpracování textu, a většina komponent pracuje s
textovým vstupem a produkuje textový výstup. Od počátku byly programy psány
s několika základními principy:
- provádět právě jednu věc a tu dělat dobře
- zaručit jejich vzájemnou spolupráci
- povely a data programy přijímají v textové podobě
- jejich výstupy jsou též v textové podobě a ve formě vhodné pro další
zpracování jako vstup jiných programů.
Od opuštění assembleru jsou programy psány již výhradně v jazyce C.
I když je programování v C bez ohledu na platformu v mnoha směrech stejné,
je třeba říci, že unixoví vývojáři nahlíží na vývoj programů a systémových
nástrojů specifickým způsobem. Operační systém Unix/Linux podporuje určitý
styl programování a Unixové programy a systémy sdílí následující
charakteristiky:
- Jednoduchost
Valná většina utilit pro operační systém Unix je velmi
jednoduchých a v důsledku toho také malých a snadno pochopitelných.
Je dobré si osvojit techniku zvanou KISS (Keep It Small and Simple - Snaž
se to udržet malé a jednoduché). U větších a složitějších systémů je vyšší
pravděpodobnost většího množství komplexních chyb jejichž ladění může být
obtížné.
- Zaměření
Vždy je lepší vytvořit program, který provádí dobře jen jeden úkol. Program
přecpaný nejrůznějšími funkcemi se obtížně používá a udržuje. Jednoúčelové
programy se snáze vylepšují, když se objeví lepší algoritmy
nebo rozhraní. V systému Unix jsou v případě potřeby
malé utility často kombinovány tak, aby prováděly náročnější
úkoly, místo aby se programátoři snažili předvídat potřeby uživatelů
za pomoci jednoho velkého programu.
- Znovu použitelné komponenty
Je užitečné dát jádro aplikace k dispozici v podobě knihovny.
Dobře dokumentované knihovny disponují jednoduchým ale
flexibilním rozhraním, mohou ostatním lidem pomoci při
vývoji různých variací nebo při aplikaci postupů v nových oblastech.
Příkladem budiž databázová knihovna dbm, což je spíše než jeden program
pro správu databáze sada znovu použitelných funkcí.
- Filtry
Spoustu unixových aplikací lze využít jako filtry. To znamená,
že mohou převádět vstup na výstup jiného typu. Systém
Unix/Linux poskytuje nástroje, které umožňují vzájemnou kombinací
jiných unixových programů novými a neotřelými způsoby vytvářet poměrně
složité aplikace. Samozřejmě, že je tato možnost opětovného použití dána
právě zmíněnými vývojovými metodami.
- Otevřené formáty souborů
Nejúspěšnější a nejoblíbenější unixové programy používají konfigurační a
datové soubory, které mají podobu textových ASCII souborů.
Uživatelé tak totiž mohou měnit a prohledávat konfigurační nastavení pomocí
standardních nástrojů a zároveň vyvíjet nástroje, které budou při práci s
datovými soubory používat nové funkce. Hezkým příkladem je
systém křížových odkazů ve zdrojových souborech ctags, který udržuje
informace o umístění symbolů v podobě regulárních výrazů, které pak může
využívat vyhledávací program.
- Flexibilita
Nelze dopředu předvídat, jak důmyslní uživatelé budou program používat.
Je proto dobré při programování zachovávat co největší flexibilitu.
Dobří programátoři se vyhýbají svévolným omezením velikostí polí
nebo počtu záznamů. Je-li to možné, jsou programy psány tak, aby mohli
pracovat v síti stejně dobře, jako na lokálním počítači.
Nikdy si nemyslete, že jste vzali do úvahy vše, do může uživatel chtít udělat.