Алгоритм банкиров
У меня есть вопрос об ответе на вопрос о алгоритме Дейкстры Банкира (вопрос представлен на снимке экрана ниже).
Я думал, что ответ на этот вопрос должен быть "да, это возможно". Я думаю, что как только пользователь 1 завершит работу, мы можем вытащить его и освободить его запрошенные ресурсы (10 A и 5 B) и вернуть его использованные ресурсы в пул доступных ресурсов, что поможет другим сделать это.
Вместо этого ответ (на снимке экрана под вопросом) гласит, что это невозможно. Где я неправ? Почему ответ, что это невозможно?
Ответ:
1 ответ
Я думаю, что это просто плохо сформулированный вопрос. В описании проблемы указано, что доступные ресурсы A = 10
а также B = 15
,
В алгоритме Банкира считается "безопасным", если процесс может выделить максимум необходимых ресурсов. (процессу 1 нужно 10 А и 5 В)
Тогда ответ гласит, что доступные ресурсы A = 1
а также B = 2
, Если вы посмотрите на все процессы, в настоящее время выделенные номера:
процесс 1 имеет ресурсы 2 A
процесс 2 имеет ресурсы 3 А
процесс 3 имеет ресурсы 2 A
процесс 4 имеет 2 А ресурса
---------------------------
общее количество используемых ресурсов = 9
становится ясно, что этот вопрос означал, что это были общие ресурсы системы, а не текущие доступные ресурсы. Таким образом, 9 A ресурсов используются, процесс 1 требует максимум 10 (у него 2), поэтому ему нужно еще 8; в этом случае ответ - нет, это небезопасно.