Помощь в написании студенческих работ
Антистрессовый сервис

Событийная часть сегмента Маршрутизатор

РефератПомощь в написанииУзнать стоимостьмоей работы

Имитатор отказов вычислительного комплекса. Принято, что вычислительный комплекс может выходить из строя и отказывать в обработке сообщений. Можно было бы построить имитатор отказов так, что генератор вырабатывает заявки-отказы в количестве, определяемом длительностью времени моделирования. Однако мы сделаем так, что генератор вырабатывает одну заявку, а затем этот процесс повторяется через… Читать ещё >

Событийная часть сегмента Маршрутизатор (реферат, курсовая, диплом, контрольная)

Элементы событийной части сегмента Маршрутизатор показаны на рис. 4.11. Сегмент включает вычислительный комплекс, Буфер 2, порты входа-выхода, Имитатор отказов вычислительного комплекса.

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

Построим событийную часть сегмента Маршрутизатор.

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

Алгоритм работы Блока контроля 1 представлен на рис. 4.11. В Any Logic этот алгоритм реализуется блоками selectOutput, hold и sink.

Алгоритм работы Блока контроля 1.

Рис. 4.11. Алгоритм работы Блока контроля 1

  • 1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  • 2. На странице Местоположение и размер панели Свойства введите в поля X: 26, Y: 50, Ширина: 154, Высота: 15 0.
  • 3. Перетащите объекты selectOutput, hold и sink на диаграмму агента Маршрутизатор, разместите и соедините так, как показано на рис. 4.12.
Событийная часть сегмента Маршрутизатор.

Рис. 4.12. Событийная часть сегмента Маршрутизатор

  • 4. Перетащите элемент text и на странице Текст панели Свойства вместо слова text введите Блок контроля 1.
  • 5. Выделите объект selectOutput.
  • 6. В ноле Имя вместо selectOutput введите blokKontrol_l.
  • 7. В иоле Тин заявки вместо Agent введите Message.
  • 8. Установите Выход true выбирается При выполнении условия.
  • 9. В ноле Условие введите условие:
    • (emkostBuferl — tekEmkostBuferl >= agent. dlina)

&& (hold.isBlocked () == false)

При выполнении условия заявка направляется на выход т (выходной порт для заявок, для которых выбирается выход true). В противном случае заявка направляется па выход F.

  • 10. Выделите объект sink. В поле Тип заявки вместо Agent введите Message.
  • 11. В поле Действие при входе введите kolPotBK++; для подсчета сообщений, потерянных при отказе вычислительного комплекса.
  • 12. Выделите элемент hold. В поле Тип заявки вместо Agent введите Message.

Блок Буфер 1. Этот блок предназначен для приема, размещения и хранения поступающих на обработку сообщений. Алгоритм работы блока Буфер 1 приведен на рис. 4.13.

В AnyLogic алгоритм блока Буфер 1 реализуется объектом queue, который выполняет функции очереди (FIFO).

  • 1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  • 2. На странице Местоположение и размер панели Свойства введите в поля X: 190, Y: 50, Ширина: 126, Высота: 100.
Алгоритм работы блока Буфер 1.

Рис. 4.13. Алгоритм работы блока Буфер 1

  • 3. На странице Основные панели Свойства в поле Имя оставьте Rectangle. Не ставьте флажок Отображать имя.
  • 4. Перетащите элемент text и на странице Текст панели Свойства вместо text введите Буфер 1.
  • 5. Выделите объект queue.
  • 6. В поле Имя вместо queue введите buf erl.
  • 7. В ноле Тин заявки вместо Agent введите Message.
  • 8. В ноле Вместимость введите emkBuf erl.
  • 9. При помещении сообщения в буфер его текущая емкость увеличивается, поэтому в ноле Действия При входе введите:

tekEmkBuferl += agent. dlina;

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

tekEmkBuferl -= agent. dlina;

