В ядре Redox появилась схема адресации Sv39 для RISC-V на реальном железе

18.04.2026

Ядро и загрузчик Redox переведены на схему адресации Sv39, что позволило запустить RISC-V на настоящем оборудовании. Заодно добавлены определения Sv57.

Что такое схема адресации

Виртуальная память — это способ дать каждой программе своё непрерывное адресное пространство, независимо от того, как она размещена физически. Но адреса ограничены разрядностью: разрядность виртуального адреса задаёт, сколько памяти вообще можно адресовать, а формат страниц определяет, как страница переводится в физическую.

На RISC-V используется семейство форматов страниц с именами Sv39, Sv48 и Sv57. Число — сколько бит используется в виртуальном адресе, минус один, делённый на девять: 39 значат 512 ГБ адресуемого пространства, 48 — 256 ТБ, 57 — 128 ПБ.

Формат не выбирают произвольно: он задаётся аппаратно и объявляется ядром ОС.

Что мешало на реальном железе

Redox использовал старший формат, рассчитанный на 128 ПБ. Эмулятор такое допускает, а настоящий процессор — нет: если аппаратура объявляет, что умеет меньше, программа, рассчитывающая на больший диапазон, получает неверное поведение. Это и есть разница между работой в QEMU и на живом железе: эмулятор не проверяет то, на чём спотыкается железо.

Переход на Sv39 сопровождался обходными путями в загрузчике — там, где разные платы ведут себя по-разному.

Зачем это разработчику

Поддержка реального RISC-V — это возможность собирать и запускать Redox на конкретной плате, а не только в эмуляторе. Для разработчика на Rust это ещё и проверка того, насколько переносим код, написанный под одну архитектуру: RISC-V в последние годы стала второй по популярности целью после x86_64, и упаковка под неё набирает обороты.

Оригинал

Коммиты RISCV64: Change VA scheme to Sv39 for real hardware support + Sv57 и Actually switch to Sv39 от 18 апреля 2026 года в репозитории redox-os/kernel; сводка «This Month in Redox — April 2026», раздел «Better RISC-V Compatibility»

Упоминаний: 1 · Просмотров: 2