O Torvalds Linus

Сайт о *nix системах и всем что с ними связано

При удовлетворении запросов пользователей Unix – подобные операционные системы активно создают новые процессы. Например, всякий раз, когда пользователь вводит команду, оболочка создает новый процесс, который выполняет еще одну копию оболочки.

Традиционные Unix – системы обращаются со всеми процессами одинаково: ресурсы, которыми обладает процесс – родитель, дублируются в процессах – потомках. Такой подход делает процедуру создания процессов очень медленной и неэффективной, потому что включает в себя копирование всего адресного пространства процесса – родителя. Процессу – потомку редко нужно читать или модифицировать все ресурсы, унаследованные от родителя; в большинстве случаев он тут же делает системный вызов execve () и очищает столь заботливо скопированное адресное пространство.

Когда один из этих процессов попытается сделать запись в физическую страницу, ядро копирует ее содержимое в новую физическую страницу, которая присваивается пишущему процессу;
облегченные процессы позволяют как родителю, так и потомку совместно использовать многие структуры данных ядра, назначаемые процессам. Сюда входят таблицы страниц (и, следовательно, все адресное пространство режима пользователя, таблицы открытых файлов и диспозиций сигналов);
системный вызов vforko создает процесс, который использует адресное пространство своего родителя. Чтобы не позволить родителю переписать данные, необходимые потомку, выполнение родителя задерживается до тех пор, пока потомок не закончит свою работу или не запустит новую программу.

Add A Comment