Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Введенная выше модель системы позволяет определить состояние блокировки процесса и состояние тупика в системе. Но эта модель является очень громоздкой для исследования системы при решении задач, связанных с проблемой тупика. При разработке модели ВС необходимо отразить все возможные состояния системы в течение всего времени ее существования, а также все изменения, которые могут произойти при выполнении всех операций всеми процессами в системе. Сложность состоит также и в том, что в системе процессы могут появляться и уничтожаться, поэтому необходимо это предусмотреть при работе с данной моделью. Поэтому описать с помощью введенной модели на практике можно только очень узкие классы ВС (например, управляющих), в которых выполняется конечное число процессов и заранее известны все выполняемые ими операции по запросу и освобождению ресурсов. В общем случае построить такую модель невозможно. Еще один недостаток этой модели - ее неинформативность (можно определить состояние тупика, но нельзя выявить его причину, установить, какие именно операции и над какими ресурсами привели к возникновению тупика в системе).
Поэтому для решения перечисленных задач обхода и распознавания тупиков, а также задачи вывода системы из тупика и восстановления ее работоспособности используется другая графовая модель ВС, которая позволяет представить отдельное состояние системы в каждый момент времени, причем в ней отражаются состояния всех имеющихся в этот момент процессов и ресурсов.
Состояние системы представляется графом типа “процесс-ресурс”. Свойства графа, представляющего состояние системы, зависят от типов ресурсов, имеющихся в системе. Для простоты предположим, что множество процессов и множество ресурсов в системе постоянны.
Рассмотрим графовую модель для системы с повторно используемыми ресурсами.
Повторно используемый ресурс (ПИР или ресурс типа SR) - это ресурс, состоящий из конечного множества идентичных единиц со следующими свойствами:
– число единиц ресурса постоянно;
– отсутствует возможность разделения ресурса (параллельного использования одних и тех же единиц ресурса несколькими процессами) - ресурс захватывается процессом, которому он выделен, в монопольное использование;
– процесс может освободить только те единицы ресурса, которые ему были ранее распределены по его запросам.
Состояние системы с повторно используемыми ресурсами может изменяться только тремя операциями:
– request (Ri, k) - запрос процесса pj, выполняющего данную операцию, на k единиц ресурса Ri;
– приобретение ресурса (выделение ресурса процессу pj в соответствии с выполненным им ранее запросом);
– release (Ri, k) - освобождение процессом pj k единиц ранее выделенного ему ресурса Ri.
Операции запроса на ресурс и освобождения ресурса выполняются процессом, а операция выделения ресурса - системой в ответ на запрос, сделанный процессом.
Граф ПИР (SR-граф) - ориентированный двудольный граф
SR = (N, E),
где N есть множество вершин:
N = p È r
(p = { p1, p2,..., pn}- конечное множество вершин, представляющих процессы в ВС, r = { R1, R2,..., Rm} - множество вершин, соответствующих SR-ресурсам ВС; p Ç r = Æ), а E - множество дуг графа:
E Í (p ´ r) È (r ´ p),
причем элементы графа обладают следующими свойствами:
¨ Ri - вершина, представляющая повторно используемый ресурс Ri Î r, имеет пометку - пару (ci, ti), где ci - емкость данного ресурса, а ti - количество единиц ресурса, доступных для распределения (свободных) в данный момент;
¨ pj - вершина, представляющая процесс pj Î p в системе;
¨ pj k Ri - ребро (pj, Ri) с весом | (pj, Ri) | = k, представляющее вы полненный процессом pj Î p, но пока не удовлетворенный запрос на k единиц повторно используемого ресурса Ri Î r;
¨ Ri k pj - ребро (Ri, pj) с весом | (Ri, pj) | = k, представляющее все распределения ресурса Ri Î r процессу pj Î p по его удовлетворенным запросам;
¨ каждый запрос, выполняемый процессом pj Î p на ресурс Ri Î r должен удовлетворять ограничению:
| (Ri, pj) | + | (pj, Ri) | £ ci,
то есть сумма выполненных распределений и запросов конкретного ресурса относительно любого из процессов не может превышать количества единиц ресурса, имеющихся в системе для всех i и j (i = 1, m, j = 1, n); в противном случае запрос считается ошибочным и не может быть выполнен;
¨ в общей сложности в системе для каждого ресурса Ri Î r может быть сделано не более чем ci назначений, то есть
n
å | (Ri, pj) | £ ci
j = 1
Как уже было сказано, состояние системы изменяется только при выполнении запросов, приобретении процессом ресурсом и при освобождении им полученных ресурсов.
Пусть система находится в состоянии Sl. Процесс pj может запросить любое число ресурса Ri, удовлетворяющее приведенному выше ограничению, с помощью операции request (Ri, r). Выполнение процессом запроса приведет к появлению в SR-графе дополнительного ребра запроса с соответствующим весом r. Новый граф представляет состояние системы Sk, такое что
pj
Sl ® Sk.
Операция приобретения процессом pj ресурса Ri по запросу, представленному ребром (pj, Ri), может быть выполнена, если
n
| (pj, Ri) | + å | (Ri, ph) | £ ci
h = 1
или
| (pj, Ri) | £ ti
n
(где ti = ci - å | (Ri, ph) |).
h = 1
Выполнение этой операции для процесса, которому еще не был распределен ресурс Ri, приведет к удалению дуги (pj, Ri), представлявшей удовлетворенный запрос, и появлению новой дуги (Ri, pj) с весом, равным весу удаленной дуги запроса (дуга запроса “обращается” - меняется ее направление). В том случае, если данный ресурс уже был выделен процессу, увеличивается вес уже существующей дуги (Ri, pj), представляющей распределение данного ресурса этому процессу. При этом в любом случае уменьшается величина ti (то есть сокращается количество доступных для распределения единиц распределенного ресурса) на величину удовлетворенного запроса.
Операция освобождения release (Ri, r) процессом pj r единиц ресурса Ri может быть выполнена тогда и только тогда, когда процесс не имеет неудовлетворенных запросов (в графе ПИР нет дуг, исходящих из вершины, представляющей данный процесс) и имеет в своем распоряжении ресурс Ri (есть дуга с положительным весом не меньшим чем r: | (Ri, pj) | ³ r).
В результате освобождения ресурса новое состояние системы представляется графом ПИР, в котором изменилась пометка вершины, соответствующей ресурсу Ri (величина ti увеличилась на количество освобожденных процессом единиц ресурса: ti:= ti + r), и либо изменился вес дуги (Ri,pj), показывающей распределение данного ресурса процессу pj (вес уменьшается на количество освобожденных единиц ресурса: |(Ri,pj)|:= |(Ri,pj)| - r), либо (если процесс освободил ресурс полностью (вес |(Ri,pj)| равнялся r)) дуга (Ri, pj) удаляется из графа.
Рассмотрим примеры.
Пример 1. Пусть в системе есть два процесса P1 и P2 и два единичных повторно используемых ресурса R1 и R2. Процессы имеют следующее описание:
Процесс 1 | Процесс 2 |
process P1; begin... request (R1, 1); ... request (R2, 1); ... release (R2, 1); ... release (R1, 1); ... end. | process P2; begin... request (R2, 1); ... request (R1, 1); ... release (R2, 1); ... release (R1, 1); ... end. |
Предположим, что процессы выполняют свои операции над ресурсами в порядке, который приводит к изменению состояний системы, показанному последовательно изменяемыми графами ПИР, приведенными на рис.2.10. Последний граф ПИР соответствует тупиковому состоянию системы S7 (процессы P1 и P2 взаимно блокируют друг друга). Другая последовательность выполнения операций могла бы позволить процессам успешно завершиться.
Пример 2. В системе выполняются n процессов и существует разделяемый повторно используемый ресурс R емкости m. Описание программы каждого процесса выглядит следующим образом:
process P1;
begin...
request ( R, 1 );
...
request ( R, 1 );
...
release ( R, 1 );
...
release ( R, 1 );
...
End.
(1, 1) (1, 1) (1, 0)
R1 R1 R1
S1: S2: 1 S3: 1
Дата публикования: 2014-11-29; Прочитано: 483 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!