Как работает ядро Linux?
Обычно, когда мы говорим о Linux, мы сразу вспоминаем про такие дистрибутивы, как Ubuntu, Debian, Mint и т. д. Однако эти дистрибутивы не являются операционными системами как таковыми, а скорее являются “адаптациями” операционной системы с открытым исходным кодом: Linux. И следовательно, несмотря на особенности каждого из них, все они имеют одну и ту же базу, которую мы знаем как ядро Linux .
Ядро Linux.
По этой причине обычно не говорят ” я собираюсь установить Linux ”, имея в виду конкретную операционную систему, а скорее то, что мы устанавливаем, — это версии или дистрибутивы этого ядра, созданные компаниями или сообществом, которые используют одну и ту же базу: ядро Minix (которая, в свою очередь, клонировала концепции Unix). Благодаря своим свойствам Linux является настоящей операционной системой, хотя никто не использует ее как таковую, а скорее использует дистрибутивы, поскольку с ними она становится намного полезнее и проще в использовании.
Что такое ядро и для чего оно
Ядро Linux является ядром операционной системы . Это самая важная часть программного обеспечения в любой операционной системе. У Windows есть свое собственное ядро, у MacOS есть свое (основанное на Unix, кстати), а Linux — это ядро , используемое всеми дистрибутивами. И его основная функция — отвечать за управление компьютерным оборудованием.
В частности, это ядро отвечает за управление системной памятью и временем обработки , управление всеми процессами , управление системными вызовами и соединениями между процессами и позволяет всему программному обеспечению иметь доступ к оборудованию , особенно к подключенным периферийным устройствам.
Ядро настолько важно при управлении оборудованием, что из его более чем 28 миллионов строк кода большая часть — это драйверы.
В обычных условиях пользователи никогда не взаимодействуют с ним . В то время как пользователи имеют ограниченный доступ к оборудованию, ядро имеет полный доступ и контроль над ним. Оно отвечает за то, чтобы все работало хорошо, чтобы это было сделано безопасно и чтобы не было ошибок. Если процесс завершается сбоем в пользовательском пространстве, Linux продолжает функционировать . Однако, если в пространстве ядра возникает ошибка, вся система перестает работать. Это то, что мы знаем как ” Kernel panic “, эквивалент синего экрана в Linux.
Версии
Это правда, что текущие версии ядра не имеют ничего общего с первыми версиями 1991 года. Тем не менее, ядро Linux находится в постоянном развитии. И каждые несколько недель мы обычно видим новые релизы. Но не все они одинаково важны.
Версии ядра Linux могут иметь 4 числа, указывающие версию: abcd
- 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. У каждой есть свои особенности, преимущества и недостатки.
- Программы. Все, что мы запускаем с рабочего стола. Это уже самый высокий уровень и точка, через которую мы взаимодействуем с компьютером.
What is the Linux kernel?
The Linux® kernel is the main component of a Linux operating system (OS) and is the core interface between a computer’s hardware and its processes. It communicates between the 2, managing resources as efficiently as possible.
The kernel is so named because—like a seed inside a hard shell—it exists within the OS and controls all the major functions of the hardware, whether it’s a phone, laptop, server, or any other kind of computer.
What the kernel does
- Memory management: Keep track of how much memory is used to store what, and where
- Process management: Determine which processes can use the central processing unit (CPU), when, and for how long
- Device drivers: Act as mediator/interpreter between the hardware and processes
- System calls and security: Receive requests for service from the processes
The kernel, if implemented properly, is invisible to the user, working in its own little world known as kernel space, where it allocates memory and keeps track of where everything is stored. What the user sees—like web browsers and files—are known as the user space. These applications interact with the kernel through a system call interface (SCI).
Think about it like this: The kernel is a busy personal assistant for a powerful executive (the hardware). It’s the assistant’s job to relay messages and requests (processes) from employees and the public (users) to the executive, to remember what is stored where (memory), and to determine who has access to the executive at any given time and for how long.
Where the kernel fits within the OS
To put the kernel in context, you can think of a Linux machine as having 3 layers:
- The hardware: The physical machine—the bottom or base of the system, made up of memory (RAM) and the processor or central processing unit (CPU), as well as input/output (I/O) devices such as storage, networking, and graphics. The CPU performs computations and reads from, and writes to, memory.
- The Linux kernel: The core of the OS. (See? It’s right in the middle.) It’s software residing in memory that tells the CPU what to do.
- User processes: These are the running programs that the kernel manages. User processes are what collectively make up user space. User processes are also known as just processes. The kernel also allows these processes and servers to communicate with each other (known as inter-process communication, or IPC).
Code executed by the system runs on CPUs in 1 of 2 modes: kernel mode or user mode. Code running in the kernel mode has unrestricted access to the hardware, while user mode restricts access to the CPU and memory to the SCI. A similar separation exists for memory (kernel space and user space). These 2 small details form the base for some complicated operations like privilege separation for security, building containers, and virtual machines.
This also means that if a process fails in user mode, the damage is limited and can be recovered by the kernel. However, because of its access to memory and the processor, a kernel process crash can crash the entire system. Since there are safeguards in place and permissions required to cross boundaries, user process crashes usually can’t cause too many problems.
Also, because the Linux kernel can continue to work during live patching, there’s no downtime while patches are applied for security fixes.