Как я могу найти безопасную последовательность при использовании алгоритма Банкира для избежания тупика? - PullRequest
2 голосов
/ 25 июня 2011

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

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

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

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

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

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

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

0 голосов
/ 12 марта 2017

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

...