Что такое ядро линукс

Что такое ядро линукс

Начало проекту было положено в 1991 году с публикации сообщения в новостной группе Usenet comp.os.minix следующего содержания [4] :

Привет всем, кто использует миникс — Я делаю (свободную) операционную систему (всего лишь хобби, она не будет большой и профессиональной, как 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». [5] О различных комбинациях свободных компонентов в операционных системах см. Операционные системы на основе свободного ПО.

Сейчас в апреле 2011 семейство операционных систем на базе ядра Linux — третье по популярности в мире на рынке настольных компьютеров — 5,1 % [6] . На рынке веб-серверов доля Linux порядка 32 %, остальное — Unix-системы (FreeBSD и др.) [7] . По данным Top500, Linux используется в качестве операционной системы на 91 % самых мощных суперкомпьютеров планеты [8] . Большинство мобильных устройств, таких как смартфоны и планшетные компьютеры на базе ОС Android и MeeGo, а также телевизоры, и многие служебные устройства, такие как внешние сетевые жесткие диски, маршрутизаторы и модемы, также используют операционные системы на базе ядра Linux.

Хронология

  • Апрель 1991 — 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы. Он начал с эмулятора терминала и планировщика задач.
  • 25 августа 1991 — Линус поместил следующее сообщение [4] :

От: torvalds@klaava.Helsinki.Fi (Линус Бенедикт Торвальдс)
Новостная группа: comp.os.minix
Тема: Небольшой опрос о моей новой операционной системе
Message-ID:
Дата: 25 Aug 91 20:57:08 GMT
Организация: Хельсинкский Университет

Привет всем тем, кто использует миникс —

Я делаю (свободную) операционную систему (это только хобби, не столь большое и профессиональное, как GNU) для 386(486)AT клонов. Эта система пишется с апреля и скоро будет готова. Я хочу получить любой отзыв, касающийся вещей, которые нравятся/не нравятся людям в миникс, так как моя ОС похожа на неё (такое же устройство файловой системы (по практическим соображениям), среди прочего).

В настоящее время я портировал bash (1.08) и gcc (1.40), и, похоже, эти программы работают. Это значит, что я получу что-то практичное в ближайшие несколько месяцев, и я хочу узнать, какие возможности хочет большинство людей. Любые предложения принимаются, но я не обещаю, что я осуществлю их:-)

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 🙂

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] (англ.)
  • Декабрь 1991 — Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.
  • 19 января1992 — Первое сообщение в группе новостей alt.os.linux (англ.)
  • 31 марта 1992 — Создана группа новостей comp.os.linux (англ.)
  • Апрель 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 строк кода).
  • 22 июля2011 — релиз Linux 3.0
  • 24 октября2011 — релиз Linux 3.1
  • 15 января2012 — релиз Linux 3.3 преодолел отметку в 15 млн строк кода.
Читайте также:  Свойства ipv4 windows 10

Версии

Торвальдс продолжает выпускать новые версии ядра, объединяя изменения, вносимые другими программистами, и внося свои. Оно обычно называется «ванильным» (vanilla), то есть официальное ядро без каких-либо сторонних изменений. В дополнение к официальным версиям ядра существуют альтернативные ветки, которые могут быть взяты из различных источников. Как правило, разработчики дистрибутивов Linux поддерживают свои собственные версии ядра, например, включая в них драйверы устройств, которые ещё не включены в официальную версию. С 30 мая 2011 изменена политика нумерации версий ядра [2]

Нумерация версий до 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) и 31 мая 2011 (3.0.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).

Нумерация версий с 30 мая 2011

30 мая 2011 Линус Торвальдс выпустил ядро версии 3.0-rc1. Вместе с ним изменена политика нумерации версий ядра. Отменено использование чётных/нечётных номеров для обозначения стабильности ядра, а третье число означает стабилизацию ядра. Версия 3.0 практически не несет никаких изменений, кроме изменения политики нумерации ядра. Таким образом, стабильные версии ядра 3.0 будут именоваться 3.0.X, а следующий после этого релиз будет иметь номер 3.1.

Поддержка

В то время как Торвальдс продолжает выпускать новые экспериментальные версии, руководство «старыми» стабильными версиями передаётся другим лицам:

Серия Версии Руководители
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 Линус Торвальдс
3.0 3.0.11 Линус Торвальдс
3.1 3.1.6 Линус Торвальдс
3.2 3.2.11 Линус Торвальдс
3.4 3.4.0 Линус Торвальдс

Другими программистами ядра Linux являются Роберт Лав и Инго Молнар. (См. Список сопроводителей Linux (англ.) ).

