- •Аннотация
- •Содержание:
- •Введение
- •1 Объекты системы моделирования сим-си
- •1.1 Общая классификация
- •1.2 Системные константы, типы и переменные
- •Системные типы
- •Скалярные типы данных
- •Множественные типы данных
- •Системные переменные
- •2 Принципы и методы построения моделей
- •2.1 Создание транзактов
- •2.2 Уничтожение транзактов
- •2.3 Продвижение транзактов
- •2.4 Задержка транзактов. Функцияdelayt
- •2.5 Блокировка транзактов
- •2.5.1 Функцияwait
- •2.5.2 Функцииacceptиsend
- •2.6 Изменение порядка осуществления событий. Функцияnехt
- •2.7 Использование приборов
- •2.7.1 Функции ввода транзактов в прибор
- •2.7.1.1 Захват прибора. Функцияinfac
- •2.7.1.2 Занятие прибора. Функцияseize
- •2.7.2 Функцияoutfac. Вывод транзакта из прибора
- •2.8 Регистрация очередей. Функцииinqueue,outqueue
- •2.9 Накопители (многоканальные устройства). Функцииenterиleave
- •2.10 Построение гистограмм. Функцииtabulate,newhist,prnhist
- •2.11. Создание, использование и обработка списков
- •2.11.1 Создание списков
- •2.11.2 Включение объектов в списки
- •2.11.3 Удаление объектов из списков
- •2.11.4 Просмотр элементов списка. Сканирование
- •2.11.5 Списки пользователя. Организация различных дисциплин обслуживания с помощью списков пользователя
- •2.12 Модельная среда
- •2.12.1 Создание модельной среды
- •2.12.2 Уничтожение очередей, приборов, накопителей и гистограмм
- •2.13 Ансамбли
- •2.13.1 Создание ансамблей. Функцияsplit
- •2.13.2 Сбор членов ансамбля. Функцияassemble
- •2.13.3 Изменение приоритета всех членов ансамбля. Функцияpriority
- •2.13.4 Изменение значения параметра всех членов ансамбля. Функцияparmans
- •2.14 Генераторы случайных чисел
- •2.15 Процесс моделирования. Функцияplan
- •2.16 Создание системной среды. Функцияinitlist
- •2.17 Структура модели
- •2.18 Сброс статистики и очистка системной и модельной среды. Функцииresetallиclear
- •3 Вывод результатов моделирования
- •4 Отладочные средства
- •4.1 Диагностика ошибок
- •4.2 Трассировка
- •Приложение 1. Коды и сообщения об ошибках
- •Приложение 2. Сообщения в режиме трассировки
- •Приложение 3. Системные константы и типы данных
- •Приложение 4. Системные переменные
- •Приложение 5 Заголовки системных функций
- •Приложение6. Примеры моделей Пример 1.
- •Пример 2.
- •Пример 3.
- •Диагностика ошибок
- •Системные списки Список current
- •Список прибора Fac f
- •Список future
2.5 Блокировка транзактов
2.5.1 Функцияwait
Продвижение транзакта в модели может быть приостановлено до наступления заданного события. Для этой цели предназначена функция void wait(event е), гдеe- номер ожидаемого события. Если событиеeуже произошло, то транзакт продолжает продвигаться по модели, иначе транзакт, на который указывала ссылкаtrans, помещается в список по ссылкеwaitl[e] последним в своем классе приоритетов. При этом значение ссылкиtransустанавливается равнымnil. После выполнения событияeтранзакт, первый в спискеwaitl[e], переводится в списокcurrent.
Пример 5.1. Использование функцииwaitдля организации очереди перед узлом задержки. Поступление транзактов экспоненциальное, задержка - постоянная, дисциплина обслуживания - FIFO. В этом примере поступающие на обработку транзакты скапливаются в списке транзактов, ожидающих событие 4, которое связано с уничтожением транзакта, переходящего после задержки к событию 4. Заметим, что все транзакты, находящиеся в спискеwaitl[4]в момент возникновения четвёртого события будут переправлены к событию 3. Моделирование будет завершено, если число ожидающих транзактов будет больше или равно 10.
voidmain(){
//variables
doublej,lambda;
...;
while(waitl[4]->p->ll<10) {
plan();
switch(sysevent) {
case 1: create(randexp(lambda,v1)); break;
case 2: if(future->p->ll>1) wait(4); break;
case 3: delayt(j); break;
case 4: destroy(); break; }
}
}
...
}
2.5.2 Функцииacceptиsend
В системе СИМ-СИ определены:
- тип "сигнал": signal=1..signmax;
- массив списков сигналов: array<min_signal,max_signal,plistt> signlist;
- две функции aссерt(signal sg), send(signal sg);
Функция void aссept(signal sg) переводит активный транзакт в список сигналаsgиз спискаcurrent. Транзакт перестает быть активным и остается в этом списке, ожидая выполнения функцииvoidsend(signal sg). При выполнении функцииacceptранее поступавшие от функцииsendсигналы не учитываются.
В отличии от блокировки продвижения транзактов в ожидании события, когда при совершении события активизируется только один транзакт из ожидающих его, при формировании сигнала функцией sendвсе транзакты из списка сигналаsgпереводятся в списокcurrent.
Фактически, aссерt- ожидание сигналаsg, аsend- посылка этого сигнала.
signmax- системная константа, определяется при генерации СИМ-СИ.
2.6 Изменение порядка осуществления событий. Функцияnехt
Если при обработке события nвстретилась функцияvoid next(event e), гдеe- номер события, которое должно осуществиться послеn, то значениеtrans->eve(а следовательно иcurrent->first->eve) устанавливается равнымe, аtrans=nil. Далее автоматически выбирается активный транзакт:trans=current->first. Системная переменнаяsyseventполучит значениеsysevent=trans->eve, то есть станет равнойe.
2.7 Использование приборов
Использование приборов позволяет сделать процесс обработки более наглядным; кроме того, по приборам собирается статистика, которая может быть использована для оценки их функционирования. Приборы относятся к объектам, называемым в системе устройствами, поэтому функции обращения к ним делятся на две группы: функции ввода и функции вывода транзактов. Порядок записи функций в модели произвольный, важно, чтобы логика моделирования не была нарушена попыткой вывода транзакта из свободного прибора.
