Управляющая информация о процессе поддерживается с помощью двух структур данных, имеющихся у каждого процесса: области и и структуры ргос. В различных реализациях UNIX ядро имеет массив фиксированного размера, состоящий из структур ргос и называемый таблицей процессов. Размер этого массива зависит от максимального количества процессов, которые одновременно могут быть запущены в системе. Современные варианты UNIX, такие как SVR4, поддерживают динамическое размещение структур ргос, но массив указателей на них также имеет фиксированный размер. Так как структура ргос находится в системном пространстве, она всегда видна ядру в любой момент времени, даже когда процесс не выполняется. Область и является частью пространства процесса. Это означает, что она отображаема и видима только в тот период времени, когда процесс выполняется. Во многих реализациях UNIX область и всегда отображается в один и тот же виртуальный адрес для каждого процесса, на который ядро ссылается через переменную и. Одной из задач переключателя контекста является сброс этого отображения, с тем чтобы ядро через переменную и «добралось» до физического расположения новой области. Иногда ядру системы необходимо получить доступ к области и процесса, не являющегося текущим. Такое возможно, но действие должно производиться не напрямую, а при помощи специального набора отображений. Различия в особенностях доступа обусловлены особенностями информации, хранящейся в структуре ргос и области и. Область и содержит данные, необходимые только в период выполнения процесса. Структура ргос включает в себя такую информацию, которая может потребоваться даже в том случае, если процесс не выполняется. Основные поля области и перечислены ниже:
В современных системах UNIX, таких как SVR4, пользовательские полномочия хранятся в структуре данных, располагаемой динамически, указатель на которую находится в структуре ргос. Более подробное описание см. введя поисковой запрос в браузере google chrome скачать бесплатно.
♦ блок управления процессом используется для хранения аппаратного контекста в то время, когда процесс не выполняется; ♦ указатель на структуру ргос для этого процесса; ♦ реальные и эффективные UID и GID1; ♦ входные аргументы и возвращаемые значения (или коды ошибок) от текущего системного вызова; ♦ обработчики сигналов и информация, связанная с ними (см. главу 4); ♦ информация из заголовка программы, в том числе размеры текста, данных и стека, а также иная информация по управлению памятью; ♦ таблица дескрипторов открытых файлов (см. раздел 8.2.3). Современные системы UNIX, такие как SVR4, расширяют эту таблицу динами¬чески по мере необходимости; ♦ указатели на vnode. Объекты vnode представляют собой объекты файловой системы и будут подробнее описаны в разделе 8.7; ♦ статистика использования процессора, информация о профиле процесса, дисковых квотах и ресурсах; ♦ во многих реализациях UNIX стек ядра процесса является частью области и этого процесса. Основные поля структуры ргос охватывают: ♦ идентификацию: каждый процесс обладает уникальным идентификатором процесса (process ID, или PID) и относится к определенной группе процессов. В современных версиях системы каждому процессу также присваивается идентификатор сеанса (session ID); ♦ расположение карты адресов ядра для области и данного процесса; ♦ текущее состояние процесса; ♦ предыдущий и следующий указатели, связывающие процесс с очередью планировщика (или очередью приостановленных процессов, если данный процесс был заблокирован); ♦ канал «сна» для заблокированных процессов (см. раздел 7.2.3); ♦ приоритеты планирования задач и связанную информацию (см. главу 5); ♦ информацию об обработке сигналов: маски игнорируемых, блокируемых, передаваемых и обрабатываемых сигналов (см. главу 4); ♦ информацию по управлению памятью; ♦ указатели, связывающие эту структуру со списками активных, свободных или завершенных процессов (зомби); ♦ различные флаги; ♦ указатели на расположение структуры в очереди хэша, основанной на PID; ♦ информация об иерархии, описывающая взаимосвязь данного процесса с другими. Продемонстрированы взаимосвязи процессов в системе 4.3BSD UNIX. На схеме представлены поля, описывающие иерархию процессов. Это — p_pid (идентификатор процесса), p_ppid (идентификатор родительского процесса), p_pptr (указатель на структуру ргос родителя), p_cptr (указатель на старшего потомка), p_ysptr (указатель на следующий младший процесс того же уровня), p_osptr (указатель на следующий старший процесс того же уровня).