Введение

Алгоритм, используемый для корректности программы Алгоритм Банкера - это алгоритм распределения ресурсов и избежания тупика, разработанный Эдсгером Дайкстром, который проверяет безопасность путем моделирования распределения заранее определенного максимального возможного количества всех ресурсов, а затем проверяет "s state", чтобы проверить возможные условия тупика для всех других ожидающих действий, прежде чем решить, следует ли разрешить продолжение распределения. Алгоритм был разработан в процессе проектирования операционной системы THE и первоначально описан (на голландском языке) в EWD108. Когда новый процесс входит в систему, он должен декларировать максимальное количество экземпляров каждого типа ресурса, которое он может когда-либо использовать; очевидно, что это число не может превышать общее количество ресурсов в системе. Кроме того, когда процесс получает все запрошенные ресурсы, он должен вернуть их в течение ограниченного периода времени.

Ограничения

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