Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kratko.docx
Скачиваний:
57
Добавлен:
01.04.2022
Размер:
2.04 Mб
Скачать

25. Взаимные блокировки. Условия, необходимые для возникновения тупика.

Тупиковые ситуации надо отличать от простых очередей: хотя те и другие возникают при совместном использовании ресурсов и внешне выглядят похоже: поток приостанавливается и ждет освобождения ресурса. Однако очередь — это нормальное явление, неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов. Очередь появляется тогда, когда ресурс недоступен в данный момент, но освободится через некоторое время, позволив потоку продолжить выполнение. Тупик же является неразрешимой ситуацией. Необходимым условием возникновения тупика является потребность потока сразу в нескольких ресурсах.

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

  • Условие удержания и ожидания (Процесс, удерживающий в данный момент ресурс, может запрашивать новые ресурсы.)

  • Условие отсутствия принудительной выгрузки ресурса (У процесса нельзя забрать ранее полученные ресурсы.)

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

26. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.

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

Алгоритм банкира для 1 вида ресурсов (основан на избегании опасных состояний): Алгоритм рассматривает запросы на предоставления ресурсов по мере их поступления. Каждый раз проверяет, приведет ли удовлетворение запроса к безопасному состоянию. Если да - запрос удовлетворяется, если нет - откладывается на более позднее время.

27. Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов.

Алгоритм банкира для несколько видов ресурсов

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

28. Синхронизирующие объекты ос: системные семафоры, мьютексы, события, сигналы, барьеры, ждущие таймеры.

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

Системные семафоры (семафоры Дейкстры) - отличие от мьютекса в том, что здесь используется некая неотрицательная переменная (кол-во потоков в семафоре). Программист может регулировать количество потоков, которые могут иметь доступ к ресурсам. он ограничивает доступ к ресурсам для нескольких потоков. Если поток заходит в семафор, то значение переменной уменьшается на 1, когда выходит - увеличивается на 1. 0 - никто не имеет доступа к семафору.

События - используется в качестве сигналов для потоков о завершении той или иной операции. Не принадлежит ни одному потоку.

Ждущий таймер - используется только в Windows NT версии 4 и более. Это объект синхронизации, который используется для организации задержки в одном или нескольких приложениях. Режим ручного сброса (таймер отработал и ждет новой команды), режим автоматического сброса (таймер завершился сам и все), функция интервального таймера (перезапускается сам через определенный интервал).

Барьеры - На определенном участке выполнения программы дожидается всех потоков. Как только все потоки стоят у барьера, он исчезает и потоки продолжают свое выполнение.

Сигналы (виртуальные прерывания) - сообщение, которое система посылает процессу или один процесс посылает другому процессу.

Соседние файлы в предмете Операционные системы