Материал: Моделирование, анализ и оценка надежности информационных систем и технологий. Некравцева Т.А., Толстых Т.О

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

155

если в поле E блока PREEMPT стоит запись RE, то будут производиться обычные операции, за исключением того, что прерванный транзакт не участвует больше в конфликте из-за захвата устройства.

Блок RETURN сигнализирует об окончании прерывания. При входе в блок задержка возникнуть не может, но закончить прерывание может только тот транзакт, который перед этим прошел блок PREEMPT, относящийся именно к данному устройству. Прерывание заканчивается в момент входа в блок RETURN. Время, в течение которого транзакт находится в прерванном состоянии, не фиксируется. На прерывания имеются следующие ограничения: нельзя производить прерывание транзакта, захватившего или прервавшего обслуживание других транзактов более чем на 255 устройствах одновременно, задержка прерванного транзакта начинается с момента первого прерывания и оканчивается в момент окончания последнего. Неважно, занято или свободно устройство, для которого выполняется блок PREEMPT.

Рассмотрим пример использования блоков PREEMPT и RETURN:

PREEMPT

16

ADVANCE

150

RETURN

16

(т. е. реализуется прерывание на устройстве 6, задержка на 150 единиц, а затем возврат устройства).

Блок FUNAVAIL выполняет операции, переводящие устройство в состояние недоступности. Недоступность устройства предупреждает занятие или прерывание устройства последующими сообщениями. При этом возможно задание специальных режимов работы блока FUNAVAIL, обеспечивающих окончание обслуживания последнего транзакта, передачу его на обслуживание к другому блоку, дообслуживание транзакта после окончания периода недоступности. Номер или диапазон номеров устройств, переводимых в состояние недоступности, записывается в поле А. Поля В...И предназначены для задания специальных режимов.

Блок FAVAIL делает доступными устройства, указанные как номер или диапазон номеров устройств в поле А. Блок FAVAIL отменяет все режимы, заданные блоком FUNAVAIL. для данных устройств.

Рассмотрим пример использования блоков FUNAVAIL и FAVAIL: FUNAVAIL 1-15

156

ADVANCE

30

FAVAIL

1-10

 

ADVANCE

15

FAVAIL

 

11-15

(т. е. недоступные устройства с 1-го по 15-е становятся доступными: через 30 единиц времени — устройства с 1-го по 10-е, а через 45 единиц времени—устройства с 11-го по 15-е).

Элементы моделируемой системы S, предназначенные для хранения или обработки нескольких транзактов, в терминах языка GPSS называются памятями. Для введения в программу памяти требуется описать ее картой STORAGE, а изменение состояния памяти производится блоками ENTER, LEAVE, SUNAVAL, SAVAIL.

Поле A блока ENTER интерпретируется как номер памяти, поле В — указывает число единиц памяти, занимаемых транзактом при входе в блок. При выходе транзактов из блока ENTER никаких изменений в содержимом памяти не происходит.

Если поле B пустое, то число единиц памяти полагается равным 1. В этом поле может быть записан 0 и тогда содержимое памяти увеличится на 0 единиц. Если в памяти нет достаточного числа свободных единиц, чтобы удовлетворить запрос транзакта, то этот транзакт не может быть обслужен блоком ENTER. Если для последующего транзакта число единиц памяти достаточно, то он входит в память раньше первого.

Поле A определяет номер памяти, а поле B — число единиц, которые надлежит освободить при входе транзакта в блок LEAVE. Не всегда освобождается такое же число единиц памяти, какое было занято. Транзакт, освобождающий память, не обязательно должен был ее занимать. Однако необходимо, чтобы в сумме освобождалось столько единиц памяти, сколько было занято (иначе содержимое памяти будет возрастать и после, ее заполнения в системе наступит насыщение), и чтобы содержимое памяти не стало отрицательным (т. е. не освобождалось больше единиц памяти, чем было занято). При выполнении блока LEAVE задержки не возникают. Аналогично тому, как в блоке ENTER транзакт может занять 0 единиц памяти, в блоке LEAVE он может освободить 0 единиц.

Рассмотрим пример использования блоков ENTER и LEAVE:

157

ENTER

1,1

SEIZE

2

LEAVE

1, * 2

(т. е. реализуется занятие единицы памяти в памяти 1, а затем освобождение числа единиц памяти, равного содержимому параметра 2 формата «слово»).

Блок SUNAVAIL переводит накопитель в состояние недоступности, при котором транзакты не могут войти в накопитель. Уменьшение содержимого накопителя в этот период может происходить путем прохождения транзактами блока LEAVE. Номер или диапазон номеров накопителей, переводимых в состояние недоступности, записывается в поле А.

Блок SAVAIL переводит заданный накопитель из состояния недоступности в состояние доступности. Если данный накопитель уже доступен, то блок SAVAIL никаких действий не выполняет. Номер или номера накопителей, переводимых в состояние доступности, записываются в поле А.

