@ClaraOswald

Как высчитать сколько понадобится времени что бы создать дочерний процесс?

Как высчитать сколько понадобится времени что бы создать дочерний процесс в системе UNIX?
к примеру у меня есть все необходимые данные:
размер текста — 100 Кбайт, размер данных —
20 Кбайт, размер стека — 10 Кбайт, размер структуры задачи — 1 Кбайт, размер структуры пользователя — 5 Кбайт. Обработка эмулированного прерывания ядром занимает 1 мс, а компьютер может копировать 32-разрядное слово каждые 50 нс. Текстовые сегменты используются совместно, а сегменты данных и стека — нет.
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
Olej
@Olej
инженер, программист, преподаватель
Как высчитать сколько понадобится времени что бы создать дочерний процесс в системе UNIX?

Бессмысленный вопрос :-(.
Правильный ответ: нисколько ;-) ... в смысле исчезающе мало, чтобы об этом беспокоиться.

В POSIX, когда говорят "создать дочерний процесс" - имеют в виду, в первую очередь, fork() (хотя в других системах или при других обстоятельствах могут иметься в виду exec*(), spawn*() и так далее... popen() ;-) ).
В современных POSIX системах выполнение fork() не зависит от всех ваших килобайт ... или мегабайт...
Потому что при выполнении fork(), за счёт механизма COW (Copy On Write) не создаётся никакого такого адресного пространства. А всё время выполнения затрачивается только на выполнение системного вызова в ядре по созданию новой записи task и помещения её в циклическую очередь процессов.

P.S. И ещё для вас будет большим сюрпризом, думаю, (но относящимся к делу) что время выполнения fork() будет примерно то же, что и время создания нового потока pthread_create() внутри одного процесса.

P.S. А если вам позарез нужно узнать время fork() (в наносекундном диапазоне), то используйте для этого счётчик тактов процессора RDTSC и соответствующую команду ассемблера rdtsc.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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