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

21. Взаимоблокировка процессов. Тупики.

Если несколько процессов конкурируют за обладание конечным числом ресурсов и запрашиваемый процессом ресурс недоступен, процесс переходит в состояние ожидания. В случае если требуемый ресурс удерживается другим ожидающим процессом, то первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком. Говорят, что в мультипрограммной системе процесс находится в состоянии тупика, дедлока (deadlock) или клинча, если он ожидает события, которое никогда не произойдет. Системная тупиковая ситуация или зависание системы является следствием того, что один или более процессов находятся в состоянии тупика.

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

22. Методы борьбы с взаимоблокировками. Безопасное и небезопасное состояние.

Четыре стратегии избегания взаимоблокировок:

1.Пренебрежением проблемой в целом (вдруг пронесет).

2.Обнаружение и устранение (взаимоблокировка происходит, но оперативно ликвидируется).

3.Динамическое избежание тупиков.

4.Предотвращение четырех условий, необходимых для взаимоблокировок.

Безопасные и небезопасные состояния

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

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

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

"Банкира", потому что аналогия такая, клиенты-процессы, кредиты-ресурсы.

Рассмотрим систему: Банкир может дать 10 кредитов (ресурсы). К нему попеременно обращаются 4-ре клиента.

Алгоритм банкира:

1.Банкиру поступает запрос от клиента на получение кредита

2.Банкир проверяет, приводит ли этот запрос к небезопасному состоянию.

3.Банкир в зависимости от этого дает или отказывает в кредите.

24. Механизмы синхронизации: семафор, монитор.

Семафор представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P (от датского слова proberen – проверять) и V (от verhogen – увеличивать). Классическое определение этих операций выглядит следующим образом:

P(S): пока S == 0 процесс блокируется;

S = S – 1;

V(S): S = S + 1;

Эта запись означает следующее: при выполнении операции P над семафором S сначала проверяется его значение. Если оно больше 0, то из S вычитается 1. Если оно меньше или равно 0, то процесс блокируется до тех пор, пока S не станет больше 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1. В момент создания семафор может быть инициализирован любым неотрицательным значением.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]