Работа с памятью. STR STORAGE 10.. Пример5
Работа с памятью Память ‑ объект языка, который призван имитировать разного рода накопители, используемые в исследуемых системах, в которых может одновременно находиться несколько транзактов. Для каждой применяемой памяти пользователь должен указать ее емкость — объём памяти, определяющий максимальное количество транзактов, которые могут одновременно находиться в ней. Для указания емкости используется оператор описания памяти STORAGE. Как любой оператор описания языка этот оператор помещается между оператором SIMULATE и первым оператором GENERATE. Поле метки содержит имя памяти, а операнд А указывает емкость памяти. Например, для описания памяти STR емкостью 10 единиц используется оператор STR STORAGE 10. В начальный момент времени все памяти пустые. Если в ходе моделирования транзакт обращается к неописанной памяти, ее объем принимается равным — 1 единиц. Оператор ENTER (Занятие памяти). В поле оператора указывается имя памяти, в которую помещается транзакт, в поле - число единиц памяти, занимаемых транзактом при входе. Когда транзакт входит в оператор ENTER, определяется число свободных единиц памяти. Если значение операнда не превышает числа свободных единиц памяти, то число занятых единиц увеличивается на значение операнда . В этом случае транзакт входит в оператор ENTER без задержки. Если же значение операнда превышает число свободных единиц памяти, то транзакт задерживается перед входом в оператор ENTER. Задержанные при обращении к памяти транзакты упорядочиваются по приоритету. Если поле в операторе ENTER пустое, то число занимаемых единиц памяти принимается равным единице. Оператор LEAVE ( Освобождение памяти). В поле оператора указывается имя освобождаемой памяти, в поле - число освобождаемых единиц. В случае пустого поля число освобождаемых единиц памяти принимается равным единице. При входе транзакта в оператор LEAVE количество занятых единиц памяти, указанной в поле , уменьшается на значение операнда . Перед входом в оператор транзакты не задерживаются. Транзакт не должен освобождать большее число единиц памяти, чем их всего занято. Если же транзакт пытается это сделать, то симулятор выдает на печать сообщение об ошибке и прекращает выполнение модели.
В тот момент модельного времени, когда транзакт освобождает память, симулятор просматривает список задержанных у памяти транзактов, если они есть. Для каждого очередного транзакта проверяется, может ли он теперь быть обслужен памятью. Если такая возможность есть, то симулятор перемещает этот транзакт в оператор ENTER, и в результате число занятых единиц памяти соответствующим образом увеличивается. Пример5 Автомобили подъезжают к бензозаправочной станции в среднем каждые 4±2 мин. На станции есть две бензоколонки, каждая из которых используется в среднем 5±1 мин. Автостоянка при станции рассчитана на 4 автомобиля. Если подъехавший автомобиль застает обе бензоколонки занятыми, то он встает в очередь на автостоянку. Если же все места и на автостоянке заняты, то автомобиль проезжает мимо. Промоделировать работу станции за 12 часов.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|