Ядро Linux
Ядро Linux | |
---|---|
![]() | |
![]() | |
Тип | свободное и открытое программное обеспечение, ядро операционной системы, совместная работа[вд] и проект |
Автор | Линус Торвальдс[3] |
Разработчики | Линус Торвальдс, Алан Кокс, Грег Кроа-Хартман, Инго Молнар[вд], Эндрю Мортон, Larry W. Finger[вд][4][5][…] и Mauro Carvalho Chehab[вд][6] |
Написана на | Си[7] |
Первый выпуск | 25 августа 1991 |
Аппаратные платформы | ARM, 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[вд] |
Последняя версия |
|
Кандидат в релизы |
|
Репозиторий | git.kernel.org/pub/scm/l… |
Лицензия | GNU GPL 2[8][9][…] |
Сайт | kernel.org (англ.) |
![]() |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Linux_kernel_ubiquity.svg/300px-Linux_kernel_ubiquity.svg.png)
Ядро Linux (/ˈlɪnʊks/[10]) — ядро операционной системы, соответствующее стандартам POSIX, составляющее основу операционных систем семейства Linux, а также ряда операционных систем для мобильных устройств, в том числе Android, Tizen, KaiOS. Разработка кода ядра была начата финским студентом Линусом Торвальдсом в 1991 году, на его имя зарегистрирована торговая марка «Linux».
Код написан в основном на Си с некоторыми расширениями gcc и на ассемблере (с использованием AT&T-синтаксиса GNU Assembler).
Распространяется как свободное программное обеспечение на условиях GNU General Public License, кроме несвободных элементов, особенно драйверов, которые используют прошивки, распространяемые под различными лицензиями[11].
Операционные системы на базе ядра Linux являются лидерами на рынках суперкомпьютеров, микрокомпьютеров, серверов и смартфонов.
История
Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenet[12].
К тому времени GNU уже создал множество составляющих для свободной операционной системы, но её ядро GNU Hurd ещё не было готово. Поэтому пустующее место ядра для свободной операционной системы занял Linux и, несмотря на ограниченную функциональность ранних версий, привлёк к себе множество разработчиков и пользователей.
«Linux» как ядро операционной системы, разработка которого была начата Торвальдсом — лишь небольшая часть многих из использующих его систем, которые обычно тоже называют «Linux». Это иногда приводит к путанице, в связи с чем существует спор об именовании GNU/Linux — некоторые сторонники движения GNU считают, что именно такое наименование является корректным для операционной системы на базе ядра Linux и использующей наработки проекта GNU (такие, как glibc, gcc, bash, coreutils и другие)[13].
По состоянию на май 2020 года семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 4,9 %[14]. На рынке веб-серверов доля Linux порядка 31 %, остальное — Unix-системы (FreeBSD и другие)[15]. По данным Top500 (май 2020 года), Linux используется в качестве операционной системы на 100 % самых мощных суперкомпьютеров планеты[16].
Большинство мобильных устройств, таких, как смартфоны и планшетные компьютеры на базе операционных систем Android, MeeGo, Tizen, а также телевизоры и многие служебные устройства, такие, как внешние сетевые жёсткие диски, маршрутизаторы и модемы, также использует операционные системы на базе ядра Linux.
Хронология
- Апрель 1991: 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
- 25 августа 1991: Торвальдс поместил сообщение в новостную группу по Minix[12]
От: [email protected] (Линус Бенедикт Торвальдс)
Новостная группа: comp.os.minix
Тема: Небольшой опрос о моей новой операционной системе
Message-ID:<[email protected]>
Дата: 25 Aug 91 20:57:08 GMT
Организация: Хельсинкский УниверситетПривет всем тем, кто использует миникс —
Я делаю (свободную) операционную систему (это только хобби, не столь большое и профессиональное, как GNU) для 386 (486) AT-клонов. Эта система пишется с апреля и скоро будет готова. Я хочу получить любой отзыв, касающийся вещей, которые нравятся/не нравятся людям в миниксе, так как моя ОС похожа на неё (такое же устройство файловой системы (по практическим соображениям), среди прочего).
В настоящее время я портировал bash (1.08) и gcc (1.40), и, похоже, эти программы работают. Это значит, что я получу что-то практичное в ближайшие несколько месяцев, и я хочу узнать, какие возможности хочет большинство людей. Любые предложения принимаются, но я не обещаю, что я осуществлю их :-)
Линус ([email protected])
P. S. Да — в ней нет кода миникс, и будет мультипотоковая ФС. Система НЕПЕРЕНОСИМА (использует команды Intel 386 и т. д.) и, вероятно, будет поддерживать только жёсткие диски AT, так как это всё, что у меня есть :-(
- 17 сентября 1991: Linux версии 0.01 (10 239 строк кода).
- Декабрь 1991: Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.
- 19 января 1992: Первое сообщение в группе новостей alt.os.linux[17].
- 31 марта 1992: Создана специализированная группа новостей comp.os.linux[18].
- Апрель 1992: Linux версии 0.96, на котором стало возможно запустить графический сервер X Window System.
- Весь 1993 и начало 1994: 15 тестовых выпусков версии 0.99.* (в июле 1993 введено понятие BogoMips).
- 14 марта 1994: Linux версии 1.0.0 (176 250 строк кода).
- 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 строк кода).
- 22 июля 2011: релиз Linux 3.0 (14,6 млн строк кода).
- 23 февраля 2015: первый релиз-кандидат Linux 4.0 (более 19 млн строк кода).
- 7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).
![](http://upload.wikimedia.org/wikipedia/ru/timeline/t8pypgsgm3knampt28ycvz8u2od5ah3.png)
Версии
Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики дистрибутивов Linux поддерживают свои собственные версии ядра, например, включая в них драйверы устройств, которые ещё не включены в официальную версию. С 30 мая 2011 изменена политика нумерации версий ядра[19].
Нумерация версий до 30 мая 2011
Номер версии ядра Linux до 30 мая 2011 содержал четыре числа, согласно недавнему изменению в политике именования версий, схема которой долгое время была основана на трёх числах. Для иллюстрации допустим, что номер версии составлен таким образом: A.B.C[.D] (например, 2.2.1, 2.4.13 или 2.6.12.3).
- Число A обозначает версию ядра. Изначально задумывалось, что оно будет изменяться редко и только тогда, когда вносятся значительные изменения в код и концепцию ядра, первые такие изменения произошли в 1994 году (версия 1.0) и в 1996 году (версия 2.0).
- Число B обозначает старшую версию ревизии ядра. В ядрах до версии 3.0 чётные числа обозначали стабильные ревизии, то есть те, которые предназначены для продуктивного использования, такие, как 1.2, 2.4 или 2.6, а нечётные — ревизии для разработчиков, предназначенные для того, чтобы тестировать новые улучшения и драйверы до тех пор, пока они не станут достаточно стабильными для того, чтобы включить их в стабильный выпуск.
- Число C обозначает младшую версию ревизии ядра. В старой трёхчисловой схеме нумерации оно изменялось тогда, когда в ядро включались заплатки, связанные с безопасностью, исправления ошибок, новые улучшения или драйверы. С новой политикой нумерации, однако, оно изменяется только тогда, когда вносятся новые драйверы или улучшения; небольшие исправления поддерживаются числом D.
- Число D впервые появилось после случая, когда в коде ядра версии 2.6.8 была обнаружена грубая, требующая незамедлительного исправления ошибка, связанная с NFS. Однако других изменений было недостаточно для того, чтобы это послужило причиной для выпуска новой младшей ревизии (которой должна была стать 2.6.9). Поэтому была выпущена версия 2.6.8.1 с единственным изменением в виде исправления этой ошибки. С ядра 2.6.11 эта нумерация была адаптирована в качестве новой официальной политики версий. Исправления ошибок и заплатки безопасности теперь обозначаются с помощью четвёртого числа, тогда как большие изменения отражаются в увеличении младшей версии ревизии ядра (число C).
Нумерация версий с 30 мая 2011
30 мая 2011 Линус Торвальдс выпустил ядро версии 3.0-rc1. Вместе с ним изменена политика нумерации версий ядра. Отменено использование чётных и нечётных номеров для обозначения стабильности ядра, а третье число означает стабильность ядра. Версия 3.0 практически не несёт никаких изменений, кроме изменения политики нумерации ядра. Таким образом, стабильные версии ядра 3.0 будут именоваться 3.0.X, а следующий после этого релиз будет иметь номер 3.1.
Поддержка
В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство LTS-версиями передаётся другим лицам:
Серия | Версии | Руководители | Окончание поддержки |
---|---|---|---|
3.2 | 3.2.101 | Бэн Хатчингс | Май 2018 |
3.4 | 3.4.113 | Ли Зифан | Октябрь 2016 |
3.10 | 3.10.108 | Уилли Тароу | Ноябрь 2017 |
3.12 | 3.12.74 | Иржи Слаби | Май 2017 |
3.14 | 3.14.79 | Грег Кроа-Хартман | Сентябрь 2016 |
3.16 | 3.16.85 | Бэн Хатчингс | Июнь 2020 |
3.18 | 3.18.140 | Саша Левин | Январь 2017 |
4.1 | 4.1.52 | Саша Левин | Май 2018 |
4.4 | 4.4.302 | Грег Кроа-Хартман & Саша Левин | Февраль 2022 |
4.9 | 4.9.336 | Грег Кроа-Хартман & Саша Левин | Январь 2023 |
4.14 | 4.14.319 | Грег Кроа-Хартман & Саша Левин | Январь 2024 |
4.19 | 4.19.287 | Грег Кроа-Хартман & Саша Левин | Декабрь 2024 |
5.4 | 5.4.248 | Грег Кроа-Хартман & Саша Левин | Декабрь 2025 |
5.10 | 5.10.185 | Грег Кроа-Хартман & Саша Левин | Декабрь 2026 |
5.15 | 5.15.118 | Грег Кроа-Хартман & Саша Левин | Октябрь 2026 |
6.1 | 6.1.35 | Грег Кроа-Хартман & Саша Левин | Декабрь 2026 |
Другими программистами ядра Linux являются Роберт Лав[англ.] и Инго Молнар[англ.][20].
Архитектура
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Linux_kernel_map.png/220px-Linux_kernel_map.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Linux_VFS.svg/300px-Linux_VFS.svg.png)
Ядро Linux поддерживает многозадачность, виртуальную память, динамические библиотеки, отложенную загрузку, производительную систему управления памятью и многие сетевые протоколы.
На сегодняшний день Linux — монолитное ядро с поддержкой загружаемых модулей. Драйверы устройств и расширения ядра обычно запускаются в нулевом кольце защиты, с полным доступом к оборудованию. В отличие от обычных монолитных ядер, драйверы устройств легко собираются в виде модулей и загружаются или выгружаются во время работы системы.
То, что архитектура Linux не является микроядерной, вызвало обширнейшие прения между Торвальдсом и Эндрю Таненбаумом в конференции по Minix в 1992 году.
Совместимость
Задуманное изначально не как многоплатформенное, ядро Linux на данное время перенесено на очень широкий круг архитектур, запускается на широком спектре оборудования от iPAQ (карманный компьютер) до IBM S/390 (высокопроизводительный мейнфрейм). Системы на основе Linux используются в качестве основных почти на всех суперкомпьютерах (более 99 % списка TOP500), в том числе и на самом мощном — Summit[21]. Изначально 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);
- Microsoft Xbox (Pentium III);
- Intel IA-64 (Itanium);
- MIPS;
- Silicon Graphics, Inc.;
- Cobalt Qube, Cobalt RaQ;
- Sony/Toshiba/IBM — Emotion Engine и Cell, используемые в PlayStation 2 и PlayStation 3 соответственно;
- DECstation
- и некоторые другие;
- Motorola 68020 и выше:
- более новые Amiga: A1200, A2500, A3000, A4000;
- Apple Macintosh II, LC, Quadra, Centris и ранняя серия Performa;
- рабочие станции Sun Microsystems серии 3 (экспериментальная, с использованием Sun-3 MMU);
- NEC v850e;
- Renesas M32R;
- PowerPC и IBM POWER:
- Qualcomm Hexagon[22]
- SPARC и UltraSPARC: Sun 4-series, SPARCstation/SPARCserver, Ultra-, Blade- и Fire-серии рабочих станций и серверов.
Лицензия
Ядро Linux распространяется на условиях лицензии GNU General Public License, то есть свободно. Эту лицензию выбрал Линус Торвальдс практически сразу после того, как стало понятно, что его хобби начало получать распространение по всему миру. Владельцем торговой марки Linux является Торвальдс, а помогает следить за соблюдением его прав и условий GPL Фонд свободного программного обеспечения.
Символ
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/150px-Tux.svg.png)
Официальным символом Linux является пингвин по имени Tux, отличающийся от «обычных» пингвинов жёлтым цветом клюва и лап.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Tuz-logo.svg/150px-Tuz-logo.svg.png)
В качестве символа версии ядра 2.6.29 принят тасманийский дьявол Tuz, изображение которого ранее служило талисманом конференции linux.conf.au 2009. На этой конференции Линус Торвальдс провёл успешную акцию по благотворительной продаже игрушек Linux Tasmanian devil за сохранение популяции Тасманского дьявола. В версии 2.6.30 используется прежний логотип.
Оценка стоимости разработки с нуля
Стоимость переразработки ядра Linux версии 2.6.0 способами, принятыми для разработки проприетарного ПО, была оценена в 612 млн долл. США (467 млн евро) в ценах 2004 года с использованием модели оценки человеко-месяцев COCOMO[23]. В 2006 году исследование, профинансированное Евросоюзом, подняло стоимость разработки ядра Linux до уровня 882 млн евро[24].
Эта тема была снова поднята в октябре 2008 году Амандой Макферсон, Брайаном Проффиттом и Роном Хейл-Эвансом. Используя методологию Дэвида Вилера, они оценили разработку ядра 2.6.25 в 1,3 млрд долл. США (часть от 10,8 млрд долл. США переразработки Fedora 9)[25]. Также Гарсиа-Гарсиа и Алонсо де Магдалено из университета Овьедо (Испания) оценили ежегодный прирост стоимости ядра приблизительно в 100 млн евро с 2005 по 2007 годы и 225 млн евро в 2008 году. Совокупная стоимость разработки в Евросоюзе в 2009 году оценена в более чем 1 млрд евро (около 1,23 млрд долл. США)[26].
См. также
- Процесс загрузки Linux
- DKMS
- Kernel panic
- 9885 Linux — астероид, названный в честь Linux[27].
- Сравнение Microsoft Windows и Linux
- Компоненты ядра Linux
- Linux framebuffer
- USB core — подсистема для поддержки USB-устройств и контроллеров шины USB.
- evdev (англ. event device) — компонент для работы с устройствами ввода (клавиатурой, джойстиком, мышью).
- kvm (англ. kernel-based virtual machine).
- DRM (англ. direct rendering manager).
- cgroups (англ. control groups).
- dm (англ. device mapper).
- Video4Linux.
- SELinux (англ. security-enhanced Linux).
- Netfilter (англ. network filter) — межсетевой экран (брандмауэр).
Примечания
- ↑ Кроа-Хартман Г. Linux 6.10.4 — 2024.
- ↑ Торвальдс Л. Linux 6.11-rc3 — 2024.
- ↑ https://web.archive.org/web/20150315012537/http://www.linuxfoundation.org/about
- ↑ LWN.net (англ.) — 1998.
- ↑ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Larry+Finger
- ↑ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Mauro+Carvalho+Chehab
- ↑ The linux Open Source Project on Open Hub: Languages Page — 2006.
- ↑ RELEASE NOTES FOR LINUX v0.12
- ↑ It’s official, Linux was released on September 17, 1991 (англ.)
- ↑ Howto pronouce Linux? (англ.). Дата обращения: 5 марта 2008. Архивировано 21 августа 2011 года.
- ↑ Bruce Byfield. Linux-libre project meets rocky reception (англ.). Linux.com. SourceForge, Inc. (1 августа 2008). Дата обращения: 2 августа 2008. Архивировано из оригинала 5 августа 2008 года.
- ↑ 1 2 What would you like to see most in minix? Архивная копия от 27 октября 2006 на Wayback Machine (англ.) — Оригинальное сообщение Линуса Торвальдса о его новой ОС в новостной группе comp.os.minix Архивная копия от 23 июля 2013 на Wayback Machine
- ↑ Andrew D. Balsa. The linux-kernel mailing list FAQ (англ.) (12 ноября 2006). Дата обращения: 17 мая 2008. Архивировано из оригинала 1 июля 2016 года.
- ↑ OS Statistics (неопр.). Дата обращения: 16 апреля 2011. Архивировано 28 октября 2011 года.
- ↑ Usage of Linux for websites (англ.). По данным на май 2020 года, GNU/Linux-системы используются на 31,3 % веб-сайтов в интернете.. W3 Techs. Дата обращения: 4 июня 2020. Архивировано 20 января 2013 года.
- ↑ List Statistics | TOP500 Supercomputer Sites (неопр.). Дата обращения: 25 июня 2016. Архивировано 18 июля 2018 года.
- ↑ alt.os.linux (англ.)
- ↑ comp.os.linux (англ.)
- ↑ Gmane — Mail To News And Back Again (неопр.). Дата обращения: 3 июня 2011. Архивировано 16 апреля 2018 года.
- ↑ Список сопроводителей Linux Архивная копия от 22 августа 2022 на Wayback Machine (англ.)
- ↑ Sandra Henry-Stocker. UNIX AS A SECOND LANGUAGE: Red Hat reaches the Summit – a new top scientific supercomputer (англ.). Network World (8 июня 2018). Дата обращения: 1 октября 2018. Архивировано 2 октября 2018 года.
- ↑ http://www.pcweek.ru/foss/article/detail.php?ID=136238 Архивная копия от 7 марта 2012 на Wayback Machine "Обновлённое ядро поддерживает DSP-процессор Hexagon компании Qualcomm. "
- ↑ David A. Wheeler. Linux Kernel 2.6: It's Worth More! (неопр.) Дата обращения: 18 сентября 2010. Архивировано 21 августа 2011 года.
- ↑ Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector Архивная копия от 24 января 2007 на Wayback Machine, таблица 3 на странице 50.
- ↑ Estimating Total Development Cost Of a Linux Distribution Архивная копия от 11 июля 2010 на Wayback Machine, таблица на странице 6.
- ↑ The Billion Dollar Kernel (неопр.). Дата обращения: 18 сентября 2010. Архивировано 15 мая 2011 года.
- ↑ 9885 Linux (1994 TM14) (англ.). JPL Small-Body Database Browser. JPL (NASA). Дата обращения: 23 мая 2008. Архивировано 21 августа 2011 года.
Литература
- Торвальдс, Л.; Даймонд, Д. Ради удовольствия = 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 // Linux Format. — 2016. — Октябрь (№ 10 (215)). — С. 24—31.
Ссылки
- The Linux Kernel Archives (англ.) (HTML). — Официальный сайт ядра Linux. Дата обращения: 6 июля 2010. Архивировано 21 августа 2011 года.
- Замечательный Мир Linux 2.6 (рус.) (HTML). — Замечательный Мир Linux 2.6 (linux). Дата обращения: 6 июля 2010.
- Анализ тенденций и участников разработки ядра Linux — статья об отчёте The Linux Foundation за 2012 год