_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Курсовые > Моделирование систем и сетей связи на GPSS

Моделирование систем и сетей связи на GPSS

Страница: 9/12

ной в списке текущих событий.

     Списки пользователя представляют собой некоторые буферы,  куда

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

событий.  В отличие от списков текущих и будущих событий  транзакты

вводятся в списки пользователя и выводятся из них не автоматически,

а в соответствии с логикой модели с помощью специальных блоков.

     Для ввода  транзактов  в  список пользователя служит блок LINK

(ввести в список),  который может быть использован в двух  режимах:

условном и безусловном. Ограничимся рассмотрением лишь безусловного

режима, в котором блок LINK имеет следующий формат:

                         1имя  0   LINK    A,B

     В поле A задается имя или номер списка пользователя, в который

безусловным  образом помещается транзакт,  вошедший в блок.  Поле B

определяет,  в какое место списка  пользователя  следует  поместить

этот транзакт. Если в поле B записано ключевое слово FIFO, то тран-

закт помещается в конец списка, если LIFO - в начало списка. В дру-

гих  случаях транзакты упорядочиваются в соответствии с вычисленным

значением поля B,  где обычно записывается один из СЧА  транзактов,

таких как PR,  M1 или P.  Если поле B содержит СЧА PR, то транзакты

упорядочиваются по убыванию приоритета.  В остальных случаях произ-

водится упорядочение по возрастанию указанного СЧА.

     Например, блок

                       LINK    5,FIFO

помещает транзакты в список пользователя с номером 5 в  порядке  их

поступления в блок. Блок

                       LINK    BUFER,P$ORDER

помещает транзакты в список пользователя с именем BUFER, упорядочи-

вая их по возрастанию параметра с именем ORDER.

     Условия, при  которых транзакт помещается в список пользовате-

ля,  в безусловном режиме проверяются средствами,  предусмотренными

разработчиком модели. Например, направить транзакт в список пользо-

вателя в случае занятости устройства можно  так,  как  показано  на

рис. 16.  Если устройство с именем FAC4 занято,  то  блок  GATE  не

впускает транзакт в блок SEIZE, а направляет его в блок LINK с име-

нем WAIT,  и транзакт вводится в конец списка пользователя с именем

BUFER.

 

 

 

 

                              - 35 -

.

 

        Ш1

                       ....................

                       GATE NU    FAC4,WAIT

                       SEIZE      FAC4

                       ....................

               WAIT    LINK       BUFER,FIFO

                       ....................

        Ш1.5

 

                              Рис. 16

 

     Для вывода  одного или нескольких транзактов из списка пользо-

вателя и помещения их обратно в список текущих событий служит  блок

UNLINK (вывести из списка), имеющий следующий формат:

                   1имя  0   UNLINK X    A,B,C,D,E,F

     В поле A указывается имя или номер списка пользователя. Поле B

содержит имя блока,  в который переходят выведенные из списка поль-

зователя транзакты. В поле C указывается число выводимых транзактов

или ALL для вывода всех находящихся в списке транзактов.

     Операнды в  полях  D и E вместе со вспомогательным операндом X

определяют способ и условия вывода транзактов из списка пользовате-

ля.  Если поля D и E пусты, то и операнд X не используется, а тран-

закты выводятся с начала списка пользователя.  Если поле D содержит

ключевое  слово  BACK,  то  поле  E  и вспомогательный операнд X не

используются,  а транзакты выводятся с конца  списка.  В  остальных

случаях  значение поля D интерпретируется как номер параметра тран-

зактов,  находящихся в списке пользователя,  а из списка  выводится

заданное  число тех транзактов,  у которых значение этого параметра

по отношению к значению операнда в поле  E  удовлетворяет  условию,

заданному  вспомогательным  операндом X.  Операнд X принимает те же

значения, что и в блоке TEST.

     В поле F указывается имя блока, куда переходит транзакт, выхо-

дящий из блока UNLINK,  если из списка пользователя не  выведен  ни

один транзакт. Если это поле пусто, то выводящий транзакт переходит

в следующий блок независимо от количества выведенных транзактов.

     Например, блок

            UNLINK      5,NEXT,1

выводит из  списка  пользователя с номером 5 один транзакт с начала

списка и направляет его в блок с именем NEXT. Блок

            UNLINK      BUFER,ENT1,1,BACK

выводит из списка пользователя с именем BUFER один транзакт с конца

списка и направляет его в блок с именем ENT1. Блок

            UNLINK E    P$UCH,MET2,ALL,COND,P$COND,MET3

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

 

                              - 36 -

 

