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