Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ИМ экзамен.doc
Скачиваний:
135
Добавлен:
19.03.2016
Размер:
1.24 Mб
Скачать
  1. Операции инициализации языка smpl

Функция _DEVICE создает заголовок устройства и включает его в список. Возвращает указатель на заголовок устройства, который используется в дальнейшем.

D := _DEVICE (DNAME);

DNAME: string[12];

D: P_DEVICE;

Функция _QUEUE

Создает заголовок очереди и возвращает указатель на заголовок.

Q := QUEUE(QNAME);

Q: P_QUEUE;

QNAME: string[12];

Операция _REINIT используется при завершении моделирования для освобождения динамической памяти.

  1. Операции над списком событий языка smpl

Функция _SCHEDL – включает в список событий новый элемент, соответствующий планируемому событию.

_SCHEDL(AE,AT,AJ);

AE – номер или тип события;

AT – промежуток времени, через который должно произойти событие;

AJ – номер транзакта

Время свершения данного события определяется как сумма текущего времени моделирования и значения параметра AT.

_TIME + AT = T

Функция _CAUSE – монитор, удаляет событие из вершины списка.

Текущее время моделирования становится равным времени свершения данного события.

Обращение к функции: _CAUSE(AE,AJ);

Функция _CANCEL – отыскивает в списке ближайшее по времени событие с указанным номером-транзактом. Найденное событие удаляется из списка, а функция возвращает разность между текущим временем моделирования и временем, когда должно было произойти данное событие.

T := _CANCEL (AE,AJ)

  1. Операции над средствами языка smpl

Функция _RESERVE

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

_RESERVE(D,AJ);

D – указатель на заголовок устройства, возвращаемый функцией DEVICE.

AJ – номер заявки

B := _TIME – текущее время моделирования

J := номер транзакта AJ

Функция _RELEASE

Освободить указанное средство, занятое функцией _RESERVE.

Обращение _RELEASE(D);

Z := Z+1; - количество завершенных операций обслуживания

J := 0

SB := SB + _TIME-B;

Функция _STATUS

Возвращает 0, если устройство свободно, или номер транзакта, занимающего устройство.

  1. Операции над очередями языка smpl

Операция _EnQUEUE

Помещает заявку в очередь, результатом является новый элемент, который включается в очередь в соответствии с указанным приоритетом.

_EnQUEUE(Q,AJ,AI,AS)

Q – заголовок очереди, возвращаемый функцией _QUEUE

AJ – номер транзакта;

AI – приоритет;

AS – стадия обработки транзакта

STQ := STQ + LEN (_TIME – TLAST); - средневзвешанная по времени длина очереди

LEN := LEN +1;

TLAST := _TIME;

Иногда может быть модифицировано поле MAX

Функция _HEAD

Удаляет транзакт из вершины очереди и возвращает номер этого транзакта.

J := _HEAD(Q,AS)

Q

AS

J

Модификация полей:

STQ := STQ + LEN(_TIME-TLAST);

SW := SW+(_TIME-T);

SW2:=SW2+(_TIME-T)2;

LIST := NEXT1;

TLAST := _TIME;

LEN := LEN -1;

COUNT := COUNT +1;

Функция _LENGTH

Возвращает текущее содержимое соответствующей очереди

L

L := _LENGTH(Q);

Q - заголовок очереди

Функция IRANDOM(M1,M2)

Разыгрывает случайное число, равномерно распределенное в диапазоне M1,M2.

N := IRANDOM(M1,M2);

Функция NEGEXP(M)

Разыгрывает случайную величину с экспоненциальным распределением

N := NEGEXP(M);

N : LONGINT; - возвращаемое число из распределения

M – среднее значение случайной величины