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