Научная статья на тему 'Пример спецификации протокола выбора главного устройства стандарта IEEE 1394 на языке абстрактных машин Гуревича с временем'

Пример спецификации протокола выбора главного устройства стандарта IEEE 1394 на языке абстрактных машин Гуревича с временем Текст научной статьи по специальности «Математика»

CC BY
103
34
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАШИНА АБСТРАКТНЫХ СОСТОЯНИЙ ГУРЕВИЧА / ИСПОЛНИМЫЙ ЯЗЫК СПЕЦИФИКАЦИИ / СИМУЛЯЦИЯ СПЕЦИФИКАЦИИ / ФОРМАЛЬНАЯ СПЕЦИФИКАЦИЯ / ВЕРИФИКАЦИЯ / ПРОВЕРКА МОДЕЛИ / СИСТЕМА РЕАЛЬНОГО ВРЕМЕНИ / GUREVICH ABSTRACT STATE MACHINE / EXECUTABLE SPECIFICATION / SIMULATION / FORMAL SPECIFICATION / MODEL-CHECKING / REAL TIME SYSTEM / ASM / FOTL

Аннотация научной статьи по математике, автор научной работы — Васильев Павел Константинович

Предлагается пример применения расширенного временем языка машин абстрактных состояний Гуревича, ориентированного на описание реактивных систем реального времени с явным использованием рациональной временной переменной. Описаны формальная модель языка, особенности синтаксиса и семантики. Представлены два варианта семантики языка: с временными задержками и без них. Рассмотрен язык для задания ограничительных условий. Описан алгоритм верификации ограничительных условий, выраженных на языке FOTL, с помощью симуляции спецификации. Библиогр. 17 назв.

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

Using Gurevich abstract state machine language with time for specifying the IEEE 1394 Root Contention Protocol

The example of implementation of extended Gurevitch abstract state machine language is suggested. The main syntactical differences between the Gurevich ASM language and the extended Timed ASM language are listed. The differences of semantics of the extended specification language are described. Different semantics are discussed, namely, descrete and dense time, instantaneous and delayed updates. Several methods for non-determinism resolving are proposed. The non-deterministic cases occur with use of "choose" statement or in a block of parallel updates. The algorithms for time propagation procedure with delays are proposed. An example of the specification of the IEEE 1394 Root Contention Protocol is presented. Time constraints of the algorithm specification are defined by linear inequalities. The First Order Timed Logic (FOTL) is used for specification of constraints. The algorithm of the verification by model-checking is provided which is performed on the base of simulation traces. A prototype of the simulator is implemented which is used for model-checking of properties.

Текст научной работы на тему «Пример спецификации протокола выбора главного устройства стандарта IEEE 1394 на языке абстрактных машин Гуревича с временем»

2008 ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА. Сер. 10. Вып. 4

ИНФОРМАТИКА

УДК 004.436.4+004.414.23+004.414.28 П. К. Васильев

ПРИМЕР СПЕЦИФИКАЦИИ ПРОТОКОЛА ВЫБОРА ГЛАВНОГО УСТРОЙСТВА СТАНДАРТА IEEE 1394 НА ЯЗЫКЕ АБСТРАКТНЫХ МАШИН ГУРЕВИЧА С ВРЕМЕНЕМ

1. Введение. Стандарт IEEE 1394 описывает высокоскоростную последовательную шину для соединения компьютеров и различного цифрового оборудования. Изначально шина FireWire разрабатывалась фирмой Apple, но впоследствии к разработке присоединились еще несколько десятков компаний и был утвержден стандарт IEEE 1394 (1996 г.). Некоторые части стандарта были изначально формально специфицированы и верифицированы, чего нельзя сказать о протоколе выбора корневого узла (Root Contention Protocol). Целью данного протокола является согласованный выбор одного из двух устройств, претендующих на роль главного в сети периферийных устройств. Некоторое время спустя были проведены работы по созданию формальной модели протокола, а также его верификации. Данный протокол интересен тем, что он содержит вычисления с вещественными числами и имеет дело с генератором псевдослучайных чисел. Теперь протокол выбора корневого устройства является популярным примером для демонстрации методов формальной спецификации и верификации, например в [1].

