Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPPO_shpora_final_ver_1.pdf
Скачиваний:
49
Добавлен:
30.03.2015
Размер:
1.19 Mб
Скачать

22 СИСТЕМА С ПОВТОРНО ИСПОЛЬЗУЕМЫМИ И ПОТРЕБЛЯЕМЫМИ РЕСУРСАМИ (ГРАФ ОБОБЩЁННЫХ РЕСУРСОВ). ПРИМЕРЫ.

Граф обобщенного ресурса.

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

Граф обобщенных ресурсов - это ориентированный двудольный граф RG = (N, E), где N - вершины: N = π ρ

π = { p1 , p2 , ..., pn} - вершины, представляющие процессы ρ = { R1 , R2 , ..., Rm} - вершины, представляющие ресурсам

причем ρ = ρCR ρSR, где ρCR – ПР (потребляемые ресурсы), ρSR – ПИР (повторно используемые)

(ρCR ∩ ρSR = ); π ∩ ρ = ),

Е - множество дуг графа: E ( π × ρ ) (ρ × π),

причем элементы графа обладают следующими свойствами (НЕ ЗАБУДЬТЕ РЕСУРСЫ В КРУЖОК, А ПРОЦЕССЫ В КВАДАРТ)

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

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

pj - вершина, представляющая процесс pj π в ВС;

pj k Ri -дуга (pj, Ri) с весом |(pj, Ri)|=k, представляющая выполненный процессом pj π, но пока не удовлетворенный запрос на k единиц ПИР Ri ρSR ;

каждый запрос, выполняемый процессом pj π на ресурс Ri ρSR, должен удовлетворять ограничению: | (pj , Ri) | ci, - | (Ri, pj) | ,то есть сумма выполненных распределений и запросов конкретного повторно используемого ресурса относительно любого из процессов не может превышать общего количества единиц этого ресурса, имеющихся в системе, в противном случае запрос считается ошибочным и не может быть выполнен;

pj

k

Ri

- дуга (pj, Ri) с весом |(pj, Ri) |=k, представляющая выполненный

процессом pj π, но пока не удовлетворенный запрос на k единиц ПР Ri ρCR ;

Ri

k

pj

- ребро (Ri, pj) с весом |(Ri, pj)|=k, представляющее все распределения

ресурса Ri ρSR

процессу pj π по его удовлетворенным запросам ;

в общей сложности в системе для каждого ресурса Ri ρSR может быть сделано не более чем ci назначений, то есть (j = 1..n) | (Ri, pj) | ci;

Для каждого ресурса Ri ρCR существует непустое множество процессовпроизводителей этого ресурса π (Ri) π и граф обобщенных ресурсов содержит дугу

производителя

(Ri,

pj)

для

каждого

pj π

(Ri)

по

всем

Ri ρCR;

Ri p i

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

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

Процесс pj заблокирован, если он не способен выполнить ни одну из трех операций, изменяющих состояние системы. Эта ситуация может возникнуть только тогда, когда процесс выдал запросы, которые не могут быть удовлетворены за счет имеющихся в данном состоянии ресурсов, то есть процесс pj заблокирован, если существует по крайней мере один ресурс Ri такой, что| ( pj , Ri ) | > ti .

38

23 РЕШЕНИЕ ЗАДАЧИ РАСПОЗНАВАНИЯ ТУПИКА ДЛЯ СИСТЕМ С ПОВТОРНО ИСПОЛЬЗУЕМЫМИ РЕСУРСАМИ: ОСНОВНАЯ ТЕОРЕМА О ТУПИКЕ. АЛГОРИТМ РЕДУКЦИИ. ПРИМЕРЫ РЕДУКЦИИ.

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

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

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

2)удалить все ребра (Rj, pi), показывающие распределение ресурсов процессу pi,

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

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

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

Все последовательности сокращений данного графа ПИР приводят к одному и тому же несокращаемому графу. (лемма, доказывающая это)

С помощью этой леммы можно доказать простое необходимое и достаточное условие тупика (теорему о тупике):

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

Сформулированная теорема имеет два следствия:

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

2)Если S - состояние тупика в системе с ПИР, то, по крайней мере, два процесса находятся в тупике в этом состоянии.

24 РЕШЕНИЕ ЗАДАЧИ РАСПОЗНАВАНИЯ ТУПИКА ДЛЯ СИСТЕМ С ПОВТОРНО ИСПОЛЬЗУЕМЫМИ РЕСУРСАМИ: ЧАСТНЫЕ СЛУЧАИ (СИСТЕМЫ С ЕДИНИЧНЫМИ РЕСУРСАМИ, СИСТЕМЫ С ОГРАНИЧЕНИЯМИ НА ЗАПРОСЫ, СИСТЕМЫ В ВЫГОДНОМ СОСТОЯНИИ).

