Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Inf_tekhnologii.docx
Скачиваний:
0
Добавлен:
06.12.2019
Размер:
280.88 Кб
Скачать

Лекция № 5

Имя пары графов.

Учитывая тот факт, что любая объединенная пара графов может быть всего лишь отдельным модулем на более высоком уровне, необходимо поименовать пару графов и установить их соответствующую область и противообласть. Таким образом, чтобы справиться со сложностью системы формируется глобальная модульная иерархическая система. Это может быть проделано тем же способом, как и в случае обычной структуры данных, за исключением того, что ключевое слово=> заменяется ==>. Допускаются также комментарии, которые заключаются внутри следующего символа ‘/* … */’.

Например: n==>fib==>r. показывает, что объединенная модель fib является модулем с областьюn и противообластью r. Используя SDL, мы получаем аналогичные описания для программного и технического обеспечений на уровне проектирования системы. Их описания имеют одинаковый синтаксис.

Проверка достоверности.

Целью анализа SDL описания объединенного модуля является декомпозиция его графа управления, то есть из описания в виде цепочек в базовые дуги. Для отображения взаимоотношения между главным графом и подграфами в графе управления создается древовидная структура. На рис.5 приводится древовидная структура графа управления рис. 4.

Рис. 5. Древовидная структура графа управления

На рис. 5 прерывистые линии указывают на условные ветви модулей проверки, и считается, что модули a1 и a2 находятся на одном уровне, также и b1 и b2 и так далее.

После построения древовидной структуры графа управления осуществляется проверка достоверности, чтобы обеспечить непротиворечивость и завершенность пара графов. Наиболее важной является проверка на наличие циклов в графе управления: у левого висячего модуля отсекают все дуги, исходящие из него, и действия повторяются, пока не останется ни одного висячего модуля. Если в сокращенном графе управления не останется дуг, то вывод - циклов нет. Наличие циклов невозможно, т.к. граф управления определяет прохождение управления через модули с точки зрения временных интервалов. Следствием недостоверности работы системы, нарушением ее устойчивости являются «зависания» программ.

Распознавание достоверности.

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

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

Очевидно, что последовательный граф детерминирован, так как отсутствует параллелизм. Пара графов детерминирована, если для каждой пары параллельных модулей в графе, скажем X и Y, X и Y не находятся в конфликте. Под “не в конфликте” мы понимаем, что не существует ничего, что требовало бы упорядочения выполнения какой-либо части X или Y для обеспечения правильной работы в целом. Если два модуля X и Y, которые находятся на одном уровне древовидной структуры графа управления, параллельны, то не должно существовать никаких конфликтов между X и Y или любым потомком X и любым потомком Y, если таковые имеются. Рассмотрим граф на рис.4, древовидная структура которого отображена на рис.5. После того, как мы удостоверимся, что a2 и a3 не конфликтуют друг с другом, и то же для a4 и a5, возникает необходимость проверить конфликтует ли a2 с b1 или b2 и так далее, и конфликтует ли a2 с c1, c2 или d1, d2 и так далее. Нет необходимости проверять наличие конфликтов с c1 и c2 или d1, d2 и d3 так как они необязательны.

Конфликтная ситуация для двух параллельных модулей может существовать если:

а). Модули X и Y такие, что X может читать из памяти в тот момент времени, в который Y пишет в тот же элемент памяти (конфликт чтение/запись);

б). Два модуля X и Y могут одновременно писать в противообласть (конфликт типа запись/запись);

в). Модуль пишет в противообласть, которая может оказаться условием проверки в тот же момент времени (конфликт тест/ запись).

Чтобы иметь возможность проверить детерминированность пары графов мы сначала должны определить все параллельные модули графа управления, а затем проверить существуют ли между ними конфликты. Это можно сделать следующим образом. Если два модуля X и Y находятся на одном уровне древовидной структуры и в графе управления не существует пути между X и Y, то X и Y параллельны. Это записывается X*Y. Если X*Y и один из них, скажем Y, имеет потомков, то X и любой потомок Y могут быть параллельны. Если X*Y и оба из них имеют потомков, то любой потомок X и любой потомок Y могут быть параллельны.

Результат, приводимый ниже, указывает количество параллельных пар модулей, которые могут возникнуть из произвольного графа управления, показанного на рис.4, выведенные, используя этот метод:

a2*a3 a2*a5 a4*a5 a5*a6

a5*a8 a5*a9 a6*a8 a7*a8

a7*a9 a8*a10 a9*a10

Если нет конфликтов между всеми параллельными модулями, то пара графов детерминирована.

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