UCH выводящего транзакта,  и направляет в блок с  именем  MET2  все

транзакты,  содержимое параметра COND которых равно содержимому од-

ноименного параметра выводящего транзакта.  Если таких транзактов в

списке не окажется,  то выводящий транзакт будет направлен в блок с

именем MET3, в противном случае - к следующему блоку.

     Следует отметить   следующие   особенности   выполнения  блока

UNLINK.  Во-первых, если поля D и E содержат ссылки на СЧА транзак-

тов, то поле D вычисляется относительно транзактов в списке пользо-

вателя,  а поле E - относительно  активного  транзакта.  Во-вторых,

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

продвижение транзакта с наивысшим приоритетом, а при равенстве при-

оритетов отдает предпочтение транзакту-инициатору вывода.

     Каждый список  пользователя имеет следующие СЧА:  CH - текущая

длина списка;  CA - средняя длина списка (целая часть); CM - макси-

мальная  длина  списка;  CC  -  общее число транзактов,  вошедших в

список;  CT - целая часть среднего времени пребывания  транзакта  в

списке.

     Воспользуемся рассмотренными  блоками для моделирования много-

канальной СМО с ожиданием транзактов в  списке  пользователя  (рис.

17). Если МКУ с именем STO2 не заполнено,  блок GATE впускает вновь

прибывший  транзакт  в  блок ENTER,  и в МКУ занимается один канал.

Если же МКУ заполнено, то блок GATE направляет транзакт в блок LINK

с  именем  WAIT,  помещающий транзакт в конец списка пользователя с

именем BUFER, моделирующего очередь к МКУ. Каждый транзакт, покида-

ющий  МКУ  по  завершении  обслуживания и освобождающий один канал,

проходит блок UNLINK и выводит один транзакт с начала списка  (если

список не пуст),  направляя его в блок с именем ENT1 на занятие ка-

нала в МКУ.

 

        Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

        .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

        .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                GATE SNF    STO2,WAIT

         ENT1   ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                UNLINK      BUFER,ENT1,1

                TERMINATE   1

         WAIT   LINK        BUFER,FIFO

        Ш1.5

 

                              Рис. 17

 

                              - 37 -

 

     Заметим, что для изменения дисциплины обслуживания  на  "позже

пришел  -  раньше  обслужен" достаточно или заменить в поле B блока

LINK FIFO на LIFO, или записать в поле D блока UNLINK операнд BACK.

Следует  также обратить внимание на то,  что блоки QUEUE-DEPART для

сбора статистики об ожидающих транзактах не используются,  так  как

почти  все те же данные можно получить из статистики о списке поль-

зователя.

     Рассмотрим еще   один   пример,  иллюстрирующий  использование

списков пользователя для организации нестандартных дисциплин обслу-

живания.  Пусть в одноканальной СМО с ожиданием требуется организо-

вать такую дисциплину, при которой приоритет отдается заявкам с на-

именьшим временем обслуживания. Такая модель будет иметь вид, пока-

занный на рис. 18.

     В параметр TSRV поступающих в модель транзактов в блоке ASSIGN

записывается случайное время обслуживания,  вычисляемое с использо-

ванием функции EXP.  Если устройство SYSTEM свободно,  то блок GATE

впускает транзакт в блок SEIZE,  и устройство занимается  на  время

P$TSRV.  Если  же в момент поступления транзакта устройство занято,

то блок GATE направляет транзакт в блок LINK,  который вводит тран-

 

        Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

        .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

        .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ASSIGN      TSRV,80,EXP

                GATE NU     SYSTEM,WAIT

         SFAC   SEIZE       SYSTEM

                ADVANCE     P$TSRV

                RELEASE     SYSTEM

                UNLINK      LINE,SFAC,1

                TERMINATE   1

         WAIT   LINK        LINE,P$TSRV

        Ш1.5

 

                              Рис. 18

 

закт  в  список  пользователя LINE,  упорядочивая транзакты по воз-

растанию времени обслуживания, записанного в параметре P$TSRV. Блок

UNLINK  по освобождении устройства выводит с начала списка транзакт

с наименьшим временем обслуживания,  обеспечивая тем самым заданную

дисциплину.

 

    

    

                              - 38 -

.

                 3. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ GPSS/PC

 

     Для управления прогоном модели используются управляющие опера-

торы GPSS/PC.  С одним из них - оператором START - мы уже сталкива-

лись при рассмотрении блока TERMINATE. Оператор START (начать) име-

ет следующий формат:

                         START    A,B,C,D

     Поле A содержит константу, задающую начальное значение счетчи-

ка завершений.  В поле B может быть записано ключевое  слово  NP  -