- Как работает ядро Linux?
- Ядро Linux.
- Что такое ядро и для чего оно
- Версии
- Какую версию Linux выбрать
- Является ли ядро операционной системой?
- Что делает ядро Linux
- Что делает ядро Linux
- Аппаратный уровень
- Уровень драйверов
- Функциональный уровень
- Уровень взаимодействия
- Уровень виртуализации
- Прикладной уровень
- Что НЕ делает ядро Linux
- Выводы
Как работает ядро Linux?
Обычно, когда мы говорим о Linux, мы сразу вспоминаем про такие дистрибутивы, как Ubuntu, Debian, Mint и т. д. Однако эти дистрибутивы не являются операционными системами как таковыми, а скорее являются “адаптациями” операционной системы с открытым исходным кодом: Linux. И следовательно, несмотря на особенности каждого из них, все они имеют одну и ту же базу, которую мы знаем как ядро Linux .
Ядро Linux.
По этой причине обычно не говорят ”я собираюсь установить Linux ”, имея в виду конкретную операционную систему, а скорее то, что мы устанавливаем, – это версии или дистрибутивы этого ядра, созданные компаниями или сообществом, которые используют одну и ту же базу: ядро Minix (которая, в свою очередь, клонировала концепции Unix). Благодаря своим свойствам Linux является настоящей операционной системой, хотя никто не использует ее как таковую, а скорее использует дистрибутивы, поскольку с ними она становится намного полезнее и проще в использовании.
Что такое ядро и для чего оно
Ядро Linux является ядром операционной системы . Это самая важная часть программного обеспечения в любой операционной системе. У Windows есть свое собственное ядро, у MacOS есть свое (основанное на Unix, кстати), а Linux – это ядро, используемое всеми дистрибутивами. И его основная функция – отвечать за управление компьютерным оборудованием. В частности, это ядро отвечает за управление системной памятью и временем обработки, управление всеми процессами, управление системными вызовами и соединениями между процессами и позволяет всему программному обеспечению иметь доступ к оборудованию, особенно к подключенным периферийным устройствам.
Ядро настолько важно при управлении оборудованием, что из его более чем 28 миллионов строк кода большая часть – это драйверы.
В обычных условиях пользователи никогда не взаимодействуют с ним . В то время как пользователи имеют ограниченный доступ к оборудованию, ядро имеет полный доступ и контроль над ним. Оно отвечает за то, чтобы все работало хорошо, чтобы это было сделано безопасно и чтобы не было ошибок. Если процесс завершается сбоем в пользовательском пространстве, Linux продолжает функционировать. Однако, если в пространстве ядра возникает ошибка, вся система перестает работать. Это то, что мы знаем как ”Kernel panic“, эквивалент синего экрана в Linux.
Версии
- a указывает версию.Это число меняется меньше всего, поскольку переход обычно выполняется только при очень больших изменениях в системе. За всю свою историю оно менялось всего 6 раз: в 2004 году для версии 1.0, в 2006 году для версии 2.0, в 2011 году для версии 3.0, в 2015 году для версии 4.0 и в 2019 году, чтобы привести к появлению текущей версии 5.0 и 2022 для удобства сменили версию на 6.0.
- b указывает на subversion.Когда выпускаются новые версии, но это действительно незначительные обновления (новые драйверы, оптимизации, исправления и т. д.), Тогда вместо изменения версии изменяется номер subversion.
- c указывает уровень ревизии. Это число часто меняется, например, при внесении незначительных изменений, таких как исправления безопасности, исправления ошибок и т. д.
- d – последний подуровень версии. Оно почти не используется, но оно зарезервировано, так что, если выпущена версия с очень серьезной ошибкой, новая версия будет выпущена с этим подуровнем, включая исключительно исправление указанной серьезной ошибки.
Все версии ядра Linux являются общедоступными и имеют открытый исходный код. Мы можем найти их по этой ссылке. Но они не не скомпилированные, их должны компилировать сами пользователи, чтобы иметь возможность использовать их в своем дистрибутиве. И это не совсем простая задача. К счастью, сообщества, ответственные за разработку различных дистрибутивов, обычно предоставляют нам скомпилированные и оптимизированные версии ядра, которые мы можем установить в свой дистрибутив.
Какую версию Linux выбрать
Когда мы говорим о программном обеспечении, мы всегда рекомендуем иметь последнюю версию всего. С ядром Linux то же самое, всегда рекомендуется иметь последнюю версию. Однако устанавливать ее необходимо осторожно.
Одна из причин, по которой ядро такое большое, заключается в том, что оно ничего не удаляет. Как бы старо оно ни было. Благодаря этому можно продолжать использовать последние версии Linux на первых компьютерах, где оно было впервые запущен в 1991 году. Каждое обновление обычно заключается в добавлении драйверов и изменении функций для оптимизации общей работы ПК.
Но может случиться так, что версия содержит ошибку, из-за которой наш компьютер не работает должным образом, или производительность падает. В этом случае простая переустановка предыдущей версии должна привести операционную систему в нормальное состояние. Хотя мы потеряем поддержку более новых аппаратных компонентов.
Лучшим и самым простым для большинства пользователей является обновление ядра по мере обновления дистрибутива из его репозиториев. Таким образом, мы избежим этих проблем, “всегда будучи в курсе последних событий”.
Является ли ядро операционной системой?
Ядро является одной из наиболее важных частей операционной системы. Но это не единственное, необходимое для того, чтобы иметь возможность называть Linux сегодня операционной системой как таковой. Как мы уже объясняли, в этом ядре есть все драйверы и все необходимое для управления программным обеспечением и предоставления пользователю доступа к нему. Но, чтобы быть действительно полезным, оно должно иметь другие компоненты поверх него, прежде чем попасть к пользователю.
- Подсистема инициализации. Будь то Init.d, Systemd или любое другое подобное программное обеспечение, необходимо иметь подсистему над ядром, которая отвечает за запуск всех процессов (демонов), необходимых для начала работы ядра. Без него у нас будет только много строк кода, которые не будут выполняться.
- Процессы. Демоны, или более известные как процессы, – это все компоненты, которые остаются загруженными в системную память (управляются ядром) и которые позволяют Linux функционировать. Графический сервер, например, является демоном, который будет управлять рабочим столом.
- Графический сервер . Известный как X, он отвечает за возможность видеть графику на экране. Если мы собираемся использовать Linux в текстовом режиме, из терминала, в этом нет необходимости. Но если мы собираемся использовать его с настольным компьютером, необходимо иметь работающий x-сервер.
- Графическая оболочка. Как следует из названия, графическая оболочка, это то програмное обеспечение в котором у нас будут все наши программы и где будут открываться окна. Существует множество графических оболочек для Linux, таких как GNOME, KDE или LXDE. У каждой есть свои особенности, преимущества и недостатки.
- Программы. Все, что мы запускаем с рабочего стола. Это уже самый высокий уровень и точка, через которую мы взаимодействуем с компьютером.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 0 / 5. Количество оценок: 0
Оценок пока нет. Поставьте оценку первым.
Что делает ядро Linux
Ядро Linux — это ключевой компонент любого дистрибутива. Оно создавалось Линусом Торвальдсом как средство для доступа к терминалу университетского компьютера, но сейчас на него возложено гораздо больше функций.
Мы затронем не только само ядро, но ещё и утилиты проекта GNU. Это поможет определить границы возможностей ядра, а также понять, почему ядро без них бесполезно.
Что делает ядро Linux
Ядро Linux монолитное. Это значит, что оно самодостаточное и выполняет все низкоуровневые задачи. Код ядра можно разбить на блоки. Часть кода отвечает за общение с аппаратной частью, другая — за виртуализацию и так далее. Чем выше уровень, тем больше системных вызовов доступно программам. Ядро работает со всеми компонентами компьютера: процессором, оперативной памятью, сетью, устройствами ввода/вывода. Ниже представлена карта ядра Linux.
Аппаратный уровень
На нём определяется интерфейс подключения и архитектура, чтобы была возможность перейти на следующий уровень. Например, у процессора считывается идентификатор, что позволяет задействовать все его возможности.
Уровень драйверов
Код драйверов занимает большую часть ядра. Это легко объяснить. Если остальной код ядра унифицирован, то драйверы у каждого устройства свои. Их настолько много, что некоторые вынесены в отдельные модули. Если собирать ядро только под определённое железо, то оно займёт совсем немного места.
Функциональный уровень
На этом уровне, с учётом двух предыдущих, определяются функциональные возможности компьютера. Настраивается планировщик процессора, определяются логические разделы диска и их файловая система.
Именно здесь задаются протоколы передачи данных TCP и UDP. Перезапуск или выключение ядра тоже можно отнести к функциональным возможностям.
Уровень взаимодействия
Этот уровень предназначен для того, чтобы устройства могли общаться между собой и дополнять друг друга. Например, на накопителе выделяется место под SWAP, что позволяет системе выгружать невостребованные данные из оперативной памяти.
Ещё один пример взаимодействия — это управление потоками. Без этого было бы невозможно использовать сотни потоков на процессоре с кратно меньшим количеством ядер. Если процесс ничем не занят, то его поток замораживается, высвобождая тем самым процессорное время для более важных задач.
Здесь же реализуется межпроцессное взаимодействие (IPC). С его помощью потоки одного процесса могут обмениваться данными.
Уровень виртуализации
Это один из самых важных уровней ядра. На нём потоки представляются программам как нечто абстрактное, как будто других программ не существует. Аналогичная ситуация с памятью, под определённую задачу выделяется только её часть, об остальной занятой памяти программа знать не должна.
На этом уровне создаются также виртуальные файловые системы. Это одна из ключевых задач ядра. Вместо того чтобы отображать пользователю файловую систему ext4 или любую другую, ядро приводит её к одному виду, который понятен не только программам, но и пользователю. Что интересно, файловой системой можно сделать даже оперативную память. Для этого на уровне взаимодействия создаётся RAM-диск. Во время загрузки операционной системы это решает вопрос доступа к загрузочным файлам до момента инициализации файловой системы накопителя.
Прикладной уровень
На прикладном уровне описана большая часть системных вызовов. Они нужны для того, чтобы программы могли общаться с ядром. Таким образом, можно запросить чтение или запись файла, создание нового потока и так далее. Иными словами, через вызовы происходит взаимодействие с ресурсами компьютера. Однако даже этого недостаточно для того, чтобы организовать полноценную работу операционной системы. На этом моменте мы плавно переходим к следующему пункту.
Что НЕ делает ядро Linux
Вы наверняка слышали о том, что операционные системы Linux называют GNU/Linux. Именно библиотеки и утилиты проекта GNU дополняют ядро, давая тем самым возможность более гибко и просто использовать его вызовы. Системных вызовов несколько сотен, но библиотека GNU C (glibc) значительно расширяет этот список всевозможными функциями. Аналогичную работу выполняет библиотека DRM (не относится к GNU), дающая доступ к ресурсам видеокарты. На примере ниже показана работа видеоигры.
Другие утилиты GNU не менее полезны. Например, командная оболочка Bash отвечает за выполнение консольных команд.
Исходя из вышесказанного, можно утверждать, что ядро Linux редко используется напрямую. Посредники в виде библиотек GNU предоставляют доступ к основным функциям ядра и расширяют их. Если сравнить операционную систему GNU/Linux с языком программирования, то ядро — это операторы, а GNU — набор стандартных функций.
Android тоже использует ядро Linux, но вместо библиотек GNU задействует собственные. Поэтому GNU/Linux и Android имеют несовместимые друг с другом программы.
Выводы
Теперь вы знаете что делает ядро Linux. Если кратко описать задачи ядра, то оно управляет ресурсами компьютера и предоставляет к ним доступ в виде абстракций вроде виртуальной памяти и потоков. Но не стоит переоценивать заслуги ядра, вместе с утилитами GNU вы получаете не просто планировщик потоков, а практически полноценную операционную систему.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.