Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Готовые билеты по СППО к .doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
622.59 Кб
Скачать

Вопрос 18. Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.

Граф обобщенных ресурсов - это ориентированный двудольный граф

RG = (N, E),

где N есть множество вершин:

N =   

( = { p1 , p2 , ..., pn}- конечное множество вершин, представляющих процессы в ВС,  = { R1 , R2 , ..., Rm} - множество вершин, соответствующих ресурсам ВС, причем  = CR  SR, где CR - множество вершин, представляющих потребляемые ресурсы, SR - множество вершин, представляющих повторно используемые ресурсы (CR  SR = );    = ), а E - множество дуг графа:

E  (    )  (  ),

причем элементы графа обладают следующими свойствами:

  1. Ri - вершина, представляющая повторно используемый ресурс RiSR, имеет пометку - пару (ci, ti ), где ci - емкость данного ресурса, а ti - количество единиц ресурса, доступных для распределения (свободных) в данный момент;

  2. Ri - вершина, представляющая потребляемый ресурс RiCR, имеет пометку - неотрицательное целое число ti, обозначающее число доступных для распределения в данный момент единиц этого ресурса;

  3. pj - вершина, представляющая процесс pj   в системе;

  4. pj k Ri - дуга (pj, Ri) с весом |(pj, Ri)|=k, представляющая вып олненный процессом pj  , но пока не удовлетворенный запрос на k единиц повторно используемого ресурса Ri  SR ;

  5. каждый запрос, выполняемый процессом pj   на ресурс Ri  SR, должен удовлетворять ограничению:

| ( pj , Ri ) |  ci, - | ( Ri, pj ) | ,

то есть сумма выполненных распределений и запросов конкретного повторно используемого ресурса относительно любого из процессов не может превышать общего количества единиц этого ресурса, имеющихся в системе, в противном случае запрос считается ошибочным и не может быть выполнен;

  1. pj k Ri - дуга (pj, Ri) с весом |(pj, Ri) |=k, представляющая выполненный процессом pj  , но пока не удовлетворенный запрос на k единиц потребляемого ресурса Ri  CR ;

  2. R i k pj - ребро (Ri, pj) с весом |(Ri, pj)|=k, представляющее все распределения ресурса Ri  SR процессу pj   по его удовлетворенным запросам ;

  3. в общей сложности в системе для каждого ресурса Ri  SR может быть сделано не более чем ci назначений, то есть

n

 | ( Ri, pj ) |  ci ;

j = 1

  1. для каждого ресурса Ri  CR существует непустое множество процессов-производителей этого ресурса  (Ri)   и граф обобщенных ресурсов содержит дугу производителя (Ri, pj) для каждого pj (Ri) по всем RiCR;

Ri pj - обозначение ребра (дуги) производителя ресурса Ri ;

ребра производителя являются постоянными и никогда не уничтожаются.

Вопрос 19. Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Примеры редукции.

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

Наиболее общий способ распознавания тупика (моделирования благоприятного развития системы) основан на редукции (сокращении) графов ресурсов, представляющих исследуемое состояние системы.

Порядок действий при редукции графа ПИР процессом pi выглядит следующим образом:

  1. удалить все ребра запросов (pi, Rj), исходящие из вершины, представляющей pi;

  2. удалить все ребра (Rj, pi), показывающие распределение ресурсов процессу pi, причем для каждого ресурса Rj   , для которого удаляется ребро (Rj, pi), изменить пометку соответствующей ему вершины: ti := ti + r, где r = |(Rj, pi)| - вес удаляемого ребра.

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

Граф ресурсов является несокращаемым, если он не может быть сокращен ни одним процессом (все процессы либо заблокированы, либо представляющие их вершины являются изолированными).

Граф ресурсов является полностью сокращаемым, если существует последовательность сокращений, которые удаляют все ребра графа.

Пример редукции графа ПИР приведен на рис.2.13.

Для графов ПИР порядок сокращений несущественен. Что доказывается следующей леммой:

Все последовательности сокращений данного графа ПИР приводят к одному и тому же несокращаемому графу.

(3, 0) (3, 2) (3, 3)

Прямоугольник 93

RПолилиния 86 Полилиния 87 Полилиния 88 Прямая соединительная линия 89 1 R1 R1

Прямая соединительная линия 84 2 1 1 1 1

PОвал 77 Прямая соединительная линия 83 1 P2

