Linux (jádro)

Z Multimediaexpo.cz


Linuxové jádro (Linux kernel) je v informatice označení pro jádro operačního systému Linux. Patří mezi unixové systémy a je vyvíjeno pod licencí GPLv2 a kompatibilními spolu s výjimkou, která umožňuje jeho používání společně s komerčním software.[1] První verzi jádra naprogramoval Linus Torvalds v roce 1991 a dodnes je nejvyšší neformální a respektovanou autoritou jeho vývoje. Linus poskytl zdrojový kód veřejně jako svobodný software a díky tomu se následně k vývoji přidaly tisíce programátorů z celého světa. V současné době je Linux firmou Microsoft považován za důležitého konkurenta.[2]

Obsah

Název Linux

Název Linux původně označoval jen samotné jádro, ale velmi brzy byl název zevšeobecněn a vztažen na celý systém, který se skládá z jádra operačního systému, knihoven, pomocných nástrojů a dalšího aplikačního software a je souhrnně označován jako linuxová distribuce. Distribuce odvozené z Debianu používají název GNU/Linux, se kterým však sám Linus nesouhlasí, protože GNU nemá s vývojem jádra nic společného a GNU nástroje netvoří již dlouho ani významnou část distribuce (přestože právě GNU nástroje byly prvními, které byly v Linuxu použity).



Vývoj jádra

Jádro bylo původně napsáno pro procesory architektury i386, ale postupně bylo portováno na mnoho dalších platforem. Je skoro celé napsáno v jazyce C, využívá některá rozšíření překladače GCC a obsahuje úseky kódu jazyce symbolických adres (nesprávně assembler) v syntaxi AT&T.

Do linuxového jádra přispívá téměř 1000 vývojářů ze 100 různých firem z celého světa. Od roku 2005 se počet vývojářů ztrojnásobil. 70–95 % vývojářů je za svoji práci placeno, čili neplatí mýtus, že je jádro vyvíjeno jen dobrovolníky. Největšími přispěvateli do jádra jsou společnosti Red Hat (11,2 % změn), Novell (8,9 % změn), IBM (8,3 % změn) a následují Oracle, MontaVista a Cisco. Do jádra se denně průměrně doplní 3621 řádků kódu a nová verze vychází zhruba jednou za 2,7 měsíce.[3]

Historie

Linus Torvalds začal vyvíjet jádro Linuxu v roce 1991 jako svůj koníček. Byl tehdy studentem finské univerzity v Helsinkách v oboru informatiky (součástí studia jsou unixové operační systémy). Vlastnil počítač kompatibilní s IBM PC s procesorem i386, který jako první na této počítačové platformě umožňoval naprogramovat skutečný víceúlohový a víceuživatelský operační systém. V této době však neexistoval pro IBM PC volně dostupný unixový operační systém a Linusovi se nechtělo za komerční platit (MINIX, XENIX, SCO Unix). Tyto skutečnosti spolu s faktem, že byl výborný programátor, vedly k zahájení prací na tom, co bylo později označeno jako „Linux“.

Mezi důvody pro vznik právě unixového systému patřil fakt, že Unix je systém, který upřednostňuje jednoduchost. Linus byl dále inspirován MINIXem od Andrewa Tanenbauma, který napsal svoji verzi unixového systému jako doprovodný projekt ke své výuce a knihám o operačních systémech. Na rozdíl od něj však Linus nevyužil svůj projekt komerčně, protože preferoval otevřený vývoj (viz open source software).

Vývoj Linuxu začal jako emulátor terminálu napsaný v jazyce symbolických adres architektury IA-32 (tj. i386 a novější) a v programovacím jazyce C, který mohl být po překladu do binární podoby a nabootován z diskety, takže mohl běžet mimo původní operační systém. V emulátoru terminálu běžela dvě vlákna: jedno pro odesílání znaků na sériový port a druhé pro příjem. Když pak chtěl Linus číst nebo zapisovat data na disk, rozšířil tento terminál, který uměl přepínat úlohy, o ovladač souborového systému. Terminál se pak pomalu začal rozvíjet v unixové jádro operačního systému (kompatibilní se standardem POSIX).

