Ядро Linux
- Эта статья о ядре для операционных систем. О группе операционных систем, которые используют это ядро, называемых «Linux», см. в статье Linux
| Ядро Linux | |||
|---|---|---|---|
| | |||
| | |||
| Тип | Ядро ОС | ||
| Автор | Линус Торвальдс[2] | ||
| Разработчики | Линус Торвальдс, многочисленные разработчики по всему миру | ||
| Написана на | C | ||
| Операционные системы | Linux, встраиваемые | ||
| Первый выпуск | 25 августа 1991 | ||
| Аппаратные платформы | ARM architecture, AVR, Blackfin[вд], DEC Alpha, ETRAX CRIS[вд], Itanium, MIPS, PA-RISC, PowerPC, SPARC, SuperH, TILE64[вд], Unicore[вд], Xtensa[вд], Motorola 680x0, IBM System/390, X86, x86-64 и z/Architecture[вд] | ||
| Последняя версия | 2.6.37.2 (24 февраля 2011) | ||
| Кандидат в релизы | |||
| Репозиторий | git.kernel.org/pub/scm/l… | ||
| |||
| Лицензия | GNU GPL 2 с примесями | ||
| Сайт | kernel.org | ||
Linux (/ˈlɪnʊks/[3]) — ядро операционной системы, соответствующее стандартам POSIX. Разработка была начата финским студентом Линусом Торвальдсом в 1991 году.
В основном код написан на Си с некоторыми расширениями gcc и на ассемблере (с использованием AT&T-синтаксиса GNU Assembler).
Распространяется как свободное программное обеспечение на условиях GNU General Public License, кроме несвободных элементов, особенно драйверов, которые используют прошивки, распостраняемые под различными лицензиями[4].
Торговая марка Linux зарегистрирована на Линуса Торвальдса.
История
Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenet comp.os.minix следующего содержания[5]:
Привет всем, кто использует миникс — Я делаю (свободную) операционную систему (всего лишь хобби, не будет большой и профессиональной как gnu) для клонов 386 (486) AT…
Оригинальный текст (англ.)Hello everybody out there using minix -I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.
К тому времени GNU уже создал множество составляющих для свободной операционной системы, но её ядро GNU Hurd ещё не было готово. Поэтому пустующее место ядра для свободной ОС занял Linux и, несмотря на ограниченную функциональность ранних версий, привлёк к себе множество разработчиков и пользователей.
«Linux», разработка которого была начата Торвальдсом — лишь небольшая часть многих из использующих его систем, которые обычно тоже называют «Linux». Это иногда приводит к путанице, и те из них, которые используют системные библиотеки (например, GNU C Library) и другие программы Проекта GNU, называют также «GNU/Linux».[6] О различных комбинациях свободных компонентов в операционных системах см. Операционные системы на основе свободного ПО.
Сейчас семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 0,93 %[7]. На рынке веб-серверов доля Linux порядка 65 %[8]. По данным Top500, Linux используется в качестве операционной системы на 91 % самых мощных суперкомпьютеров планеты[9].
Хронология
- Апрель 1991 — 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
- 25 августа 1991 — Линус поместил следующее сообщение[5]:
От: torvalds@klaava.Helsinki.Fi (Линус Бенедикт Торвальдс)
Новостная группа: comp.os.minix
Тема: Небольшой опрос о моей новой операционной системе
Message-ID:<1991Aug25.205708.9541@klaava.Helsinki.Fi>
Дата: 25 Aug 91 20:57:08 GMT
Организация: Хельсинкский УниверситетПривет всем там, кто использует миникс —
Я делаю (свободную) операционную систему (это только хобби, не столь большое и профессиональное как GNU) для 386(486)AT клонов. Эта система пишется с апреля, и скоро будет готова. Я хочу получить любой отзыв касающийся вещей, которые нравятся/не нравятся людям в миникс, так как моя ОС похожа на неё(такое же устройство файловой системы(по практическим соображениям)среди прочего).
В настоящее время я портировал bash(1.08) и gcc(1.40), и похоже эти программы работают. Это значит, что я получу что-то практичное в ближайшие несколько месяцев, и хочу узнать, какие особенности хотят большинство людей. Любые предложения принимаются, но я не обещаю, что я осуществлю их:-)
Линус (torvalds@kruuna.helsinki.fi)
PS. Да — в ней нет кода миникс, и будет мультипотоковая ФС. Система НЕПЕРЕНОСИМА (использует команды Intel 386 и т. д.) и вероятно будет поддерживать только жесткие диски AT, так как это всё, что у меня есть :-(
Оригинальный текст (англ.)Hello everybody out there using minix -I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.
- 17 сентября 1991 — Linux версии 0.01. (10 239 строк кода)
- 5 октября 1991 — Linux версии 0.02 [1]Устаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.
- Декабрь 1991 — Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.
- 19 января 1992 — Первое сообщение в группе новостей alt.os.linuxУстаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.
- 31 марта 1992 — Создана группа новостей comp.os.linuxУстаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.
- Апрель 1992 — Linux версии 0.96, на котором стало возможно запустить графический сервер X Window System.
- Весь 1993 и начало 1994 — 15 тестовых релизов версии 0.99.* (в июле 1993 введено понятие BogoMips).
- 14 марта 1994 — Linux версии 1.0.0 (176 250 строк кода).
- Март 1995 — Linux версии 1.2.0 (310 950 строк кода).
- 9 мая 1996 — Выбран символ Linux — пингвин Tux.
- 9 июня 1996 — Linux версии 2.0.0 (777 956 строк кода).
- 25 января 1999 — Linux версии 2.2.0, изначально довольно недоработанный (1 800 847 строк кода).
- 4 января 2001 — Linux версии 2.4.0 (3 377 902 строк кода).
- 18 декабря 2003 — Linux версии 2.6.0 (5 929 913 строк кода).
- 23 марта 2009 — Linux версии 2.6.29, временный символ Linux — тасманский дьявол Tuz (11 010 647 строк кода).
Версии
Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики дистрибутивов Linux поддерживают свои собственные версии ядра, например, включая в них драйверы устройств, которые ещё не включены в официальную версию.
Нумерация версий
Номер версии ядра Linux в настоящее время содержит четыре числа, следуя недавнему изменению в долго используемой до этого политике схемы версий, основанной на трёх числах. Для иллюстрации допустим, что номер версии составлен таким образом: A.B.C[.D] (например 2.2.1, 2.4.13 или 2.6.12.3).
- Число A обозначает версию ядра. Оно изменяется менее часто и только тогда, когда вносятся значительные изменения в код и концепцию ядра. Оно изменялось дважды в истории ядра: в 1994 (версия 1.0) и в 1996 (версия 2.0).
- Число B обозначает старшую версию ревизии ядра. Чётные числа обозначают стабильные ревизии, то есть те, которые предназначены для промышленного использования, такие как 1.2, 2.4 или 2.6. Нечётные числа обозначают ревизии для разработчиков, такие как 1.1 или 2.5. Они предназначены для тестирования новых улучшений и драйверов до тех пор, пока они не станут достаточно стабильными для того, чтобы быть включёнными в стабильный выпуск.
- Число C обозначает младшую версию ревизии ядра. В старой трёхчисловой схеме нумерации, оно изменялось тогда, когда в ядро включались заплатки связанные с безопасностью, исправления ошибок, новые улучшения или драйверы. С новой политикой нумерации, однако, оно изменяется только тогда, когда вносятся новые драйверы или улучшения; небольшие исправления поддерживаются числом D.
- Число D впервые появилось после случая, когда в коде ядра версии 2.6.8 была обнаружена грубая, требующая незамедлительного исправления ошибка, связанная с NFS. Однако, было недостаточно других изменений, для того чтобы это послужило причиной для выпуска новой младшей ревизии (которой должна была стать 2.6.9). Поэтому была выпущена версия 2.6.8.1 с единственным исправлением в виде исправления для этой ошибки. С ядра 2.6.11, эта нумерация была адаптирована в качестве новой официальной политики версий. Исправления ошибок и заплатки безопасности теперь обозначаются с помощью четвёртого числа, тогда как большие изменения выполняются в изменениях младшей версии ревизии ядра (число C).
Поддержка
В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство «старыми» стабильными версиями передаётся другим лицам:
| Серия | Версии | Руководители |
|---|---|---|
| 2.0 | 2.0.40 | Дэвид Виенхал |
| 2.2 | 2.2.27-rc2 | Марк-Кристиан Петерсон (раньше Алан Кокс) |
| 2.4 | 2.4.37.6 | Вилли Тарро |
| 2.6.16 | 2.6.16.62 | Эдриан Банк |
| 2.6 | 2.6.31.1 | Линус Торвальдс |
Другими программистами ядра Linux являются Роберт Лав и Инго Молнар. (См. Список сопроводителей Linux Устаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.).
Стабильные версии
- Версия 1.0 в марте 1994 — поддерживала только однопроцессорные i386-машины.
- Версия 1.2 в марте 1995 — добавлена поддержка процессоров Alpha, SPARC и MIPS.
- Версия 2.0 в июне 1996 — добавлена поддержка других процессоров, а также многопроцессорных систем.
- Версия 2.2 в январе 1999 — [2]Устаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}..
- Версия 2.4 в январе 2001 — добавлена поддержка ISA Plug and Play, процессоров PA-RISC, шин USB и PC-Card (PCMCIA). Поддержка для процессоров Axis Communications ETRAX CRIS и файловой системы InterMezzo были добавлены чуть позже. [3]Устаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.
- Версия 2.6 от 17 декабря 2003:
- создано ответвление μClinux (для микроконтроллеров);
- добавлена поддержка для процессоров Hitachi серии H8/300, NEC v850, процессоры для встроенных систем Motorola m68k, новая архитектура доступа к памяти NUMA, поддержка NCR Voyager, технологии Intel hyperthreading и PAE;
- добавлено:
- поддержка файловой системы XFS (разработчик — фирма SGI);
- улучшена поддержка APIC;
- увеличено максимальное количество пользователей и групп с 65 000 до более 4 млрд;
- увеличено максимальное количество процессов с 32 000 до 1 млрд;
- увеличено максимальное количество типов устройств (major device) с 255 до 4095 и максимальное количество устройств каждого типа (minor device) с 255 до более миллиона из-за проблем с распределением номеров под типы устройства введен системный сервис udev;
- улучшена поддержка 64-битных систем и поддержка файловых систем размером более 16 Тбайт;
- уменьшено время реакции для процессов реального времени;
- переписана реализация потоков с использованием Native POSIX Thread Library (NPTL);
- улучшен загрузчик модулей;
- добавлена новая служебная файловая система sysfs;
- интеграция User-mode Linux;
- и др.
Архитектура


