Научная статья на тему 'Сложность проверки модели параллельных программных систем'

Сложность проверки модели параллельных программных систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
79
36
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Сложность проверки модели параллельных программных систем»

УДК 004.4

СЛОЖНОСТЬ ПРОВЕРКИ МОДЕЛИ ПАРАЛЛЕЛЬНЫХ ПРОГРАММНЫХ СИСТЕМ

(Работа выполнена при поддержке РФФИ, грант № 11-07-13150)

С.С. Захарченко

(Петербургский государственный университет путей сообщения, [email protected])

Рассматривается принадлежность метода проверки модели параллельных программных систем к одному из классов сложности. Показаны особенности моделирования асинхронных вычислительных процессов.

Ключевые слова: проверка модели, параллельные программные системы, класс сложности, темпоральная логика линейного времени, автомат Бюхи.

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

Метод проверки модели является удобным инструментом при поиске ошибок в параллельных программных системах, однако его использование может быть ограничено из-за сложности реальных параллельных программных систем. Обычно данные системы состоят из нескольких частей, работающих асинхронно и разделяющих общие ресурсы. Исходя из этого, размер пространства состояний всей системы будет равен произведению размеров пространств состояний частей, входящих в систему [1]. Итоговая величина может достигать 10120 [2]. В связи с этим необходима оценка сложности проведения верификации параллельных программных систем с использованием метода проверки модели. В [3] дается общая оценка сложности проверки модели с использованием темпоральной логики линейного времени (Ц^). В настоящей работе рассматривается сложность проверки модели с использованием LTL параллельных программных систем.

Одна из проблем, возникающих при анализе параллельных программных систем, - отсутствие непрерывности при моделировании многопоточ-ности. Широко используемой моделью многопо-точности является представление возникающих событий в виде набора многочисленных базовых шагов. Такой подход называется моделированием с помощью чередования. Особенность его в том, что в любой временной отрезок только один процесс выполняет свою элементарную операцию. Другой процесс может выполнить свою элементарную операцию лишь по окончании предыдущей. Таким способом можно моделировать асинхронные процессы в параллельной программной системе.

Однако необходимо введение определенных ограничений (выполнение требования справедли-

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

Метод проверки модели основан на использовании одной из основных темпоральных логик: С^, LTL или С^*. С^ является логикой ветвящегося времени, в которой рассматриваются различные пути вычислений программы. В отличие от С^ в LTL рассматривается единственный путь вычисления программы [2]. Логика С^* является расширенной темпоральной логикой ветвящегося времени и объединяет в себе LTL и С^. В данной работе рассматривается проверка с применением темпоральной логики линейного времени, что в совокупности с некоторыми ограничениями позволяет чередованием моделировать параллельные вычислительные системы.

Рассмотрим программную систему Р, состоящую из п модулей Р1, Р2, ..., Рп. Каждый из модулей Р, работает параллельно с остальными модулями и выполняет отдельный процесс П, программной системы Р. Состояние системы определяется вектором значений общих переменных V={v1, у2, ..., vm} и точкой управления в программе [4]. Вектор значений общих переменных V хранится в общей памяти М. Для того чтобы обратиться или сохранить значение переменной, процесс П, должен получить доступ к памяти. В дополнение к этому каждый из процессов обладает своим набором частных переменных. Они используются для хранения результатов промежуточных вычислений или данных, не используемых другими процессами.

Предполагается, что общая память М аппарат-но или программно защищена таким образом, чтобы в определенный момент времени только один процесс мог обращаться к общим переменным. Если к переменной открыт доступ одному процессу, то другим он закрыт. За одну операцию доступа к переменной процесс может либо прочитать, либо изменить ее значение. Выполнение обоих действий за одну операцию не допускается. Таким образом, разные события не могут произойти одновременно, так как механизм исключительного доступа к памяти М не даст это сделать.

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

Область определения переменных программной системы чаще всего является бесконечной, следовательно, она имеет бесконечное количество состояний. При проверке модели параллельной программной системы требуется, чтобы она имела конечное количество состояний. Для этого используются представления первого порядка: каждой переменной v£V сопоставляется значение из множества D, называемого областью интерпретации [2]. Если множество D будет содержать только два элемента {true, false} или {0, 1}, то и P(v) сможет принять только значение true либо false. Таким образом, состояние - это оценка s: V^-D для множества переменных из V.

Используя данный подход, можно сказать, что модель последовательной программы с помощью представлений первого порядка может быть описана структурой Крипке K=(S, S0, R, L), где S - конечное множество состояний программы; S0 - конечное множество начальных состояний программы; R: S*S - тотальное отношение переходов, то есть для каждого состояния s£S должно существовать такое s'eS, что (s, s')£R; L: S^2AP - функция пометок, присваивающая каждому состоянию набор атомарных высказываний, истинных в данном состоянии.

Рассмотрим бесконечную последовательность состояний o=s0, si, ..., где s0£S0 и (s„ s,+1)£R при i>0. Такая последовательность о является вычислением программы. Модель программы K удовлетворяет формуле темпоральной логики линейного времени ф, если все вычисления K удовлетворяют формуле ф.

Из структуры Крипке можно построить автомат Бюхи A=(E, S, S0, R, F), где E - конечное множество, которое называется алфавитом автомата А; S - конечное множество состояний автомата А; S0 - конечное множество начальных состояний (в случае детерминированного автомата содержит только один элемент); R - отношение переходов (для детерминированного автомата R: SxE^2S); F - множество допускающих состояний [3].