První verze linuxového jádra (0.01) byla na Internetu zveřejněna 17. září 1991.[4][5] Linus Torvalds k němu do usenetové skupiny comp.os.minix napsal:


Pracuji na (svobodném) operačním systému (jako koníček, nebude to velké a profesionální jako gnu) pro klony 386(486) AT.


V jádře 0.01 byla zahrnuta dostatečná infrastruktura pro spuštění unixového shellu bash. Původně bylo pro nastavení, kompilaci a instalaci Linuxu potřeba použít funkční systém MINIX. Též pro jeho zavaděč musel být použit jiný operační systém, ale brzy vznikly nezávislé zavaděče, z nichž nejznámější bylo LILO.

K Linusově překvapení byl o jeho nedokonalý systém velký zájem a záhy začal dostávat e-mailem další podněty, opravy a zdrojové kódy. Linus jádro dále vyvíjel a zároveň začal příspěvky ostatních do svého jádra začleňoval a upravené zdrojové kódy obratem zveřejňovat (další verze byla zveřejněna již v říjnu). Od té doby se na vývoji podílely tisíce vývojářů z celého světa. Model vývoje linuxového jádra a podobného softwaru byl později výstižně popsán v eseji Katedrála a tržiště (anglicky The Cathedral and the Bazaar) od Erica S. Raymonda.

Již velmi brzo předběhl Linux ve vývoji svůj vzor – MINIX. Zejména v počátcích byl při vývoji využíván Projekt GNU, který se již delší dobu zabýval myšlenkou vývoje volně dostupného unixového systému, avšak vlastní jádro operačního systému neměl. Z projektu GNU hned počátku Linux využil výše zmíněný GNU bash a další nástroje (základní unixové nástroje používané na příkazovém řádku, kompilátor GCC, později též GNU C Library a další). Sám Linux však nikdy nebyl součástí GNU, i když samotné jádro používá licenci GPLv2, která též pochází od GNU.

Linus je dodnes hlavou vývoje jádra, které je zveřejňováno na serveru kernel.org.[6] Sám vydává nové verze, přičemž některé starší verze jsou udržovány jinými lidmi. Kromě něj na vývoji spolupracují tisíce programátorů z celého světa.[7] Již delší dobu se dá říct, že vývoj jádra je z velké části placen firmami, jako je Red Hat, Intel, IBM a další.[8]

Název Linux

Linus Torvalds chtěl svůj systém pojmenovat Freax, slovo vzniklé zkombinováním anglického slova freak (případně free) a písmene x jako odkazu na Unix, protože Linux se mu zdálo příliš sebestředné. Když později své soubory nahrál na FTP server (ftp.funet.fi), administrátor serveru Ari Lemmke adresář se soubory nazval Linux, jelikož se mu jméno Freax nelíbilo.[9]

Časová osa

Verze

Číslování verzí

Verze jádra jsou (až na níže uvedenou výjimku) značeny trojicí číslic oddělenými tečkami např. 2.0.10, 2.2.23, 2.4.31 a z poslední řady 2.6.1. První dvě čísla označují tzv. vývojovou řadu neboli větev (2.0.x, 2.5.x, 2.6.x). Řady se sudým druhým číslem jsou stabilní, ostatní jsou nestabilní. Nestabilní řady přecházejí ve stabilní, které se vyvíjí paralelně. Například řada 2.3 přešla v 2.4, řada 2.5 přešla v 2.6 (ale 2.4 se stále vyvíjí). Některé vlastnosti z novějších řad se přenášejí i do starších – tomu se říká backport.

Mezi každou změnou číslice za druhou tečkou ve verzi přichází na řadu kandidáti novější verze.