Ядро Linux поддерживает многозадачность, виртуальную память, динамические библиотеки, отложенную загрузку, производительную систему управления памятью и многие сетевые протоколы.
На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. Драйверы устройств и расширения ядра обычно запускаются в 0-кольце защиты, с полным доступом к оборудованию. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы.
То, что архитектура Linux не является микроядерной, вызвало обширнейшие прения между Линусом Торвальдсом и Эндрю Таненбаумом в конференции comp.os.minixУстаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}. в 1992 г.
Совместимость
Не задуманный изначально как многоплатформенное ядро, Linux на данный момент портирован на очень широкий круг архитектур, запускается на широком спектре оборудования от iPAQ (карманный компьютер) до IBM S/390 (высокопроизводительный мейнфрейм). Системы на основе Linux используются в качестве основных практически на всех суперкомпьютерах (более 91 % списка Top500), в том числе и на самых мощных — Tianhe-1A (Тяньхэ-1А).
Изначально Linux разрабатывался для 32-битных x86-совместимых ПК; на сегодняшний день Linux запускается на следующих процессорных архитектурах:
- ARM:
- Acorn: Archimedes, A5000, RiscPC;
- StrongARM, Intel XScale и тому подобных;
- Axis Communications CRIS;
- DEC Alpha;
- HP PA-RISC;
- Hitachi: SuperH (SEGA Dreamcast), H8/300;
- IBM System/390;
- IBM zSeries-мэйнфреймы;
- Intel 80386 и выше: IBM PC и совместимые с процессорами:
- 80386, 80486, а также AMD, Cyrix, TI и IBM-варианты;
- серия Pentium;
- Core, Core2 Duo в 32 и 64-х битных версиях;
- AMD Am5x86, K5, K6, Athlon (все 32-битные версии), Duron;
- AMD64: 64-битная технология AMD (также известная как x86-64);
- Cyrix 5x86, 6x86 (M1), 6x86MX и MediaGX (National/AMD Geode) серия;
- VIA C3 и последующие процессоры;
- поддержка Intel 8086, 8088, 80186, 80188 и 80286 процессоров находится в разработке (см. проект ELKSУстаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}.);
- Microsoft Xbox (Pentium III);
- Intel IA-64;
- MIPS;
- Silicon Graphics, Inc.;
- Cobalt Qube, Cobalt Raq;
- Sony PlayStation 2, PlayStation 3;
- DECstation
- и некоторые другие;
- Motorola 68020 и выше:
- NEC v850e;
- Renesas M32R;
- PowerPC и IBM POWER:
- SPARC и UltraSPARC: Sun 4-series, SPARCstation/SPARCserver, Ultra-, Blade- и Fire-серии рабочих станций и серверов;
- МЦСТ-R;
- Эльбрус E2K.
Лицензия
Linux распространяется на условиях лицензии GNU General Public License, то есть свободно. Эту лицензию выбрал Линус Торвальдс практически сразу после того, как стало понятно, что его хобби начало получать распространение по всему миру. Обладателем торговой марки Linux является Линус, а помогает следить за соблюдением его прав и условий GPL Фонд свободного программного обеспечения.
Символ