Таким образом, для модели K программы с конечным числом состояний и формулы ф проверка модели состоит в подтверждении того, что все последовательности, допускаемые автоматом Ак, удовлетворяют формуле ф. Известно, что можно построить автомат Аф, принимающий только те последовательности, которые удовлетворяют формуле ф [3]. Таким образом, проверка модели сводится к проверке того, что все состояния, принимаемые автоматом Ак, принимаются и автоматом Аф. Соответственно:

L(AK) n L(Aj) = 0.

(1)

Автомат Ь(Аф) получается путем построения

автомата А- . Количество состояний в этом авто-

ф

мате будет равно 20(|ф|). Чтобы получить пересечение этих автоматов, можно использовать следующий результат: из двух автоматов Бюхи А=(Е, Б, Б0, Я, Р и Б=(Е, Б', Б0', Я', Р) можно построить автомат, принимающий Ь(А)ПЬ(Б). Такой автомат

имеет |Б|-|Б'| состояний. Зная, что автомат Ак имеет |Б| состояний, а автомат Аф имеет 20(ф|) состоя-

ний, получаем, что автомат Ь(А) п Ь(А^) имеет

|Б|^2(оф|) состояний. Таким образом, проверка того,

что программа удовлетворяет формуле ф, будет выполнена за время

0(\ Б | -2°(|ф|)) (2)

или в пространстве

O((log | S | +1 ф |)2).

(3)

Следовательно, задача относится к классу PSPACE [5]. Это означает, что проверка модели может быть выполнена с полиномиальным ограничением пространства.

Применим данный результат к параллельной программной системе Р. Тогда каждый из п ее процессов П, описывается структурой Крипке К,=(Б,, Б0,, Я,, Ь,). При параллельной работе процессов используется моделирование чередованием с применением правил, описанных выше. При моделировании необходимо выполнить требование справедливости, то есть запрет на бесконечные последовательности состояний, определяемые только одним из п процессов. В таком случае для параллельной программной системы

S = П so = К >

■ So );

Vs е S : L(s) = QLt(s[i]); (s, sr)ER,

i=i

если и только если (s[i], s'[/])eR,.

Сложность проверки модели параллельной программной системы P определяется относительно размера модулей P„ из которых состоит система, и длины проверяемой формулы.

Как отмечено выше, размер пространства состояний всей системы будет равен произведению размеров пространств состояний частей, входящих в систему |S|=|Si|^|S2|^.^|S„|. Подставляя данное выражение в формулы (2) и (3), для параллельной программной системы, состоящей из n модулей, получаем соответственно:

O(| S | • | S21 •...• | Sn | -2 1Ф>)

(4)

O((log | S, | + log | S2 | +... + log | | +1 j | )2). (5) Применение конечных автоматов позволяет разделить проверку модели параллельной программной системы на отдельные составляющие:

S

o

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

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

параллельных программных комплексов своей спецификации.

Литература

1. Vardi M.Y. Linear vs. Branching Time: A Complexity-Theoretic Perspective. In Proc. Logic in Computer Science. Thirteenth Annual IEEE Symposium. 1998, pp. 394-405.

2. Кларк Э.М., Грамберг О., Пелед Д. Верификация моделей программ: Model Checking; [пер. с англ.; под ред. Р. Сме-лянского]. М.: МЦНМО, 2002. 416 с.

3. Vardi M.Y., Wolper P. An automata-theoretic approach to automatic program verification. In Proc. First Symposium on Logic in Computer Science, Cambridge, 1986, June, pp. 322-331.

4. Карпов Ю.Г. MODEL CHECKING. Верификация параллельных и распределенных программных систем. СПб: БХВ-Петербург, 2010. 560 с.

5. Sistla O.A.P., Clark E.M. The Complexity of Propositional Linear Temporal Logics. Journal ACM. 1985. № 32, pp. 733-749.

УДК 004.82

МЕТАДАННЫЕ МУЛЬТИМЕДИЙНЫХ РЕСУРСОВ И ОНТОЛОГИИ

(Работа выполнена при финансовой поддержке ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009-2013 гг., ГК № 16.740.11.0137)

А.С. Москвина

(Иркутский государственный университет, [email protected])

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

Ключевые слова: онтология, мультимедийные ресурсы, разметка, метаданные, Libretto, пользовательский интерфейс.

Метаописания информационных ресурсов являются универсальной технологией. Существует целый спектр подходов - от простейших фолксо-номий до использования в качестве тегов элементов формальных описаний предметных областей (онтологий). В случае применения онтологий при разметке ресурса он позиционируется в рамках предметной области, обеспечивая привязку ресурса к БЗ этой предметной области [1]. Например, в качестве метаописаний географических объектов в некоторой геоинформационной системе (ГИС) можно использовать информацию о климате, оперируя для этого БЗ такой области, как климатология. Подобная привязка информации к географическому объекту дает возможность получить дополнительную климатическую информацию, которая явно не содержится в метаданных, но может быть извлечена из профильной БЗ.

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

тологии может поставлять метаданные и для профильных исследовательских публикаций, более точно характеризуя их с точки зрения предметной области. Хорошо известны другие примеры подобных описаний, в частности, формализованные таксономии биологических объектов, система УДК и т.д.

Практически все формальные методы описания предметных областей в той или иной степени связаны с математической логикой. Это легко объяснимо, поскольку одним из основных требований к таким методам является строгая семантика самих описаний. С другой стороны, логики, лежащие в основе метаописаний, должны быть достаточно простыми, чтобы обеспечивать вычислительную эффективность, и, конечно, понятными широкому кругу пользователей. Многолетний опыт показывает, что построение формализмов, сочетающих эти качества, - нетривиальная задача. В настоящее время значительный объем исследований в данной области ведется в рамках проекта семантического веба. Математической основой этого подхода служат дескриптивные логики, ко-

i Надоели баннеры? Вы всегда можете отключить рекламу.