Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
переделанное пособие.docx
Скачиваний:
2
Добавлен:
01.09.2019
Размер:
215.74 Кб
Скачать

5.6. Тупиковые ситуации и их предотвращение

Под тупиковой ситуацией понимают состояние системы, когда ожидают событие, которое никогда не произойдет (тупиковые ситуации обычно возникают в результате взаимной блокировки процессов). При тупиковой ситуации процесс обычно не взаимодействует с пользователем.

Различают тупиковые ситуации, когда один процесс не взаимодействует с пользователем и со всей остальной системой, и когда в тупиковом состоянии оказалась вся система. В первом случае уничтожают процесс, попавший в тупиковую ситуацию, во втором – осуществляют перезагрузку ЭВМ.

Различают надежное и ненадежное состояние системы. При ненадежном состоянии высока вероятность попадания в тупиковую ситуацию.

Проблема тупиков включает в себя следующие задачи: предотвращение тупиков; распознавание тупиков; восстановление системы после тупиков.

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

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

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

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

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

5.8. Приоритеты в вычислительных системах

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

Для систем без приоритетов характерно то, что все процессы в этой системе равноправны. Выполнение процессов происходит в порядке очереди. Процесс, стоящий в очереди, не будет обслужен до тех пор, пока не прекратится выполнение предыдущего.

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

Для систем с абсолютными приоритетами характерно то, что при поступлении приоритетного процесса прерывается выполнение неприоритетного (в системах с относительными приоритетами такого не происходит). На организации абсолютных приоритетов основано функционирование систем реального времени и многорежимных систем.

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