Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

40. Атрибуты, инфраструктура процесса

Атрибуты процесса:

- PID – идентификатор процесса. Уникальный номер, по которому ядро различает тот или иной процесс. Присваивается по возрастанию и по мере освобождения процессов

- PPID – идентификатор родителя

- NiceNumber – приоритет процесса; - статический (задан) / динамический (установлен ядром)

- tty – терминал, ассоциируемый с процессом при нормально функционировании

- RID – реальный идентификатор пользователя, запустившего данный процесс. Связан с ID пользователя, запустившего данный процесс на выполнение

- EID – эффективный идентификатор пользователя, являющегося владельцем процесса. Позволяет расширять права пользователя, который запускает процесс до прав владельца процесса за счёт флага SUID, если ему это позволен (здесь RID <> EID)

- временная статистика

Так как процесс – образ программы, ему соответствует АП отображаемой памяти (код, стек, данные, библиотеки), структура данных ядра, необходимая для управления процессом.

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

User Mode – инструкции прикладной программы, допустимые на непривилегированном уровне; не доступны некоторые структуры данных. Переход из пользовательского режима в режим ядра посредством системного вызова.

Kernel Mode – инструкции ядра на привилегированном уровне и делается это от имени вызвавшего процесса.

Образ процесса

В UM + libdata, в KM - самые основные структуры данных: U – area и Proc; служат для управления процессом. U – area соответствует контексту: proc соответствует дескриптору.

Структура данных proc:

Тип переменной

Название

Назначение

Char

Char

Unsigned

Unsigned short

Unsigned short Int

Short

Short

Signed_int

Unsigned int

Time_t

Time_t

Struct presion x

Short

Unsigned int

p_stat

p_pri

p_flag

p_vid

p_suid

p_sid

p_grp

p_id,p_ppid

p_sig

p_size

p_stime

p_utime

p_lost

p_region

p_xstat

p_utlb[]

Статус процесса

Текущий приоритет

Флаги о состоянии процесса

UID – идентификатор пользователя

EUID – эфф идентификатор пользователя

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

Идентификатор группы

PID, PPID

Сигнал ошибки доставки

Размер адресного пространства

Время выполнения в режиме ядра

Время выполнения задачи

Указатель локальной дескрипторной таблицы

Список областей памяти процесса

Код возврата

Массив записей таблицы страниц для u-area

В каждый момент времени данные структур proc должны быть в ОЗУ, это минимальная информация, необходимая для определения места нахождения остальных структур. Остальные структуры могут находиться во вторичной памяти (swaping)

Структура proc – запись в системной таблице процессов. Запись этой для выполнения в данный момент процесса активизируется переменной curproc. Эта переменная всегда указывает на активный процесс. При переключении контекста переменную меняют.

Структура u-area

U=u-area=user_area-block

Содержит дополнительные данные о процессе; доступна только при выполнении процесса, находится в области памяти, на которую указывает переменная U, там содержится информация об открытых файлах (файловые дескрипторы), сохраняет значение регистров. Используется многими подсистемами ядра. Содержит стек фиксированного размера (стек ядра). При выполнении в режиме ядра в него заносится цепочка вызовов. Процесс не имеет возможности модифицировать эти данные, и область защищена от доступа в режиме пользователя.

Примерный контекст задачи в UNIX

АП в режиме задачи

Управляющая информация

Окружение процесса

Аппаратный контекст

Код

Данные

Стек

Разделяемая память

Proc

u-area

Данные для отображения виртуального АП в физическое

Переменные окружения

Их значения по умолчанию

Системный контекст

Регистровый контекст

Код и данные библиотек