Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Формальные модели для изучения проблемы тупиковых ситуаций
Проблема борьбы с тупиками становится всё более актуальной и сложной по мере развития и внедрения параллельных вычислительных систем. При проектировании таких систем разработчики стараются проанализировать возможные неприятные ситуации, используя специальные модели и методы. Таких моделей много; к настоящему времени разработано несколько десятков различных моделей, предназначенных для анализа и моделирования систем с параллельными асинхронными процессами, для которых возможность возникновения тупиковых ситуаций является очень серьёзной проблемой. Изложение и сравнительный анализ этих моделей может составить большую монографию, поэтому здесь мы кратко рассмотрим только четыре из них – сети Петри, вычислительные схемы, модель пространства состояний и уже упомянутую нами модель Холта. Сети Петри Среди многих существующих методов описания и анализа параллельных систем уже более 35 лет значительное место занимают сетевые модели, восходящие к сетям специального вида, предложенных в 1962 году Карлом Петри для моделирования асинхронных информационных потоков в системах преобразования данных [64]. Взаимодействие событий в параллельных асинхронных дискретных системах имеет, как правило, сложную динамическую структуру. Эти взаимодействия описываются более просто, если указывать не непосредственные связи между событиями, а те ситуации, при которых данное событие может реализоваться. При этом глобальные ситуации в системе формируются с помощью локальных операций, называемых условиями реализации событий. Определённые сочетания условий разрешают реализоваться некоторому событию (предусловия события), а реализация события изменяет некоторые условия (постусловия события), то есть события взаимодействуют с условиями, а условия – с событиями. Таким образом, предполагается, что для решения задач достаточно представить системы как структуры, образованные из элементов двух типов – событий и условий. Удобный формальный механизм для этого, предложенный Петри, был развит А. Холтом, который назвал его сетью Петри. В сетях Петри события и условия представлены абстрактными символами из двух непересекающихся алфавитов, называемых соответственно множеством переходов и множеством позиций. Имеется несколько формальных представлений сетей Петри: ¨ теоретико-множественное; ¨ графовое – бихроматический (двудольный ориентированный) граф и, соответственно, графическое; ¨ матричное. При использовании теоретико-множественного подхода к описанию сети Петри (поскольку эта модель представляет и структуру, и функционирование системы) она формально может быть определена как двойка вида: N =á S, М0ñ. Здесь S – это структура сети, которая представляется двудольным ориентированным мультиграфом S=(V, U), где V – вершины этого графа, U – его дуги. М0 – начальное состояние сети Петри, которое также называется начальной маркировкой. В силу того, что граф S является двудольным, можно перейти к формальному описанию структуры сети Петри в виде тройки: Sá P, T, Yñ, где Р – конечное множество позиций, Р ={pi}, i = ; Т – конечное множество переходов, Т = {tj}, j = ; ТÈ Р = V, ТÇ Р = Æ, то есть Т и Р – это два типа вершин биграфа S; Y – конечное множество дуг, заданное отношениями между вершинами графа S: Y Î (Р * T)È (T * Р). Поскольку двудольный мультиграф S является ориентированным, то любой переход tj, j = соединяется с позициями рi Î Р через входные и выходные дуги, которые задаются через функцию предшествования В: (P * T) ® {0, 1, 2,...} и через функцию следования Е: (Т * Р)® {0, 1, 2..}, являющиеся отображениями из множества переходов в комплекты позиций [64] (синонимом термина комплект является понятие мультимножества). Эти функции определяют комплекты позиций {рi}Î , связанных с переходом tj Î Т через множество дуг {(pi, tj)l}, где l£ ½ {(pi, tj)l: i, j = const}½ £ W, и комплекты позиций {рk} Î , связанных с переходом tj Î Т через множество_дуг {(tj, pk)l}, где l£ ½ {(ti, pk)l: j, k = const}½ £ W. Здесь W – мультичисло графа S; – пространство комплектов, заданное на множестве функциями Е и В; {(pi, tj)v} – v-я дуга, выходящая из позиции pi и входящая в переход tj, {(ti, pk)v – v-я дуга, выходящая из перехода tj и входящая в позицию pk. Таким образом, теперь структура S сети Петри N может быть представлена как четверка: S(P, T, B, E). Представим множество позиций Р как объединение двух пересекающихся множеств: P=IÈ O; IÇ O¹ Æ. Здесь мы через I и О обозначим следующие множества: I = I(tj); O = O(tj), где I(tj) = {pi: B(pi, tj) ³ 1, i = }, j = ; O(tj) = {pk: E(tj, pk)³ 1 k = }, j = ; (pi, tj) – дуга с весом w£ W, выходящая из вершины pi и входящая в вершину tj (tj, pk) – дуга с весом w £ W, выходящая из вершины tj и входящая в вершину pk то есть I(tj) и O(tj) – комплекты соответственно входных и выходных позиций перехода tj. Элементы множества T обычно представляют собой те возможности (возможные ситуации, условия), при которых могут быть реализованы интересующие нас процессы (действия). Начальная маркировка М0 (как и текущая маркировка М, которая соответствует некоторому состоянию сети в текущий момент модельного времени) определяется одномерной матрицей (вектором), число компонентов которого равно числу позиций сети п, п =|Р |, а значение i-го компонента, 1 £ i £ . п, есть натуральное число m(pi), которое определяет количество маркеров (меток) в позиции рi то есть М0 = (m0(p1), m0(p2), …, m0(pn)); М = (m(p1), m(p2), …, m(pn)), где m(p1) m(pi)Î Z; Z – множество неотрицательных целых чисел. Маркировку М можно представлять и как множество или комплект с той лишь только разницей, что отсутствие некоторого элемента в множестве будем обозначать специальным элементом – нулём. В этом случае запись вида Mi = Mi-1 – I(t) означает разность множеств и такое изменение маркировки, при котором на соответствующих местах вектора Мi будут уменьшенные значения. Передвижение маркеров по сети осуществляется посредством срабатывания её переходов. Срабатывание возбужденного перехода, являющееся локальным актом, в целом ведёт к изменению маркировки сети, то есть к изменению её состояния. Таким образом, если в сети задано начальное маркирование М0, при котором хотя бы один переход возбуждён, то в ней начинается движение маркеров, отображающее смену состояний сети. Переход tj может сработать, если piÎ I(tj): m(pi)³ (рi, I(tj)) – w. Переход, для которого выполняется это условие, называется возбуждённым. Здесь запись вида #(рi, I(tj)) означает число появлений позиций рi во входном комплекте перехода tj оно, естественно, равно весу w, если вместо мультиграфа рассматривать взвешенный граф. При срабатывании перехода tj маркировка М0 изменяется на маркировку M1 следующим образом: M1 = М0 – I(tj) + О(tj). Иначе говоря, " piÎ P: тi(рi) – т0(рi) - #(рi, I(tj)) + #(рi, О(tj)). Из последнего выражения видно, что количество маркеров, которое переход tj изымает из своих входных позиций, может не равняться количеству маркеров, которое этот переход помещает в свои выходные позиции, так как совсем не обязательно, чтобы число входных дуг перехода равнялось числу его выходных дуг. В графическом представлении сетей (оно наиболее наглядно и легко интерпретируемо) переходы изображаются вертикальными (или горизонтальными) планками (чёрточками), а позиции – кружками (рис. 7.5). Условия–позиции и события–переходы связаны отношением непосредственной зависимости (непосредственной причинно-следственной связи), которое изображается с помощью направленных дуг, ведущих из позиций в переходы и из переходов в позиции. Позиции, из которых ведут дуги на данный переход, называются его входными позициями, а позиции, на которые ведут дуги из данного перехода, – выходными позициями. Выполнение условия изображается разметкой соответствующей позиции, а именно помещением числа n или изображением n маркеров (фишек) в то место, где п > 0 – ёмкость условия. Сети Петри могут быть использованы с точки зрения анализа системы на возможность возникновения в ней тупиковых ситуаций. Этот анализ проводится посредством исследования пространства возможных состояний сети Петри. При этом под последним понимается множество возможных маркировок сети. Анализ сетей посредством матричных методов имеет множество проблем, поэтому в основном используется подход, основанный на построении редуцированного до дерева1 графа возможных маркировок [49]. В таком дереве вершины графа – это состояния (маркировки) сети, а ветви дерева, помеченные соответствующими переходами сети, – это возможные изменения состояний сети, то есть срабатывания её переходов. Если взять любую вершину в таком дереве (за исключением корневой), то путь к этой вершине от корня дерева (путь из начальной маркировки к заданной) будет представлять собой последовательность срабатывания переходов. Говорят, что переход tj для разметки М является живым, если для всех разметок М' Î s(М) существует последовательность срабатывания переходов, которая приводит к маркировке М' при которой переход tj может сработать. Сеть Петри называется живой, если все её переходы живы; живучая разметка – это разметка, при которой каждый из её переходов сможет запускаться бесконечное число раз. Когда достигнута такая разметка, при которой ни один из переходов не может быть запущен, говорят, что сеть Петри завершилась (достигнута желаемая конечная маркировка) или же зависла (то есть имеет место тупиковая ситуация). Сети Петри очень удобны для описания процессов синхронизации и альтернатив. Например, семафор может быть представлен входной позицией, связанной с несколькими взаимоисключающими переходами (критическими секциями). Сети Петри позволяют моделировать асинхронность и недетерминизм параллельных независимых событий, параллелизм конвейерного типа, конфликтные взаимодействия между процессами. Сети Петри очень удобны для описания процессов синхронизации и альтернатив. Например, семафор может быть представлен входной позицией, связанной с несколькими взаимоисключающими переходами (критическими секциями). Говорят, что два перехода конфликтуют, если они взаимно исключают друг друга, то есть они не могут быть оба запущены одновременно. Два перехода, готовые к срабатыванию, находятся в конфликте, если они связаны с общей входной позицией. В качестве примера рассмотрим рис. 7.5.
Рис. 7.5. Сеть Петри для системы двух взаимодействующих процессов Эта сеть соответствует рассмотренному нами ранее примеру тупиковой ситуации (см. рис. 7.2), которая возникает при взаимодействии процессов ПР1 и ПР2 во время передачи сообщений и потреблении ресурса R каждым из процессов. Начальная маркировка для сети, показанной на рис. 7.5, будет равна (1, 0, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 0). Здесь позиция p2 означает, что процесс ПР1 получил три единицы ресурса R. Дуга, соединяющая позицию p6 (число маркеров в ней соответствует количеству доступных единиц ресурса R), имеет вес 3 и при срабатывании перехода t1 процесс ПР1 получает затребованные 3 единицы ресурса. Переход t2 представляет посылку процессом ПР1 сообщения для ПР2; переход tj – приём этого сообщения. Появление маркера в позиции p7 означает, что процесс ПР2 обработал сообщение и послал ответ процессу ПР1. Срабатывание перехода tj представляет возврат в систему трёх единиц ресурса, которыми владел процесс ПР1. Рассмотренная сеть не является живой, так как в ней всегда будут мертвы переходы t3, tj, t6 , t7 и t8. Рис. 7.6. Сеть Петри для тупиковой ситуации на ресурсах типа SR Примеру тупиковой ситуации, возникающему при работе с ресурсами типа SR, который мы также уже рассматривали ранее (см. рис. 7.3), соответствует сеть Петри, показанная на рис. 7.6. В этой сети номера переходов соответствуют отмеченным номерам операторов, которые выполняют процессы ПР1 и ПР2, а позиции p1 и р2 – семафорам S1 и S2, над которыми выполняются Р- и V-операции. Сеть на рис. 7.6 также не является живой, хотя для неё и существуют такие последовательности срабатывания переходов, что тупиковой ситуации не наступит. Алгоритм построения дерева достижимости изложен, например, в работе [64]. Вычислительные схемы Вычислительная схема – это представление в графической форме асинхронной системы, состоящей из набора операторов (процессов), которые воздействуют на множество «регистов» (данных). Каждая вычислительная схема определяется с помощью двух графов: графа потока данных и графа управления [89]. Граф потока данных (информационный граф) определяет входные и выходные данные для каждого оператора [18]. Дуга (Ri Sk) от регистра Ri к оператору Sk означает, что данные Ri являются элементом входных данных этого оператора; дуга (Sk Rj) определяет данные Rj как выходные. Очевидно, что некоторые данные R могут являться выходными для оператора Si и входными для оператора Sj. Пример графа потока данных для некоторой вычислительной схемы представлен на рис. 7.7, а; операторы и регистры данных представлены соответственно кружками и прямоугольниками. Рис. 7.7. Пример вычислительной схемы: а – граф потока данных; б – граф управления Граф управления определяет последовательность выполнения операторов. Каждый оператор (представлен кружком) связан с некоторым количеством управляющих счётчиков (представлены прямоугольниками). Каждый из управляющих счётчиков содержит неотрицательное целое число. Текущие значения счётчиков совместно со значениями данных на графе потока данных определяют состояние вычислительной схемы. Пример графа управления представлен на рис. 7.7, б. Если все счётчики, указывающие на оператор S (то есть входные счётчики), имеют ненулевые значения, то говорят, что оператор S определен. В этом случае он может выполниться, изменив свои выходные регистры в соответствии с графом потока данных и изменив счётчики графа управления по следующему правилу: значения всех выходных счётчиков оператора S уменьшаются на единицу, а значение выходных – увеличивается, причём для каждого выходного счётчика оператора S приращение может быть своё, персональное, и определяется оно с помощью специальной функции от значений регистров. Обратите внимание на сходство между графом управления и сетью Петри. Если под операторами и счётчиками понимать переходы и позиции, то единственным существенным различием между этими моделями будет зависимость приращения счётчика от входных данных оператора S. Такая последовательность операторов S1, S2, ..., Sn, ..., что каждый оператор S, определён (то есть его входные счётчики не равны нулю) при тех значениях счётчиков, которые получаются в результате выполнения предшествующих операторов, называется последовательностью исполнения схемы. Поскольку с операторами не связано никакого особого отсчёта времени (подобно сетям Петри1), то порядок, в котором операторы будут выполняться, не всегда может быть предсказан. Любая допустимая последовательность исполнения является возможной последовательностью событий. Как мы уже знаем, для системы взаимодействующих параллельных процессов результаты вычислений зависят от последовательности исполнения, если не обеспечить взаимное исключение для критических интервалов. В случае, когда вычислительная схема вырабатывает одинаковые результаты для всех допустимых последовательностей исполнения, говорят, что она детерминирована. Схема на рис. 7.7 является детерминированной. Рассмотрим вычислительную схему на рис. 7.8. Операторы S1 и S2как это видно из графа управления, выполняются параллельно и асинхронно. Очевидно, что значение регистра R3 будет различным в зависимости от того, выполняется ли оператор S1 раньше или позже оператора S2. Поскольку граф управления здесь допускает последовательности исполнения, которые приводят к различным результатам, то эта схема не детерминирована. Говорят, что два оператора соперничают в регистре R, если один из них изменяет R, а другой либо изменяет R, либо обращается к нему. Если два оператора, которые соперничают в некотором регистре, могут быть выполнены в одно и то же время, то говорят, что в схеме существует условие соперничества и такая схема является недетерминированной. Одна из возможных форм недетерминированного исполнения заключается в том, что схема может «зависнуть» (попасть в тупиковую ситуацию).
Рис. 7.8. Пример недетерминированной вычислительной схемы К сожалению, вычислительные схемы, как и сети Петри, не являются конструктивной моделью (с точки зрения борьбы с тупиковыми ситуациями, возникающими в операционных системах), несмотря на свою интуитивную привлекательность и возможность сделать вывод о возможности существования тупиков в той или иной системе [89]. Мы знаем, что возможность существования тупиковой ситуации в большинстве ОС существует. Но ведь это же не означает, что эти ОС нельзя использовать. Важнее уметь обнаружить существование тупиковой ситуации в конкретный момент времени и поправить ситуацию (насколько это возможно). Поэтому гораздо более продуктивной с этой точки зрения является модель Холта. Популярное:
|
Последнее изменение этой страницы: 2016-05-29; Просмотров: 963; Нарушение авторского права страницы