Язык машин абстрактных состояний (ASM [2]), который используется нами в качестве основы языка спецификации, обладает большой выразительной мощью. Даже его подмножество, описывающее простейшие ASM (basic ASMs [3]), позволяет описать любую алгоритмическую машину состояний. Формализм ASM помогает понять и специфицировать задачу, с точки зрения как программирования, так и математической логики. Методология ASM нашла свое применение в таких практических задачах как спецификация семантики языков VHDL, C, C+—+, Prolog, спецификация протоколов и других прикладных задач (см. [4, 5]). Из более поздних работ, в которых был применен язык ASM, укажем спецификацию формальной семантики языков Java [6] и C# [7], а также языка SDL 2000 [8].

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

Васильев Павел Константинович — аспирант кафедры информатики математико-механического факультета Санкт-Петербургского государственного университета, аспирант лаборатории логики и алгоритмической сложности факультета наук и технологий университета Париж 12, Франция. Научные направления: формальная спецификация, верификация спецификаций, реактивные системы реального времени. E-mail: [email protected].

© П. К. Васильев, 2008

Гуревич и Хаггинс [9], которые представили вычисления в виде отображения из области временных значений в область состояний ASM. Затем последовали исследования [10, 11], в которых проблема верификации временных алгоритмов сводится к верификации формализованных спецификаций и требований в виде формул специальной логики с временем. В некоторых статьях предлагается явное использование функции времени, например в [12, 13]. Кроме того, вводятся временные задержки на выполнение либо отдельных вычислений, либо целых замещений [11, 14]. В перечисленных работах содержится множество идей и предложений по использованию и уточнению языка ASM, но, несмотря на это, в них не сформулирована явная методика спецификации с последующей верификацией. Также не были обнаружены программные разработки, реализующие интерпретацию расширений языка на практике.

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

2. Постановка задачи. Стандарт IEEE 1394 («FireWire») описывает высокоскоростную шину последовательной передачи данных, а также соответствующие протоколы для сети различных мультимедийных устройств, такими как видеокамеры, внешние диски и другие носители цифровой информации. Стандарт определяет систему протоколов, предназначенных для различных фаз взаимодействия компонент сети. Подключенные к шине устройства будем называть узлами. Каждый узел имеет порты для двунаправленной связи с другими узлами. Протокол RCP является подпротоколом фазы инициализации, которая наступает после сброса шины, например при добавлении и удалении устройства или возникновении ошибки. На фазе инициализации строится дерево связей между узлами сети и выбирается главное устройство, которое будет управлять шиной. Приведем схематичный алгоритм работы узлов на фазе инициализации. Сначала узел ждет от своих соседей сигнал «будь моим родителем» - PN (parent notification). Получив такой сигнал, он отправляет в ответ подтверждающий сигнал CN (child notification). Когда остается только один соседний узел, от которого не пришел сигнал, ему посылается сигнал PN. Узлы-листья имеют одного соседа, поэтому сразу начинают посылать сигнал PN. Таким образом, дерево строится снизу вверх, а в конце узел, получивший от всех остальных сигнал PN, становится главным. Однако может случиться, что последние два узла послали друг другу сигнал PN и ждут сигнал подтверждения CN. В этом случае необходимо разрешить спорную ситуацию, так как каждый узел хочет, чтобы главным был другой.

С этого момента начинается протокол выбора корневого узла. Каждый из узлов посылает сигнал Idle своему конкуренту и случайным образом выбирает значение из 0 и

1. Если выбран 0, то узел ждет в течение времени из интервала [slowmin, slowmax], e&m

1, - то из интервала [/astmin,/astmax]. Считаем, что выполняются следующие неравенства: 0 < /astmin ^ /astmax < slowmin ^ slowmax. После истечения задержки узел

проверяет, не пришел ли от конкурента сигнал PN. Если сигнал пришел, то он высылает подтверждение CN, а если сигнала нет, узел сам посылает сигнал PN. В последнем случае спорная ситуация может повториться. Важную роль играет задержка, с которой сигнал доходит от одного узла до другого, считаем, что ее значение ограничено некоторой константой delay. Корректность протокола зависит от использования временных интервалов и генератора псевдослучайных чисел.

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