agent.timeObr = agent. dlina/proizvod;

11. Установите флажок Включить сбор статистики.

Блок обработки сообщений. Данный блок предназначен для имитации обработки сообщений. Алгоритм работы блока приведен на рис. 4.14.

Алгоритм работы Блока обработки сообщений.

Рис. 4.14. Алгоритм работы Блока обработки сообщений

Для реализации алгоритма Блока обработки сообщений в AnyLogic используется объект delay.

  • 1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  • 2. На странице Основные панели Свойства в поле Имя оставьте Rectangle. Не устанавливайте флажок Отображать имя.
  • 3. На странице Местоположение и размер панели Свойства введите в поля X: 336, Y: 50, Ширина: 194, Высота: 100.
  • 4. Перетащите элемент text и на странице Текст панели Свойства введите название Блок обработки сообщений.
  • 5. Перетащите объект delay, разместите и соедините с buf erl так, как па рис. 4.12.
  • 6. Выделите объект delay. На странице Основные панели Свойства в поле Имя вместо delay введите computer.
  • 7. В поле Тип заявки Agent замените Message.
  • 8. В поле Задержка задается установите Определенное время.
  • 9. В ноле Время задержки введите:

exponent i а1(1/agent.t imeObr).

  • 10. Оставьте Вместимость 1.
  • 11. В поле Действие при выходе введите:

коэфЗагрВК1 = computer.statsUtilization.mean ();

  • 12. Установите флажок Включить сбор статистики.
  • 13. В Палитре выделите Презентация. Перетащите элемент Прямоугольник.
  • 14. На странице Основные панели Свойства в поле Имя оставьте Rectangle. Не ставьте флажок Отображать имя.
  • 15. На странице Местоположение и размер панели Свойства введите в поля X: 20, Y: 40, Ширина: 52 0, Высота: 170.
  • 10. Перетащите элемент text и на странице Текст панели Свойства вместо слова text введите название Вычислительный комплекс.

Блок контроля 2. Этот блок предназначен для распределения сообщений по направлениям и контроля текущих емкостей буферов (накопителей) направлений передачи сообщений.

Алгоритм работы Блока контроля 2 приведен на рис. 4.15.

Алгоритм работы блока Блок контроля 2.

Рис. 4.15. Алгоритм работы блока Блок контроля 2

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

Для распределения сообщений по направлениям можно было бы использовать объекты selectOutput5 и sink. Однако мы используем другие объекты AnyLogic: exit и enter. Они позволяют организовать сложную маршрутизацию, вследствие чего на рис. 4.11 Блок контроля 2 не выделен, хотя функционально он существует.

  • 1. Перетащите объект exit, вход которого соедините с выходом computer (см. рис. 4.12).
  • 2. В поле Тип заявки Agent замените Message.
  • 3. В поле Действия при выходе введите код: int i ;

