Алгоритм банкиров Дейкстры - PullRequest
2 голосов
/ 14 ноября 2009

Может ли кто-нибудь предоставить пошаговый подход к решению следующей проблемы с использованием алгоритма Банкира? Как определить, существует ли «безопасное состояние»? Что имеется в виду, когда процесс может «завершиться»?

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

          Resources Allocated | Resources Needed
Process A                   1                  6
Process B                   1                  5
Process C                   2                  4
Process D                   4                  7

Ответы [ 2 ]

2 голосов
/ 14 ноября 2009

За Википедия ,

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

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

В вашем примере система управляет одним ресурсом с 10 доступными единицами. Запущенные процессы уже выделили 8 (1 + 1 + 2 + 4) единиц, поэтому осталось 2 единицы. Сумма, которую должен завершить любой процесс, - это максимум меньше того, что он уже выделил, поэтому в начале A нужно еще 5 (6-1), B нужно еще 4 (5-1), C нужно еще 2 (4- 2), а D нужно еще 3 (7-4). Доступно 2 варианта, поэтому процесс C может быть запущен до завершения, что освобождает 2 блока (оставляя 4 в наличии). В этот момент можно запустить B или D (предположим, D). После завершения D будет доступно 8 единиц, после чего можно запустить A или B (предположим, A). После завершения A будет доступно 9 единиц, а затем можно будет запустить B, что оставит все 10 единиц для дальнейшей работы. Поскольку мы можем выбрать порядок процессов, который позволит запускать все процессы, состояние считается «безопасным».

1 голос
/ 23 февраля 2011
  Resources Allocated | Resources Needed    claim
  Process A      1                  6            5
  Process B      1                  5            4
  Process C      2                  4            2
  Process D      4                  7            3

Всего выделено 8 ресурсов Следовательно, еще 2 ресурса еще не должны быть распределены, следовательно, которые выделяются для процесса C. и процесс c после завершения освобождает 4 ресурса, которые могут быть предоставлены процессу B, Процесс B после завершения восстанавливает 5 ресурсов, которые выделяются ПРОЦЕССУ A n процессу A после отделка выделяет 2 ресурса для обработки D

...