Vezmeme-li v úvahu jádro 2.6.16, následníkem je 2.6.17. Jeho finálnímu uvolnění předchází vystavení balíků v kandidátské verzi 2.6.17-rc1, -rc2 atd. většinou v týdenních intervalech. Až poté, co se vývoj dostatečně ustabilní (v posledních -rc je změn méně a vetšinou jen záplatového typu), uvolní se finální verze, ve zmíněném případě to bude 2.6.17.

V nedávné době doznalo číslování drobných změn. Řada 2.6 je nyní vydávána s dalším (čtvrtým) podčíslem. Po uvolnění finální verze (2.6.17) se začne vyvíjet 2.6.18-rc1, -rc2 atd. Pokud se během vývoje objeví opravy kritických nebo bezpečnostních chyb, jsou zařazeny do podverze poslední stabilní verze (2.6.17.1, 2.6.17.2 atd.). Vývojové -rc verze totiž obsahují nové neotestované vlastnosti a proto většina uživatelů používá stabilní verze. Tyto opravné verze umožní uživateli mít stabilní jádro s posledními bezpečnostními bugfixy (opravami bugů).

Nemůžeme opomenout jádra vydávaná různými osobami. Přípona tvořená ze znaků jména, přezdívky či zkratky účelu je obvykle připojovaná na konec verze. Chceme-li použít real-time jádro, získáme aplikovatelný kód, který přidá do názvu -rt. Vývojáři nezřídka kdy používají jádro Andrew Mortona s příponou -mm, svého času bylo populární i -ac Alana Coxe.

Údržba

Linus Torvalds dohlíží pouze na změny týkající se poslední verze jádra. Správu starších verzí svěřil do rukou jiným programátorům:

Stabilní řada jádra Správce
2.0 David Weinehall
2.2 Marc-Christian Petersen (původně Alan Cox)
2.4 Willy Tarreau (původně Marcelo Tosatti)
2.6 Andrew Morton / Linus Torvalds

Architektura

Linuxové jádro je koncipováno jako jednolitá část kódu s podporou načítání externích modulů. Toho se využívá ke zvýšení stability, urychlení běhu jádra, zmenšení velikosti samotného jádra a zmenšení paměťových nároků.

Linuxové jádro obsahuje podporu opravdového multitaskingu (umožňuje provozovat více úloh/aplikací zároveň), virtuální paměti, správy paměti (správa paměti řízená jádrem, nikoli aplikacemi), sdílených knihoven, modulů, sdílených copy-on-write spustitelných souborů a nezávislých síťových vrstev podporujících mimo jiné síťové protokoly IPv4 a IPv6.

V současné době je Linux modulárním monolitickým jádrem. Ovladače zařízení typicky běží v ring 0 s plným přístupem k hardwaru, avšak některé se nacházejí v uživatelském prostoru. Na rozdíl od standardních monolitických jader lze ovladače zařízení jednoduše konfigurovat jako moduly a za běhu je zavádět či odstraňovat. Rovněž na rozdíl od typických monolitických jader lze na moduly za určitých podmínek uplatňovat preemptivní multitasking. Tato vlastnost byla přidána za účelem lepšího řízení hardwarových přerušení a pro zlepšení podpory symetrického multiprocessingu. Preemptivnost navíc snižuje latenci, a tak zkracuje dobu odezvy (reakce), což je důležité v real-time aplikacích a desktopových nasazeních.

Fakt, že Linux není mikrojádro, byl známým tématem flame waru mezi Linusem Torvaldsem a Andy Tanenbaumem v diskusní skupině comp.os.minix v roce 1992.[11][12]

Programovací jazyky

V současné době je z těch vyšších podporován pouze jazyk C. Existují však rozšíření umožňující programování součástí v jazyce C++. Tato skutečnost byla mnohokrát diskutována, nicméně s výsledkem takovým, že nelze podporu C++ v nativním jádře Linuxu očekávat ani v budoucnu.