Ядро Linux содержит более 13 миллионов строк кода и является одним из самых крупных проектов с открытым исходным кодом в мире. Так что такое ядро Linux и для чего оно используется?

Что такое ядро Linux?

Ядро — это самый низкий уровень программного обеспечения, которое взаимодействует с аппаратными средствами компьютера. Оно отвечает за взаимодействие всех приложений, работающих в пространстве пользователя вплоть до физического оборудования. Также позволяет процессам, известным как сервисы получать информацию друг от друга с помощью системы IPC.

Виды и версии ядра

Что такое ядро Linux вы уже знаете, но какие вообще бывают виды ядер? Есть различные способы и архитектурные соображения при создании ядер с нуля. Большинство ядер могут быть одного из трех типов: монолитное ядро, микроядро, и гибрид. Ядро Linux представляет собой монолитное ядро, в то время как ядра Windows и OS X гибридные. Давайте сделаем обзор этих трех видов ядер.

Микроядро

Микроядра реализуют подход, в котором они управляют только тем, чем должны: процессором, памятью и IPC. Практически все остальное в компьютере рассматривается как аксессуары и обрабатывается в режиме пользователя. Микроядра имеют преимущество в переносимости, они могут использоваться на другом оборудовании, и даже другой операционной системе, до тех пор, пока ОС пытается получить доступ к аппаратному обеспечению совместимым образом.

Микроядра также имеют очень маленький размер и более безопасны, поскольку большинство процессов выполняются в режиме пользователя с минимальными привилегиями.

Плюсы

  • Портативность
  • Небольшой размер
  • Низкое потребление памяти
  • Безопасность

Минусы

  • Аппаратные средства доступны через драйверы
  • Аппаратные средства работают медленнее потому что драйверы работают в пользовательском режиме
  • Процессы должны ждать свою очередь чтобы получить информацию
  • Процессы не могут получить доступ к другим процессам не ожидая

Монолитное ядро

Монолитные ядра противоположны микроядрам, потому что они охватывают не только процессор, память и IPC, но и включают в себя такие вещи, как драйверы устройств, управление файловой системой, систему ввода-вывода. Монолитные ядра дают лучший доступ к оборудованию и реализуют лучшую многозадачность, потому что если программе нужно получить информацию из памяти или другого процесса, ей не придется ждать в очереди. Но это и может вызвать некоторые проблемы, потому что много вещей выполняются в режиме суперпользователя. И это может принести вред системе при неправильном поведении.

Читайте также:  Как в ворде убрать разрыв между строками

Плюсы:

  • Более прямой доступ к аппаратным средствам
  • Проще обмен данными между процессами
  • Процессы реагируют быстрее

Минусы:

  • Большой размер
  • Занимает много оперативной памяти
  • Менее безопасно

Гибридное ядро

Гибридные ядра могут выбирать с чем нужно работать в пользовательском режиме, а что в пространстве ядра. Часто драйвера устройств и файловых систем находятся в пользовательском пространстве, а IPC и системные вызовы в пространстве ядра. Это решение берет все лучшее из обоих предыдущих, но требует больше работы от производителей оборудования. Поскольку вся ответственность за драйвера теперь лежит на них.

Плюсы

  • Возможность выбора того что будет работать в пространстве ядра и пользователя
  • Меньше по размеру чем монолитное ядро
  • Более гибкое

Минусы

  • Может работать медленнее
  • Драйверы устройств выпускаются производителями

Где хранятся файлы ядра?

Где находится ядро Linux? Файлы ядра Ubuntu или любого другого Linux-дистрибутива находятся в папке /boot и называются vmlinuz-версия. Название vmlinuz походит с эпохи Unix. В шестидесятых годах ядра привыкли называть просто Unix, в 90-х годах Linux ядра тоже назывались — Linux.

Когда для облегчения многозадачности была разработана виртуальная память, перед именем файла появились буквы vm, чтобы показать что ядро поддерживает эту технологию. Некоторое время ядро называлось vmlinux, но потом образ перестал помещаться в память начальной загрузки, и был сжат. После этого последняя буква x была изменена на z, чтобы показать что использовалось сжатие zlib. Не всегда используется именно это сжатие, иногда можно встретить LZMA или BZIP2, поэтому некоторые ядра называют просто zImage.

Нумерация версии состоит из трех цифр, номер версии ядра Linux, номер вашей версии и патчи или исправления.

В паке /boot можно найти не только ядро Linux, такие файлы, как initrd.img и system.map. Initrd используется в качестве небольшого виртуального диска, который извлекает и выполняет фактический файл ядра. Файл System.map используется для управления памятью, пока еще ядро не загрузилось, а конфигурационные файлы могут указывать какие модули ядра включены в образ ядра при сборке.