Рассмотрим пример использования блоков SUNAVAIL и SAVAIL:

SUNAVAIL

2—5

TEST NE

PH1,0,NEXT

SAVAIL

2—5

(т. е. недоступные накопители с 1-го по 5-й становятся доступными при появлении транзакта с ненулевым параметром 1 типа «полуслово»).

Логические ключи в GPSS предназначены для описания элементов моделируемой системы S, которые могут находиться только в двух состояниях. Статистика о работе ключей не собирается. Логические ключи не имеют СЧА, а только два логических атрибута, принимающие значения 0— при невыполнении и 1— при выполнении следующих условий: LR — ключ в состоянии «О»; LS — ключ в состояние «1».

Вначале моделирования ключ может быть установлен в состояние «1»

спомощью карты INITIAL, и изменение состояния ключа производится в процессе моделирования блоком LOGIC.

Блок LOGIC используется для установки логических ключей, состояние которых может быть запрошено в любом другом месте модели. При входе в блок LOGIC задержки не возникает. Состояние логического объекта, указанного в поле A, изменяется одним из трех способов: может быть установлен S, сброшен R или инвертирован I. Вид изменения определяется соответствую-

158

щим мнемоническим обозначением, помещаемым непосредственно за блоком

LOGIC.

Рассмотрим пример применения блока LOGIC:

LOGIC S

41

LOGIC R

165

LOGIC I

4

(т. е. установить ключ 41, сбросить ключ 165, инвертировать ключ 4).

7.8.Изменение маршрутов транзактов

ВGPSS поток транзактов обычно проходит блоки последовательно, поэтому предполагается, что, выполнив блок с номером n, транзакт переходит к выполнению блока с номером п+1. Однако в моделируемой реальной системе S в зависимости от создавшихся условий поток транзактов может быть задержан или направление его движения изменено. Для моделирования таких ситуаций на пути потока транзактов может быть помещен блок специального типа, который реализует переход в зависимости от создавшихся условий. В зависимости от способа и условий, сложившихся в модели в данный момент, транзакт по указанию пользователя может быть задержан или направлен в блок с любым указанным номером. Например, перед входом транзакта в блоки некоторых типов (например, блок SEIZE) симулятор GPSS проверяет состояние устройства, указанного в этом блоке. Транзакт войдет в блок, когда соответствующее устройство свободно. Если транзакт не может перейти к выполнению этого блока, то симулятор предоставляет две возможности: либо транзакт может быть задержан до тех пор, пока не освободится требуемое устройство, либо направлен по другому пути. В группу изменения маршрутов сообщений входят блоки GATE, TEST, TRANSFER.

Блок GATE. Этот блок используется для определения состояния объектов устройств без изменения их состояния. Блок GATE работает в двух режимах:

1) отказа или условного входа;

2) перехода или безусловного входа.

При работе в режиме отказа блок GATE не пропускает транзакты, если соответствующий объект не находится в требуемом состоянии. Если же по-

159

ставленное в блоке условие удовлетворяется, блок разрешает вход транзактов.

Если в поле B указано наименование (номер) блока, то вместо отказа блок GATE будет посылать транзакт на указанный блок. Таким образом, если поле B пустое, блок работает в режиме отказа, если не пустое — в режиме перехода.

Существует шесть условий или логических атрибутов, описывающих состояние устройств, памятей, ключей и условия синхронизации. Мнемонические обозначения проверяемого условия записываются непосредственно после GATE. Поле A определяет номер объекта аппаратной категории (устройства, памяти или ключа). Состояние устройства описывается следующими условиями: FNU — устройство не используется, свободно; FU — устройство используется, занято (обслуживает захвативший транзакт или прерывание); FNI — устройство работает без прерывания (свободно или обслуживает захвативший его транзакт); FI — устройство обслуживает прерывание; FV — устройство доступно; FNV — устройство недоступно.

Состояние памяти описывается следующими условиями: SE — память пуста; SNE — память не пуста; SF — память заполнена; SNF,— память не заполнена; SV — память доступна; SNV — память недоступна.

Состояние ключа описывается двумя условиями: LR — логический ключ в состоянии «выключен»; LS логический ключ в состоянии «включен».

Следующие два мнемонические обозначения подробно описаны ниже: M - блок GATE проверяет выполнение условия синхронизации в указанном блоке блок-диаграммы; NМ — блок GATE проверяет невыполнение условия синхронизации в указанном блоке блок-диаграммы.

Рассмотрим пример использования блока GATE: режим отказа

GATE SF

167

GATE LS

265

GATE FU

19

(т. е. выполняются следующие действия: блокировать транзакт до тех пор, пока память 167 не будет заполнена; блокировать транзакт до тех пор, пока ключ 265 не установлен, блокировать транзакт до тех пор, пока устройство 19 не освободится);

Источник: https://studfile.net/preview/16563751/