Введение
Алгоритм, используемый для корректности программы Алгоритм Банкера - это алгоритм распределения ресурсов и избежания тупика, разработанный Эдсгером Дайкстром, который проверяет безопасность путем моделирования распределения заранее определенного максимального возможного количества всех ресурсов, а затем проверяет "s state", чтобы проверить возможные условия тупика для всех других ожидающих действий, прежде чем решить, следует ли разрешить продолжение распределения. Алгоритм был разработан в процессе проектирования операционной системы THE и первоначально описан (на голландском языке) в EWD108. Когда новый процесс входит в систему, он должен декларировать максимальное количество экземпляров каждого типа ресурса, которое он может когда-либо использовать; очевидно, что это число не может превышать общее количество ресурсов в системе. Кроме того, когда процесс получает все запрошенные ресурсы, он должен вернуть их в течение ограниченного периода времени.
Banker's algorithm is a resource allocation and deadlock avoidance algorithm developed by Edsger Dijkstra that tests for safety by simulating the allocation of predetermined maximum possible amounts of all resources, and then makes an "s state" check to test for possible deadlock conditions for all other pending activities, before deciding whether allocation should be allowed to continue. The algorithm was developed in the design process for the THE operating system and originally described (in Dutch) in EWD108. When a new process enters a system, it must declare the maximum number of instances of each resource type that it may ever claim; clearly, that number may not exceed the total number of resources in the system. Also, when a process gets all its requested resources it must return them in a finite amount of time.
Ограничения
Как и другие алгоритмы, алгоритм Банкера имеет некоторые ограничения при реализации. В частности, он должен знать, сколько каждого ресурса может потребовать процесс. В большинстве систем эта информация недоступна, что делает невозможным реализацию алгоритма Банкера. Кроме того, нереально предположить, что количество процессов является статическим, поскольку в большинстве систем количество процессов изменяется динамически. Кроме того, требование, что процесс в конечном итоге освободит все свои ресурсы (когда процесс заканчивается), достаточно для правильности алгоритма, однако этого недостаточно для практической системы. Ожидание в течение нескольких часов (или даже дней) на то, чтобы ресурсы были высвобождены, обычно неприемлемо.