TGViewer
Admin Guides | Сисадмин Admin Guides | Сисадмин @admguides · 12K subscribers
Post #3161 420
Process Builder: зачем Linux хочет уйти от fork()+exec()

Классическая схема запуска процесса в 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
More from @admguides
  1. Oct 6, 2026Post #3160
  2. Oct 5, 2026💬 Вопрос на собеседовании для сисадмина Давайте разберем один из частых вопросов, который…
  3. Oct 5, 2026🫥 Сервис запустили - пора принимать поздравления и платежи С платежами поможет pay.hot. П…
  4. Oct 5, 2026Block-layer error injection: как Linux специально ломает I/O В Linux можно не ждать, пока…
  5. Oct 5, 2026АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ Проект «Terminal» стал крупнейшей библиотекой бесплатного об…
  6. Oct 5, 2026Показан открытый минималистичный браузер Northstar, полностью написанный с нуля на C. Одно…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →