Зачем в POSIX 'fork' создаёт полную копию? Доброго времени суток, товарищи. Изучая операционные системы задал себе вопрос: зачем в POSIX-подобных системах при создании процесса избран путь полного копирования родительского в дочерний и толтко после этого с помощью сис.вызова execue перезаписывается полезным содержимым. В чем смысл передавать весь образ памяти, строки config и т.д., когда, к примеру, в Windows создаётся, ну очень грубо говоря, "пустое ничего" и уже ему задаются аргументы, выполняющаяся программа и ещё 7-8 стандартных параметров. У меня нет цели захейтить один из путей, мне хочется разобраться, какие плюсы и минусы у обоих способов. Ведь не просто так 'fork'у не нашли замены в течении нескольких десятилетий, так ведь? Спасибо тем, кто постарается простым (а можно и не простым) языком описать суть на столько разных подходов. Принимаются любые ссылки с описанием. )

21 Авг 2019 в 06:49
225 +1
0
Ответы
1

Доброго времени суток! Давайте разберемся с этим вопросом.

Полное копирование процесса при использовании функции fork в POSIX-подобных системах обусловлено тем, что это позволяет создать точную копию родительского процесса, включая все его данные и состояние. Это означает, что дочерний процесс начинает выполнение с теми же данными и состоянием, что и его родитель, что может быть полезно в некоторых случаях.

Такой подход обеспечивает высокую степень изоляции между процессами, поскольку они могут работать независимо друг от друга, не зная о существовании друг друга. Это также упрощает программирование, поскольку не нужно переносить данные между процессами или делить ресурсы.

Однако, есть и недостатки данного подхода. Полное копирование процесса может быть затратным по ресурсам (время на создание копии, занимаемая память и т.д.), особенно если процесс имеет большой объем данных. Также, при использовании такого подхода может возникнуть проблема дублирования данных, если ресурсы родительского процесса не нужны дочернему.

В отличие от этого, подход, применяемый в Windows, позволяет создать новый процесс с минимальным набором данных (так называемый "пустой" процесс), и затем задать ему нужные данные, программу для выполнения и т.д. Это может быть более эффективным в некоторых случаях, поскольку не требуется копировать все данные из родительского процесса. Однако, это требует дополнительной работы по передаче данных и ресурсов дочернему процессу.

Каждый из подходов имеет свои плюсы и минусы, и выбор между ними зависит от конкретной ситуации и требований приложения. Важно понимать, что оба подхода имеют свои преимущества и недостатки, и выбор между ними должен быть обоснованным и основанным на конкретных потребностях приложения.

Надеюсь, это помогло вам разобраться в сути разных подходов. Если у вас остались дополнительные вопросы, не стесняйтесь задавать их!

20 Апр в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 95 047 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир