Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Модель алгоритма распределенного завершения




Этот алгоритм строится над базовым алгоритмом, и оба алгоритма работают параллельно. Такую организацию параллельных процессов смоделировать в AnyLogic очень просто. А именно, в каждой машине кроме стейтчарта main, реализующего базовые вычисления системы машин, добавляется но­вый стейтчарт, работающий параллельно с основным и реализующий опи­санный ранее алгоритм.

Дополнения в активном объекте Machine

В основной алгоритм вносится одно изменение: в соответствии с третьим пра­вилом алгоритма, машина, получившая базовое сообщение, становится черной. Поэтому на переходах t и t3 в стейтчарте main добавлено это действие.

Активный объект Machine будет также оперировать и с токенами. Токен имеет свой счетчик и цвет. Именно эти параметры определены в новом классе сообщений Token.

Активный объект Machine будет иметь два дополнительных порта, in и out, через которые по кольцу передается токен. Потому тип сообщений, переда­ваемых через эти порты, определен как Token. Машина имеет два дополни­тельных параметра, token типа Token для хранения полученного по кольцу токена и machineColor, который хранит цвет машины в соответствии с этим алгоритмом. Определим машину-лидер как машину с номером 0. Именно эта машина будет инициировать запуск токена и анализировать его по получении. Все остальные экземпляры машин будут только передавать токен по кольцу.


Алгоритм распределенного завершения выражается стейтчартом. Этот стейт-чарт реализован как две независимые ветви, одна из которых осуществляет алгоритм лидера, а другая — алгоритм обычной машины в кольце. Выбор нужной части стейтчарта в каждой машине выполняется из начального со­стояния initial по номеру машины.

Алгоритм лидера состоит в том, что после некоторой постоянной задержки порождается новый токен и посылается по сети (через порт out). Далее в состоянии waitMyToken лидер ждет получения этого токена. После его получения из порта in лидер переходит в состояние waitActiveLeader, токен при этом сохраняется в локальной переменной token. В этом состоя­нии лидер находится до тех пор, пока его состояние не станет пассивным. При выходе из состояния (когда лидер стал пассивным) производится анализ выполнения четвертого правила алгоритма Дейкстры с помощью алгоритми­ческой функции termcondition. Если условие правила выполняется, лидер переходит в состояние stopAlgorithm, в котором работа модели останавли­вается (рис. 19.3). Если условие не выполняется, работа лидера возобновля­ется с шага порождения нового токена.


Алгоритм обычной машины в кольце тоже прост (правая ветвь стейтчарта рис. 19.3). Находясь в состоянии waitTokenFromRing, машина ожидает то-кен, передаваемый по кольцу. Дождавшись токена из порта in, машина за­держивает его на небольшое время (только для визуального эффекта в ани­мации), находясь в состоянии processingToken. Дождавшись, когда она в базовых вычислениях станет пассивной (это определяется условием main.isStateActive(main.Idle)), машина передает токен через порт out, предварительно увеличив его значение на величину счетчика с данной ма­шины и перекрасив токен в темный цвет, если это нужно в соответствии с третьим правилом алгоритма.





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 375 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лаской почти всегда добьешься больше, чем грубой силой. © Неизвестно
==> читать все изречения...

2418 - | 2279 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.