Процессы в ОС Unix
Понятие «процесс».
Понятие «процесс» включает в себя следующее:
• исполняемый код;
•собственное адресное пространство, которое представляет собой совокупность виртуальных адресов, которые может использовать процесс;
• ресурсы системы, которые назначены процессу ОС;
• хотя бы одну выполняемую нить.
Контекст процесса.
Текущее состояние любого процесса из БОП изменяется во времени в зависимости от самого процесса и состояния ОС. С каждым из процессов из БОП система ассоциирует совокупность данных, характеризующих актуальное состояние процесса – контекст процесса. (в общем случае контекст процесса содержит информацию о текущем состоянии процесса, включая информацию о режимах работы процессора, содержимом регистровой памяти, используемой процессом, системной информации ОС, ассоциированной с данным процессом).
Процессы, находящиеся в одном из состояний ожидания в своих контекстах содержат всю информацию, необходимую для продолжения выполнения - состояние процесса в момент прерывания (копии регистров, режимы ОП, настройки аппарата виртуальной памяти и т. д.). Соответственно при смене выполняемого процесса ОС осуществляет «перенастройку» внутренних ресурсов ЦП, происходит смена контекстов выполняемых процессов.
|
|
На этапе выполнения процесса ОС обеспечивает возможность корректного взаимодействия процессов от передачи сигнальных воздействий от процесса к процессу до организации корректной работы с разделяемыми ресурсами.
Контекст процесса может состоять из:
• пользовательской составляющей – состояние программы, как совокупности машинных команд и данных, размещенных в ОЗУ;
• системной составляющей
– информация идентификационного характера
(PID процесса, PID «родителя»…)
– информация о содержимом регистров
(РОН, индексные регистры, флаги...
– информация, необходимая для управления процессом
(состояние процесса,
В любой системе, оперирующей понятием процесс, существует системно-ориентированное определение процесса (определение, учитывающее конкретные особенности данной ОС).
Таблица ограничена => количество процессов в таблице ограниченно => количество процессов ограничено.
« Первое» определение процесса в ОС Unix
Процесс в ОС Unix – объект, зарегистрированный в таблице процессов Unix.
Каждый процесс характеризуется уникальным именем – идентификатором процесса (PID). PID – целое число от 0 до некоторого предельного значения, определяющего максимальное число процессов (ресурс данной ОС), существующих в системе одновременно.
Если это максимальное число превышено, то начать обрабатывать еще один процесс невозможно.
|
|
Будем использовать термины 0 й процесс, 1 й процесс, 125 й процесс, это означает, что речь идет о процессах с PID = 0, 1, 125. 0 й процесс в системе ассоциируется с работой ядра Unix. С точки зрения организации данных PID – номер строки в таблице, в которой размещена запись о процессе.
Контекст процесса
Содержимое записи таблицы процессов позволяет получить контекст процесса (часть данных контекста размещается непосредственно в записи таблицы процессов, на оставшуюся часть контекста имеются прямые или косвенные ссылки, также размещенные в записи таблицы процессов).
С точки зрения логической структуры контекст процесса Unix состоит из:
• пользовательской составляющей или тела процесса (иногда используется пользовательский контекст)
• аппаратной составляющей, в которой отражается актуальное состояние компьютера при выполнении процесса. В зависимости от состояния процесса, аппаратный компонент либо представляется содержимым соответствующих регистров настройки ЦП, либо, если процесс отложен, то аппаратный компонент копируется ОС в свои таблицы (в системную составляющую)
• системной составляющей ОС Unix (иногда – системный контекст)
Иногда два последних компонента объединяют, в этом случае используется термин общесистемная составляющая контекста.
Тело процесса состоит из сегмента кода и сегмента данных.
Пользовательская составляющая (тело процесса)