Модель пространства состояний системы

Лекция 11

Вычислительные схемы

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

Граф потока данных (информационный граф) определяет входные и выходные данные для каждого оператора. Дуга (RiSk) от регистра Ri к оператору Sk означает, что данные Ri являются элементом входных данных этого оператора; дуга (SkRj) определяет данные Rj как выходные. Очевидно, что некоторые данные R могут являться выходными для оператора Si и входными для оператора Sj. Пример графа потока данных для некоторой вычислительной схемы представлен на рис. 7.7, а; операторы и регистры данных представлены соответственно кружками и прямоугольниками.

Рис. 7.7.Пример вычислительной схемы: а – граф потока данных;

б – граф управления

Граф управления определяет последовательность выполнения операторов. Каждый оператор (представлен кружком) связан с некоторым количеством управляющих счётчиков (представлены прямоугольниками). Каждый из управляющих счётчиков содержит неотрицательное целое число. Текущие значения счётчиков совместно со значениями данных на графе потока данных определяют состояние вычислительной схемы. Пример графа управления представлен на рис. 7.7, б. Если все счётчики, указывающие на оператор S (то есть входные счётчики), имеют ненулевые значения, то говорят, что оператор S определен. В этом случае он может выполниться, изменив свои выходные регистры в соответствии с графом потока данных и изменив счётчики графа управления по следующему правилу:

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

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

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

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

Говорят, что два оператора соперничают в регистре R, если один из них изменяет R, а другой либо изменяет R, либо обращается к нему. Если два оператора, которые соперничают в некотором регистре, могут быть выполнены в одно и то же время, то говорят, что в схеме существует условие соперничества и такая схема является недетерминированной. Одна из возможных форм недетерминированного исполнения заключается в том, что схема может «зависнуть» (попасть в тупиковую ситуацию).

Рис. 7.8. Пример недетерминированной вычислительной схемы

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

Модель пространства состояний системы

Приведём еще одну формальную модель. Эта модель очень проста, однако она позволяет сформулировать, что нам нужно делать, чтобы не попасть в тупиковое состояние.

Пусть состояние операционной системы будет сводиться к состоянию различных ресурсов в системе (свободны они или кому-то распределены). Состояние системы изменяется процессами, когда они запрашивают, приобретают или освобождают ресурсы; это будут единственно возможные действия (точнее, мы принимаем во внимание только такие действия). Если процесс не блокирован в данном состоянии, он может изменить это состояние на новое. Однако, так как в общем случае невозможно знать заранее, какой путь может избрать произвольный процесс в своей программе (это неразрешимая проблема!), то новое состояние может быть любым из конечного числа возможных. Следовательно, процессы нами будут трактоваться как недетерминированные объекты. Введённые ограничения на известные понятия приводят нас к следующим формальным определениям:

Система¨ есть пара <p,s>, где

– s множество состояний системы {S1,S2,S3,...,Sn};

– p множество процессов {P1, Р2, Р3,..., Рk}.

Процесс¨ Рi есть частичная функция, отображающая состояние системы в непустые подмножества её же состояний. Это обозначается так:

Pi}s{®s:

Если Pi определён на состоянии S, то область значений Рi, обозначается как Pi(S). Если Ski(Se), то мы говорим, что Pi может изменить состояние Se в состояние Sk посредством операции, и используем обозначение Se Sk .

Наконец, запись SeSw обозначает, что

Se=Sw или

Se Sw для некоторого i или

Se Sk для некоторого i и Sk, и Sk Sw.

Другими словами, система может быть переведена посредством п 0 операций с помощью³ т ³0 различных процессов из состояния Se в состояние Sw.

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

Процесс¨ Pi заблокирован в состоянии Se, если не существует ни одного состояния Sk, такого что Se Sk(Pi(Se)).Æ=

Далее, мы говорим, что процесс находится в тупике в данном состоянии Se, если он заблокирован в состоянии Se и если вне зависимости от того, какие операции (изменения состояний) произойдут в будущем, процесс остается заблокированным. Поэтому дадим еще одно определение:

Процесс¨ Pi находится в тупике в состоянии Se, если для всех состояний Sk, таких что Se Sk, процесс Pi блокирован в Sk.

Приведём пример. Определим систему <p,s>:

s = {S1,S2,S3,S4= {Pp};1, Р2};

P1(S1) = {S2, S3}; P2(Sl) = {S3};

Pl(S2);Æ= P2(S2) = {S1, S4};

Pl(S3) = {S4}; P2(S3);Æ=

P1(S4) = {S3}; P2(S4).Æ=

Некоторые возможные последовательности изменений для этой системы таковы:

S1 S3; S2 S4; S1 S4.

Последовательность S1 S4 может быть реализована, например, следующим образом: S1 S2; S2 S4 или же S1 S3; S3 S4.

Заметим, что процесс Р2 находится в тупике как в состоянии S3, так и в состоянии S4; для последнего случая S2 S4 или S2 S1 и процесс P1 не становится заблокированным ни в S4, ни в S1.

Диаграмма переходов этой системы изображена на рис. 7.9.

Рис. 7.9. Пример системы <p,s> на 4 состояния

¨ Состояние S называется тупиковым, если существует процесс Рi, находящийся в тупике в состоянии S.

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

Введем еще одно определение.

¨ Состояние Si есть безопасное состояние, если для всех Sk, таких что

Si Sk,Sk не является тупиковым состоянием.

Рассмотрим ещё один пример системы <p,s>. Граф её состояний приведен на рис. 7.10. Здесь состояния S2 и S3 являются безопасными; из них система никогда не сможет попасть в тупиковое состояние. Состояния S1 и S4 могут привести как к безопасным состояниям, так и к опасному состоянию S5. Состояние S6 и S7 является тупиковым.

Рис. 7.10. Пример системы <p,s> с безопасными, опасными и тупиковым

состояниями

Наконец, в качестве ещё одной простейшей системы вида <p,s> приведём пример тупика с SR-ресурсами, уже рассмотренный нами в этой главе ранее. Определим следующим образом состояния процессов P1 и Р2, которые используют ресурсы R1и R2.

Таблица 7.1. Состояния процессов Р1 и Р2

Состояния для процесса Р1 Состояния для процесса Р2
  Не содержит никаких ресурсов   Не содержит никаких ресурсов
  Запросил ресурс R2, не держит никаких ресурсов   Запросил ресурс R1, не держит никаких ресурсов
  Держит ресурс R2   Держит ресурс R1
  Запросил ресурс R1, держит ресурс R2   Запросил ресурс R2, держит ресурс R1
  Держит ресурсы R1 и R2   Держит ресурсы R1 и R2
  Держит ресурс R2 после освобождения ресурса R1   Держит ресурс R2 после освобождения ресурса R1

Пусть состояние системы Sij означает, что процесс P1 находится в состоянии Si, а процесс Р2 – в состоянии Sj. Возможные изменения в пространстве состояний этой системы изображены на рис.7.11. «Вертикальными» стрелками показаны возможные переходы из одного состояния в другое для процесса P1, а «горизонтальными» – для процесса Р2. В данной системе имеются три опасных состояния. Попав в любое из них, мы неминуемо перейдем в тупиковое состояние.

Рис. 7.11.Пример системы

Теперь, когда мы знаем понятия надежного, опасного и безопасного состояний, можно рассмотреть и методы борьбы с тупиками.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: