интересно
Предыдущая | Содержание | Следующая

Имитация информационных ресурсов

Информационные ресурсы - это необходимые сведения, оперативная информация (например, биржевая информация из сайтов Интернета), временно предоставляемые права на что-либо, документация и иные нематериальные ценности, без которых невозможно выполнение важной функции. Эти ресурсы подразделяются на две разновидности:

стартовый информационный ресурс, без которого нельзя начинать выполнение функции (например, право или разрешение на ее выполнение, инструкция по сборке принципиально нового устройства);

оперативный информационный ресурс, постоянно необходимый при выполнении функции (например, оперативная диспетчерская информация, отсутствие которой делает невозможной посадку самолета на аэродром).

Стартовый информационный ресурс дает возможность отправить заявку на выполнение какой-либо функции, т.е. поместить транзакт в очередь на обслуживание. На рис. 2.6 показана схема получения такого ресурса. Для выполнения основной функции нужны только два узла: первый (очередь queue) и седьмой - последний (обслуживающий процесс serv). Узлы 2-6 предназначены для имитации получения информации из N источников. Эти источники - каналы в узле обслуживания 5 (serv). В данном случае предполагается, что ко всем каналам или источникам информации доступ осуществляется через общую очередь 4 (queue). Если необходимо смоделировать отдельные механизмы доступа к каждому уникальному источнику информации, то данную схему нужно усложнить: это будет N очередей к N одноканальным узлам обслуживания.

Рассмотрим логику моделирования. Запросы на выполнение основной функции поступают в очередь с номером 1. Первый же запрос проходит через открытый клапан 2 (key) и далее поступает в управляемый генератор 3 (creat); при входе в него выполняется сигнальная функция hold, которая закрывает клапан, чтобы преградить путь следующим транзактам.

Узел creat создает новое семейство транзактов (от 1 до N). Каждый из них - это запрос, который поступает в очередь к источникам информации. Время получения информации (оно не равно нулю) можно сделать уникальным для каждого транзакта, поместив значение временного интервала в один из его параметров. После обслуживания каждый такой транзакт поступит в узел delet.

Основной (порождающий) транзакт за нулевое время проходит узел creat и поступает в узел delet, где он становится уничтожающим для только что созданного семейства. Если порожденный транзакт достигает узла delet, то это означает получение необходимой информации из очередного источника. Далее он становится ненужным и поглощается основным транзактом.

После получения всей необходимой информации все дополнительные транзакты поглощены, и основной транзакт переходит к отработке основной функции в узле 7 (serv). При входе в этот узел выполняется сигнальная функция rels, открывающая клапан для прохождения других транзактов.

Следует отметить, что параллельно с обслуживанием запросов на выполнение основной функции в данной схеме моделируется обслуживание потока запросов от других клиентов. Такой поток обычно называется фоновым; если работать без приоритетов, то он приводит к увеличению задержек в очереди с номером 4.

Оперативный информационный ресурс может быть получен двумя способами:

предварительно, вместе со стартовыми;

во время выполнения транзактом основной функции.

На самом деле неважно, как получен ресурс; важно иметь доступ к этому ресурсу по возможности постоянно, так как прекращение доступа повлечет за собой приостановку выполнения основной функции. Моделирование механизма таких приостановок показано на рис. 2.7.

Основной транзакт - это запрос на выполнение основной функции. Он поступает в очередь queue с номером 1. Выполнение основной функции имитируется в данном случае не узлом обслуживания serv, а с помощью узла-процесса 2 (ргос). Узел ргос отрабатывает только время обслуживания, и непрерывный компонент ему не нужен.

Доступ к оперативной информации осуществляется специальной службой, которая моделируется с помощью узлов 3, 4 и 5. Для определенности считаем, что в узел ргос поступает основной транзакт, который сразу попадает в пассивное состояние и не обслуживается, если нет доступа к информации. Управление доступом выполняет другой транзакт, который поступает из очереди 3 (queue) в узел обслуживания 4 (serv). При входе в этот узел управляющий транзакт разрешает доступ: он посылает сигнал activ, по которому основной транзакт переходит в активное состояние, и в узле ргос выполняется работа по его обслуживанию. После пребывания управляющего транзакта в узле serv в течение определенного времени - времени разрешенного (или оплаченного) доступа к оперативной информации, он поступит в узел 5 и выполнит сигнальную функцию перевода узла 2 в пассивное состояние. Если время разрешенного доступа выбрано так, что оно не меньше длительности выполнения основной функции, а моменты входов управляющего транзакта в узел 4 и основного транзакта в узел 2 совпадают, то выполнение основной функции произойдет без прерываний. В противном случае возможны прерывания основной функции, и она будет выполняться за большее время. Так моделируется влияние наличия или отсутствия оперативной информации на работоспособность, например, диспетчерских служб или консалтинговых агентств.