Создание и уничтожение контекстов CPU в Redox разрешили из нескольких потоков
10.03.2026В ядре Redox создание и уничтожение контекстов CPU разрешено из нескольких потоков одновременно. Это убрало зависания при переключении контекста и снизило конкуренцию за блокировку.
Что такое контекст CPU
Контекст — это запись ядра о состоянии процессора: какие регистры заняты, где стек, счётчик, состояние планировщика. Процесс, у которого ядро сохранило состояние один раз и больше не запускало, лежит в списке как «не выполняется».
Чтобы процесс снова работал, нужен новый или сохранённый контекст. Отсюда важность операций с ними: создание и уничтожение происходят на любом ядре, и в многопоточном коде — сразу на нескольких.
Где была проблема
Операции с контекстами требовали общей блокировки. При интенсивном переключении контекста, то есть при любой многопоточной нагрузке, потоки выстраивались в очередь за ней. Отсюда две беды: снижалась скорость переключения, а в некоторых случаях система зависала — ожидание не завершалось.
Программа, которая просто работает с несколькими потоками, при этом не делает ничего необычного, могла подвесить систему. Признак — зависание, зависящее от нагрузки, которое не воспроизводится в однопоточной программе.
Что сделано
Создание и уничтожение контекстов разрешено выполнять параллельно, а конкуренция за блокировку снижена. Оптимизация затронула и сам путь создания и инициализации контекста, а не только защиту от одновременного доступа.
Отдельно в том же месяце снималась ещё одна причина зависаний: ядро училось создавать и уничтожать контексты из нескольких потоков, чтобы убрать зависания при переключении, — это то же изменение, описанное шире.
Что это значит для кода на Rust
В Redox практически всё работает в userspace, и многопоточность там обычна: пулы, асинхронные задачи, параллельная обработка. Зависание при переключении контекста — это отказ всего, что использует потоки, а не отдельной программы.
Оригинал
Коммит Optimize context spawn and init от 10 марта 2026 года в репозитории redox-os/kernel; рядом — работа по снижению конкуренции за блокировку при создании контекстов. Сводка «This Month in Redox — March 2026», раздел «Kernel Improvements»
Упоминаний: 1 · Просмотров: 2