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

Для обычных пользователей и менее чем хардкорных поклонников Linux — операционная система. Однако для пуристов название «Linux» зарезервировано для ядра, которое обеспечивает работу операционной системы. Если вам интересно, что такое ядро ​​Linux, давайте ответим на этот вопрос, взглянув на нового пользователя.

Режимы

Прежде чем объяснить, что такое ядро, важно понять термины «режим пользователя» и «режим ядра». Пользовательский режим — когда исполняемый код не имеет возможности прямого доступа к аппаратной или справочной памяти. Чтобы получить доступ к аппаратному обеспечению и памяти, код, работающий в пользовательском режиме, должен делегировать инструкции системным интерфейсам прикладного программирования (API). Режим ядра — это когда исполняемый код имеет неограниченный доступ ко всему аппаратному обеспечению и зарезервирован для наиболее надежных функций операционной системы.

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

Каждая операционная система имеет ядро. Windows, macOS, iOS, Android, Chrome OS и Linux имеют низкоуровневую систему, которая отвечает за взаимодействие всех приложений с физическим оборудованием компьютера. Без ядра ни одно из ваших приложений не сможет использовать физический компьютер; приложения, такие как Firefox, Chrome, LibreOffice, MS Office или Outlook, не будут работать. Ядро также отвечает за разрешение процессам обмениваться информацией, используя то, что называется межпроцессным взаимодействием (IPC).

Существует (вообще говоря) три типа ядер:

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

Linux использует открытый источник Monolithic Kernel, тогда как macOS и Windows используют Hybrid Kernels. Ядро Linux было задумано в 1991 году Линусом Торвальдсом. До сегодняшнего дня г-н Торвальдс продолжает оставаться ведущим разработчиком ядра Linux, а разработчики со всего мира вносят свой вклад в ядро ​​Linux. На самом деле, по оценкам, около 10 000 разработчиков из более чем 1000 компаний внесли свой вклад в ядро ​​Linux (с момента начала отслеживания в 2005 году).

Где ядро?

Если вы откроете окно терминала и выполните команду ls / boot, вы увидите файл с именем vmlinuz-версия (Где VERSION — название или номер релиза). Файл vmlinuz — это собственно загружаемое ядро ​​Linux, а «z» означает, что ядро ​​сжато; поэтому вместо vmlinux у нас есть vmlinuz.

Список каталога / boot.

В этом каталоге / boot находятся другие важные файлы ядра, такие как initrd.img-VERSION, system.map-VERSION и config-VERSION (где VERSION — это имя или номер выпуска). Эти другие файлы служат следующим целям:

  • Initrd: Используется как небольшой RAM-диск, который извлекает и выполняет фактический файл ядра.
  • system.map: Используется для управления памятью до загрузки ядра.
  • конфиг: Указывает ядру, какие опции и модули загружать.

Модули

Без модулей ядро ​​было бы бесполезным. Модули эффективно включают драйверы, необходимые для связи с оборудованием, не занимая всю системную память. Модули также добавляют в ядро ​​такие функции, как взаимодействие с периферийными устройствами, управление файловыми системами, безопасность и т. Д. Можно перечислять, добавлять и удалять модули в ядре с помощью следующих команд:

  • lsmod выведет список всех загруженных модулей ядра.
  • insmod загрузит модуль ядра в работающее ядро.
  • rmmod выгрузит модуль из работающего ядра.

Итак, вы видите, с помощью некоторых простых команд ядро ​​Linux может быть достаточно гибким.

Текущее ядро

На момент написания этой статьи стабильным ядром Linux является 4.18.5, но не все дистрибутивы Linux будут содержать последнее ядро. Фактически, обновленный дистрибутив Elementary OS для настольных компьютеров работает с ядром 4.15.0-30. Что означает это число? В случае с последним ядром на Elementary OS это означает:

  • 4 является основной версией
  • 15 минорная версия
  • 0-30 это ревизия

Также можно скачать разные версии ядра Linux с сайта kernel.org и скомпилировать его самостоятельно. Компиляция ядра Linux — это задача, которую лучше оставить тем, кто действительно знает, что делает. Неправильно скомпилированное ядро ​​может сделать систему не загружаемой. Поэтому, если вы не готовы погрузиться в сложную задачу компиляции кода на этом уровне, используйте ядро ​​по умолчанию, которое поставляется и обновляет выбранный вами дистрибутив.

Ссылка на основную публикацию