Вопрос

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

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

          Resources Allocated | Resources Needed
Process A                   1                  6
Process B                   1                  5
Process C                   2                  4
Process D                   4                  7
Это было полезно?

Решение

Пер Википедия,

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

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

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

Другие советы

  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top