Почему системный вызов fork() копирует память родительского процесса?

Когда мы выполняем процесс из терминала, процесс терминала выполняет fork, а затем exec. Во время разветвления он создает свою собственную копию, содержащую информацию о конкретном процессе, в данном случае, например, Bash. Копирование этой памяти может занять некоторое время даже для некоторых небольших процессов, которые могут задержать выполнение, тогда Почему мы копируем память во время fork? Какой смысл копировать большой объем данных из большого процесса в маленький процесс?


person sahil shekhawat    schedule 28.05.2016    source источник
comment
Linux не копирует сразу всю память. Он просто копирует сопоставления. Память распределяется между родителем и потомком до тех пор, пока в память не будет произведена запись. Только в этот момент делается копия этой конкретной страницы памяти. Ищите копию при записи для более подробной информации.   -  person kaylum    schedule 28.05.2016
comment
Большое спасибо! Если это дубликат, я могу закрыть этот вопрос, если нет, не могли бы вы добавить это как ответ?   -  person sahil shekhawat    schedule 28.05.2016
comment
В руководстве сказано, что fork создает дочерний процесс. Пожалуйста, посмотрите, что такое дочерний процесс. ХТН.   -  person babon    schedule 28.05.2016
comment
@cunev Пожалуйста, перестаньте грубить и на самом деле прочитайте вопрос. ХТХ РУКА.   -  person user253751    schedule 28.05.2016
comment
Связанный ответ здесь не отвечает на вопрос. Связанный ответ: КАК. Вопрос плаката - ПОЧЕМУ. Конечно, если вы публикуете вопросы об операционной системе с тегом C, вы получите именно это.   -  person user3344003    schedule 28.05.2016