Přejeme Vám krásné svátky a 52 týdnů pohody a štěstí v roce 2025 !
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
- duben 1991 – tehdy 21letý Linus Torvalds začíná pracovat na jednoduchých funkcích operačního systému
- 0.0.1 – září 1991 (10 239 řádek kódu)
- 0.11 – prosinec 1991 – první verze, pod kterou lze zkompilovat Linux 0.11
- 0.95 – březen 1992 – první verze schopná spuštění X Window System
- 1.0.0 – 14. března 1994 (176 250 řádek kódu)
- 1.2.0 – 7. března 1995 (310 950 řádek kódu)
- 2.0.0 – 9. června 1996 (777 956 řádek kódu)
- 2.2.0 – 25. ledna 1999 (1 800 847 řádek kódu)
- 2.4.0 – 4. ledna 2001 (3 377 902 řádek kódu)
- 2.6.0 – 17. prosince 2003 (5 929 913 řádek kódu)
- 2.6.16.11 – 24. dubna 2006 (6 981 110 řádek kódu)
- 2.6.21 – 25. dubna 2007 (7 522 286 řádek kódu)
- 2.6.25 – 16. dubna 2008 (9 232 484 řádek kódu)
- 2.6.32 – 3. prosince 2009 (12 606 910 řádek kódu[10])
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:
- ARM
- Acorn: Archimedes, A5000 a série RiscPC
- StrongARM, Intel XScale apod.
- Hewlett Packard iPAQ
- Nintendo DS (projekt DS Linux)
- Apple iPod (IPodLinux projekt iPodLinux)
- Atmel AVR32
- Axis Communications CRIS
- FujitsuFR-V
- Hewlett Packard Alpha
- Hewlett Packard PA-RISC
- Hitachi: SuperH (SEGA Dreamcast), H8/300
- IBM S/390 (31bitové)
- IBM zSeries a System z9 mainframe (64bitové)
- Intel 80386 a vyšší (i386): IBM PC a kompatibilní s procesory:
- 80386, 80486, a variantami od AMD, Cyrix, Texas Instruments a IBM
- celá série Pentium
- AMD 5x86, K5, K6, Athlon (všechny 32bitové verze), Duron
- AMD64: AMD 64bitové procesory (dříve známá jako x86-64)
- Cyrix 5x86, 6x86 (M1), 6x86MX a série MediaGX (National/AMD Geode)
- VIA Technologies VIA C3 a novější
- podpora pro procesory Intel 8086, 8088, 80186, 80188 a 80286 je ve vývoji (viz projekt ELKS)
- Microsoft Xbox (procesor Pentium III) (viz Xbox Linux)
- SGI Visual Workstation (procesor Pentium II/III s čipsetem SGI)
- Intel IA-64
- MIPS
- Silicon Graphics, Inc.
- Cobalt Qube, Cobalt Raq
- Sony PlayStation 2 (viz PS2 Linux)
- DECstation
- některé další
- Motorola 68020 a vyšší:
- NEC v850e
- Renesas M32R
- PowerPC a IBM POWER:
- většina novějších počítačů Apple (všechny Power Macintoshe používající PCI, omezená podpora pro starší NuBus Power Mac)
- klony PCI Power Mac pod značkami Power Computing, UMAX a Motorola
- Amigas upgradované „Power-UP“ kartou (jako Blizzard nebo CyberStorm)
- systémy IBM RS/6000, iSeries a pSeries
- deskyPegasos I a II
- některé embedded PowerPC platformy
- SPARC a UltraSparc: Sun série 4, pracovní stanice a servery SPARCstation/SPARCserver, Ultra, Blade a Fire, stejně jako kolny od výrobce Tatung a další
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
- ↑ http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=COPYING;hb=HEAD – licence jádra Linuxu
- ↑ MONTALBANO, Elizabeth. Microsoft acknowledges Linux threat to Windows client. Computerworld [online]. 2009-08-04 [cit. 2009-08-07]. Dostupné online.
- ↑ 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ý)
- ↑ http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI
- ↑ ftp://ftp.muni.cz/pub/linux/kernel/Historic/linux-0.01.tar.bz2 – první jádro Linuxu
- ↑ http://kernel.org – sever pro zveřejňování zdrojových kódů jádra Linuxu
- ↑ http://lwn.net/Articles/318699/ – How patches get into the mainline
- ↑ http://lwn.net/Articles/264440/ – 2.6.24 - some statistics
- ↑ MOODY, Glyn. Rebel Code: Linux and the Open Source Revolution. [s.l.] : Perseus Books Group, 2001. ISBN 0738203331. (anglicky)
- ↑ 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
- ↑ http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html – Linus vs Tanenbaum
- ↑ http://www.google.com/groups?threadm=12595%40star.cs.vu.nl – Linus vs Tanenbaum
- ↑ JELÍNEK, Lukáš. Jádro systému Linux – Kompletní průvodce programátora. [s.l.] : Computer Press, 2008. ISBN 9788025120842. (česky)
- ↑ http://www.sjbaker.org/tux/ – tučňák Tux
Externí odkazy
- http://www.linuxexpres.cz/praxe/vyvoj-jadra – popis vývoje jádra (17 dílů)
- http://www.abclinuxu.cz/clanky/jaderne-noviny – Jaderné noviny (překlad seriálu Kernel Traffic a článků ze stránek http://LWN.net a http://KernelTrap.org)
- http://www.linux-faqs.org – český popis nastavení linuxového jádra při překladu
- http://www.kernelnewbies.org/LinuxChanges – srozumitelný popis změn (anglicky)
- http://www.kernel.org – hlavní server se zdrojovými kódy linuxového jádra (anglicky)
- http://www.makelinux.net/kernel_map – interaktivní mapa linuxového jádra (anglicky)
Náklady na energie a provoz naší encyklopedie prudce vzrostly. Potřebujeme vaši podporu... Kolik ?? To je na Vás. Náš FIO účet — 2500575897 / 2010 |
---|
Informace o článku.
Článek je převzat z Wikipedie, otevřené encyklopedie, do které přispívají dobrovolníci z celého světa. |