Официальным символом Linux является пингвин по имени Tux, отличающийся от «обычных» пингвинов жёлтым цветом клюва и лап.

В качестве символа версии ядра 2.6.29 принят тасманский дьявол Tuz, изображение которого ранее служило талисманом конференции linux.conf.au 2009. На этой конференции Линус Торвальдс провел успешную акцию по благотворительной продаже игрушек Linux Tasmanian devil за сохранение популяции Тасманского дьявола. В версии 2.6.30 используется прежний логотип.
Оценка стоимости разработки с нуля
Стоимость переразработки ядра Linux версии 2.6.0 способами, принятыми для разработки проприетарного ПО, была оценена в $612 миллионов (467 миллионов евро) в ценах 2004 года с использованием модели оценки человеко-месяцев COCOMO.[10] В 2006 году исследование, профинансированное Евросоюзом подняло стоимость разработки ядра Linux выше, до уровня €882 миллиона ($1.14 миллиарда).[11]
Эта тема была снова поднята в октябре 2008го Амандой МакФерсон, Брайаном Проффиттом и Роном Хейл-Эвансом. Используя методологию Дэвида Э. Вилера они оценили разработку ядра 2.6.25 в 1.3 миллиарда долларов США (часть от $10.8 миллиардов переразработки Fedora 9).[12] Также, Гарсиа-Гарсиа и Алонсо де Магдалено из университета Овидо (Испания) оценили ежегодный прирост стоимости ядра в приблизительно 100 миллионов евро с 2005 по 2007 года и 225 миллионов евро в 2008, а совокупная стоимость разработки в Евросоюзе оценена в более чем один миллиард евро (около 1.4 миллиарда долларов США). [13]
См. также
- Процесс загрузки Linux
- Kernel panic
- Linux.org.ru — популярный русскоязычный сайт и форум об операционных системах.
- 9885 Linux — астероид, названный в честь Linux.[14]
- Сравнение Microsoft Windows и Linux
- USB core — подсистема для поддержки USB-устройств и контроллеров шины USB.
Ссылки
The Linux Kernel Archives (англ.) (HTML). — Официальный сайт ядра Linux. Дата обращения: 6 июля 2010.
git.kernel.org - linux/kernel/git/torvalds/linux-2.6.git/summary (англ.) (HTML). — Git-репозиторий. Дата обращения: 6 июля 2010.
Index of /pub/linux/kernel/v2.6 (англ.) (HTML). — Последние версии. Дата обращения: 6 июля 2010.
Замечательный Мир Linux 2.6 (HTML). — Замечательный Мир Linux 2.6 (linux). Дата обращения: 6 июля 2010.
Мини-портал Linux (HTML). — Мини-портал Linux на сайте OpenNet. Дата обращения: 6 июля 2010.
Linux Kernel Newbies (англ.) (HTML). — KernelNewbies.org. Дата обращения: 6 июля 2010.
Литература
- Торвальдс, Л.; Даймонд, Д. Ради удовольствия = Just for fun. — М.: ЭКСМО-Пресс, 2002. — С. 288. — ISBN 5-04-009285-7.
- Роберт Лав. Разработка ядра Linux = Linux Kernel Development. — 2-е изд. — М.: «Вильямс», 2006. — С. 448. — ISBN 0-672-32720-1.
- Родригес К. З., Фишер Г., Смолски С. Linux: азбука ядра.. — «КУДИЦ-ПРЕСС», 2007. — С. 584. — ISBN 978-5-91136-017-7.
- Баррет Д. Linux: основные команды. Карманный справочник. 2-е издание.. — «КУДИЦ-ПРЕСС», 2007. — С. 288. — ISBN 5-9579-0050-8.
Примечания
- ↑ Торвальдс Л. Linux 6.18-rc7 — 2025.
- ↑ https://web.archive.org/web/20150315012537/http://www.linuxfoundation.org/about
- ↑ Howto pronouce Linux? (англ.). Дата обращения: 5 марта 2008.
- ↑ Bruce Byfield. Linux-libre project meets rocky reception (англ.). Linux.com. SourceForge, Inc. (1 августа 2008). Дата обращения: 2 августа 2008.
- ↑ 1 2 What would you like to see most in minix?Устаревший синтаксис шаблона: пишите {{ref|lang}} вместо {{ref-lang}}. — Оригинальное сообщение Линуса Торвальдса о его новой ОС в новостной группе comp.os.minix
- ↑ Andrew D. Balsa. The linux-kernel mailing list FAQ (англ.) (12 ноября 2006). Дата обращения: 17 мая 2008.
- ↑ Operating system market share
- ↑ Usage of Linux for websites (англ.). По данным на июль 2010 года, Linux-системы используются на 64.2 % веб-сайтов в интернете.. W3 Techs. Дата обращения: 2 августа 2010.
- ↑ Доля операционных систем по данным на ноябрь 2010 (англ.). Top500. Дата обращения: 2 августа 2010.
- ↑ David A. Wheeler. Linux Kernel 2.6: It's Worth More!
- ↑ Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector, таблица 3 на странице 50.
- ↑ Estimating Total Development Cost Of a Linux Distribution, таблица на странице 6.
- ↑ The Billion Dollar Kernel
- ↑ 9885 Linux (1994 TM14) (англ.). JPL Small-Body Database Browser. JPL (NASA). Дата обращения: 23 мая 2008.