Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
GPSS. Блоки-операторы (продолжение).⇐ ПредыдущаяСтр 15 из 15
Аппаратная категория –> PREEMPT Прерывание работы устройства. Когда заявка приходит, то работа канала прерывается. SIMULATE GENERATE 10, 1 SEIZE 1 ADVANCE 7, 3 RELEASE 1 TERMINATE 1 GENERATE 25, 2
PREEMPT 1 ADVANCE 15, 1 RETURN 1 TERMINATE 1 START 180 END
Блок ENTER имитирует работу памяти (вход в память).
LEAVE – имитирует выход из памяти (освобождение памяти). Операнд А обозначает N памяти В – объем памяти, который может быть доступным (число ячеек). Используется с блоком карты, которая записывается в память. Карта называется “STORAGE” – определяет описание памяти. Если машина занята, то заявка находится в памяти, когда канал освободился из памяти заявка уходит (аналог очереди). Программа, имитирующая работу: SIMULATE 1 STORAGE GENERATE 8, 2 ENTER 1 SEIZE LEAVE 1 ADVANCE 7, 5 RELEASE TERMINATE START 100 END
Sj – текущее содержание памяти (число ячеек (V), которые запоминает память); Rj – число свободных ячеек; SRj – коэффициент использования j-ой памяти (сколько было занято, и т.д.); SAj – среднее количество ячеек, которое было использовано в процессе моделирования; SMj – максимальное количество ячеек, использованное в j-ой памяти; SLj – общее число транзактов, вошедших в память; STj – среднее время использования j-го накопителя одним транзактом.
Блок SPLIT
SPLIT – это аппаратная динамическая категория (получение копий заявок). В программе происходит обработка оригинала и копии. SIMULATE GENERATE 8, 2 SPLIT 1, THIS SEIZE 1 // обработка оригинала ADVANCE 5, 3
RELEASE 1 TRANSFER THAT THIS SEIZE 2 // номер копии, обрабатываемой копии ADVANCE 5, 3 RELEASE 2 THAT ASSEMBLE 2 // склеивает копии; 2 – общее количество заявок // (оригинал +копия) TERMNATE 1 START 100 END
Блок SPLIT имеет следующий формат: SPLIT < A>, [< B> ], [< C> ] Блок SPLIT выполняет функцию копирования входящего в него сообщения, которое называется исходным или порождающим. В поле А задается число создаваемых копий. Операнд А может быть именем, положительным целым, СЧА, СЧА*< параметр>. Если вычисленное значение аргумента поля А равно нулю, то блок SPLIT не выполняет никаких операций. После создания копий сообщение пытается перейти к следующему по номеру блоку. Все копии формируются в момент входа порождающего сообщения в блок SPLIT. Поле В задает номер следующего блока, к которому переходят копии исходного сообщения, причем значение вычисляется для каждой копии отдельно. Операнд В может быть именем, положительным целым, СЧА, СЧА*< параметр>. В поле С может быть задан номер параметра, используемого для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА, СЧА*< параметр>. Если, например, задан параметр j, то j-му параметру исходного сообщения и n - копиям этого сообщения будут присвоены значения, как показано ниже. Пусть Х - входное значение параметра j, тогда значение параметра j первой копии равно Х+1, второй копии - Х+2, третьей копии - Х+3 и т.д. Помимо значений параметров в каждую копию записывается значение приоритета и отметка времени исходного сообщения. Копии поочередно поступают в список текущих событий, причем каждая копия помещается в конец соответствующего приоритетного класса. Счетчик общего числа входов (Nj) и счетчик текущего числа сообщений (Wj) блока SPLIT увеличиваются на единицу каждым исходным сообщением и каждой копией. Счетчик числа сообщений уменьшается на единицу при каждом выходе исходного сообщения или копии из блока SPLIT. Каждая новая копия становится членом семейства сообщений, по- рожденного одним исходным сообщением, которое было создано блоком GENERATE. Сообщения, принадлежащие к одному семейству, объединяются интерпретатором в список. По связям внутри семейства сообщений нельзя установить, какое из сообщений семейства является порождающим. Если копия сообщения входит в блок SPLIT, то вторичная копия становится членом того же семейства, что и первичная копия. Таким образом, каждое сообщение является членом одного и только одного семейства. Семейство может состоять из произвольного числа сообщений. Когда сообщение уничтожается, интерпретатор автоматически исключает его из членов соответствующего семейства. Таким образом, семейство существует до тех пор, пока из модели не удаляется последний из его членов. При каждом удалении сообщения связи между ними корректируются так, чтобы сообщения данного семейства по-прежнему образовывали замкнутый список. В модели одновременно может существовать произвольное число семейств, оно все время меняется, поскольку каждое генерируемое блоком GENERATE сообщение создает новое семейство.
|