7.3.Модель в виде дискретной системы
7.3.1. Определение состояния программы
Состояние программы может быть представлено в виде ориентированного графа (V,E) со следующей интерпретацией и условиями:
1. Множество V разделено на два взаимно пересекающихся подмножества P и R, представляющие процессы
![]()
и ресурсы
![]()
программы.
2.
Граф является "двудольным" по
отношению к подмножествам вершин P и R,
т.е. каждое ребро
соединяет вершину P с вершиной R. Если
ребро
имеет
вид
,
то
есть
реброзапроса
и интерпретируется как запрос от процесса
на единицу ресурса
.
Если ребро
имеет вид
,
то
есть
реброназначения
и выражает назначение единицы ресурса
процессу
.
3.
Для
каждого ресурса
существует
целое
,
обозначающее количество единиц ресурса
.
4.
Пусть
-
число ребер, направленных от вершины
к
вершине
.
Тогда при принятых обозначениях для
ребер графа должны выполняться условия:
Может быть сделано не более
назначений
(распределений) для ресурса
,
т.е.
,
;
Сумма запросов и распределений относительно любого процесса для конкретного ресурса не может превышать количества доступных единиц, т.е.
,
,
.
Граф, построенный с соблюдением всех перечисленных правил, именуется в литературе как граф "процесс-ресурс". Для примера, на рисунке 7.3.приведен граф программы, в которой ресурс 1 (файл 1) выделен процессу 1, который, в свою очередь, выдал запрос на ресурс 2 (файл 2). Процесс 2 владеет ресурсом 2 и нуждается для своего продолжения в ресурсе 1.

Рис. 7.3. Граф программы
Состояние программы, представленное в виде графа "процесс-ресурс", изменяется только в результате запросов, освобождений или приобретений ресурсов каким-либо из процессов программы.
Запрос.
Если программа находится в состоянии
S и процесс
не
имеет невыполненных запросов, то
может
запросить любое число ресурсов (в
пределах ограничения 4). Тогда программа
переходит в состояние T
![]()
Состояние
T отличается от S только дополнительными
ребрами запроса от
к
затребованным ресурсам.
Приобретение.
Операционная система может изменить
состояние программы T на состояние U
в результате операции приобретения
ресурсов процессом
тогда
и только тогда, когда
имеет
запросы на выделение ресурсов и все
такие запросы могут быть удовлетворены,
т.е. если
.
Граф
U
идентичен T
за исключением того, что все ребра
запроса
для
обратны
ребрам
,
что отражает выполненное распределение
ресурсов.
Освобождение.
Процесс
может
вызвать переход из состоянияU
в состояние V
с помощью освобождения ресурсов тогда
и только тогда, когда
не
имеет запросов, а имеет некоторые
распределенные ресурсы, т.е.
,
.
В
этой операции
может освободить любое непустое
подмножество своих ресурсов. Результирующее
состояниеV
идентично исходному состоянию U
за исключением того, что в V
отсутствуют некоторые ребра приобретения
из U
(из U
удаляются ребра
каждой освобожденной единицы ресурса
).
Для примера на рисунке 7.4. показаны состояния программы с одним ресурсом емкости 3 и двумя процессами после выполнения операций запроса, приобретения и освобождения ресурсов для первого процесса.

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