Задать вопрос
@Redproxima
Студент технического ВВУЗ'а

Зачем в POSIX 'fork' создаёт полную копию?

Доброго времени суток, товарищи. Изучая операционные системы задал себе вопрос: зачем в POSIX-подобных системах при создании процесса избран путь полного копирования родительского в дочерний и толтко после этого с помощью сис.вызова execue перезаписывается полезным содержимым. В чем смысл передавать весь образ памяти, строки config и т.д., когда, к примеру, в Windows создаётся, ну очень грубо говоря, "пустое ничего" и уже ему задаются аргументы, выполняющаяся программа и ещё 7-8 стандартных параметров. У меня нет цели захейтить один из путей, мне хочется разобраться, какие плюсы и минусы у обоих способов. Ведь не просто так 'fork'у не нашли замены в течении нескольких десятилетий, так ведь? Спасибо тем, кто постарается простым (а можно и не простым) языком описать суть на столько разных подходов. Принимаются любые ссылки с описанием. )
  • Вопрос задан
  • 285 просмотров
Подписаться 3 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
voronkovich
@voronkovich
Описанное вами поведение fork относится к ранним версиям Unix. В современных Unix-подобных системах используется идея "копирования при записи": https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D...
Ответ написан
Комментировать
@anikavoi
Это просто два разных подхода.
Сравнивать fork и CreateThread не совсем правильно, ибо это похожие, но разные сущности.
а ответ на ваш вопрос - изолированность общих переменных.
Просто создайте общую переменную и измените ее в триде и в форке, потом прочтите ее из другой ветки - все поймёте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы