Ядро Linux

Что такое ядро операционной системы

Ядро является главной частью любой операционной системы. Существует точка зрения, которая понятие операционной системы приравнивает к ядру. Есть точка зрения, когда в понятие операционной системы включают как ее ядро, так и системные программы, позволяющие пользователю обращаться через ядро к аппаратным ресурсам.

Так что же такое ядро ОС и каковы его функции? Как известно, компьютер – не только система аппаратного обеспечения (железа), но и набор работающего на нем программного обеспечения. Чтобы второе могло эффективно работать на первом, нужна более низкоуровневая программа, скрывающая сложности работы с железом и предоставляющая обычным программам и пользователям удобный для интерфейс.

Железо говорит на языке сигналов, регистров, секторов, переводов головок. Программам все это не надо. Они говорят на языке "записать, прочитать, сложить, вычесть ...". Специальной программой, обеспечивающей остальным простой и понятный интерфейс для работы на имеющемся оборудовании, является ядро операционной системы. Однако создание виртуальной машины – не единственная функция ядра.

Представим себе, что ядра нет, а каждая запущенная программа сама обращается к железу и обрабатывает сигналы от него. Вроде бы ничего страшного, кроме дублирования кода в каждой такой программе. Но на компьютере одновременно работает множество программ. Как они будут "договариваться" между собой о совместном использовании общего аппаратного обеспечения?

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

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

В коде ядра особо выделяют драйверы устройств. Драйвер – это программный код, функция которого заключается в предоставлении возможности использовать определенное железо (например, видеокарту). Причем конкретный драйвер не всегда загружается память вместе с остальной частью ядра. Он туда грузится, лишь когда возникает потребность в ресурсах устройства. Так экономится память, но в ущерб скорости.

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

Ядра Unix-подобных систем

Ядро Unix являлось первой практической реализацией новых идей и открытий 60-70-х годов XX века в области создания операционных систем.

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

В 80-х годах Unix-системы начали множится и видоизменяться. Некоторые умы вовремя спохватились и создали специальные стандарты, обеспечивающие совместимость систем. Это значит, что программа, написанная для одной Unix-подобной системы, должна работать в другой. Стандарты назвали POSIX.

Особенности ядра Linux

Обычно конечные пользователи имеют дело с дистрибутивами Linux, которые незначительно отличаются между собой, в том числе по компонентам ядра (например, наличию/отсутствию определенных драйверов). Однако ядро в своей основе все-равно остается ядром Linux, его исходники предоставляет проект https://www.kernel.org/. Это совместный проект, к нему может присоединится каждый программист. Основным руководителем остается Линус Торвальдс.

С технической точки зрения, Linux – это ядро, а не операционная система. Linux + программы из проекта GNU рождают операционную систему GNU/Linux. Однако ее тоже не существует в чистом виде. Разработчики дистрибутивов дорабатывают на свой лад GNU/Linux, после чего получаются различные операционные системы-дистрибутивы. У каждого дистрибутива есть собственное имя (Ubuntu, Fedora и т. п.). Однако в основе всех этих систем лежит ядро Linux, поэтому все они принадлежат одному семейству Linux-систем.

Ядро Linux начал разрабатывать в 1991 году Линус Торвальдс. В дальнейшем оно развивалось и совершенствовалось многими людьми. Ядро Linux выпускается под лицензией GNU GPL.

Ядро Linux Unix-подобно, так как заимствовало идеи, заложенные в Unix, соответствует стандартам POSIX, а также по большей части написано на языке С.

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

Ядро выпускается в виде стабильных и разрабатываемых версий. В стабильных обычно исправлены ошибки, добавлены новые драйверы устройств. До недавнего времени четное второе число в названии ядра, говорило, что оно стабильно. Нечетное число обозначало разрабатываемую нестабильную версию. В 2011 году от такого подхода к нумерации версий отказались.

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

Конфигурируют ядро с целью включения, отключения или компиляции в виде модуля какого-либо драйвера или функции. Другими словами, "ядро под себя" не будет содержать лишних драйверов для оборудования, которого нет.

Создано

Обновлено

Комментарии

"Unix круче Windows.." (с)
Товарищи, что же вы так.. Надо быть толерантными, иначе в приличном обществе и засмеять могут. Теперь серьезно: это пишется на сайте для начинающих, что может сделать из них холиварщиков и тролей. Надо понимать, что MS имеет очень мощные технологии, и Windows это серьезная платформа. И говорить такое.. ребячество, как минимум. Может уберете это из текста чтобы не сажать в юных умах семя войн? С уважением.

Ответ на от Aleksey

Я являюсь разработчиком на WPF. Я полностью согласен некорректные высказывания не должны иметь место! Касаемо проблемы. 1 Технологии Винды рассчитаны на коммерческую разработку. 2 На разработку системного ПО Винды выделяются ОГРОМНЫЕ деньги. Линукс великолепная система! Она наследница UNIX. Но вести разработку под Линукс сложно. И у Линукс нет единого вектора развития.

Ответ на от Просто пробегал мимо

Успех винды не в том что ПО у мелкомягких лучше или в качественней а скорее всего результат хорошего маркетинга, жесткой конкурентной борьбы и мониполизации в рынке в начале своей эпохи. А что касается качества кода то он скорее лучше в открытых проектах, а профессионализм у разработчиков в майкрасофт не выше профессионализма у любителей-разработчиков unix подобных систем

Ответ на от Aleksey

Сколько работаю с MS, вижу только краденные идеи и корявый код. Никогда и нигде не говорите о том что у MS есть технологии, есть воровство и плохо переделанные программы. Windows никогда не была серьёзной платформой!!! Вдумайтесь, даже сама контора мелокософта ставит на своих серверах юникс!!!! Это говорит о том, что сами они себе не доверяют, и то что делают - делают ради денег и только. А самое главное - делают ПЛОХО.

Ответ на от Гость

Если бы это было так, то весь мир был Юниксоидным.
Но пока мы наблюдаем картину в пользу мелкомягких.

Собственно у любой медали 3 стороны!

Но утверждение автора, что Юникс круче Вынь, потому что был первее не вызывает ничего кроме улыбки. А самое главное дезориентирует пользователя в выборе подходящей платформы для конкретных задач.

Ответ на от Гость

А весь мир Юниксоидный и есть:под чем работает твоя микроволновка и холодильник!? Вся,полность вся бытовая техника,имеющая хоть какие-то мозги,работает на ядре LinuX. Так что подумай,тебе уйму доводов приводиться под преймущество unix систем,а MS - это скорее исключение чем правило :-)