Архитектура ядра Linux

Так как ядро Linux имеет монолитную структуру, оно занимает больше и намного сложнее других типов ядер. Эта конструктивная особенность привлекла много споров в первые дни Linux и до сих пор несет некоторые конструктивные недостатки присущие монолитным ядрам.

Но чтобы обойти эти недостатки разработчики ядра Linux сделали одну вещь — модули ядра, которые могут быть загружены во время выполнения. Это значит что вы можете добавлять и удалять компоненты ядра на лету. Все может выйти за рамки добавления функциональных возможностей аппаратных средств, вы можете запускать процессы сервера, подключать виртуализацию, а также полностью заменить ядро без перезагрузки.

Представьте себе возможность установить пакет обновлений Windows без необходимости постоянных перезагрузок.

Модули ядра

Что, если бы Windows уже имела все нужные драйвера по умолчанию, а вы лишь могли включить те, которые вам нужны? Именно такой принцип реализуют модули ядра Linux. Модули ядра также известные как загружаемые модули (LKM), имеют важное значение для поддержки функционирования ядра со всеми аппаратными средствами, не расходуя всю оперативную память.

Модуль расширяет функциональные возможности базового ядра для устройств, файловых систем, системных вызовов. Загружаемые модули имеют расширение .ko и обычно хранятся в каталоге /lib/modules/. Благодаря модульной природе вы можете очень просто настроить ядро путем установки и загрузки модулей. Автоматическую загрузку или выгрузку модулей можно настроить в конфигурационных файлах или выгружать и загружать на лету, с помощью специальных команд.

Сторонние, проприетарные модули с закрытым исходным кодом доступны в некоторых дистрибутивах, таких как Ubuntu, но они не поставляются по умолчанию, и их нужно устанавливать вручную. Например, разработчики видеодрайвера NVIDIA не предоставляют исходный код, но вместо этого они собрали собственные модули в формате .ko. Хотя эти модули и кажутся свободными, они несвободны. Поэтому они и не включены во многие дистрибутивы по умолчанию. Разработчики считают что не нужно загрязнять ядро несвободным программным обеспечением.

Теперь вы ближе к ответу на вопрос что такое ядро Linux. Ядро не магия. Оно очень необходимо для работы любого компьютера. Ядро Linux отличается от OS X и Windows, поскольку оно включает в себя все драйверы и делает много вещей поддерживаемых из коробки. Теперь вы знаете немного больше о том, как работает ваше программное обеспечение и какие файлы для этого используются.

Состоящее почти из 20 миллионов строк кода ядро Linux является одним из самых крупных Opensource проектов в мире.

Что такое ядро

Ядро представляет собой нижний уровень программного обеспечения, которое взаимодействует с оборудованием компьютера. Оно отвечает за взаимодействие всех приложений, которые работают в т.н. «пользовательском режиме» с физическим оборудованием и позволяет процессам передавать информацию друг другу с помощью inter-process communication (IPC).

Типы ядер

Имеется три основных типа ядер — монолитные (monolithic), микроядра (microkernel) и гибридные (hybrid).

Читайте также:  Ардуино зависает при включении реле

К примеру Linux является монолитным ядром, тогда как OS X и Windows используют гибридные ядра.

Microkernel

Микроядра занимаются управлением только CPU, памятью и IPC. Практически все остальное в компьютере может рассматриваться как дополнительное оборудование и может обслуживаться в пользовательском режиме. Микроядра имеют большую переносимость, т.к. вам не приходиться беспокоиться если вы задумали сменить видеокарту или даже всю операционную систему — если новая ОС работает с оборудованием так же, как и предыдущее. Микроядра так же требуют меньше дискового простанства и RAM. Кроме того — они могут считаться более безопасными в силу того, что большая часть процессов работает в режиме пользователя и не имеет доступа к критически важным частям ситемы.

  • переносимость
  • меньший размер занимаемой RAM и на жестком диске
  • безопасность
  • в целом система может работать медленнее из-за дополнительных слоев программной абстракции между ядром и оборудованием
  • процессы могут тратить время на ожидание в очереди для получения информации

Monolithic ядра

