Операционная система Free BSD


Компоненты процесса


Каждый процесс состоит из адресного пространства и набора структур данных, содержащихся в ядре системы. К наиболее важным данным в структурах, относятся:

  • таблица распределения памяти процесса
  • текущий статус процесса
  • приоритет выполнения процесса
  • информация о ресурсах системы, используемых процессом
  • владелец процесса

Идентификатор процесса

Каждому новому процессу присваивается уникальный номер PID. Фактическое значение PID большой роли не играет, оно назначается ядром просто по порядку, начиная с 0 и до 65535. Когда номера заканчиваются, ядро вновь начинает с 0, пропуская еще существующие в системе PID.

Идентификатор родительского процесса

Новый процесс в UNIX создается путем клонирования одного из существующих процессов, после чего текст (т.е. набор инструкций для процессора) нового процесса заменяется текстом программы, которую процесс должен выполнить. В UNIX исходный процесс называют родительским, а его клон - порожденным или дочерним.

Помимо собственного идентификатора PID каждый процесс имеет атрибут своего родительского процесса - PPID.

Идентификатор пользователя и группы

Каждый процесс имеет UID - идентификационный номер пользователя, создавшего данный процесс. Вносить изменения в процесс может только его создатель и привилегированный пользователь (root). У процесса также есть EUID - это так называемый "эффективный" UID.

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

Аналогично, GID - идентификационный номер группы пользователя, создавшего данный процесс, EGID - "эффективный" GID. Когда процесс запускается, его GID равен GID родительского процесса. Если процесс попытается обратиться к файлу, на который у владельца нет прав доступа, ядро проверит, можно ли разрешить обращение на основании EGID.




- Начало -  - Назад -  - Вперед -