Атрибуты, инфраструктура процесса
Атрибуты процесса:
- 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, там содержится информация об открытых файлах (файловые дескрипторы), сохраняет значение регистров. Используется многими подсистемами ядра. Содержит стек фиксированного размера (стек ядра). При выполнении в режиме ядра в него заносится цепочка вызовов. Процесс не имеет возможности модифицировать эти данные, и область защищена от доступа в режиме пользователя.