Монолитные ядра являются противоположностью микроядрам, так как охватывают не только управление процессором, памятью и IPC — но так же включают в себя драйвера устройсв, управление файловыми системами и системными вызовами. Монолитные ядра имеют преимущество в скорости доступа к оборудованию и работе в многозадачном режиме, так как если программе требуется получить информацию из памяти или от другого процесса — она может получить его напрямую и не тратить время в очереди на ожидание ответа. С другой стороны это вызывает и определенные сложности, так как большее количество процессов работает в режиме ядра, что может привести к краху всей системы из-за проблем с одним из них.

  • более быстрый доступ процессов к оборудованию
  • проще связь между самими процессами
  • проще реализация поддержки оборудования без необходимости установки дополнительных драйверов
  • процессы взаимодействуют быстрее, так как не требуется ожидание в очереди
  • больший объем занимаемой памяти и жесткого диска
  • больше проблем с безопасностью

Гибридные ядра

Гибридные ядра ядра могут сами определять — какую часть выполнять в режиме пользователя, а какую — в режиме ядра. Как правило — в режиме пользователя работают драйвера устройств и системы ввода-вывода, тогда как системные вызовы обслуживаются в режиме ядра. Этот подход сочетает в себе преимущества как монолитных, так и микроядер — однако и требует больше внимания со стороны производителей оборудования, так как работа драйверов зависят от них. Кроме того — этот подход может иметь некоторые проблемы быстродействия, унаследованные от микроядерной архитектуры.

  • разработчик может выбирать что запускать в режиме ядра — а что в режиме пользователя
  • меньший размер по сравнению с монолитными ядрами
  • более гибкое, чем другие типы
  • возможны недостатки в производительности
  • установка драйверов устройств зависит от пользователя и производителя оборудования

Файлы ядра Linux

В большинстве GNU/Linux-систем файлы ядра располагаются в каталоге /boot , например CentOS 6:

Файл с vmlinuz в имени и есть файл ядра. Имя vmlinuz пришло из мира UNIX, в котором c 60-годов файл ядра назывался просто unix . Когда Linus Torvalds начал разработку Linux в 90-х — он назвал его просто linux .

Когда появилась реализация виртуальной памяти — к имени linux была добавлена приставка « vm » (virtual memory). Так какое-то время файл ядра назывался просто vmlinux , однако рамзер файла постоянно увеличивался и со временем его стали сжимать а последняя буква в имени была заменена c x на z (zlib compression). Ядро так же зачастую сжимается с помощью LZMA или BZIP2 и некоторые ядра называются просто zImage .

В каталоге /boot так же находятся файлы initrd.img-version (или initramfs-version ), System.map-version и config-version . Файл initrd.img-version используется для первоначальной загрузки системы, во время которой распаковывается и загружается само ядро. Файл System.map используется для управления памятью перед загрузкой смого ядра, а файл config содержит в себе параметры ядра и список модулей для загрузки в ядро во время его компиляции.

Архитектура ядра Linux

Так как ядро Linux является монолитным — оно является самым большим и сложным по сравнению с другими типами ядер. Что бы нивелировать эти недостатки — разработчики ядра добавили возможность работы ядра с модулями, которые могут быть загружены в него во время работы без необходимости перезагрузки всей системы.

Модули ядра Linux

Что если бы Windows изначально содержило в себе все необходимые драйвера, и все что требовалось бы от пользователя — это просто включить некоторые из них?

Именно так и работают модули Linux, которые так же называют Loadable Kernel Module (LKM) и которые жизненно необходимы для того, что бы ядро имело возможность взаимодейтсвовать со всем оборудованием компьютера и при этом не занимать всю его память.

Как правило — модули расширяют возможности ядра для работы с устройствами, файловыми системами и системными вызовами. LKM имеют рсширение файлов .ko :

Благодаря модульной структуре — вы можете настраивать ядро под себя, выбирая только необходимые модули в menuconfig , отредактировав файл /boot/config* или загружая и выгружая модули прямо во время работы с помощью утилит типа modprobe , insmod и rmmod .

Ядро не является чем-то волшебным, но является жизненно необходимым для работы любого компьютера. Ядро Linux отличается от ядер в Windows или OS X системах, так как включает в себя драйвера на уровне ядра системы и поддерживает многие возможности «из коробки».

Ссылка на основную публикацию
Что случилось с facebook
На форумах и в поисковых запросах часто встречается вопрос, почему не работает Фейсбук сегодня, и что делать в такой ситуации....
Читы для вар тандер на орлы
Данный чит носит название Орлы чит для War Thunder 3.0. Это обновление для игры вышло совсем недавно, но для него...
Что больше мегабит или килобит
В эпоху оптоволокна и накопителей объемом в десятки терабайт считать в битах не принято. Мы бы совсем забыли, чем отличается...
Что смотрят в интернете больше всего
Наверное, многим интересно, что чаще всего запрашивают люди в поисковиках, какие поисковые запросы самые популярные и востребованные. Ошибки и опечатки...
Adblock detector