P1 P2 P1 P2 P1 P2

Полилиния 70 Полилиния 71 Прямая соединительная линия 72 Полилиния 73 Полилиния 75

1 1 1 1 1

RПрямая соединительная линия 67 Прямая соединительная линия 68 2 R2 R2

(2, 1) (2, 1) (2, 2)

Рис.2.13. Последовательность сокращений графа ПИР

Состояние системы S есть состояние тупика тогда и только тогда, когда граф ПИР для состояния S не является полностью сокращаемым.

Данная теорема позволяет построить алгоритм распознавания тупика в системе: следует сократить граф ПИР, представляющий исследуемое состояние системы, если редукция приводит к вполне несвязному графу, то исходное состояние не было состоянием тупика, если же в результате сокращений будет получен несокращаемый граф, в котором останутся дуги, то исходное состояние является тупиковым, а несокращенные дуги показывают процессы, оказавшиеся в тупике, и его причину.

Алгоритм редукции для распознавания тупика может быть выполнен простым перебором всех вершин, соответствующих процессам, с выполнением редукции по незаблокированным процессам, имеющим запросы и/или владеющим ресурсами.

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

Вопрос 20. Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: частные случаи (системы с единичными ресурсами (алгоритм поиска цикла), системы с ограничениями на запросы, системы в выгодном состоянии (понятие узла, алгоритм поиска узла)).

Для систем с потребляемыми ресурсами алгоритм редукции выполняется иначе - сокращение графа процессом pi состоит из следующих операций:

  1. удовлетворить все запросы процесса pi и удалить все ребра запросов (pi, Rj), исходящие из вершины, представляющей pi, уменьшив соответствующие пометки вершин (счетчики доступных единиц), представляющих выделенные ресурсы, на величины выполненных запросов;

  2. для всех потребляемых ресурсов Rj таких, что процесс pi является их производителем, удалить все ребра (Rj, pi) производителей, освободив при этом достаточное количество ресурсов для удовлетворения всех имеющихся на них запросов от всех процессов в системе (для того чтобы не усложнять работы вычислением этого числа, введем специальное число  такое, что для любого целого k выполняются условия:  > k,  + k =  - k = ), пометку вершин, для которых данный процесс был производителем, заменяем на .

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

Полилиния 119 Полилиния 120 1

Овал 114 Овал 111 Прямоугольник 113 Овал 112 Прямая соединительная линия 115 Прямая соединительная линия 116 1 2

PПрямая соединительная линия 107 Прямая соединительная линия 108 Прямая соединительная линия 109 Прямая соединительная линия 110 1 1 R1 P2 R2 P3

1 1

(а)

P1 R1 P2 R2 P3

 

(б)

Полилиния 101 1

P 1 1 R1 P2 R2 P3

0

(в)

Рис.2.14. Пример сокращений графа потребляемых ресурсов:

(а) исходный граф;

(б) результат редукции, начатой процессом p1;

(в) результат редукции, начатой процессом p2

Узел в ориентированном графе (N, E) есть подмножество вершин M  N таких, что для всех вершин v  M: P(v) = M (здесь P(v) - множество всех вершин, достижимых из вершины v).

Следующая теорема дает достаточное условие тупика для системы в выгодном состоянии.

Если состояние системы выгодное, то наличие узла в соответствующем графе повторно используемых ресурсов является достаточным условием тупика.

Приведенный ниже алгоритм дает возможность обнаружить узел в графе. Он основан на том, что узел по определению не может содержать вершину сток (сток - это вершина v, из которой не выходит ни одной дуги, то есть полустепень исхода такой вершины равна 0: od(v) = 0), а также вершины, из которых можно попасть в вершину-сток.

Sink := { v N | od(v) = 0 }

for all v Sink do

for all u : (u, v) E do

if u Sink then Sink := Sink { u } ;

if N Sink then write (‘В графе есть узел !’)

Алгоритм распознавания цикла в графе, время выполнения которого пропорционально числу дуг в графе (m  n в худшем случае), основан на последовательном исключении дуг, направленных в стоки, его можно записать следующим образом (через w(v) обозначено число ребер, выходящих из вершины v):

Sink := { v N | od(v) = 0 }

for all v Sink do

begin

for all u : (u, v) E do

begin

w(u) := w(u) - 1 ;

if w(u) = 0 then Sink := Sink { u } ;

end

end

if Sink N then write (‘В графе есть цикл !’)