Сообщество RSS DEV

Rust в Linux: Исправление краев, а не ядра

Линус Торвальдс интегрировал поддержку Rust в ядро Linux в 2022 году, начиная с версии 6.1. Это не было отказом от C, а шагом к повышению безопасности ядра, признавая, что периферийный код представляет значительные риски. Ядро, написанное на C, тщательно поддерживается, что делает его менее подверженным уязвимостям, связанным с памятью. Управление памятью в ядре традиционно полагается на ручные функции C, такие как kmalloc и kfree, из-за необходимости детерминированной производительности, что делает сборщик мусора непригодным. Большинство уязвимостей возникают из-за ошибочного кода, использующего эти аллокаторы, особенно в драйверах устройств и сетевых стеках. Rust смягчает эти риски, перекладывая ответственность за управление памятью с людей на компилятор посредством концепций владения и заимствования. Rust обеспечивает безопасность памяти во время компиляции без накладных расходов во время выполнения, в отличие от таких языков, как Go, что делает его подходящим для ядра. Текущая реализация использует гибридную модель, в которой Rust используется для новых драйверов устройств и абстракций. Существующие основные подсистемы, написанные на C, пока останутся без изменений из-за сложности и оптимизации. Этот подход позволяет ядру развиваться в сторону более безопасной модели без масштабной задачи переписывания существующего кода.
favicon
dev.to
Rust in Linux: Fixing the Edges, Not the Core
Create attached notes ...