Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по операционным системам.doc
Скачиваний:
91
Добавлен:
02.05.2014
Размер:
344.06 Кб
Скачать

13.Процесс Control Block и контекст процесса.

Чтобы ОС могла выполнять операции над процессам, каждый процесс представляется в ней некоторой структурой данных, содержащей информацию специф-ую д/данного процесса:

1)состояние, в котором нах-ся процесс;

2)программный счётчик процесса, т.е. адрес команды, кот. д.б. выполнена следующей;

3)содержимое регистров процессора;

4)данные, необходимые д./планирования и использования процессора и управления памятью; (приоритет процесса, расположение адресного пространства и т.д.)

5)учетные данные (идентификационный номер процесса, какой юзер инициировал процесс, общее время использ-ия процессора данным процессом)

6)сведения об устройствах вв/выв, связанных с процессом;

состав этой структуры, ее строение зависят от конкретной ОС.

Во многих ОС инфа, характеризующая процесс, хранится не в одной, а в нескольких связанных структурах данных. Эти структуры могут иметь различные наименования, содержать дополнительную инфу или наоборот, лишь часть описанной информации. Важно то, что для люб. процесса вся ин-фа, необходимая для совершения операции над ними, доступна ОС. Для простоты считаем, что она хранится в одной структуре данных, называемой process control block, или блоком управления процесса. Он является моделью процесса для ОС. Каждая операция производимая ОС над процессом вызывает определенные изменения РСВ. В рамках принятой модели состояния процессов содержимое РСВ остается постоянным. Информацию в РСВ удобно разделить на две части. Содержимое всех регистров процессора, включая значение программного счетчика, называется регистровым контекстом процесса, а все остальное – системным контекстом процесса. Знание регистрового и системного контекста процесса достаточно для того, чтобы управлять его работой в ОС, совершая над ним операции. Однако, этого недостаточно, чтобы полностью охарактеризовать процесс. ОС не интересуют какими именно вычислениями занимается процесс, т.е. какой код, какие данные находятся в его адресном пространстве. С точки зрения юзера, наоборот: наибольший интерес представляет содержимое адресного пространства – проги, определяющие последовательность преобразования данных и полученные результаты.

Код и данные, находящиеся в адресном пространстве процесса, называются его пользовательским контекстом. Совокупность регистрового, пользовательского, системного контекстов принято для краткости называть просто контекстом. В любой момент времени процесс полностью характеризуется своим контекстом.

14.Одноразовые операции.

Жизненный путь процесса в ПК начинается с его рождения. Любая ОС, поддерживающая концепцию процесса, должна обладать средствами для их создания. В очень простой системе все процессы могут быть порождены на этапе стандартных систем. Более сложные ОС создают процессы динамически по мере их необходимости. Инициатором могут выступать либо процесс пользователя, совершивший специальный системный вызов, либо сама ОС, т.е. тоже некоторый процесс. Процесс, инициировавший создание нового процесса, называется процессом родительским, а вновь созданный потомком. Процессы потомки могут в свою очередь порождать потомков, образуя в общем случае внутри системы набор генеалогич. деревьев проц-са – генеалогич. лес. Все пользовательские процессы вместе с некоторыми процессами ОС принадлежат одному и тому же дереву этого процесса. Система заводит новый РСВ при рождении с названием «рождение» и начинает его заполнять. Новый процесс получает свой идентификационный номер. Так как для хранения этого номера отводится определенное количество битов, то число одновременно существующих процессов в ОС ограничено. Обычно, для выполнения своих функций, процесс-потомок требует ресурсов (памяти, файлов). Существует два подхода к их выделению. Новый процесс может получить в свое распоряжение, некоторую часть родительских ресурсов, разделяя с процессом-родителем и другими процессами-потомками права на них. Или может получить свои ресурсы непосредственно от ОС. Информация у выделенных ресурсов заносится в РСВ. После наделения их ресурсами необходимо занести в его адресное пространство программный код, значение данных, установить программный счетчик. Здесь также существует два решения:

процесс-потомок становится дубликатом процесса-родителя по регистровому и пользовательскому контексту, при этом должен существовать способ определения, кто для кого родитель из двойников.

2) потомок загружается новой программой из какого-либо файла

ОС Linux разрешает порождение проц. тока первый способ. Для запуска новой программы необходимо сначала создать копию процесса родителя, а затем потомок должен заменить свой пользовательский контекст с помощью специального системного вызова.

VAX/VMS допускает WIN NT – возможны оба варианта.

Порождение нового процесса как дубликата процесса родителя приводит к возможности существ-ия прог., для работы кот. организуется более одного процесса. Возможность замены пользовательского контекста процесса по ходу его работы приводит к тому, что в рамках одного и того же процесса может исполняться последовательно несколько различных программ. После того как процесс наделил содержанием и в РСВ допис-ся оставшаяся информация, состояние нового процесса изменяется на «готовность». Процесс-родитель может продолжать свою работу одновременно с потомком, а может ожидать завершения всех или некоторых своих потомков. После того как процесс завершил работу ОС переводит его в состояние «закончил исполнение» и освобождает все связанные с ним ресурсы, делая соответствующие записи в блоке управления процессами. При этом сам РСВ не учитывается, а остается в системе еще некоторое время. Это связано с тем, что процесс-родитель после завершения процесса-потомка, может запросить ОС о причинах смерти порожденного им чада, или статистическую информацию о его работе. Подобная информация сохраняется в РСВ отработавшего процесса до запроса процесса родителя или до конца его деятельности, после чего все следы завершившегося процесса окончательно исчезают из ОС. В Linux проц в состоянии закончил исполнение – процессы-зомби.