Алгоритм банковского процесса

Используя алгоритм Bankers,

Если процесс (p1) не может быть завершен каким-либо другим процессом p2,p3,p4 и т. Д., Отдавая свои ресурсы по отдельности, могут ли они ВСЕ отказаться от своих ресурсов вместе, чтобы p1 мог завершиться?

Или это не то, что можно сделать?

1 ответ

Решение

Вы спрашиваете о возможностях абстрактных процессов или алгоритма банкира в частности?

Если это абстрактные процессы, то да, это легко возможно. Создать сигнал yield_allи закодируйте каждый процесс, чтобы освободить ресурсы при получении этого сигнала. Некоторый ведущий процесс должен будет отправить сигнал каждому из P2, P3 и P4, а затем разрешить P1 продолжить его распределение. Детали реализации до дизайнера.


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

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

Это отвечает на ваш вопрос?

Другие вопросы по тегам