Книга: Операционная система UNIX
Структуры данных процесса
Структуры данных процесса
Каждый процесс представлен в системе двумя основными структурами данных — proc и user, описанными, соответственно, в файлах <sys/proc.h> и <sys/user.h>. Содержимое и формат этих структур различны для разных версий UNIX. В табл. 3.1 приведены некоторые поля структуры proc
в SCO UNIX, позволяющие проиллюстрировать информацию, необходимую ядру, для управления процессом.
Таблица 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
, также называемая u-area или u-block, содержит дополнительные данные о процессе, которые требуются ядру только во время выполнения процесса (т.е. когда процессор выполняет инструкции процесса в режиме ядра или задачи). В отличие от структуры proc
, адресованной указателем curproc
, данные user
размещаются (точнее, отображаются) в определенном месте виртуальной памяти ядра и адресуются переменной u
. На рис. 3.2 показаны две основные структуры данных процесса и способы их адресации ядром UNIX.
Рис. 3.2. Основные структуры данных процесса
В u-area хранятся данные, которые используются многими подсистемами ядра и не только для управления процессом. В частности, там содержится информация об открытых файловых дескрипторах, диспозиция сигналов, статистика выполнения процесса, а также сохраненные значения регистров, когда выполнение процесса приостановлено. Очевидно, что процесс не должен иметь возможности модифицировать эти данные произвольным образом, поэтому u-area защищена от доступа в режиме задачи.
Как видно из рис. 3.2, u-area также содержит стек фиксированного размера, — системный стек или стек ядра (kernel stack). При выполнении процесса в режиме ядра операционная система использует этот стек, а не обычный стек процесса.
- 1.2 Процесс, контекст процесса и потоки
- База данных диспетчера ядра
- Управление памятью процесса
- Создание процесса
- Дескриптор процесса и структура task structure
- Структуры данных, связанные с процессом
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.