Создание процесса
Новый процесс создается в UNIX только путем системного вызова fork. Процесс, сделавший вызов fork, называется родительским, а вновь созданный процесс- порожденным. Новый процесс является точной копией родительского. При порождении (разветвлении) процесса проверяется, достаточно ли памяти и места в таблице процессов для данного процесса. Если да, то образ текущего процесса копируется в новый образ процесса, и в таблице процессов возникает новый элемент. Новому процессу присваивается новый уникальный идентификатор (PID). Когда изменение таблицы процессов ядра завершается, процесс добавляется к списку процессов, доступных для выполнения и ожидающих в очереди планировщика подобно другим процессам.
Порожденный процесс наследует от родительского процесса следующие основные характеристики:
Способы обработки сигналов (адреса функций обработки сигналов).
Реальные и эффективные идентификаторы пользователя и группы.
Значение поправки приоритета.
Все присоединенные разделяемые сегменты памяти.
Идентификатор группы процессов.
Терминальную линию.
Текущий каталог.
Корневой каталог.
Маска создания файлов (umask).
Ограничения ресурсов (ulimit).
Порожденный процесс отличается от родительского процесса следующими основными характеристиками:
Порожденный процесс имеет свой уникальный идентификатор.
Порожденный процесс имеет другой идентификатор родительского процесса, равный идентификатору породившего процесса.
Порожденный процесс имеет свои собственные копии дескрипторов файлов (в частности, стандартных потоков), открытых родительским процессом. Каждый дескриптор файла порожденного процесса имеет первоначально такое же значение текущей позиции в файле, что и соответствующий родительский.
У порожденного процесса обнуляются счетчики времени, потраченного системой для его обслуживания.
Системный вызов fork завершается неудачей и новый процесс не порождается, если:
Создать процесс запрещает системное ограничение на общее количество процессов.
Создать процесс запрещает системное ограничение на количество процессов у одного пользователя.
Содержание Назад Вперед