Platformně závislé úseky vyžadovaly komunikaci s hardware na nižší úrovni, proto v podstromu architektur lehce narazíme na kód psaný základním strojovým jazykem – assemblerem.

Přenositelnost

Linux momentálně dokáže běžet na následujících počítačových platformách:

Kompletní seznam portů naleznete na Linux Ports.

Licencování

Jádro samotné je poskytování pod licencí GPL verze 2. Některé části mohou být pod licencí GPL v2 a novější (označováno jen jako "GPL"), případně i pod dalšími svobodnými licencemi.

Moduly (ovladače) mohou být tvořeny pod záštitou jedné z hned několika licencí: GPL, GPL v2, GPL s dalšími právy, duální BSD/GPL, duální MPL/GPL a konečně proprietární. Moduly s proprietární licencí jsou ale problematické – nelze je šířit v jednom celku s jádrem, vývojáři jádra se k nim většinou staví odmítavě a v některých případech mohou být nelegální (záleží na způsobu implementace).[13]

Maskot

Maskotem Linuxu je tučňák jménem Tux vytvořený Larry Ewingem v roce 1996. Existuje mnoho variant Tuxe, některé ve 3D. Maskotem je právě tučňák, protože Linus Torvalds podle svých slov „má rád tučňáky, toť vše.“ Jméno Tux prý znamená Torvaldsův UniX a už mu to zůstalo.[14]

Kernel panic

V prostředí OS Linux je „panic“ systémová chyba vyvolaná jádrem, která na rozdíl od chyb vyvolaných uživatelskými programy nevyhnutelně vede k zastavení práce počítače. Tento stav je možné vyvolat zavoláním funkce panic z hlavičkového souboru sys/system.h. Většinou je však vyvolán neošetřenou procesorovou výjimkou, jako například odkazováním se do neplatné části paměti. Tyto neošetřené výjimky jsou často důsledkem chyby v kódu jádra, případně ale také mohou indikovat hardwarové selhání, například paměti RAM nebo chyb v aritmetických funkcích procesoru.

Literatura

  • JELÍNEK, Lukáš. Jádro systému Linux, Kompletní průvodce programátora. [s.l.] : Computer Press, 2008. ISBN 978-80-251-2084-2. S. 688.  

Reference

  1. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=COPYING;hb=HEAD – licence jádra Linuxu
  2. MONTALBANO, Elizabeth. Microsoft acknowledges Linux threat to Windows client. Computerworld [online]. 2009-08-04 [cit. 2009-08-07]. Dostupné online.  
  3. EISCHMANN, Jiří. Ze světa tučňáků a open source: Kdo tvoří Linux? [online]. Živě.cz, 2008-04-16, [cit. 2008-04-30]. Dostupné online. (český) 
  4. http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI
  5. ftp://ftp.muni.cz/pub/linux/kernel/Historic/linux-0.01.tar.bz2 – první jádro Linuxu
  6. http://kernel.org – sever pro zveřejňování zdrojových kódů jádra Linuxu
  7. http://lwn.net/Articles/318699/ – How patches get into the mainline
  8. http://lwn.net/Articles/264440/ – 2.6.24 - some statistics
  9. MOODY, Glyn. Rebel Code: Linux and the Open Source Revolution. [s.l.] : Perseus Books Group, 2001. ISBN 0738203331. (anglicky) 
  10. http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-32-872271.html?view=print What's new in Linux 2.6.32
  11. http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html – Linus vs Tanenbaum
  12. http://www.google.com/groups?threadm=12595%40star.cs.vu.nl – Linus vs Tanenbaum
  13. JELÍNEK, Lukáš. Jádro systému Linux – Kompletní průvodce programátora. [s.l.] : Computer Press, 2008. ISBN 9788025120842. (česky) 
  14. http://www.sjbaker.org/tux/ – tučňák Tux

Externí odkazy