Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.
Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides
РКН: https://kurl.ru/nQejS
Post #3161
409

Process Builder: зачем Linux хочет уйти от fork()+exec()
Классическая схема запуска процесса в Unix выглядит просто:
Но для больших приложений это не всегда удобно. Перед
А сам
1️⃣Что не так с
Условно:
Новый процесс начинает жизнь как копия родительского состояния, а затем большая часть этого состояния становится ненужной.
Для обычной программы это нормально. Но для серверов и других процессов с большим address space стоимость и сложность такой модели становятся заметнее.
2️⃣Что предлагает Process Builder
Идея - сначала получить практически пустой процесс, а затем последовательно собрать его состояние:
То есть создание процесса превращается из одной операции
Это особенно интересно для реализации
3️⃣Почему это интересно kernel-разработчикам
Такой подход позволяет отделить создание процесса от копирования состояния родителя.
В результате можно заранее описать, каким должен быть новый процесс, и передать это описание kernel вместо последовательности
При этом проект пока находится на стадии разработки и обсуждения, а не является новым универсальным syscall, который уже можно использовать на обычной системе.
⚡️Идея Process Builder - не просто сделать fork
Классическая схема запуска процесса в Unix выглядит просто:
fork() создаёт копию текущего процесса, затем execve() заменяет её другой программой.Но для больших приложений это не всегда удобно. Перед
exec() приходится настраивать файловые дескрипторы, credentials, namespaces, ограничения и другие параметры уже созданного процесса. А сам
fork() при этом создаёт его как копию родителя. В 2026 году в Linux обсуждается отдельный process-builder API, который должен позволить собирать новый процесс без такого копирования.1️⃣Что не так с
fork()Условно:
pid = fork();
if (pid == 0) {
// настроить child
execve(...);
}
Новый процесс начинает жизнь как копия родительского состояния, а затем большая часть этого состояния становится ненужной.
Для обычной программы это нормально. Но для серверов и других процессов с большим address space стоимость и сложность такой модели становятся заметнее.
2️⃣Что предлагает Process Builder
Идея - сначала получить практически пустой процесс, а затем последовательно собрать его состояние:
create process
↓
install FDs
↓
set credentials
↓
configure namespaces / limits
↓
exec()
То есть создание процесса превращается из одной операции
fork() в набор явно задаваемых действий.Это особенно интересно для реализации
posix_spawn() и похожих механизмов, где родитель вообще не должен становиться шаблоном нового процесса.3️⃣Почему это интересно kernel-разработчикам
Такой подход позволяет отделить создание процесса от копирования состояния родителя.
В результате можно заранее описать, каким должен быть новый процесс, и передать это описание kernel вместо последовательности
fork() → настройка → exec().При этом проект пока находится на стадии разработки и обсуждения, а не является новым универсальным syscall, который уже можно использовать на обычной системе.
⚡️Идея Process Builder - не просто сделать fork
() быстрее. Это попытка изменить саму модель создания процесса: не копировать существующий процесс и потом переделывать его, а собрать новый из нужных kernel-объектов.- ❤ 3
- 🔥 2

















