Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Двухуровневая схема управления процессами.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
208.38 Кб
Скачать

Уровень краткосрочного планирования

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

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

  • определила в результате интерпретации имя процесса или программу, которую требуется выполнить;

  • обеспечила доступ к ресурсам, которые должны быть выделены перед исполнением программы, в том числе обеспечила передачу программе необходимых параметров;

  • построила специальную структуру данных, в котрой будет отражаться информация, необходимая для фиксации состояний процесса, для отслеживания порядка перехода из состояния в состояние, для управления распределением ресурсов. Такую структуру данных будем называть дескриптором процесса.

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

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

Уничтожение процесса требует решения ряда проблемм. Уничтожаемый процесс может быть связан с другими процессами. Например, уничтожаемый процесс является порождающим в отношении одного или более порожеднных процессов и контролирует их развитие. В этом случае возникает вопрос: что делать с потомками уничтожаемого процесса? Чаще всего уничтожают все поддерево, определяющее родственные связи процесса. Иногда предъявляют требование, чтобы процесс-родитель не был уничтожен раньше процессов потомков в любом поколении. Чтобы выполнить эти требования в состав системы управления процессами вводят средства, позволяющие соотвественно делать отметки об окончании процессов и контролировать моменты наступления этих событий. В ОС UNIX - это системные вызовы WAIT и EXIT. Первый позволяет задержать текущий процесс (т.е. перевести его в состояние «ожидания») до завершения одного из порожденных им процессов. При завершении дочернего процесса выдается системный вызов EXIT. По этому вызову отрабатываются децствия, связанный с уничтожением процесса, а также оповещается ожидающий процесс-родитель, что дочерний процесс уничтожается. Процесс-родитель после этого переводится из состояния «ожидания» в состояние «готовности».

Еще одна проблемма, возникающая при уничтожении процессов. Уничтожаемый процесс, как правило, не является изолированным, а взаимодействует прямо или косвенно с другими процессами. Например, имеет информационные свзяи с другими процессами - передает или получает информацию, разделяет с другими процессами ресурсы, среди которых, возможно, есть и критические. Поэтому, при уничтожении взаимодействующего процесса необходимо корректно «закрыть» связи, в которых он задействован. Для этого используют различные средства. Напрмер, при уничтожении процесса посылаются специальные «пустые» сообщения тем процессам, которые ждут поступления информации от уничтожаемого. Делается искуственный выход из критических областей, если уничтожаемый процесс использовал критические ресурсы и т.д.

Перевод процессов в состояния, отличные от «порожденный» и «окончен» также выполняется с помощью специальных системых действий. Некоторые из них доступны самим процессам, которые хотели бы перейти из «активного» в какие-либо другие состояния. Некоторые может выпонить только система управления процессами. Например, процесс сам не в состоянии выразить свое «желание» перейти из состояние «порожден» в состояние «готовности» или в какое-либо другое. В любом состоянии, кроме «активного» процесс является пассивным объектом. Он сам не может выполнять действий.

Переход из «активного» состояния в какие-либо другие может производится как по инициативе самого процесса, так и по внешеней инициативе. Системные средства, обеспечивающие отработку такого перехода, базируются на рассматренных выше средствах по обработке прерываний. Нужно только отметить, что в данном случае прерывание трактуется шире, чем просто прерывание текущей программы. Нужно не только обеспечить сохранение стстусной информации о прерванной программе и используемых ресурсах, но и сделать определенные изменения в информационных управляющих структурах. Это прежде всего делается в дескрипторе, где изменяются определенные адресные ссылки, отражающие перемещение процесса в какую-либо очередь (если происходит переход в состояние «ожидания» или «готовности»), изменение определнных признаков полей дескриптора и т.д. Изменяются и некоторые другие структуры, связанные с дескриптором. Основой перевода процесса в состояние «ожидания» и «готовности» является размещение процесса в соответсвующей очереди среди прочих процессов, находящихся в таком же состоянии. Причем в состоянии «ожидания» для каждого процесса в определнной форме декларируется ожидаемое событие. Ожидать одно событие могут один или более процессов. Причем ожидание может быть как в единой очереди в системе, так и в отдельных очередях в отношении каждого события. Средства по переводу процесса в состояние «ожидания» и из него в состояние «готовности» базируется на использовании средств синхронизации процессов. Этот вопрос ввиду важности и сложности рассматриваем отдельно.

Перевод процесса в «активное» состояние - это функция краткосрочного планировщика. По мере активизации он по определнному правилу выбирает (чаще всего на основе приоритетного правила) из очереди процессов, находящихся в состоянии «готовности», один процесс и переводит действия по его активизции. Восстанавливает его прерванное состояние, если процесс ранее бвл хотя бы раз выведен из «активного» состояния, делает управление на исполнение (начальное или прерванное ранее) программы процесса.