Краткое руководство по моделированию на языке GPSS (1049434), страница 3
Текст из файла (страница 3)
Таблица 8 - СЛА
NU | Равен 1, если прибор свободен, иначе 0 |
U | Равен 1, если прибор занят, иначе 0 |
Блок SEIZE
Назначение. Блок позволяет активному транзакту занять прибор (захватить ресурс) или встать в очередь к прибору.
Синтаксис. SEIZE A
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя занимаемого прибора | Имя/ Число/ СЧА | Обязательный операнд |
Особенности выполнения.
-
При попытке транзакта войти в блок SEIZE всегда проверяется, свободен ли прибор (открыт ли семафор).
-
Если прибор свободен (семафор открыт), то транзакт, занявший прибор, пытается перейти к следующему по номеру блоку, а семафор закрывается. Прибор остается занятым до тех пор, пока занимающий его транзакт не войдет в соответствующий блок RELEASE. Прежде чем освободить прибор, транзакт может пройти через произвольное число блоков.
-
Блок SEIZE отказывает во входе транзакту, если прибор занят (семафор закрыт). При этом транзакт помещается в список задержки прибора в конец своего приоритетного класса
Пример
SEIZE Server
Активный транзакт пытается занять прибор с именем Server.
Блок RELEASE
Назначение. Блок позволяет активному транзакту освободить занятый прибор (открыть семафор).
Синтаксис. RELEASE A
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя освобождаемого прибора | Имя/ Число/ СЧА | Обязательный операнд |
Особенности выполнения.
-
Если прибор занят активным транзактом, он освобождает прибор и пытается войти в следующий по порядку блок.
-
Если активный транзакт освобождает прибор, следующий транзакт выбирается из списка задержки и занимает прибор. Если в списках транзакты отсутствуют, прибор становится не занятым.
-
Активизируются транзакты из списка задержки блоков GATE NU.
Пример.
RELEASE WorkStation
Транзакт покидает ресурс (прибор ) с именем WorkStation и открывает семафор.
Памяти
Под памятью понимается такой участок трека (ресурс), который заблокирован одним арифметическим семафором. Это означает, что семафор пропускает не более заданного в этом семафоре количества транзактов в ресурс. Если количество подошедших к ресурсу транзактов превышает заданное ограничение, то семафор закрывается, а оставшиеся транзакты выстраиваются к ресурсу (памяти) в очередь типа FIFO.
Параметры, связанные с памятями, имеют префикс S.
Таблица 9 – СЧА памятей
S | Текущее содержимое памяти. Целочисленное значение. |
R | Число свободных единиц памяти. Целочисленное значение. |
SR | Коэффициент использования памяти в долях тысячи. Вещественное значение. |
SA | Взвешенное по времени среднее содержимое памяти. Вещественное значение. |
SM | Максимальное содержимое памяти. Целочисленное значение. |
SC | Общее количество использовавшихся элементов памяти. Целочисленное значение. |
ST | Среднее время пребывания транзактов в памяти. Вещественное значение. |
SE | Флаг незанятости памяти (1 - свободна, 0 – занята). Целочисленное значение. |
SF | Флаг заполненности памяти (1- заполнена, 0 - не заполнена). Целочисленное значение. |
SV | Флаг готовности памяти (1 - готова , 0 - не готова). Целочисленное значение. |
Таблица 10 – СЛА памятей
SE | Равен 1, если память пуста (нулевое содержимое) , иначе 0 |
SNE | Равен 1, если память не пуста (ненулевое содержимое) , иначе 0 |
SF | Равен 1, если память заполнена, иначе 0 |
SNF | Равен 1, если память не заполнена, иначе 0 |
SV | Равен 1, если память используется, иначе 0 |
SNV | Равен 1, если память не используется, иначе 0 |
Оператор STORAGE
Назначение. Оператор STORAGE определяет максимальное значение емкости в памяти (размер семафора). Оператор относится к декларирующему типу и ставится в начале программы.
Синтаксис. <имя памяти> STORAGE A
Имя памяти – символическое или числовое имя памяти, ставится в поле меток.
Операнд А определяет емкость данной памяти: обязательный операнд целого типа
Пример.
RAM_Workstation STORAGE 1024
Оператор определяет память с именем RAM_Workstation с общей емкостью 1024 элементов.
Блок ENTER
Назначение. Блок позволяет активному транзакту либо занять определенное число элементов памяти, либо встать в очередь к данной памяти
Синтаксис. ENTER A,[B]
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя занимаемой памяти | Имя / число / СЧА | Обязательный параметр |
B | Число занимаемых элементов памяти | Имя / число / СЧА | 1 |
Особенности выполнения.
-
Операнд A должен указывать на заранее определенную оператором STORAGE память.
-
При попытке транзакта войти в блок ENTER всегда проверяется, существует ли необходимое число свободных элементов данной памяти и находится ли память в состоянии «готова к использованию». Для определения необходимого числа свободных элементов памяти используется операнд B.
-
Если необходимое число свободных элементов есть и память готова, она занимается. Число свободных элементов памяти уменьшается на заданную в параметре В величину..
-
Транзакт, занявший память, пытается перейти к следующему по треку блоку.
-
Элементы памяти остаются занятыми до тех пор, пока занимающий их транзакт не войдет в соответствующий блок LEAVE.
-
Блок ENTER отказывает во входе транзакту, если нет необходимого числа свободных элементов данной памяти. При этом устанавливается его индикатор задержки и транзакт помещается в список задержки памяти в конец своего приоритетного класса
Примеры.
1. ENTER RAM
Транзакт пытается занять один элемент памяти с именем RAM.
2. ENTER RAM, P$PAM
Транзакт пытается занять память с именем RAM. Необходимое число элементов памяти содержится в параметре транзакта с именем PAM.
Блок LEAVE
Назначение. Блок позволяет активному транзакту освободить определенное число элементов памяти.
Синтаксис. LEAVE A,[B]
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя освобождаемой памяти | Имя / число / СЧА | Обязательный параметр |
B | Число освобождаемых элементов памяти | Имя / число / СЧА | 1 |
Особенности выполнения.
-
Операнд A должен указывать на заранее определенную оператором STORAGE память.
-
Для определения числа освобождаемых элементов памяти используется операнд B.
-
Транзакт, освободивший элементы памяти, пытается перейти к следующему по треку блоку.
-
После освобождения памяти, список задержки памяти просматривается в порядке убывания приоритетов, определяются транзакты, потребность в памяти которых может быть удовлетворена. Используется правило «первый подходящий с пропусками». Успешные транзакты входят в блок ENTER.
Примеры.
1. LEAVE RAM
Транзакт освобождает один элемент памяти с именем RAM
2. LEAVE RAM, P$ PAM
Транзакт освобождает элементы памяти с именем RAM. Освобождаемое число элементов памяти содержится в параметре транзакта с именем PAM.
Логические ключи
Логические ключи представляют собой логические переменные, предназначенные выполнять функцию логического семафора на любом участке трека.
Таблица 11 – СЛА ключей
LR | Равен 1, если логический ключ "выключен", иначе 0 |
LS | Равен 1, если логический ключ "включен", иначе 0 |
Блок LOGIC
Назначение. Блок изменяет состояние логического ключа.
Синтаксис. LOGIC X A
Х – логический оператор
А – имя (номер) логического ключа
Операнд | Назначение | Значение | Значение по умолчанию |
X | Логический оператор | S,R или I | Обязательный параметр |
A | Имя логического ключа | Имя/ Число/ СЧА | Обязательный параметр |
Особенности выполнения.
-
Блок LOGIC предназначен для того, чтобы устанавливать, сбрасывать или инвертировать (менять на противоположное) состояние логического ключа.
-
Логический ключ может находиться в двух состояниях: S (включен или 1) или R (выключен или 0).
-
Если логический оператор равен «S» или «R» , то логический ключ, заданный операндом А, устанавливается во включенное или выключенное состоянии соответственно.
-
Если логический оператор равен «I», то логический ключ, заданный операндом А, инвертируется. Это значит, что если он был включен, он будет выключен и наоборот.
Примеры.
1. LOGIC S SWITCH
2. LOGIC R SWITCH
3. LOGIC I SWITCH
Блоки и операторы организации вычислений
Вектор сохраняемых величин – это совокупность параметров, предназначенная для сохранения скалярных значений, организованная в виде вектора. Адресация такой величины имеет вид Х I , где Х – стандатное имя вектора, I – номер или имя элемента вектора Х.
Блок SAVEVALUE
Назначение. Блок присваивает, увеличивает или уменьшает значение сохраняемой величины.
Синтаксис. SAVEVALUE A[±],B
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя изменяемой сохраняемой величины | Имя/ Число/ СЧА | Обязательный операнд |
B | Значение, которое присвоено, прибавлено или вычтено из сохраняемой величины | Имя/ Число/ СЧА | Обязательный операнд |
Примеры.
1. SAVEVALUE 25,7
Значение сохраняемой величины Х25 становится равным 7.