Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Управление памятью Создание нового процесса

Создание нового процесса

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

Системный вызов fork дублирует адресное пространство существующего процесса, создавая идентичный порожденный процесс. Набор системных вызовов fork является единственным способом создания новых процессов в FreeBSD. fork дублирует все ресурсы оригинального процесса и копирует адресное пространство этого процесса.

Ресурсы виртуальной памяти процесса, которые должны быть выделены для потомка, включают структуру процесса и связанные с ней подструктуры, а также структуру пользователя и стек ядра. Кроме того, ядро должно забронировать хранилище (либо память, либо пространство файловой системы, либо пространство подкачки), использующееся для резервирования процесса. Общий набросок реализации fork следующий.

    Резервирование адресного пространства для порожденного процесса. Выделение структуры потока и элемента процесса и ее заполнение. Копирование в порожденный процесс группы процесса родителя, мандатов (credentials), дескрипторов файлов, квот (limits) и действий сигналов. Выделение новой структуры пользователя и стека ядра, копирование в них содержимого из текущего процесса для их инициализации. Выделение структуры vmspace. Дублирование адресного пространства путем создания копий структур vm_map_entry родителя, помеченных для копирования при записи. Организация возвращения порожденным процессом 0, чтобы отличить его возвращаемое значение от нового PID, который возвращается в процесс родителя. Выделение и инициализация структуры процесса и организация возвращаемого значения. В оставшейся части данного раздела обсуждаются другие шаги, вовлеченные в дублирование процесса.

Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 48 гостей онлайн