Logo GNU
Kodovani Předchozí Následující Obsah

13. Linux - UNIXový operační systém

Linus Torvalds ve škole pracoval na UNIXu. Ten se mu tak zalíbil, že na něm chtěl pracovat i doma. Ale závratné ceny UNIXu (20000Kč) mu vadily. UNIX se vpodstatě nedal sehnat. Proto se rozhodl napsat si vlastní. Linux nevznikal pod GNU. Linus byl hacker a o GNU možná ani nevěděl. V té době GNU nebylo moc rozšířené. Úplně první verze se prý kompilovaly pod DOSem, verze 0.1 pod Minixem. Brzo ale objevil GCC a začal pracovat pod ním. První použitelné verze vyšly v roce 1991 a setkaly se s velkým ohlasem. Od okamžiku, kdy byl Linux schopen spustit GCC a zkompilovat tak další GNU programy (ty v té době už uměly skoro všechno, co operační systém potřebuje), bylo vyhráno. Funkční UNIXový systém byl na světě. Ve verzi 0.99.13 z roku 1992 už chodilo skoro všechno - byla k dispozici rozumná instalace, všechny GNU programy, filesystém měl dlouhé názvy. (První verze používala minixový filesystém. Ten byl ale omezen na 80 MB a tuším 12 znaků v názvu). Chodily dokonce i X window - grafika. Už v té době byl Linux velmi stabilní a tak existují servery, které běží už několik let, aniž by je bylo nutné rebootovat.

Linux se velice rozšířil. Mnoho dalších programátorů z celého světa se připojilo k vývoji a z Linuxu se stalo velmi dobré jádro. První verze sice nebyly napsány zrovna nejlépe - Linus se až moc držel původního návrhu jádra UNIXu z roku 1972. Navíc jádro nenapsal příliš přenositelně a některé části - jako filesystem, nebo swapování byly vyloženě slabé.

To už dnes není pravda. Linux podporuje mnoho platform - Alpha, Sun, Amiga, Atari, Mac, PowerPC a další.

Filesystém (ext2fs - second extended filesystem) je velmi rychlý, bezpečný a relativně jednoduchý. Má speciální algoritmy zabraňující fragmentaci - za 5 let používání je fragmentace okolo 8%. Tabulky má rozptýlené po disku tak, aby byly co nejblíže datům. Navíc se tím zvyšuje bezpečnost. Názvy povoluje až do délky 256 znaků atd. Linux samozřejmě umí použít i jiné filesystémy.

Memory management má také velice dobrý. Disková cache je přes veškerou volnou paměť. Když jsou spustěny dva stejné programy, sdílí stejný kód. Různé programy sdílí alespoň knihovny, které jsou na disku pouze jednou a nelinkují se do každého programu. Ten samý kód použije i cache, kdyby snad někdo chtěl číst ten soubor ze kterého byl program spuštěn. Když proces provede fork - rozdělí se na dva identické procesy, paměť se nekopíruje, ale sdílí se dokud jeden z procesů do ní nezapíše - potom se rozdělí pouze ta stránka, která byla změněna (copy on write). Když se program spustí, jeho kód se nezavede celý do paměti, ale jenom první stránka, kam se skočí a když proces chce další, tak se přihraje z disku (page demand loading).

Swapování na disk zařizuje speciální proces, takže běží úplně asynchroně. Když se swapuje ven kód programu, tak se neuloží do swap souboru, ale prostě se smaže a později se opět načte z původního spustitelného souboru. Samozřejmě, že má i readahead - načítá stránky, kde předpokládá, že je proces bude potřebovat a tak proces vůbec nemusí čekat, až se celý zavede do paměti. To vše může proces použít i pro jiné účely - například namapování nějakého souboru do paměti atd. Protože Linux nepoužívá BIOS, je celé I/O několikanásobně rychlejší a při plné práci zabere tak asi 10% času procesoru.

Jádro má navíc podporu sítí, je kompatibilní s POSIXem, má drivery na většinu SCSI, zvukových i síťových karet, IDE/ATAPI, portů a některá nestandardní CD. Poslední jádra podporují i SMP (více procesorů) atd.

Na rozdíl od normálních UNIXů scheduler procesů běží na 100Hz a to je dost na to, aby člověk mohl kompilovat a k tomu hrát akční hru - třeba doom, který pod Linuxem také funguje.

Protože Linux přebírá většinu dobrých napadů z OS UNIX, je jeho API velmi jednoduché a přehledné. Je možné systém využívat a není třeba jej obcházet. Jedním z nejlepších nápadů UNIXu je jeho způsob ovládání externích zařízení pomocí device souborů (ty fungují podobně jako speciální soubory COM, nebo PRN v DOSu, ale jsou mnohem lépe využity) Například přehrání zvuku se provádí zapsáním dat do souboru /dev/audio, uložení dat na disketu zapsáním do souboru /dev/fd0. Není nutné se tedy učit žádné speciální volání pro dané zařízení a je možné použít standardních utlity pro práci se soubory.

Je mnoho porgramátorů, kteří i programy pro jiné operační sytémy vyvíjejí pod Linuxem, protože poskytuje kvalitní prostředí pro vývoj programů. Převod na jinou platformu tolik času nezabere, protože i tam většinou existuje GCC (GNU C Compiler) a knihovny alespoň částečně emulující UNIXové API.

Jedna z nejsilnějších stránek Linuxu je podpora sítí. Podporuje nejenom UNIXu vlastní TCP/IP ale i mnoho dalších (IPX, IPv6, decnet, netbeui, SLIP, PPP atd...). Velké množství WWW serverů (například www.seznam.cz) běží právě pod Linuxem a používají HTTP server Apache. Díky podpoře masqueradingu lze prostřednictvím Linuxu pžipojit pomocí jednoho modemu a jedné IP adresy do Internetu celou síť. Linux také podporuje emulaci služeb některých jiných systémů. Je možné například emulovat Novell Netware servery/clienty, sdílet disky s Windows pomocí SMB protokolu atd...

Pod DOS emulátorem dnes chodí programy jako Doom, Second reality, Windows 3.1 atd.

Poslední verze distribucí Debian a Redhat mají poměrně snadnou instalaci. I na pozdější použití stačí relativně malá znalost UNIXu.

O spolehlivosti a výkonu Linuxu svědčí napříklat i to, že se zůčasnil dvou letů raketoplánu, byl použit na 160 aplhách pro generování efektů pro film Titanic, vyhrál cenu produkt roku od Softwarových Novin, nebo překvapivě i cenu za nejlepší technickou podporu.

Více informací najdete na http://www.linux.cz.


Předchozí Následující Obsah

Dotazy a připomínky ohledně stránky posílejte na hubicka@paru.cas.cz