Для формулировки ограничений, накладываемых на спецификации, будем использовать язык First Order Timed Logic (FOTL) [1, 10, 15], поскольку он позволяет оперировать временем как рациональной переменной. Известно, что данная логика неразрешима, но существуют разрешимые классы формул, имеющие практическое значение. Считаем, что временные ограничения охраняющих условий и требований пользователя выражены неравенствами с линейной зависимостью от времени.

Остановимся более подробно на расширении языка ASM, который применяется для спецификации модели. Полную спецификацию некоторой реактивной системы реального времени можно задать парой < ENV, ASM SPEC >.

ENV - это спецификация окружения, которая содержит определения функций окружения, значения задержек для различных операций языка, а также функцию, определяющую способ раскрытия недетерминизмов.

ASMSPEC - спецификация машины абстрактных состояний Гуревича с временем. ASM с временем, в свою очередь, можно задать тройкой < VOC,INIT,PROG >, где VOC - словарь, INIT - описание начального состояния и PROG - программа. Словарь ASM состоит из множества сортов, множества функциональных символов и множества предикатных символов. Некоторые из них имеют фиксированную интерпретацию: R -сорт вещественных чисел, Z - сорт целых чисел, N - сорт натуральных чисел, BOOL -сорт булевых значений: true и false, T = R+ - выделенный сорт значений времени, UNDEF = {unde/} - специальный сорт, содержащий одно значение.

Функции ASM можно разделить на две категории: внутренние и внешние. Интерпретация внутренней функции может быть изменена программой ASM, а интерпретация внешней функции меняется независимо от вычислений, производимых программой. Также можно разделить множество всех функций на статические и динамические. Статическая функция имеет постоянную интерпретацию, а интерпретация динамической функции зависит от времени. Среди статических функций и предикатов можно выделить арифметические операции, стандартные отношения, булевы операции. Предполагается, что для всех сортов определен предикат равенства.

ASM с временем использует дополнительный сорт T для временных значений и функцию CT : ^ T, которая интерпретируется как текущее значение времени ASM.

При работе с временем можно применять арифметические операции: сложение, вычитание, умножение на константу, а также сравнения и равенство.

В данной работе рассматриваются только кусочно-линейные внешние функции, заданные на интервалах. Необходимо, чтобы интерпретация функций была определена на всем временном интервале работы ASM, поэтому внешние функции заданы на интервалах, замкнутых слева и открытых справа: \Ьк,Ьк+\), где Ьк - момент времени, а к - индекс. Внутренние функции меняют интерпретацию в ходе вычислений сразу после выполнения замещения, поэтому определены на интервалах, открытых слева и замкнутых справа: (Ьк ,^+1]. Функции меняют интерпретации в ходе выполнения программы, а временные точки, в которых происходят изменения состояния, делят множество временных значений на интервалы. На каждом из данных временных интервалов интерпретации всех функций постоянны. Результатом выполнения спецификации ASM является отображение из множества времени во множество состояний. Каждое состояние ASM - некоторая интерпретация словаря.

4. Задание внешних функций. Как уже ранее упоминалось, внешние функции ASM представляют собой входные данные системы и параметры, определяющие выполнение спецификации. Рассмотрим внешнюю функцию / : X ^ У и обозначим соответствующую ей функцию с временным параметром /° : Т х X ^ У, где / - имя функции; X - абстрактный сорт или прямое произведение двух абстрактных сортов; Т - временной сорт; У - абстрактный сорт или сорт Я. Вариант функции с временным параметром /° не используется непосредственно в программе ASM, чтобы не усложнять семантику языка. Такие функции предназначены только для описания требований.

