Читать книгу 📗 "Операционная система UNIX - Робачевский Андрей Михайлович"
Соответственно и образ процесса состоит из двух частей: данных режима ядра и режима задачи. Образ процесса в режиме задачи состоит из сегмента кода, данных, стека, библиотек и других структур данных, к которым он может получить непосредственный доступ. Образ процесса в режиме ядра состоит из структур данных, недоступных процессу в режиме задачи, которые используются ядром для управления процессом. Сюда относятся данные, диктуемые аппаратным уровнем, например состояния регистров, таблицы для отображения памяти и т.д., а также структуры данных, необходимые ядру для обслуживания процесса. Вообще говоря, в режиме ядра процесс имеет доступ к любой области памяти.
Структуры данных процесса
Каждый процесс представлен в системе двумя основными структурами данных — proc и user, описанными, соответственно, в файлах <sys/proc.h> и <sys/user.h>. Содержимое и формат этих структур различны для разных версий UNIX. В табл. 3.1 приведены некоторые поля структуры
proc
Таблица 3.1. Структура proc
char | p_stat | Состояние процесса (выполнение, приостановлен, сон и т.д.) |
char | p_pri | Текущий приоритет процесса |
unsigned int | p_flag | Флаги, определяющие дополнительную информацию о состоянии процесса |
unsigned short | p_uid | UID процесса |
unsigned short | p_suid | EUID процесса |
int | p_sid | Идентификатор сеанса |
short | p_pgrp | Идентификатор группы процессов (равен идентификатору лидера группы) |
short | p_pid | Идентификатор процесса (PID) |
short | p_ppid | Идентификатор родительского процесса (PPID) |
sigset_t | p_sig | Сигналы, ожидающие доставки |
unsigned int | p_size | Размер адресного пространства процесса в страницах |
time_t | p_utime | Время выполнения в режиме задачи |
time_t | p_stime | Время выполнения в режиме ядра |
caddr_t | p_ldt | Указатель на LDT процесса |
struct pregion | *p_region | Список областей памяти процесса |
short | p_xstat | Код возврата, передаваемый родительскому процессу |
unsigned int | p_utbl[] | Массив записей таблицы страниц для u-area |
В любой момент времени данные структур
proc
Структура
proc
curproc
curproc
proc
Вторая упомянутая структура —
user
proc
curproc
user
u

Рис. 3.2. Основные структуры данных процесса
В u-area хранятся данные, которые используются многими подсистемами ядра и не только для управления процессом. В частности, там содержится информация об открытых файловых дескрипторах, диспозиция сигналов, статистика выполнения процесса, а также сохраненные значения регистров, когда выполнение процесса приостановлено. Очевидно, что процесс не должен иметь возможности модифицировать эти данные произвольным образом, поэтому u-area защищена от доступа в режиме задачи.