Мой вопрос, возможно, плохо сформулирован и проистекает из моего дилетантского понимания управления памятью.
Меня беспокоит следующее: у меня есть Perl-скрипт, который многократно разветвляется. Насколько я понял из страницы форка в perldoc, реализуется копирование при записи. Затем каждый из потомков вызывает system()
, снова разветвляясь, чтобы вызвать внешнюю программу. Данные из внешней программы считываются обратно в дочернюю программу и выгружаются в виде хранимого файла, который должен быть собран и обработан родительской программой после выхода всех дочерних элементов.
Что меня беспокоит, так это то, что я воспринимаю изменчивость этой ситуации. Рассмотрим то, что я вижу в своем воображении, наихудший сценарий: для каждого из дочерних элементов, как только поступают новые данные, вся память копирования при записи становится, ну, скопированной. Если это так, я быстро столкнусь с проблемами памяти после создания нескольких форков.
Но с другой стороны, копирует ли копирование при записи только наименьший фрагмент памяти, содержащий необходимые данные? Тогда что же это за кванты памяти? Как устанавливается его размер?
Я не уверен, зависят ли особенности того, о чем я спрашиваю, от языка или от какого-то процесса более низкого уровня.