Возьмем интерпретацию некоторого абстрактного конечного сорта X и пронумеруем множество его значений натуральными числами. Тогда можно задать значения некоторой функции / с помощью индексов: / (г) := (^ ,/{; г\,Л;...; 4 ,/к;...), где г € 1,...,п; п - мощность сорта X; Ь\,12,. ..,Ь\,... - начальные точки интервалов;

11,й,...,1к,... - значения функции, определенные на интервалах. Также поддерживается спецификация функций от двух переменных, т. е. функция задана на прямом произведении двух абстрактных сортов X' х X". Тогда определение функции принимает вид / (г, о) := (г\3 ,/3; ,/2’3;...; ?£3, /к’3;...), где г € 1,...,п,о € 1,...,т; п - мощ-

ность сорта X'; т - мощность сорта X"; остальные обозначения аналогичны описанию одноместной функции.

5. Задание задержек. Все замещения классической ASM [2] выполняются мгновенно. Но в реальности выполнение каждой операции занимает некоторое время. Некоторые идеи введения времени в язык ASM уже упоминались, например в [11, 16]. В предлагаемом подходе данное явление моделируется с помощью временных задержек. Численные значения задержек зависят от типа и степени вложенности конструкций, использованных при описании ASM. Для вычисления задержек можно ввести функцию 5. Пусть 5 - множество всевозможных предложений языка. Тогда определение функции задержки будет выглядеть следующим образом: 5 : 5 ^ Т. Для каждой базовой операции или конструкции значение функции 5 должно быть явно задано пользователем и будет применяться для расчета задержек более сложных предложений. Чтобы получить задержку суперпозиции синтаксических конструкций /1 и /2, например последовательного блока {/1/2}, необходимо просуммировать значения задержек всех его составляющих замещений: 5({/1 /2}) = 5(/) + 5(/2). Исключением является случай параллельного замещения, к примеру \/1/2]. В данном случае задержка вычисляется как максимальная задержка среди замещений в параллельном блоке, т. е. 5(\/1/2]) = тах{5(/1),5(/2)}. Перечислим основные варианты задания задержек для различных операций:

• определены две задержки Sext (операции с внешними функциями) и J;nt (операции с внутренними функциями), Sext > 0, Sint > 0;

• аналогично предыдущему варианту, но операции с внутренними функциями мгно-венны: Sext > 0, $nt = 0;

• вырожденный случай - нет никаких задержек: Sext = Sint = 0, т. е. имеем дело с классическим вариантом ASM;

• общий случай: задержка задается пользователем для каждой операции языка.

6. Раскрытие недетерминизмов. Основным примером возникновения недетер-минизма в предлагаемом языке является оператор выбора choose, который выбирает некоторый элемент из множества возможных значений. В данной работе рассматриваются следующие варианты базовых способов выбора:

• первый (последний) элемент списка;

• минимальный (максимальный) элемент списка, если для элементов определен порядок;

• элементы списка перебираются в цикле с некоторым шагом;

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

7. Свойства ASM. Для описания свойств ASM требуется достаточно выразительный язык логики. В данной работе для формулирования требований будем использовать FOTL [10, 15]. Существует несколько реализаций языков ASM, в которых можно явно описывать ограничения и свойства алгоритмов, такие как предусловия, постусловия и инварианты. Далее приведем краткое описание языка FOTL.

Основная идея логики FOTL - это выбрать разрешимую теорию для работы с арифметикой и математическими функциями, а также добавить абстрактные функции от времени, необходимые для спецификации наших задач. В каком-то смысле теория должна быть и минимальна, и достаточно выразительна. Для рассматриваемых задач мы берем теорию со сложением и умножением на рациональные константы. Известно, что она является разрешимой [17]. Для представления значений времени используются неотрицательные рациональные числа.

8. Семантика ASM с временем. Определим семантику ASM с временем как процесс исполнения спецификации некоторым симулятором. Результатом будет последовательность интерпретаций символов алфавита ASM.

8.1. Общее описание семантики. Процесс выполнения спецификации можно разделить на несколько основных этапов, работающих в цикле до завершения выполнения спецификации:

• вычисление следующего момента времени, в котором хотя бы одно из охраняющих условий истинно;

• изменение состояния, осуществляемое блоком замещений;

• пересчет новых значений свойств и охраняющих условий.

Как ранее уже упоминалось, функцию текущего времени можно только прочитать и использовать в вычислениях. Формулы охраняющих условий могут содержать арифметические операции (+, —, *, /, %), равенство, неравенство, логические операции (not, and, or, xor) и функцию времени CT. При каждом замещении функция времени увеличивается на величину задержки выполненного блока замещений. Таким образом, в зависимости от величин задержек могут получаться принципиально разные результаты выполнения.

8.2. Последовательный блок инструкций. При последовательном выполнении инструкций алгоритм работы выглядит таким образом. Выбирается следующая

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

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

Рассмотрим параллельный блок с N инструкциями. Пусть БС^ - окончательное изменение состояния для каждой из инструкций, г € {1,...,N}. Тогда полное изменение

