Process Control Block (Блок управления процессом) и контекст процесса
Для того чтобы операционная система могла выполнять операции над процессами, каждый процесс представляется в ней некоторой структурой данных, называемой блоком управления процессом. Эта структура содержит информацию, специфическую для данного процесса:
состояние, в котором находится процесс;
программный счетчик процесса или, другими словами, адрес команды, которая должна быть выполнена для него следующей;
содержимое регистров процессора;
данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д.);
учетные данные (идентификационный номер процесса, какой пользователь инициировал его работу, общее время использования процессора данным процессом и т. д.);
сведения об устройствах ввода-вывода, связанных с процессом (например, какие устройства закреплены за процессом, таблицу открытых файлов).
Состав этой структуры данных и строение зависят, конечно, от конкретной операционной системы. Во многих операционных системах информация, характеризующая процесс, хранится не в одной, а в нескольких связанных структурах данных.
Информацию, для хранения которой предназначен блок управления процессом, удобно для дальнейшего изложения разделить на две части. Содержимое всех регистров процессора (включая значение программного счетчика) называется регистровым контекстом процесса, а все остальное – системным контекстом процесса. Знания регистрового и системного контекстов процесса достаточно для того, чтобы управлять его работой в операционной системе, совершая над ним операции. Код и данные, находящиеся в адресном пространстве процесса, называется его пользовательским контекстом. Совокупность регистрового, системного и пользовательского контекстов процесса для краткости принято называть просто контекстом процесса. В любой момент времени процесс полностью характеризуется своим контекстом.
Системы, управляющие процессами, должны иметь возможность выполнять определенные операции над процессами:
Ø Создание процесса;
Ø Уничтожение процесса;
Ø Возобновление процесса;
Ø Изменение приоритета процесса;
Ø Блокирование процесса;
Ø Пробуждение процесса;
Ø Запуск процесса.
Создание процесса состоит из многих операций, включая:
· Присвоение имени процессу;
· Включение этого имени в список имен, известных системе;
· Определение начального приоритета процесса;
· Формирование блока управления процессом;
· Выделение процессу начальных ресурсов.
Процесс может породить новый процесс (дочерний). При таком подходе создается иерархическая структура процессов. Уничтожение процесса означает его удаление из системы. Ресурсы, выделенные этому процессу, возвращаются системе, имя процесса в любых системных списках стирается, и блок управления процессом освобождается. Уничтожение процесса усложняется, ели это родительский процесс. В некоторых системах дочерний процесс уничтожается автоматически, когда уничтожается его родительский процесс, в других система порожденные процессы начинают существовать независимо от своих родительских процессов, так что уничтожение родительского процесса не оказывает влияния на его потомков.