Один из алгоритмов применим для распознавания тупика в системе, находящейся в выгодном состоянии.

39

Узел в ориентированном графе (N, E) есть подмножество вершин M N таких, что для

всех вершин v M: P (v) = M (здесь P (v) - множество всех вершин, достижимых из вершины v).

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

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

Sink: = {v N}

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}

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 (‘В графе есть цикл!’)

26 РАСПОЗНАВАНИЕ ТУПИКОВ В СИСТЕМАХ С ПОВТОРНО ИСПОЛЬЗУЕМЫМИ РЕСУРСАМИ С ОГРАНИЧЕНИЯМИ НА ВЫПОЛНЕНИЕ ОПЕРАЦИЙ.

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

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

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

40

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

Один из алгоритмов применим для распознавания тупика в системе, находящейся в выгодном состоянии.

26 РАСПОЗНАВАНИЕ ТУПИКОВ В СИСТЕМАХ С ПОТРЕБЛЯЕМЫМИ РЕСУРСАМИ И В СИСТЕМАХ С ОБОБЩЁННЫМИ РЕСУРСАМИ: АЛГОРИТМ РЕДУКЦИИ. ПРИМЕРЫ.

Распознавание тупиков для систем с ПР

Алгоритм редукции для систем с ПР (сокращение графа процессом pi):

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

2. Для всех ПР Rj таких, что процесс pi является их производителем, удалить ребра (Rj, pi) производителей, освободив при этом достаточное количество ресурсов для удовлетворения всех имеющихся на них запросов от всех процессов в системе (для того

чтобы не усложнять работы вычислением этого числа, введем специальное число ω такое, что для любого целого k выполняются условия: ω > k, ω + k = ω - k = ω), пометку вершин,

для которых данный процесс был производителем, заменяем на ω.

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

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

 

1

 

1

 

2

 

 

 

 

 

 

 

P1

1

R1

P2

R2

P3

 

 

 

1

(а)

1

 

 

 

 

 

 

 

 

P1

 

R1

P2

R2

P3

 

 

 

ω

(б)

ω

 

 

 

 

 

 

 

 

1

 

 

 

 

 

P1

1

 

R1

P2

R2

P3

 

 

 

0

(в)

ω

 

 

 

 

 

 

 

 

 

 

 

41

 

 

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

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

 

P1

P2

 

 

1

1

 

 

1

1

 

1

R1

R2

1

Рис.2.15. Пример графа ПР для состояния системы, из которого каждый из двух процессов может попасть в тупик

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

(можно проверить конкретный процесс на наличие тупиков)

Обнаружение тупика значительно упрощается, если в системе есть ограничения на запросы и их выполнение.

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

Для систем с ресурсами двух типов для распознавания тупика можно использовать две самые общие теоремы:

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

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

1я дает правило распознавания тупика для каждого отдельного процесса, но ее применение слишком трудоемко. 2я дает наиболее общий способ распознавания тупика,

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

28 Вывод системы из тупика. Общий подход к решению задачи и частный случай.

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

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

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

42

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

Самой простой стратегией является выбор процессов-“кандидатов” на завершение или перехват ресурсов в порядке увеличения цены завершения процесса или цены принудительного перераспределения выделенных ему ресурсов. Стоимость этих операций

всистеме может определяться, например, приоритетами процессов, “ценой” повторного запуска или оживления процессов, затратами, которые могут быть следствием нарушения нормального выполнения процессов (например, затратами на восстановление информации

вБД после ее разрушения из-за прерывания транзакции). Цена перехвата ресурса может быть связана с каждой единицей ресурса.

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

повторяется для следующего процесса в установленном порядке.

29 Обходы тупиков. Алгоритм банкира. Примеры.

Задача обхода тупика решается в системах, где возможность возникновения тупика не исключается. Цель решения этой задачи - обход состояний, где вероятность возникновения тупика велика.

Система, предоставляя ресурс в распоряжение процесса, должна принять решение, безопасно это или нет. Возникает вопрос: есть ли такой алгоритм, который помогает всегда избегать тупиков и делать правильный выбор. Ответ - да, мы можем избегать тупиков, но только, если определенная информация известна заранее.

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

ОС принимает запрос от пользовательского процесса, если его максимальная потребность не превышает n.

Пользователь гарантирует, что если ОС в состоянии удовлетворить его запрос, то все устройства будут возвращены системе в течение конечного времени.

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

Рассмотрим пример надежного состояния для системы с тремя пользователями и 12-ю устройствами, где 10 устройств задействовано, а 2 имеется в наличии. Пусть текущая ситуация такова:

 

Текущее

 

Максимальная

 

количество

 

потребность

Первый пользователь

1

 

4

 

 

43

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]