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 определено более одного раза


 

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

79008. Роль науки в образовании и формировании современного человека 30.5 KB
  Роль науки в образовании распространяется на все компоненты образовательного процесса цели средства результаты принципы формы и методы. Образовательный процесс выступает в качестве исходной территории на которой происходит встреча индивида и науки а также его подготовка к жизнедеятельности в данном обществе формирование зрелой личности. В этой связи достаточно часты обращения к античной идее пайдейя обозначающей процесс формирования индивида включающий в себя три составляющие: воспитанность образованность и культура....
79009. Структура эмпирического и теоретического знания 47 KB
  Теоретический уровень научного познания как и эмпирический имеет ряд подуровней среди которых можно выделить следующие по степени общности: а аксиомы теоретические законы; б частные теоретические законы описывающие структуру свойства и поведение идеализированных объектов; в частные единичные высказывания утверждающие нечто о конкретных во времени и пространстве состояниях свойствах и отношениях некоторых идеализированных объектов Абстрагирование и идеализация – начало теоретического познания. Научные законы – регулярные...
79010. Эксперимент и наблюдение 38.5 KB
  Наблюдение и эксперимент в научном познании виды эксперимента. Существуют три основных метода опосредственного получения нового знания – операциональный экспериментальный и логикоматематический. Эмпирическая процедура может выступать как средство выявления точного и однозначного физического смысла тех или иных ключевых понятий для чего в их определения должен входить метод позволяющий в каждом конкретном случае на основе эксперимента решить правильно ли применение этого понятия в данной познавательной ситуации или нет. При...
79011. Гипотеза и теория 29.5 KB
  К числу основных из них относятся проблема гипотеза теория и закон выступающие вместе с тем как формы узловые моменты построения и развития знания на теоретическом его уровне. Гипотеза научное допущение или предположение истинное значение которого не определено. Гипотеза это предположение о существовании какойто вещи явления свойства связи отношения и т. Научная гипотеза должна отвечать ряду требований главные из которых: соответствие фактам которые эта гипотеза собирается объяснить; внутренняя непротиворечивость; проверяемость;...
79012. Идеалы и нормы науки. Мотивация научной деятельности 37 KB
  Историческая изменчивость идеалов и норм рождает потребность их разумного объяснения и применения. Внутренний мотив – это познавательная потребность – информация заключенная в объекте на который направлено внимание человека. Познавательная потребность характеризуется следующими основными критериями: интенсивное стремление субъекта к знанию и к познавательной деятельности на основании чего избирается его направленность; активный поиск ожидание информации; формулирование вопросов задач и проблемных ситуаций; ...
79014. Проблема классификации наук 54.5 KB
  Проблема классификации наук. Науки: гуманитарные естественные точные математические экономические макроэкономика логика психология. В конечном счете все проблемы по классификации наук проявляются как невозможность совершить упомянутую классификацию без нарушения логических правил: требования одного основания и правило запрещающее членам деления иметь общий элемент. проблемы в качестве своего источника имеют трудность отыскания такого единого основания деления которое было бы существенным признаком для любой науки Наука как целостное...
79015. Основные закономерности развития науки 37.5 KB
  Основные закономерности развития науки. Необходимо выделять внешнее и внутреннее развитие любой системы и рассматривать специфику того и другого видов развития в том числе и науки. Сам процесс развития науки также понимается далеко неоднозначно. cumultio увеличение накопление по сути дела сводит на нет и даже игнорирует качественные изменения которые происходят в структуре научного знания и вызываются изменением основных понятий и принципов науки особенно в ходе научных революций.
79016. Исторические типы рациональности: классическая, неклассическая, постклассическая науки 31.5 KB
  Исторические типы рациональности: классическая неклассическая постклассическая науки. Исторические типы научной рациональности. Три крупных стадии исторического развития науки каждую из которых открывает глобальная научная революция можно охарактеризовать как три исторических типа научной рациональности сменявшие друг друга в истории техногенной цивилизации. Причем появление каждого нового типа рациональности не отбрасывало предшествующего а только ограничивало сферу его действия определяя его применимость только к определенным типам...