Линус Торвальдс представил через объявление о доступности новой версии Ядро Линукс 6.1. что, может быть, это одна из самых важных версий, выпущенных за последние 30 лет И именно то, что делает этот выпуск таким особенным, заключается в том, что в этой версии вводится второй язык для разработки ядра, которым является язык Rust.
Таким образом, Rust получает только официальный API, позволяющий разрабатывать отдельные модули или пилотные версии для Linux. Это означает, что открытие ядра Linux для этого языка продолжается, в результате чего отказ от языка C не запланирован на завтра. Однако это изменение связано с доступностью и компетенцией третьих сторон, участвующих в разработке ядра.
Основные новые возможности Linux 6.1
Самым большим новшеством Linux 6.1 является приход Руста, так как в течение нескольких лет за кулисами велась работа по приведению ядра в соответствие с новым языком программирования. В будущем появится возможность программировать модули не только на C, но и на Rust.
В текущем состоянии он позволяет только компилировать, загружать и скачивать очень простой пример модуля. В качестве первого шага Линус Торвальдс просто хотел простую фразу «Hello world!». Поэтому другие полезные модули и, прежде всего, невозможны в Rust в текущем ядре. Тем не менее, новое ядро дает первое представление о том, как интегрируется Rust и какие проблемы необходимо преодолеть.
Еще одна новинка, реализованная в этой новой версии Linux 6.1, — Поддержка платформы управления платформой AMD, что гарантирует повышение производительности с различными процессорами AMD (центральными процессорами).
Платформа управления платформой AMD также полная поддержка AMT (автоматический переход в режим) и для CnQF (Cool and Quiet Framework). Начиная с этого обновления, пользователи дистрибутива получат доступ к более глубокому и всестороннему управлению питанием и температурой.
В дополнение к этому мы также можем обнаружить, что Включен механизм МГЛРУ (мультипоколенческий LRU), который заменил старую реализацию LRU (наименее недавно использовавшиеся) на основе двух очередей с многоступенчатой структурой, которая лучше определяет, какие страницы памяти фактически используются, а какие могут быть вытеснены из подкачки.
Добавлено поддержка структуры данных клена предложенный инженерами Oracle, который позиционируется как более эффективная замена структуры «красно-черное дерево». Кленовое дерево иявляется вариантом дерева B который поддерживает индексацию диапазона и предназначен для эффективного использования кеша современных процессоров. Некоторые подсистемы управления памятью уже портированы на дерево клена, что положительно сказывается на его производительности. В будущем клен можно будет использовать для реализации блокировки диапазона.
Он также выделяется в Linux 6.1, который добавлен специальный вызов для выделения памяти в программах BPF (распределитель памяти), который обеспечивает более безопасное выделение памяти в контексте BPF, чем обычный kmalloc(). Интегрирована первая часть изменений, обеспечивающая возможность создания драйверов для устройств ввода с интерфейсом HID (Human Interface Device), реализованных в виде программ BPF. Код был полностью удален из ядра для поддержки формата исполняемого файла a.out, который устарел в версии 5.1 и, начиная с версий 5.18 и 5.19, отключен для всех основных архитектур.
Формат a.out уже давно не используется в системах Linux, а современные инструменты не поддерживают создание файлов a.out в конфигурациях Linux по умолчанию. Загрузчик файлов a.out может быть полностью реализован в пользовательском пространстве.
Заменена реализация механизма защиты CFI (Целостность потока управления), добавляя проверки перед каждым косвенным вызовом функции для выявления некоторых форм неопределенного поведения, которые потенциально могут привести к нарушению нормального порядка выполнения (потока управления) в результате использования эксплойтов, изменяющих указатели функций, хранящиеся в памяти.
Обычная реализация CFI проекта LLVM была заменена вариантом, также основанным на использовании Clang, но специально адаптированным для защиты низкоуровневых подсистем и ядер операционной системы. В LLVM будет предложена новая реализация в версии Clang 16, и она будет включена с опцией «-fsanitize=kcfi».
Ключевое отличие новой реализации в том, что она не привязана к оптимизации времени компоновки (LTO) и не приводит к замене указателей функций ссылками в таблице переходов.
Из других изменений которые выделяются
- Для модулей Linux Security Module (LSM) предусмотрена возможность создания контроллеров, перехватывающих операции по созданию пространств имен.
- Предоставлены инструменты для проверки цифровых подписей PKCS#7 в программах BPF.
- /dev/random вернул возможность открытия в неблокирующем режиме (O_NONBLOCK), которая была случайно удалена в ядре 5.6.
- Добавлено предупреждение в системах x86, когда подсистемы ядра выделяют страницы памяти, которые являются как исполняемыми, так и записываемыми. В будущем рассматривается возможность полного запрета такого отображения памяти.
наконец, если вы интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.