N

состояния после выполнения всего блока равно и БС^. Причем, если У БС^ П БСз = 0,

г=1 г=3

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

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

9. Верификация свойств. Процесс верификации пользовательских свойств можно разделить на следующие этапы:

• синтаксический анализ формулы;

• элиминация абстрактных функций;

• элиминация остальных функциональных символов;

• элиминация временных переменных.

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

где - это терм, а Т^^ - линейная комбинация временных переменных ^ ...£&.

Пусть 1т - интервалы, на которых интерпретации функций постоянны. Остановимся на случае, когда к = 1, т. е. в скобках всего один терм Н(Т^). Тогда получаем

Теперь можем вычислить значения атомарных формул Н^ (1т) ^ 0, так как все интерпретации функций постоянны. Под Н^ (1т) подразумевается константа - значение терма Н^ на интервале 1т. В итоге, заменив атомарные формулы на логические константы, имеем систему неравенств с временными переменными

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

10. Описание модели протокола RCP. Теперь рассмотрим задачу выбора корневого узла в терминах ASM с временем. Наша модель описывает поведение двух узлов в спорной ситуации. В данной версии спецификации посылка сигналов моделируется через функции Sent и Receive. Для выбора случайного значения используется недетерминированный выбор оператора choose. Остановимся более подробно на деталях спецификации.

10.1. Интерпретация сортов. Для спецификации протокола RCP опишем несколько вспомогательных сортов.

Signals = 0, 1, 2;

Задает множество возможных сигналов, посылаемых узлами. Сигнал Idle (0) говорит о приостановке процесса выбора на некоторый временной промежуток. Сигнал PN (1) побуждает принимающую сторону стать главной для посылающей. Сигнал CN (2) служит подтверждением согласия стать главным узлом.

Nodes = 0,1;

Множество узлов. В споре могут участвовать только два узла.

SignalType = Nodes- > Signals;

Задает тип для функций посылки и приема сигналов.

DelayType = Nodes- > Time;

Тип функции, определяющий временную задержку для узла.

Hij (Tij) < О = Д (Tij Є Im ^ Hij (Im) < О) = Д (Tij Є Im V Hj (Im) < О).

m

m

Vtl . . .tk^ Д (Tij Є Imk ).

i jmk

RootType = Nodes— > Boolean;

Тип функции, определяющий главный узел.

10.2. Внешние функции. Напомним, что внешние функции необходимы для взаимодействия ASM со средой выполнения. В данном случае они задают входные параметры исполнения.

delay_start : Time;

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

fast : Time;

Данная функция задает короткую задержку по времени.

slow : Time;

Задает длинную задержку.

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

Sent : SignalType;

Данная функция хранит значения посланных сигналов.

Receive : SignalType;

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

Wait : DelayType;

Функция задает задержку для каждого узла.

Root : RootType;

Функция предназначена для пометки главного узла.

10.4. Начальное состояние. Начальное состояние можно задать с помощью формулы FOTL. В начальном состоянии выполняется следующее условие:

yp (Sent(p) = PN A Receive(p) = PN A Root(p) = false).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Более корректно его следует записать так:

yp (Sent°(0,p) = PN A Receive0(0,p) = PN A Root°(0,p) = false).

Напомним, что задержки алгоритма удовлетворяют следующему условию:

