- •Лекция №1 Имитационное моделирование
- •Основные и вспомогательные события
- •Обработка событий в представленной системе
- •Работа системного таймера
- •Одновременные события.
- •Получение значений случайных чисел.
- •Равномерное распределение
- •Лекция №2 Создание модели в системе gpss
- •Лекция №3 Листинги, которые появляются в процессе моделирования.
- •Логика работы интерпретатора
- •Модификация параметров при моделировании
- •Различные законы распределения вероятности появления транзактов в модели
- •Лекция № 4 Задание функций.
- •Многоканальные устройства
- •Модель многопроцессорной системы
- •Лекция № 5
- •Параметры транзактов
- •Лекция №6 Выбор элементов по их состояниям
- •Арифметические переменные
- •Формирование случайных чисел, распределенных по нормальному закону
- •Лекция № 7 Сохраняемые величины
- •Initial имя сохраняемой величины, ее значение/имя, значение/...
- •Управление последовательностью событий
- •Лекция № 8 Логический переключатель
- •Блок select в логическом режиме
- •Организация цикла
- •Булевские переменные
- •Блок buffer
- •Лекция № 9
- •Косвенная адресация
- •Лекция № 10 Цепи пользователя
- •Лекция № 11 .
- •Условный вывод транзактов из цепи пользователя
- •Лекция №12
- •Захват устройства
- •Лекция №13
- •Ансамбли транзактов
- •Использование таблиц
- •Лекция №14
- •Сча таблиц.
- •Дополнительные режимы использования таблиц.
- •2) Rt (Rate – интенсивность) – режим.
- •Время моделирования.
- •Некоторые сведения из Теории вероятностей
Лекция № 11 .
Из программы‚ приведенной в лекции № 10, можно убрать блоки DEPART, QUEUE, SEISE, RELEASE и соответственно переставить метку M на блок ADVANCE. Программа будет работать так же, только у нас не будет статистики.
Пример 11.1: Пусть у нас есть ОП, БП (общая очередь) и многопроцессорная система.
Н еобходимо построить программу с использованием цепи
пользователя. Будем считать, что времена выполнения в
ЦП одной функции распределения, и поэтому можно
использовать многоканальное устройство.
Версия 1:
* Следующий блок задает ёмкость многоканального устройства
-
1
STORAGE
3
GENERETE
15,5
PRIORITY
1
* Блок GATE проверяет устройство на занятость
-
GATE SNF
1‚F
M
ENTER
1
ADVANCE
10,7
LEAVE
1
UNLINK
C1,M1
TERMINATE
F
LINK
C1,FIFO
Для чего в программе необходим блок PRIORITY?
Рассмотрим ситуацию, когда в один и тот же момент времени должен появиться транзакт из блока GENERATE(назовём этот транзакт G-транзактом), и в тот же момент транзакт покидает блок ADVANCE(A-транзакт). Пусть в цепи пользователя находится хотя бы один транзакт. Будем считать что G-транзакт стоит в цепи текущих событий после A-транзакта.
Пусть нет блока PRIORITY. A-транзакт освобождает одно место в устройстве и, проходя блок UNLINK, инициирует вывод 1-го транзакта из цепи пользователя(U-транзакт). U-транзакт поступает в цепь текущих событий и занимает там место после G-транзакта. В соответствии с расположением в цепи текущих событий интерпретатор продвигает G-транзакт, и он занимает одно место в устройстве 1.
U-транзакт не может занять место в устройстве, следовательно наша модель будет работать не верно.
Версия 2:
-
1
STORAGE
3
GENERETE
15,5
GATE SNF
1‚F
M
ENTER
1
ADVANCE
10,7
* Следующий блок подтверждает приоритет транзакта и перемещает
* его в конец цепи текущих событий.
-
PRIOTITY
PR
BUFFER
LEAVE
1
UNLINK
C1,M1
TERMINATE
F
LINK
C1,FIFO
Блок BUFFER принудительно останавливает движение транзакта. Интерпретатор начинает с начала обрабатывать транзакты, находящиеся в цепи текущих событий.
Связку:
-
PRIORITY
PR
BUFFER
можно заменить на
BUFFER PR
Пример 11.2:
ЦП в отличие от предыдущего примера имеют свою БП и могут обладать разной производительностью.
Команда, поступающая из ОП, занимает любой свободный процессор. Если все процессоры заняты, тогда команда поступает к тому ЦП, у которого минимальная очередь.
-
GENERATE
* Далее параметр 1 получит значение в зависимости от типа команды.
-
ASSIGN
1,FN$A
PRIORITY
1
QUEUE
1
* В следующем блоке будет определяться свободный процессор. Если все
* процессоры заняты, то транзакт(команда) поступит в блок с меткой M.
-
SELECT
2,1,3,0,F,M
N
SEIZE
P2
DEPART
1
ADVANCE
P1,FN$B
RELEASE
P2
UNLINK
P2,N,1
TERMINATE
* Этот блок SELECT определяет минимальную очередь.
* CH – CЧА, даёт текущее содержимое цепи пользователя.
-
M
SELECT MIN
2,1,3,,CH
LINK
P2,FIFO