Cтраница 3
Модель получает дополнительную гибкость за счет использования вставок C кода. Текст делится на две части: одна выполняется до вызова функции узла, другая - после нее. Смысл такого разбиения заключается в том, что программный текст, выполняющийся до вызова функции узла, может подготавливать какие-либо переменные, которые функцией будут использованы. Так, например, может быть подсчитано время обслуживания транзакта перед выполнением функции узла типа serv. Программный текст, следующий после вызова функции узла, на ее выполнение уже никак не влияет и может использоваться для обработки параметров выполненной функции или подготовки параметров для других функций модели. [31]
Устройства ( приборы) - это объекты, которые имеют несколько атрибутов, наиболее важным из которых является право на его использование. Право на использование устройства в любой момент времени может иметь только один транзакт. Таким образом устройство может быть занято или свободно. Существует возможность замены транзакта, в данный момент занимающего устройство, активным транзактом - реализация абсолютного приоритета. В случае, если транзакт не может занять устройство, он задерживается и дожидается его освобождения. Устройство имеет несколько списков для транзактов, которые ожидают наступления события, связанного с устройством. Каждое устройство имеет список задержки для транзактов, ожидающих освобождения устройства; список отложенных прерываний для транзактов, претендующих на прерывание обслуживания других транзактов; список прерываний, в который входят транзакты, обслуживание которых было прервано. Когда устройство освобождается, следующий владелец устройства выбирается из списков транзатов, ожидающих занятие устройства: первыми выбираются транзакты из списка отложенных прерываний, затем выбираются ранее прерванные транзакты и только потом выбираются транзакты, ожидающие освобождения устройства в обычной очереди в соответствии с приоритетами. [32]