delay > 0 A (yt (0 < fa,stm-m ^ fast°(t) ^ fastmax < slowmin ^ slow0 (t) ^ slowmax).

10.5. Формальная спецификация RCP. Приведем вариант спецификации протокола RCP. В приведенной спецификации процесс согласования ограничен по времени (10). Для индексации первого и второго устройств используются 0 и 1.

type Signals = {0, 1, 2}; // Idle, PN, CN type Nodes = {0, 1}; type SignalType = Nodes -> Signals; type DelayType = Nodes -> Time; type RootType = Nodes -> Boolean;

function delay_start, fast, slow: Time; function Sent: SignalType; function Receive: SignalType; function Wait: DelayType;

Main() {

[ Sent(0):=0; Sent(1):=0; Receive(0):=0; Receive(1):=0; Wait(0):=0; Wait(1):=delay_start; Root(0):=false; Root(1):=false;

]

while (CT<10) do [

if (Sent(0)=0 and Receive(0)=0 and CT >= Wait(0)) then [ Receive(1) := 1;

Sent(0) := 1; ]

if (Sent(0)=0 and Receive(0)=1 and CT >= Wait(0)) then [ Receive(1) := 2;

Sent(0) := 2;

Root(0) := true; ]

if (Sent(0)=1 and Receive(0)=1 and CT >= Wait(0)) then [ Receive(1) := 0;

Sent(0) := 0;

Wait(0) := CT + slow; ]

if (Sent(1)=0 and Receive(1)=0 and CT >= Wait(1)) then [ Receive(0) := 1;

Sent(1) := 1; ]

if (Sent(1)=0 and Receive(1)=1 and CT >= Wait(1)) then [ Receive(0) := 2;

Sent(1) := 2;

Root(1) := true; ]

if (Sent(1)=1 and Receive(1)=1 and CT >= Wait(1)) then [ Receive(0) := 0;

Sent(1) := 0;

Wait(1) := CT + fast; ]

]

}

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

• Safety: (Свойство безопасности). Неверно, что будут выбраны два узла.

• Liveness: (Свойство живучести). Хотя бы один узел будет выбран.

• Contention: (Свойство обнаружения конфликта). Возникнет спорная ситуация.

Сформулируем вышеперечисленные свойства на языке логики:

Safety : — (3t isRoot°(t, 1) A 3t isRoot°(t, 2)).

Необходимо расшифровать свойство isRoot(p). После выбора главного узла и подтверждения CN состояние системы не меняется, т. е. интерпретация внутренних функций должна оставаться неизменной. Таким образом, после переформулировки получаем

Safety :

—(3t (Sent (t, 1) = Idle A Receive3(t, 1) = PN A

Ут > t (Root° (r, 1) A Sent (r, 1) = CN A Sent°(r, 2) = PN)) A

3t (Sent (t, 2) = Idle A Receive° (t, 2) = PN A

Ут > t (Root° (r, 2) A Sent (r, 2) = CN A Sent°(r, 1) = PN))).

Теперь сформулируем свойство живучести:

Liveness : 3t (isRoot°(t, 1) V isRoot°(t, 2)).

В развернутом варианте оно принимает следующий вид:

Liveness :

3t (Sent (t, 1) = Idle A Receive° (t, 1) = PN A

Ут > t (Root°(r, 1) A Sent (r, 1) = CN A Sent°(r, 2) = PN) V

Sent (t, 2) = Idle A Receive° (t, 2) = PN A

Ут > t (Root°(r, 2) A Sent (r, 2) = CN A Sent°(r, 1) = PN)).

Конфликт возникает в том случае, если процесс послал сигнал PN и вместо подтверждения CN получил запрос PN. То есть свойство обнаружения конфликта можно записать так:

Contention : 3tSent° (t, 1) A Receive° (t, 1) A 3tSent° (t,p) A Receive° (t, 2).

11. Заключение. В данной статье на примере протокола RCP показаны возможности спецификации систем реального времени, а также их верификации с помощью симуляции. Описаны базовые аспекты синтаксиса и семантики языка ASM с временем, которые в полной мере не были предложены ни в одной известной работе по применению языка ASM для спецификации реактивных систем реального времени. Уточнение языка включает в себя фиксированную настраиваемую временную модель, язык задания внешних функций, задание временных задержек, разрешение недетерминизмов и возможность задавать ограничительные свойства на языке FOTL.

Автор благодарит доцента кафедры информатики СПбГУ И. П. Соловьева за помощь и ценные советы.

Summary

Vasilyev P. K. Using Gurevich abstract state machine language with time for specifying the IEEE 1394 Root Contention Protocol.

The example of implementation of extended Gurevitch abstract state machine language is suggested. The main syntactical differences between the Gurevich ASM language and the extended Timed ASM language are

listed. The differences of semantics of the extended specification language are described. Different semantics are discussed, namely, descrete and dense time, instantaneous and delayed updates. Several methods for non-determinism resolving are proposed. The non-deterministic cases occur with use of “choose” statement or in a block of parallel updates. The algorithms for time propagation procedure with delays are proposed. An example of the specification of the IEEE 1394 Root Contention Protocol is presented. Time constraints of the algorithm specification are defined by linear inequalities. The First Order Timed Logic (FOTL) is used for specification of constraints. The algorithm of the verification by model-checking is provided which is performed on the base of simulation traces. A prototype of the simulator is implemented which is used for model-checking of properties.

Key words: Gurevich abstract state machine, executable specification, simulation, formal specification, model-checking, real time system, ASM, FOTL.

Литература

1. Beauquier D., Crolard T., Prokofieva E. Automatic parametric verification of a root contention protocol based on abstract state machines and first order timed logic // Tools and Algorithms for the Construction and Analysis of Systems: 10th Intern. Conf., Barcelona, Spain, March 29 — April 2, 2004. Lect. Notes in Comput. Sci. Vol. 2988 / Ed. by K. Jensen, A. Podelski. - Heidelberg: Springer-Verlag, 2004. -P. 372-387.

2. Gurevich Y. Evolving algebras 1993: Lipari Guide // Specification and Validation Methods / Ed. by B. Egon. - Oxford: Oxford University Press, 1995. - P. 9-36.

3. Gurevich Y. Sequential abstract-state machines capture sequential algorithms // ACM Transactions on Computational Logic. - 2000. - Vol. 1, N 1. - P. 77-111.

4. University of Michigan, ASM homepage // http://www.eecs.umich.edu/gasm/.

5. Borger E., Stark R. Abstract State Machines: A Method for High-Level System Design and Analysis. -Berlin: Springer-Verlag, 2003. - 440 p.

6. Stark R., Schmid J., Borger E. Java and the Java Virtual Machine: Definition, Verification, Validation. - Berlin: Springer-Verlag, 2001. - 392 p.

7. Borger E., Fruja N. G., Gervasi V., Stark R. A high-level modular definition of the semantics of C# // Theor. Comput. Sci. - 2005. - Vol. 336, N 2-3. - P. 235-284.

8. Glasser U., Gotzhein R., Prinz A. The formal semantics of SDL-2000: Status and perspectives // Computer Networks. - 2003. - Vol. 42, N 3. - P. 343-358.

9. Gurevich Y., Huggins J. The railroad crossing problem: An experiment with instantaneous actions and immediate reactions // Proc. of Computer Science Logic. - 1996. - Vol. 1092 of LNCS. - P. 266-290.

10. Beauquier D., Slissenko A. A first order logic for specification of timed algorithms: Basic properties and a decidable class // Annals of Pure and Applied Logic. - 2002. - Vol. 113, N 1-3. - P. 13-52.

11. Cohen J., Slissenko A. On verification of refinements of timed distributed algorithms // Proc. of the Intern. Workshop on Abstract State Machines (ASM’2000), March 20-24, 2000. Switzerland, Monte Verita, Ticino. Lect. Notes in Comput. Sci. Vol. 1912 / Ed. by Y. Gurevich, P. Kutter, M. Odersky, L. Thiele. -Heidelberg: Springer-Verlag, 2000. - P. 34-49.

12. Graf S., Prinz A. Time in State Machines // Fundamenta Informaticae, Paris. - 2007. - Vol. 77, N 1-2. - P. 143-174.

13. Foundations of Software Engineering - Microsoft Research, Microsoft Corporation AsmL: The Abstract State Machine Language, 2002 // http://research.microsoft.com/fse/asml/.

14. Ouimet M., Nolin M., Lundqvist K. Timed abstract state machines: An executable specification language for reactive real-time systems: Tech. rep. - Cambridge: Massachusetts Institute of Technology. -2006. - 11 p.

15. Beauquier D., Slissenko A. Periodicity based decidable classes in a first order timed logic // Annals of Pure and Applied Logic. - 2006. - Vol. 139. - P. 43-73.

16. Borger E. Gurevich Y., Rosenzweig D. The bakery algorithm: yet another specification and verification // Specification and Validation Methods / Ed. by E. Borger. - Oxford: Oxford University Press, 1995. - P. 231-243.

17. Weispfenning V. Mixed real-integer linear quantifier elimination // Proc. of the 1999 Intern. Symp. on Symbolic and Algebraic Computations. - ACM Press, 1999. - P. 129-136.

Статья рекомендована к печати проф. А. Н. Тереховым.

Статья принята к печати 29 апреля 2008 г.

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