LINUXZONE






 >> Hlavní stránka

(1751/28.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(312/14.09.2010)


 >> Bezpečnost

(347/17.09.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(98/16.09.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(229/09.09.2010)


 >> Aktuálně

(564/20.09.2010)


 >> RELAX

(213/28.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Coolhousing




Coolhousing - Vas poskytovatel dedikovanych serveru




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 60
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články









 Nejlepší články









 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (17%)

LIDS (11%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (62%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





Báječný svět Linuxu 2.6

Zaplatily Vaše telefonátyProtože se pomalu blíží nová stabilní řada Linuxového jádra 2.6, určitě vás bude zajímat, na co všechno se můžete v této nadcházející řadě těšit. A právě proto vám přinášíme překlad první části rozsáhlého článku Josepha Praneviche věnovaného této problematice, který vyšel pod názvem The Wonderful World of Linux 2.6.

I když se to možná zda teprve jako včera, kdy jsme bootovali první systémy s jádrem 2.4, čas nezadržitelně běží kupředu a tým jaderných vývojářů se blíží k dokončení jádra 2.6. Tento dokument je pokusem o shrnutí spousty nových vlastností jádra 2.6 (se zaměřením především na platformu i386). Na rozdíl od oznámení obvykle předcházejících vydání nových verzí uzavřeného softwaru, všechny vlastnosti zde popisované už jsou nyní dostupné v jádrech řady 2.5 - některé ovšem ještě mohou obsahovat více či méně chyb. (Jen pro úplnost, Linuxová jádra jsou tradičně číslována tak, že sudá čísla značí stabilní řadu jader určenou pro nasazení na produkčních systémech, zatímco lichá čísla značí řadu vývojovou, určenou pouze pro neohrožené uživatele). Nicméně přesto mohou být některé ze zde popisovaných vlastností z finální verze 2.6 odstraněny anebo v něm být z označeny jako experimentální (tedy míněno nikoliv pro běžné použití). Proces vývoje jádra se nyní nachází ve stádiu zmrazení, kdy není možné přidávat další rozšiřující vlastnosti a dá se očekávat, že finální verze 2.6 se nebude příliš lišit co do vlastností od toho, co je zde popsáno. Vezměte také v úvahu to, že některé "nové" vlastnosti zde diskutované mohou/mohly být zpětně přeneseny (ať už oficiálně, nebo některým výrobcem linuxových distribucí) do současné stabilní větva jader Linuxu 2.4. i když se prvně objevily v jádru 2.6.

Aby to bylo ještě trochu komplikovanější, přesný způsob číslování nadcházející řady Linuxového jádra ještě nebyl stanoven (v době psaní článku, pozn. red.). Nejspíše to bude 2.6, ale spekuluje se také o 3.0, kvůli poměrně rozsáhlým rozšířením, které znamená zahrnutí podpory architektury NUMA a podpory systémů bez MMU (k tomu se dostaneme později). Z praktických důvodů se v rámci tohoto dokumentu budu držet označení 2.6. a budu o něm hovořit v přítomném čase.

Text, který nyní čtete je prvním konceptem tohoto dokumentu, který vznikl 13. července 2003 a vychází z vývojového jádra 2.5.75. (Pozn. red.: již vyšla první pre verze jádra 2.6.0-test1). S postupem prací na jádře Linuxu budou následovat další verze tohoto draftu a dokument bude oficálně uzavřen teprve s příchodem finální verze jádra 2.6. Protože se jedná o první verzi, může tento text obsahovat nějaké chyby nebo zde něco může chybět; pokud si něčeho takového všimnete, dejte mi vědět, rád chyby opravím.

Historie až do současné chvíle

Projekt vývoje Linuxového jádra započal v roce 1991 Linus Torvalds, s cílem vyvinout systém pro platformu i386, který by nabízel podobné monožnosti jako tehdejší Minix. Linus chtěl projektu dát původně jméno Freax, ale naštěstí pro nás všechny se nakonec rozhodl pro Linux. První oficiální verze Linuxu 1.0 spatřila světlo světa v září 1994 a podporovala oficiálně pouze platformu i386 a stroje vybavené jen jedním procesorem. Linux 1.2 byl uvolněn v březnu 1995 a byl první verzí, která oficiálně podporovala další platformy (konkrétně Alpha, Sparc a Mips). Linux 2.0, který byl vypuštěn v červnu 1996 už podporoval řadu dalších architektur a hlavně obsahoval prvotní podporu víceprocesorových strojů (SMP). V lednu 1999 následoval Linux 2.2, který znamenal výrazně lepší výkon na víceprocesorových strojích a opět se rozšířilo spektrum podporovaného hardware. A konečně, jádro 2.4 bylo uvolněno v lednu 2001 a znamenalo další výraznou změnu k lepšímu v podpoře SMP (lepší škálovatelnost), ale také obsahovala řadu vylepšení týkajících se použití na desktopu - podporu USB, PC Card (PCMCIA), PNP (Plug & Play) a dalších. Linux 2.6 staví nejen na rozšíření těchto vlastností, ale znamená další skok kupředu, s vylepšenou podporou velkých systémů, ale také těch menších (PDA zařízení a podobně).

Podpora více platforem

Jednou ze silných stránek systémů vystavěných nad jádrem Linuxu (jako je např. GNU operační systém - OS a prostředí tak běžně distribuované s Linuxovým jádrem, že často není jako rozlišováno samostatná entita) je to, že podporují velmi široukou paletu hardware a platforem. Každá další verze verzí 1.2 počínaje obsahovala podporu nových typů procesorů a jejich vlastností. (Pozn. red.: celek se označuje také jako GNU/Linux, což je přesnější, protože existuje také OS GNU, který obsahuje jádro GNU Hurd). Ani jádro 2.6 v tomto směru není výjimkou a zatímco uživatelů platformy Intel se to příliš nedotýká, je to důležité pro další šíření Linuxu.

Linux pro embedded systémy

Jedno z podstatných rozšíření, týkající se podpory dalších platforem, představuje zahrnutí velké části projektu uClinux do jádra 2.6. uClinux (možné vyslovit jako "you-see-Linux", ale správněji se tam vyslovuje "mju" z řecké abecedy) "Embedded Linux/Microcontroller Project". Po řadu let tato odnož Linuxu představovala hnací sílu pro vývoj podpory pro řadu procesorů užívaných ve vnořených (embedded) systémech a je skvělé, že se části tohoto projektu staly součástí hlavní větve vývoje jádra.

Na rozdíl od běžných portací Linuxu, porty na embedded systémy tady zmiňované nedisponují všemi rysy a možnostmi jako obyčejné Linuxové jádro - a to kvůli svým hardwarovým omezením. Hlavní rozdíl je v tom, že tyto porty se týkají procesorů, které postrádají MMU (tzv. Memory Management Unit. Ve světě Intelovských procesorů je jednotka MMU součástí procesorů počínaje zavedením procesoru 386.) I když tyto Linuxové systémy jsou mutlitaskingové, nedisponují mechanismem ochrany paměti (takže každý proces může způsobit pád jiného procesu nebo i systému) a některá volání jádra týkající se vytváření procesů nejsou k dispozici. A protože postrádají mechanismus ochrany paměti (a tím vlastně postrádají většinu bezpečnosti) znamená to také, že tyto systémy se nehodí pro víceuživatelské systémy.

Jsou zejména čtyři důležité nové řady embedded procesorů, které Linux ve verzi 2.6 podporuje. První je novější řada procesorů Motorola m68k, tyto procesory jsou známy pod jmény Dragonball a ColdFire a jsou dostupné na systémech a zkušebních deskách, které vyrábí Motorola, Lineo, Arcturus a další. Většina uživatelů Linuxu tyto procesory zná, protože jimi jsou vybaveny např. systémy Palm Pilot (počínaje prvním modelem Palm 1000 až po Palm III). Bohužel se to zatím netýká podpory starších procesorů m68k bez MMU (jako byly např. procesory 68000 použité v ranných počítačích MacIntosh). Další nově podporované platformy zahrnují sérii H8/300 od Hitachi, (zatím se netýká H8S, ale podpora těchto procesorů možná bude brzy integrována) a dále procesoru NEC v850.

Jen stěží lze přehánět při zdůraznění významu této velké změny, kterou zahrnutí podpory systémů bez MMU do Linuxu 2.6 přináší. Všechny předchozí verze Linuxu nějakým způsobem vycházely, i když třeba nepřímo, z omezení, která byla za základu dána prvotním zaměřením Linuxu na platformu Intel 80386. Pokusíme-li se odhadnout další možnosti vývoje v tomto směru, je možné, že i další starší hardware by časem mohl být podporován (opravdu, existují projekty, které k tomu směřují) a řada dalších vzrušujících možností se tím pootevírá. Na rozdíl od práce na moderních embedded systémech, které jsou stále v produkci, podpora starších procesorů bude z velké části ležet spíše na hobistech a zřejmě nebude mít pro běžné koncové uživatele přiliš užitečná (a možná také tím pádem nebude dost důležitá proto, aby byla časem do oficiálních jader Linuxu zahrnuta).

Ačkoliv to technicky vzato nesouvisí se sloučením uClinuxu s oficiálním Linuxovým jádrem (protože obsahuje MMU), současné verze Linuxu také obsahují podporu pro procesory ETRAX CRIS ("Code Reduced Instruction Set") od Axis Communications. (Konkrétně jsou podporovány procesory ETRAX 100LX a novější). Podpora těchto procesorů se objevila teprve později během vývoje 2.4 - nebyla obsažená v původním jádře 2.4.0 - a proto také stojí za zmínku. Jedná se o embedded procesory primárně určené pro použití se síťovým hardware. ETRAX100 je příbuzný procesor, který už ale neobsahuje MMU a je podporován v rámci uClinuxu - ovšem podpora pro tento procesor zatím nebyla do hlavní větve Linuxu integrována.

Podpora procesorů Opteron, 64-bitový Linux pro koncové uživatele

Další procesor, jehož podpora byla do jádra začleněna během vývoje jader 2.4.x a která si zaslouží zvláštní zmínku, je procesor AMD Opteron (architektura AMD64). Jedná se o nový procesor, který je zpětně kompatibilní s existujícími procesory Intelu (a jejich klony) a kterému se možná dostane i podpory ze strany Microsoftu. Zda se standardem pro 64-bitová řešení určená pro běžné koncové uživatele stane tento procesor, nebo procesory Itanium od Intelu se teprve uvidí.

Zatímco už pozdější verze jader 2.4 byly schopny běhu na těchto procesorech, byla zde omezení, která dosud bránila nasazení pro běžné použití. Nejvážnějším omezením pro většinu high-end uživatelů bylo to, že aplikace byly limitovány maximem 512 MB paměti, která byla pro jednu instanci (proces) dostupná. Navíc byla vylepšena podpora pro spouštění stávajících 32-bitových aplikací (platformy x86).

Podpora subarchitektur

Kromě několika nových architektur procesorů, které Linux 2.6 podporuje, nová verze Linuxu zavádí koncept tzv. "subarchitektur". Dříve Linux provázela domněnka, že jednotlivé typy procesorů a typy hardware jsou spolu provázané. Tedy např. že procesory i386 jsou používané pouze v systémech odvozených z architektury PC/AT. V Linuxu 2.4 už to tak docela neplatilo, v rámci architektury i386 byly podporovány systémy Visual Workstation od SGI - platforma vybavená Intelovskými procesory poněkud odlišná od klasické architektury PC/AT. (A ve skutečnosti toto nepsané pravidlo bylo porušeno již dříve v případě jiných architektur. Například v rámci podpory platformy m68k byly podporovány systémy Macintosh či Amiga a další.) Velká změna v Linuxu 2.6 se týká toho, že tento koncept byl standardizován, takže všechny architektury se s tímto vyrovnávají podobným (a rozumnějším) způsobem, který dovoluje jasněji oddělit jen ty komponenty, který skutečně musejí být odděleny.

S touto standardizací přibývají dvě nové platformy v rámci architektury i386. Tou první je Voyager od NCR. Jedná se o SMP systémy (vyvinutý před nyní standardní Intelovská MP specifikací), které podpodrují procesory 486-686 v konfiguracích až do 32 procesorů v systému. Skutečný počet prodaných systémů této architektury je relativně malý a ne všechny konfigurace jsou doposud podporovány. Druhou platformou jsou o něco více rozšířené systémy PC-9800, které vyvíjel NEC a které ještě relativně nedávno byly dominující platformou PC v Japonsku. První systémy PC-9800 byly vybaveny procesory 8086, s postupným vývojem platformy byly vybavovány procesory Pentium a podporovaly SMP (samozřejmě, podpora SMP pod Linuxem je dostupná pro procesory i386 a vyšší). Ačkoliv se to v USA moc neví, produkty Microsoftu až po Windows 95 byly portovány pro tuto platformu. Tato platforma byla nakonec výrobcem oficiálně opuštěna ve prospěch více standardních PC.

Formálním zavedením podpory Linuxu pro tyto "lehce odlišné" typy hardware se usnadní portace operačního systému na jiné systémy, jako jsou např. dedikované úložné systémy nebo další komponenty, které používají procesory dominující průmyslovému trhu. Nicméně toto dělení na subarchitektury by nemělo zajít přiliš daleko. Důvod, proč byly tyto subarchitektury vyděleny byl ten, že nízkoúrovňové komponenty systému (jako je např. routování IRQ) se větší nebo menší měrou liší. To je jiná situace, než např. spouštění Linuxu na konzoli X-Box, kde spíše jen ovladače hardware a několik málo odchylek znamená, že se nejedná o zcela standardní i386 systém. Podpora X-Boxu by tedy nebyla považována za subarchitekturu.

Architekura NUMA a "velké železo"

Kromě již zmíněné podpory nových typů hardware nastupující verze Linuxového jádra také přináší vlastnosti, které jej učiní přijatelnějším pro nasazení na větších a větších serverech (některé užívající procesory odvozené od rodiny i386, ale i jiné). Protože podpora těchto vlastností je v Linuxu zcela nová, zůstává zde velký prostor pro optimalizace. V této oblasti se Linux rychle vyvíjí a dozrává a my můžeme očekávat, že Linux se na tomoto poli relativně brzy stane silným hráčem.

Jednou z největších změn v této oblasti je podpora serverů vystavěných na architektuře NUMA. Architektura NUMA (neboli "Non-Uniform Memory Access") je ve světě víceprocesorových systémů technologie o stupeň dále za SMP systémy a je krokem směrem k větší efektivitě na systémech, které mají velké množství procesorů. Architektura SMP systémů byla navržena s některými nedostatky a omezeními, která platí i pro jednoprocesorové systémy. Jedním z nejvýraznějších důsledků je to, že design SMP je založen na jedné množině (poolu) paměti, která je stejnou měrou přístupná (sdílena) všemi procesory. Na systémech s velkým počtem procesorů pak dochází ke kolizím ohledně přístupu k paměti přes jedinou sběrnici, která je úzkým hrdlem a brání vyššímu výkonu. Servery NUMA to řeší tak, že určité procesory mají blíže k některým paměťovým jednotkám než k ostatním. Jednoduchý způsob, jak si to představit (a technicky vzato ne zcela nesprávný), je představit si, že máte systém s rozšiřujícím kartami, které obsahují procesory, paměť a třeba i další komponenty (které realiují I/O apod.). Těchto karet je v systému hodně a i když komunikují mezi sebou navzájem, je jasné, že nejrychleji komunikují s lokální pamětí (pamětí na kartě). V řadě rysů je architektura NUMA podobná velmi těsně provázanému clusteru. (Pozn. red.: Nevím, jestli je to z překladu dostatečně patrné, takže ještě jednou pro doplnění. Servery NUMA v praxi fungují tak, že základní jednotkou je uzel, který je vybaven jedním nebo několika málo procesory, lokální pammětí a případně úložným prostorem. Dohromady více uzlů spojených technologií umožňujících vysokorychlostní komunikaci a velkou propustnost tvoří NUMA server, kdy jednotlivé uzly moho přistupovat ke zdrojům jiných uzlů. Na rozdíl od klasických clusterů uzly v tomto případě paměť sdílejí společně. Nicméně na rozdíl od SMP, jednotlivé uzly zde nejsou napojeny na jedinou sběrnici, ale jsou propojeny navzájem a tvoří tak síť - i když nemusí nutně spojen úplně každý uzel s každým. Latence přístupu ke zdrojům cizího uzlu pak s přidáváním dalších uzlů téměř neroste anebo roste minimálně).

Aby bylo možné do jádra Linuxu zahrnout podporu architektury NUMA, bylo třeba tomu přizpůsobit řadu věcí, které by umožnily efektivní fungování tohoto modelu. V prvé řadě bylo vytvořeno API popisující interní topologii tak, aby bylo možné specifikovat vztahy mezi jednotlivých procesorů, paměťových jednotek k I/O zařízením a mezi sebou navzájem. Plánovač procesů Linuxu je nyní schopen s těmito vztahy pracovat a umí optimalizovat plánování procesů takovým způsobem, aby bylo zajištěno co nejlepší využití lokálních zdrojů. Navíc, řada NUMA serverů je postavena tak, že společný adresní prostor paměti obsahuje díry (mezi jednotlivými uzly), tedy není spojitý. Nové linuxové jádro se i s tímto umí vyrovnat. Je zde řada dalších vnitřních změn, které byly udělány proto, aby byla umožněna podpora těchto high-end systémů a tato oblast je rozhodně oblastí výrazného růstu jádra. Během příštího roku můžeme nepochybně očekávat řadu vylepšení a zefektivnění v podpoře těchto high-end systémů.

Vnitřnosti Linuxu

Kromě pouhého rozšiřování podpory pro další a další typy hardware Linux 2.6 nabízí vylepšení podpory stávajících platforem, tak jak se postupně vylepšují jejich hardwarové možnosti. To se zahrnuje optimalizace specifické pro procesory Crusoe z dílny Transmety, Intelovských procesorů Pentium 4 Xeon, Pentium 3-M, Pentium 4-M a mobilních procesorů od AMD. Nové verze Linuxu jsou také schopny se vyrovnat s chybou některých Athlonů. A zatímco většina uživatelů asi následující chybu nezažila, byl odstraněn problém, kdy systémy vybavené více než 16 procesory občas při bootu havarovaly.

Hyperthreading

I když podpora technologie "hyperthreadingu" na procesorech Intel Pentium 4 byla zavedena počínaje jádrem 2.4.17, je zde uvedena, protože se jedná o vlastnost, která v jádrech 2.4 původně nebyla a také proto, že zde od doby zavedení této podpory došlo k podstatným změnám. Technologie hyperthreadingu umožňuje jednomu procesoru vystupovat navenek z pohledu operačního systému jako procesory dva (nebo více). Co je na podpoře této technologie úžasné je skutečnost, že Linux byl prvním operačním systémem na trhu, který tuto technologii podporoval, přestože ony procesory byly uvedeny na trh o rok dříve. Proslýchá se totiž, že v Microsoftu neměli jasno v tom, zda by měli u procesorů s hyperthreadingem požadovat licenční poplatky jako za jeden nebo za dva procesory. Otevřený model Linuxu (a neexistence licencí vázaných na CPU) tak umožnily Linuxu stát se prvním OS, který hyperthreading podporoval. Samozřejmě, jeden procesor, který se tváří jako dva procesory zůstává stále jen jedním procesorem a nárůst výkonu není zase tak dramatický.

Jedna z věcí, která je v 2.5 nová je to, že plánovač procesů a další komponenty systému byly optimalizovány tak, aby hyperthreading byl skutečně smysluplně využíván. V jádrech 2.4 tomu tak vždy nebylo a existovaly scénáře, kdy výkon systému při určitém druhu zátěže byl horší, než s vypnutým hyperthreadingem.

Velikost rozhoduje - lepší škálovatelnost

Kromě podpory architektury NUMA Linux 2.6 nabízí i řadu dalších změn pro Intelovské servery. Především se jedná o plnou podporu mechanismu Intelovského PAE ("Physical Address Extension"), který umožňuje novějším 32-bitovým x86 systémům využívat až 64GB paměti RAM, ovšem v režimu stránkování (paged mode). Navíc, díky vylepšené podpoře APIC a dalším změnám se významně zlepšilo rozkládání IRQ mezi procesory na víceprocesorových systémech.

V řadě dalších ohledů se zvýšily interní omezení jádra všude tam, kde to bylo možné. Počet unikátních uživatelů a skupin v Linuxovém systému se zvýšil z 65 tisíc na 4 miliardy (16-bitů na 32-bitů). To se uplatní na velkých souborových a autentizačních serverech, kde dříve bylo možné na limity narazit. Podobně, nejvyšší číslo PID (Process ID) dříve bylo 32000, nyní je hranicí 1 miliarda. Tato změna, společně s dalšími zefektivněními v manipulaci s čísly PID pomůže zrychlit startování aplikací na velmi vytížených nebo velmi dlouho běžících systémech. Ačkoliv se nezvýšil maximální počet otevřených souborů v systému, jádro Linux 2.6 už nevyžaduje, abyste předem limit nastavovali; počet se podle potřeby automaticky zvýší. A konečně, Linux 2.5 bude zahrnovat vylepšenou podporu 64-bitového přístupu k blokovým zařízením, která jej umožňují, i na 32-bitových platformách jako je i386. To umožňuje používání souborových systémů velikosti až 2TB.

Interaktivita jádra a odezvy

Jednou z věcí, na kterou se zaměřovala pozornost v rámci Linuxu 2.6, bylo učinit systém více použitelný (rozuměj s rychlejší odezvou) pro desktopové uživatele a pro další druhy použití, které vyžadují značnou kontrolu nad časováním událostí. Každý z těchto druhů nasazení má velmi rozdílné požadavky, ale i tak se udála řada změn, ze kterých lze v obou případech těžit.

Výrazná změna přítomná v jádrech 2.6, která by neměla být podceněna, je to, že jádro je nyní preemptivní. Ve všech předchozích verzích Linuxu v případech, kdy OS prováděl nějakou činnost uvnitř jádra, nemohl být v této činnosti přerušen (a v rámci víceprocesorových systémů to platilo pro jednotlivé CPU). Počínaje Linuxem 2.6, jádro samo může být přerušeno uprostřed činnosti, takže uživatelské aplikace mají šanci běžet i tehdy, vykonává-li jádro něco komplikovaného. Abychom se vyhnuli možnosti vzniku chyb souběhu (race-condition), jádro má některé své části kódu uzamčeny tak, aby nemohly být v běhu přerušeny. Primárním důsledkem této změny je (např. pro uživatele desktopu) lepší interaktivita systému, takže systém se bude jevit rychlejší na vstupu uživatele.

Další změna, která pomůže udělat z Linuxu lépe reagující systém (rozumněno s rychlejší odezvou) v případě aplikací, které to budou podporovat, je zařazení podpory nových tzv. "futexů" (neboli "Fast User-Space Mutexes"). Futexy představují způsob, jak několik procesů nebo vláken může serializovat události tak, aby si zbytečně navzájem nekolidovaly (a vyhnuly se tak možným problémům při souběhu, neboli "race condition" - jedná se v podstatě o jakési softwarové zámky). Narozdíl od tradičních mutexových operací, které většina knihoven podporujících vlákna implementují, futexy jsou částečně realizovány v jádře a také podporují nastavení priorit pro přístup aplikací nebo vláken k prostředkům, o které soupeří a umožnit tak prioritní přístup k prostředkům aplikacím nebo vláknům majícím vyšší prioritu přístupu. Možnost říci, že jedna čekající úloha je důležitější než ostatní, může přinést větší responsivitu v kritických chvílích běhu aplikace.

I/O subsystém Linuxu také prošel výraznými změnami, které dovolují vyšší responsivitu během řady různých typů zátěže. Tato změna zahrnuje kompletní přepsání subsystému časování I/O operací, tedy části jádra, která rozhoduje o tom, který procesy a kdy budou číst ze zařízení. Nově napsaná vrstva je schopná se lépe postarat o to, aby žádný proces nezůstal příliš dlouho ve stádiu čekání na I/O a přitom byly zachovány dřívější optimalizace, které zajišťují, aby např. čtení probíhalo co možná nejefektivnějším způsobem pro hardware.

Zatímco vývojáři aplikací pro běh v reálném čase (RTOS) tyto změny jistě uvítají, Linuxoví jádro 2.6 nebude zcela splňovat podmínky pro real-time. Přesto, tyto a další změny představují základ k tomu, aby časem bylo možné vyvinout RTOS verzi Linuxu. Pro uživatele, kteří to potřebují, existuje sada záplat, které tuto funkčnost mohou poskytnout (zatím ještě nebyly do oficálního jádra Linux schváleny a zahrnuty).

Subsystém modulů - ovladače zařízení

Subsystém modulů je další oblastí, kde se udála řada změn s příchodem Linuxu 2.6. Většina kódu byla přepsána s cílem zvýšení stability a zprůhlednění systému. Kromě těchto zjevných změn se udála spousta změn tak říkajíc "pod kapotou", týkajících se toho, jak jádro moduly vnímá a jak s nimi pracuje.

První nápadnou změnou ovladačů v Linuxu 2.6 (i když mající nejmenší vliv na funkci) je změna koncovky souborů. Namísto koncovky ".o" (obvyklá koncovka pro binární objektové soubory, vytvářené v průběhu kompilace před fází linkování, které z nich udělá spustitelnou aplikaci), nová koncovka je ".ko" ("kernel object"). Jedná se v podstatě o kosmetickou změnu, která má naznačit, že se jedná o jaderné moduly a nikoliv o běžné objektové soubory, vytvářené jako mezikrok v průběhu kompilace.

Jednoznačně nekosmetickou změnu znamená práce věnovaná na odstranění možností vzniku chyb souběhu (race conditions), které byly po dlouhou dobu v kódu jádra obsaženy. Jádro problému spočívá v tom, že bylo možné, aby zařízení začalo používat modul, který měl být uvolněn, až potom co modul zjistil, že jej nikdo nepoužívá. Nový způsob psaní modulů by měl možnost vzniku takové situace výrazně omezit. Nyní je také možné jednoduše zakázat uvolnění již natažených modulů z jádra.

Větší průhlednost je dalším přínosem nového subsystému jaderných modulů. Téměř ve všech předchozích verzích jádra Linuxu musely být moduly samy o sobě dostatečně "chytré" na to, aby detekovaly zařízení, která podporují metodou skenování sběrnic (jako jsou PCI, ISA PnP, a PC Card). V Linuxu 2.6 je většina této funkčnosti standardizovaná a zpřístupněna zvenčí, takže nyní bude snazší pro externí programy a zavaděče modulů vidět, která zařízení bude který modul podporovat. To dovolí různým nástrojům pro správu hardware - jako je třeba kudzu z dílny Red Hatu - dělat inteligentní rozhodnutí stran hardware i v případech, kdy daná zařízení se kterými pracují přímo neznají. A v případech, kdy víte lépe než daná verze ovladače, že by s určitým zařízením měl fungovat, můžete jej donutit s ním zkusit pracovat (pomocí rozhraní v novém souborovém systému sys, ke kterému se dostaneme později) a to i přesto, že se ovladač domnívá, že dané zařízení nepodporuje.

Odkazy, pokračování příště

Autorem článku je Joseph Pranevich, pokud byste chtěli komunikovat přímo s autorem, zastihnete jej na adrese jpranevich <at> kniggit.net. A samozřejmě, nenechte si ujít druhou část...

Další části seriálu:

Autor: David Häring, 21. 07. 2003, 02:00
Sekce Aktuálně, Komentářů: 27
Průměrné hodnocení: 0,05

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




--

MZpmsxXydeDnskUQe,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
13. 02. 2012 06:30
QnjStnatXO












--

WaLCUHyvTHqiZHYo,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
10. 02. 2012 11:09
jlCTXMpFsgC












--

EPPlhWEGmIjLoDYN,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
08. 02. 2012 13:18
ZBbytlCMJcpNR












--

YsVNpsvkDSaOOGrfa,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
02. 02. 2012 10:46
EjFUlEUPGQrlCeKAm












--

GkYhpekVLKLRaAhDqqX,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
31. 01. 2012 04:11
YKMhhEAJJZcA












--

apwFDBMR,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
26. 01. 2012 16:44
liCLlKNItLWX












--

gdgFCodEt,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
26. 01. 2012 06:59
BpHtwsiWTdmLcTdAkhG












--

yhEPWXSSpPWSNcrvgaz,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
26. 01. 2012 06:08
MOTBqWDAYUoVPP












--

Piere,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
23. 07. 2003 11:03
Diky, dobry clanek.












--

Yeti,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
23. 07. 2003 10:43
Re: 2.6 nebo 2.5












--

David Häring,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
22. 07. 2003 13:58
Re: 2.6 nebo 2.5












--

Vráana,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
22. 07. 2003 12:37
2.6 nebo 2.5?












--

Yeti,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
22. 07. 2003 10:10
Re: race condition -- stret procesu












--

Josef Varilek,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
22. 07. 2003 09:11
Race Condition












--

Sutr,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 22:04
Re: Kompilce 2.6 ...












--

Pantagriel,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 15:22
Kompilace 2.6...












--

fikus,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 14:29
freax












--

MH,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 13:09
Zmena subjektivniho pocitu












--

David Häring,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 12:07
Re: hyperthreading












--

David Häring,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 11:54
Re: race condition












--

traktor2,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 11:26
vyjádřit změnu subjektivního pocitu uživatele?












--

Cichas,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 11:13
Hyperthreading












--

Yeti,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 10:54
Re: race condition












--

Yeti,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 10:51
Re: subjektivní pocit












--

look,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 10:48
Jen dotaz












--

Pichi,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 10:24
Re: dobrej clanek












--

traktor2,
Deprecated: Function ereg_replace() is deprecated in /home/www.linuxzone.cz/modules/detail_clanku-komentare.phtml on line 198
21. 07. 2003 07:32
dobrej clanek















PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama