4574

Инструментальная система моделирования Parallax

Практическая работа

Информатика, кибернетика и программирование

Общие характеристики системы Инструментальная система моделирования Parallax (далее — система) предназначена для моделирования и анализа система взаимодействующих параллельных процессов на основе аппарата PS-сетей. Система...

Русский

2014-12-21

74 KB

3 чел.

  1.  Общие характеристики системы

Инструментальная система моделирования «Parallax» (далее — система) предназначена для моделирования и анализа система взаимодействующих параллельных процессов на основе аппарата PS-сетей. Система предоставляет пользователю следующие основные возможности:

представление модели на специальном языке описания модели (P-языке) с помощью текстового редактора;

построение по введенному описанию текстово-графического представления модели в виде графа, дополненного текстовой информацией;

сохранение описания модели в матричном виде;

редактирование и сохранение графического представления модели;

запуск прогона модели в непрерывном или пошаговом режиме;

представление информации о ходе моделирования в виде временных диаграмм выполнения процессов и диаграмм использования ресурсов.

Структура потоков данных системы представлена на рис. 1.

Рис. 1. Структура потоков данных системы


  1.  Язык описания моделИ
    1.  Формальное описание

Язык описания моделей (Parallax-язык или P-язык) соответствует формальному аппарату PS-сетей, то есть имеет средства для описания графа PS-сети; описания ресурсов, сопоставляемых дугам и функций их использования; описания классов одновременности, классов предшествования и классов альтернативы; описания начальной маркировки и описания условий останова прогона модели.

Далее приводится формальное описание P-языка в расширенной нотации Бэкуса-Наура. Смысл символов в описании следующий.

Нетерминальный символ (символ, требующий дальнейшего раскрытия), заключается в угловые скобки (<, >).