i= agent. numAbPol; { switch (i) {.

case 1:

if (emkBuferNaprl — tekEmkNaprl >= agent. dlina) { enter1. take (agent); break;

} else {.

enter.take (agent); break;

case 2 :

if (emkBuferNaprl — tekEmkNaprl >= agent. dlina) { enter1. take (agent); break;

} else {.

enter.take (agent); break;

case 3:

if (emkBuferNapr2 — tekEmkNapr2 >= aqent. dlina) { enter2. take (agent); break;

} else {.

enter.take (agent); break;

case 4:

if (emkBuferNapr2 — tekEmkNapr2 >= agent. dlina) { enter2. take (agent); break;

} else {.

enter.take (agent); break;

case 5:

if (emkBuferNapr3 — tekEmkNapr3 >= agent. dlina) { enter3. take (agent); break;

} else {.

enter.take (agent); break;

case 6:

if (emkBuferNapr4 — tekEmkNapr4 >= agent. dlina) { enter4. take (agent); break;

} else {

enter.take (agent); break;

}.

}.

}.

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

Блок Буфер 2. Данный блок предназначен для приема и хранения сообщений, передаваемых по каналам направлений. Он состоит из четырех буферов — по одному для каждого направления.

Алгоритм работы буфера каждого из направлений такой же, как и алгоритм работы буфера 1 (см. рис. 4.13). Каждый из буферов, как и Буфер 1, реализуется объектом queue.

  • 1. В Палитре выделите Презентация. Перетащите элемент Прямоугольник (см. рис. 4.12).
  • 2. На странице Основные панели Свойства в поле Имя оставьте предложенное системой Rectangle. Не устанавливайте флажок Отображать имя.
  • 3. На странице Местоположение и размер панели Свойства введите в поля X: 550, Y: 20, Ширина: 140, Высота: 290.
  • 4. Перетащите элемент text и на странице Основные панели Свойства в поле Текст: введите Буфер 2.
  • 5. Перетащите пять объектов enter, четыре объекта queue и один объект sink, разместите, дайте имена и соедините так, как на рис. 4.12.
  • 6. Выделите элемент buferNaprl, вход которого соединен с выходом enterl, и установите значения свойств.
  • 7. В ноле Тин заявки Agent замените Message.
  • 8. Задайте Вместимость emkBuf erNaprl
  • 9. В поле Действия При входе введите:

tekEmkNaprl += agent. dlina;

10. В поле Действия при выходе введите:

tekEmkNaprl -= agent. dlina;

  • 11. Установите флажок Включить сбор статистики.
  • 12. Повторите шаги 6—11 для элементов buferNapr2, buferNapr3, buferNapr4, соответственно изменяя значения свойств.

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

  • 1. Перетащите элемент Скругленный прямоугольник.
  • 2. На странице Местоположение и размер панели Свойства введите в поля X: 536, Y: 340, Ширина: 83, Высота: 110.
  • 3. Из палитры Агент перетащите восемь элементов Порт. Разместите их (см. рис. 4.12). У всех сбросьте Отображать имя. Из Презентации перетащите восемь элементов Текст (наименования и размещение см. на рис. 4.12).
  • 4. У элементов Скругленный прямоугольник, Порт и Текст должны быть установлены флажки Отображается на верхнем уровне и Значок. У остальных элементов сегмента Канал флажок Отображается на верхнем уровне должен быть сброшенным.
  • 5. Соедините выходы элементов buferNaprl — buferNapr4 с соответствующими портами вых1 — вых4, а порты вх1 — вх4 с входом элемента blokKontrol l (Блок контроля 1).

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

  • 1. Перетащите элемент Прямоугольник.
  • 2. На странице Местоположение и размер панели Свойства введите в поля X: 160, Y: 224, Ширина: 340, Высота: 140.
  • 3. Перетащите объект source и два объекта delay. Разместите и соедините их (см. рис. 4.12).
  • 4. Выделите source и установите значения его свойств:
    • • Прибывают согласно: Интенсивности;
    • • Интенсивность прибытия 1 в секунду;
    • • Установите флажок Ограниченное количество прибытий:
    • • Максимальное количество прибытий: 1.
  • 5. Выделите первый объект delay и установите значения его свойств:
    • • Имя: розыгрыш_инт_до_отказа;
    • • Задержка задается: Определенное время;
    • • Время задержки exponential (1/timeOtkBK);
    • • Вместимость 1;
    • • Действия при выходе:

hold.setBlocked (true) ;

if (computer.size ()≠0) {.

computer.stopDelay ((Message)computer.get (0)); kolPoterBK++;

}.

  • 6. Выделите второй объект delay и установите значения его свойств:
    • • Имя: имитация_восст_ВК;
    • • Задержка задается: Определенное время;
    • • Время задержки exponential (1/timeVosstBK);
    • • Вместимость 1 ;
    • • Действия при выходе:

hold.setBlocked (false).

Показать весь текст
Заполнить форму текущей работой