Терминальный символ (символ или цепочка символов, присутствующая непосредственно в тексте программы), заключается в одинарные кавычки (').

Выражение языка, которое может быть повторено любое количество (в том числе, ноль раз), заключается в фигурные скобки ({, }).

Выражение языка, которое может отсутствовать, заключается в квадратные скобки ([, ]).

Альтернативные значения выражения отделяются вертикальной чертой (|).

<МОДЕЛЬ> ::= [<КОНСТАНТЫ>]
[<РЕСУРСЫ>]
<СТРУКТУРА>
[<ПРЕДШЕСТВОВАНИЕ>]
[<ОДНОВРЕМЕННОСТЬ>]
[<АЛЬТЕРНАТИВА>]
<МАРКЕРЫ>
<УСЛОВИЕ ОСТАНОВА>

<КОНСТАНТЫ> ::= '#const' {<описание константы>}

<РЕСУРСЫ> ::= '#resources' {<ресурс>}

<СТРУКТУРА> ::= '#structure' <описание дуги> {<описание дуги>}

<ПРЕДШЕСТВОВАНИЕ> ::= '#precedance' {<класс P>}

<ОДНОВРЕМЕННОСТЬ> ::= '#synchronism' {<класс S>}

<АЛЬТЕРНАТИВА> ::= '#alternative' {<класс A>}

<МАРКЕРЫ> ::= '#marking' <маркер> {<маркер>}

<УСЛОВИЕ ОСТАНОВА> ::= '#stop' 'time' '=' <время останова> ';'

<описание константы>::= <имя константы> '=' <выражение> ';'

<ресурс> ::= <имя ресурса> '=' <выражение> ';'

<описание дуги> ::= 'arc' <идентификатор дуги> <пара вершин>
[
'is' <имя дуги>]
'{'
 'time' '=' <длительность> ';'
[<функция ресурса>]
 '}' ';'

<класс P> ::= <пара вершин> ';'

<класс S> ::= <список дуг>

<класс A> ::= '(' <список дуг> ',' <список дуг> ')' ';'

<маркер> ::= 'vertex' <номер вершины> ';'

<время останова> ::= <выражение>

<имя константы> ::= <имя>

<имя ресурса> ::= <имя>

<идентификатор дуги>::= <выражение>

<пара вершин> ::= <пара значений>

<имя дуги> ::= <имя>

<длительность> ::= <выражение>

<функция ресурса> ::= <имя ресурса> '=' <пара значений> ';'

<список дуг> ::= '{' <число> {',' <число> } '}' ';'

<пара значений> ::= '(' <выражение> ',' <выражение>')'

<номер вершины> ::= <выражение>

<выражение> ::= <имя константы> | <число> | '(' <выражение> ')' |

  <выражение> <операция> <выражение>

<имя> ::= <буква> { <буква> | <цифра> }

<число> ::= [<знак>] <цифра> { <цифра> }

<операция> ::= '-' | '+' | '*' | '/'

<знак> ::= '-' | '+'

<буква> ::= '_'| 'a' | 'b' | ' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'w' | 'z' |
'
A' | 'B' | ' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'W' | 'Z'

<цифра> ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

  1.  Общие замечания
    1.  Пробельные символы

Все элементы описания модели на P-языке могут отделяться в тексте друг от друга любым количеством пробелов, табуляций и переводами строк.

  1.  Идентификаторы

Идентификатор (имя)  формируется по правилам, аналогичным языку C/C++.

Регистр учитывается.

Длина любого идентификатора не должна превышать 20 символов, дальнейшие символы имени будут проигнорированы.

  1.  Комментарии

Комментарием считается любой текст, ограниченный слева символом ‘!’, справа — переводом строки. Этот текст игнорируется при разборе.

  1.  Арифметические выражения

В любом месте описания модели, в котором по правилам может стоять число, может стоять константное арифметическое выражение.

Все выражения интерпретируются как целочисленные и вычисляются по правилам целочисленной арифметики.

В выражениях предусмотрены 4 арифметические действия (сложение +, вычитание , деление /, умножение *). Приоритеты не поддерживаются и (при необходимости) должны указываться скобками явно.

  1.  Нумерация

Нумерация как вершин, так и дуг начинается с единицы.

Нумерация не должна содержать пропусков номеров и дублирования номеров.

  1.  Описание констант

Секция описания констант начинается с ключевого слова #const:

#const

 _Mem_In_Size = (4*(65-1));

 One = 1;

 DefaultTime = One;

 Two = One+1;

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

При отсутствии констант секция может отсутствовать.

  1.  Описание ресурсов

Секция описания ресурсов начинается с ключевого слова #resources:

#resources

  MemIn =_Mem_In_Size; !Память массивов (входные данные)

  MemOut=0;            !Память массивов (выходные данные)

  BufIn =0; NotBufIn =4;  !Бункер загрузки (занятые и

                          !пустые ячейки)

  Page1 =0; NotPage1 =4*4; !Страница 1 (занятые и

                           !пустые ячейки)

  Counter = 0;    !Счетчик заполнения страницы загрузки

Слева от символа присваивания размещается идентификатор ресурса (символьное имя ресурса), справа — начальное значение объема (объем в начальной маркировке).

При отсутствии ресурсов секция может отсутствовать.

  1.  Описание структуры

Секция описания структуры начинается с ключевого слова #structure:

#structure

!* Процесс пословной загрузки данных из ПМ в БЗ ***

arc 1 (1, 1) is WBW_loading

{ time=DefaultTime;

 MemIn    =(1, 0);

 BufIn   =(0, 1);

 NotBufIn =(1, 0);

};

!*************** страница 1 *******************!

arc p2_start (3, 4)

{ time=DefaultTime*2;

 BufIn =(1,0); NotBufIn =(0,1); !загрузить первое слово

 Page1 =(0,1); NotPage1 =(1,0); !из БЗ в СЗ

 Counter=(0, 14);               !инициировать счетчик

};

Секция описывает граф PS-сети, длительности активаций дуг и функции использования ресурсов. Ее наличие обязательно.

  1.  Номера дуг и вершин

Каждое описание arc N (M, L) вводит дугу номер N, соответствующую паре вершин (M, L), где M — номер начальной вершины, L — номер конечной вершины. Номера могут быть как числами, так и константными выражениями.

Если в позиции номера дуги вместо числа или выражения поместить уникальный идентификатор, то выполняются следующие действия:

1. К списку констант, сформированных в секции описания констант, добавляется константа с указанным именем и значением, равным текущему максимальному номеру дуги +1.

2. Номер дуги устанавливается равным значению новой константы.

В примере, приведенном выше по тексту, при описании дуги  arc p2_start (3, 4) к списку констант добавляется константа p2_start со значением 2.

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

  1.  Текстовый идентификатор дуги

На графе PS-сети, изображаемом системой, имена дуг обычно отображаются в виде dN, где N — номер дуги, например, d1, d2 и т.д. Часто это неудобно из-за необходимости работать с номерами, которые трудно запоминать при большой размерности модели. Для приписывания дуге символьного имени (текстового идентификатора), с целью его отображения на графе, предусмотрен необязательный описатель is name, помещаемый после описания пары вершин дуги. Имя name будет использовано для визуального представления. Например, при описании вида

arc 5 (12, 7)

{ ...

};

имя дуги на графе будет иметь вид d5. При описании вида

arc 5 (12, 7) is Process1

{ ...

};

имя этой же дуги на графе будет иметь вид Process1.

  1.  Список параметров дуги

После описания пары вершин дуги или после конструкции is (в случае ее наличия) следует список параметров дуги. Он начинается с левой фигурной скобки ({) и завершается правой фигурной скобкой (}), после которой стоит точка с запятой (;). В списке параметров дуги указывается ее длительность (обязательный параметр) и функции использования ресурсов (если необходимо).

  1.  Длительность дуги

Конструкция вида time = t; предназначена для присвоения длительности активации дуги значению t. Конструкция помещается в любом месте списка параметров дуги:

arc 1 (1, 1) is WBW_loading

{ time = DefaultTime;

 ...

};

  1.  Функции использования ресурсов

Каждая функция использования ресурсов для данной дуги описывается конструкцией вида ResName =(Dec, Inc);. При этом ResName — имя ресурса, заданного в секции описания ресурсов; Dec — величина потребления; Inc — величина приращения. Функции использования ресурсов помещаются в списке параметров дуги в произвольном порядке:

arc Wizard2Eat (4, 3) is Wizard2Eat

{

 time=TimeToEat;

 Stick2 = (1, 1);

 Stick3 = (1, 1);

};

В данном примере дуга использует ресурсы Stick2 и Stick3.

Если дуга не использует некоторый ресурс, т.е. Dec = Inc = 0, то такая функция может быть опущена.

  1.  Описание классов альтернативы

Секция описания классов альтернативы начинается с ключевого слова #alternative:

#alternative

 ( { 2, 10, 18 }, { 4, 12, 20 } );

 ( !Альтернативные входы

   { Proc1EnterXSection, Proc2EnterXSection },

   !Выходы

   { Proc1LeaveXSection, Proc2LeaveXSection }  

 );

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

Каждое множество помещается внутри пары фигурных скобок и представляет собой список номеров дуг, отделенных запятыми.

В примере, помещенном выше, показаны различные способы указания номеров дуг. Первый класс альтернативы содержит непосредственные номера (числа), второй — константы.

  1.  Описание классов одновременности

Секция описания классов одновременности начинается с ключевого слова #synchronism:

#synchronism

 { 15, 16, 23, 24 };

 { Process1, Process1+1 };

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

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

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

Примечание:

 каждая дуга может входить в один и только один класс одновременности, причем однократно;

 дуги, входящие в один и тот же класс одновременности не должны входить в один и тот же класс предшествования;

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

  1.  Описание классов предшествования

Секция описания классов предшествования начинается с ключевого слова #precedance:

#precedance

 (1, 7);

 (PlaceDataToBuffer, ExtractData); !PlaceDataToBuffer

                                 !предшествует ExtractData

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

Первый номер в классе специфицирует предшествующую дугу, второй — подчиненную.

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

  1.  Описание маркировки вершин

Секция описания маркировки вершин начинается с ключевого слова #marking:

#marking

 vertex 1;

 vertex 1; !В вершину 1 добавить 2 маркера

 vertex 3;

Секция состоит из набора описателей виде vertex N;, где N — номер вершины. Каждый такой описатель добавляет один маркер в указанную вершину. Таким образом, для помещения m маркеров в вершину N необходимо повторить описатель vertex N; ровно m раз.

  1.  Описание времени останова

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

Описание времени останова имеет вид #stop time = N;, где N — время останова, например:

#stop

 time = 1000;

  1.  Сообщения транслятора

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

L — номер строки, дойдя до которой транслятор обнаружил ошибку;

S — строка (обычно имя объекта);

N — номер дуги или вершины.

Error C05: Line L: Keyword S missed

Пропущено (отсутствует) ключевое слово S

Error C06: Line L: Token S missed

Пропущен (отсутствует) элемент синтаксиса S

Error C07: Line L: Positive value missed

Пропущено (отсутствует) положительное целое значение

Error C08: Line L: Name missed

Пропущено (отсутствует) имя S

Error C09: Line L: Impoper arc number

Недопустимый номер дуги (например, неположительный)

Error C10: Line L: Impoper vertex number

Недопустимый номер вершины (например, неположительный)

Error C11: Line L: Impoper time value

Недопустимое значение времени (например, неположительное)

Error C12: Line L: Bad numbering: arc N dublicated

Ошибочная нумерация: дублирование дуги номер N

Error C13: Line L: Bad numbering: arc N missed

Ошибочная нумерация: отсутствует дуга номер N

Error C14: There are no arcs in model

В модели отсутствуют дуги

Error C15: Line L: Arc N is unknown

Пропущено (отсутствует) ключевое слово S

Error C16: Line L: Vertex N is unknown

Дуга номер N неизвестна (не определена)

Error C17: There are no markers in model

В модели отсутствуют маркеры

Error C18: Line L: Name S is undefined

Имя S неизвестно (не определено)

Error C19: Line L: Bad numbering: vertex N missed

Ошибочная нумерация: отсутствует вершина номер N

Error C20: Line L: Name S is multiply defined

Имя S определено более одного раза

Error C21: Line L: Number or named constant missed

Пропущено (отсутствует) число или именованная константа

Error C22: Unexpected end-of-file in comments

Конец файла внутри комментария

Error C23: Line L: Second section S occured

Обнаружена вторая секция S

Error C24: Line L: Unexpected or unknown token

Неожиданный или неизвестный элемент синтаксиса

Error C25: Line L: Division by 0 in expression

Деление на 0 в выражении

Error C26: Line L: ')' missed

Пропущена (отсутствует) правая скобка

Error C27: Arc name is multiply defined: S

Символьное имя дуги S определено более одного раза


 

А также другие работы, которые могут Вас заинтересовать

61793. Рухливі ігри 38.62 KB
  Основна стійка на раздва: руки дугами назовні підняти вгору. Піднятися на носки і підтягнутися вдихнути; на тричотири: руки дугами назовні опустити видихнути. стійка ноги нарізно руки на поясі на раз...
61794. Гімнастика (акробатика) 27.06 KB
  Розмикання на витягнуті руки. Стійка ноги нарізно руки за голову 12 підняти руки в гору підвестись на носки вдих; 34 опустити руки у в. стійка ноги нарізно руки на поясі 1 поворот тулуба праворуч руки в сторони долонями вгору...
61795. Символіка. Що це таке? 28.92 KB
  Мета: поглибити знання про символи; познайомити із різноманітністю символіки у нашому житті; поширити і збагатити знання учнів про народні символи України; виховувати повагу до символіки Батьківщини...
61796. Вік. Цифри. День народження 25.98 KB
  Мета: засвоєння нової лексики; формування вміння ставити запитання типу How old re you How old is she та відповідати на них; розширення кругозору учнів; розвиток мовної здогадки та мовленнєвої реакції учнів...
61797. Твоя країна — Україна. Символи держави 35.33 KB
  Мета: формувати уявлення про країну; ознайомити з найбільшими містами і річкам України; Розширити знання учнів про державні символи України; викохувати патріотичні почуття любов і гордість за державу.
61799. Гроші. Види та функції грошей 25.28 KB
  Мета: Узагальнити й систематизувати знання з теми, закріпити розуміння основних понять і термінів, навчити застосовувати вивчене на практиці. Розвивати абстрактно-логічне та образне мислення, інтерес до науки, проведення економічного аналізу.
61800. Школа м’яча 27.57 KB
  Руки в сторони пальці в кулак. Руки в сторони пальці в кулак. ноги разом руки до плечей. На 1 крок лівою ногою вперед руки в стороні 2 приставити ногу руки до плечей 3 нахил 4 в.
61801. Форма «рондо» 22.25 KB
  Мета: Познайомити з поняттям форма рондо з творчістю О.Бородін романс Спляча красуння Для виконання: Класне рондо В русі: В. Тип уроку: комбінований Наочно – дидактичні засоби: комп’ютер; презентація; Учень повинен знати: поняття форма рондо...