Помощь в написании студенческих работ
Антистрессовый сервис

Прерывание работы устройства

РефератПомощь в написанииУзнать стоимостьмоей работы

Детали поступают в цех обработки в среднем каждые 5±2 минуты. Мастер обрабатывает детали в среднем 4±1 минуту. Каждые 30±5 минут приходит срочный заказ на обработку деталей второго типа, для обработки которых мастеру требуется еже 10±3 минуты. Детали второго типа имеют безусловный приоритет. Если в момент прихода детали второго типа мастер обрабатывает деталь первого типа, то он прерывает свою… Читать ещё >

Прерывание работы устройства (реферат, курсовая, диплом, контрольная)

Блок PREEMPT — захватить устройство. Транзакт, попадающий в блок PREEMPT, захватывает устройство, имя которого указано в поле A блока. Если при захвате устройства оно свободно, то транзакт просто занимает устройство, в этом случае блок PREEMPT работает аналогично блоку SEIZE. Если при входе транзакта в блок PREEMPT устройство занято другим транзактом, то в этом случае транзакт входит в блок PREEMPT, а устройство прерывает обслуживание занимающего его транзакта и переключается на обслуживание транзакта, вошедшего в блок PREEMPT. При этом из состояния «занято» устройство переходит в состояние «захвачено». Когда транзакт, захватывающий устройство, освободит его, устройство возобновит прерванное обслуживание другого транзакта и перейдет в состояние «занято».

Если прерываемый транзакт в момент прерывания находится в блоке ADVANCE, то, начиная с момента прерывания, отсчет времени пребывания транзакта в этом блоке прекращается до тех пор, пока не будет восстановлено обслуживание транзакта. Таким образом, в момент восстановления прерванного обслуживания транзакта время, оставшееся этому транзакту до выхода из блока ADVANCE, такое же, каким оно считалось непосредственно в момент прерывания. Такое прерывание обслуживания называется прерыванием с последующим дообслуживанием.

Все транзакты, задержанные при обращении к устройству, упорядочиваются по приоритету. Кроме поля A, в блоке PREEMPT могут быть заданы операнды B, C, D и E. Операнд B записывается в виде обозначения PR, задающего приоритетный режим работы блока. В этом режиме транзакт захватывает устройство, если оно свободно или обслуживает менее приоритетный транзакт. Прерывание обслуживания менее приоритетного транзакта происходит с последующим до-обслуживанием.

Для определения последующего движения прерванных транзактов используются другие операнды. В поле C может быть указана метка какого-либо блока, на который будет передан прерванный транзакт. При этом прерванный транзакт продолжает претендовать на данное устройство. В поле D блока может быть задан номер параметра транзакта. Тогда, если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток времени обслуживания (время дообслуживания), и полученное значение помещается в параметр, заданный в поле D. Прерванный транзакт при этом будет послан в блок, указанный в поле C. Прерванный транзакт продолжает претендовать на данное устройство. Если в поле E блока записано обозначение RE, то прерванный транзакт больше не будет претендовать на данное устройство.

Необходимо помнить, что если поле E не задано, а поле C указано, то прерванный транзакт не может быть уничтожен до тех пор, пока он явно не освободит устройство (он должен пройти либо блок RELEASE либо блок RETURN). Чтобы не забывать явно освободить устройство, обычно поля C и E применяют одновременно.

Блок RETURN —освободить устройство. Этот блок используется в паре с блоком PREEMPT. Если транзакт захватил устройство посредством блока PREEMPT, то освободить его он может только в блоке RETURN. Имя освобождаемого устройства задается в поле A блока.

Пример 2.10.

Детали поступают в цех обработки в среднем каждые 5±2 минуты. Мастер обрабатывает детали в среднем 4±1 минуту. Каждые 30±5 минут приходит срочный заказ на обработку деталей второго типа, для обработки которых мастеру требуется еже 10±3 минуты. Детали второго типа имеют безусловный приоритет. Если в момент прихода детали второго типа мастер обрабатывает деталь первого типа, то он прерывает свою работу, текущую деталь передает для доделки своему ученику, а сам принимается за обработку вновь поступившей детали второго типа. Ученику требуется в два раза больше времени на обработку (или доработку) детали. Если у мастера скапливается очередь из деталей больше двух, то вновь приходящие детали первого типа также передаются на обработку ученику. Детали второго типа обрабатываются только мастером. Если в момент прерывания обработки детали первого типа мастеру не хватило меньше 30 секунд, то считается, что деталь обработана.

Промоделировать работу мастера и ученика в течение 4-х часов. Проверить, не будет ли скапливаться очередь у ученика. Определить загрузку мастера и ученика.

Для моделирования процесса обработки деталей учеником введем переменную VAR (чтобы увеличить время обработки в два раза).

Функция OBSLU используется для определения времени обработки деталей первого типа. Данная функция описывает равномерный закон распределения на интервале от 3 до 5.

VAR VARIABLE P1#2 OBSLU FUNCTION RN1, C2 0,3/1,5.

; работа мастера с деталями первого типа GENERATE 5,2; поступление деталей.

ASSIGN 1, FN$OBSLU; определение времени обработки.

TEST LE Q$MAS, 2, UCH; если скопилась очередь — деталь; направляется к ученику.

QUEUE MAS SEIZE MAST DEPART MAS ADVANCE P1 RELEASE MAST TERMINATE.

; работа мастера с деталями второго типа GENERATE 30,5,1.

QUEUE MAS.

PREEMPT MAST, PR, UCH, 1, RE;прерванная деталь 1-го типа; направляется к ученику.

DEPART MAS ADVANCE 10,3 RETURN MAST TERMINATE.

; работа ученика.

UCH TEST G P1,0.5,UXOD; если время дообработки; меньше 30 секунд, то.

; деталь не обрабатывается SEIZE UCHEN.

ADVANCE V$VAR RELEASE UCHEN UXOD TERMINATE; таймер

GENERATE 240 TERMINATE 1 START 1.

Организация циклов Для организации циклов используется блок LOOP. Поле A этого блока содержит имя или номер параметра, который выполняет функцию счетчика циклов. Каждый раз при поступлении транзакта в блок LOOP из указанного параметра вычитается единица, и полученная разность снова записывается в данный параметр. Как только значение параметра становится равным нулю, транзакт направляется в блок, следующий за блоком LOOP. Если значение параметра остается положительным, то транзакт направляется к блоку, указанному в поле В .

Например, если необходимо, чтобы через блок ADVANCE все транзакты проходили по 10 раз, то этот процесс можно промоделировать следующим образом.

ASSIGN 1,10.

POVT ADVANCE 34,12 LOOP 1, POVT.

Работа с группами В языке рассматривается два типа групп: Группы Транзактов (Transaction Groups) и Числовые Группы (Numeric Groups). С группами связаны следующие СЧА:

GN$ - количество элементов в Числовой Группе; GT$ - количество элементов в Группе Транзактов. Рассмотрим блоки для работы с указанными группами.

Блок JOIN добавляет элемент в группу. В поле, А блока указывается имя группы. Если поле В не указано, то рассматривается Группа Транзактов и блок добавляет транзакт в группу А. Если используется поле В, то оно имеет числовое значение, которое добавляется в качестве элемента в Числовую Группу А. Если транзакт или число уже является элементом группы, то никаких действий не производится.

Блок ALTER предназначен для изменения приоритета или значения параметра у элементов Группы Транзактов. Блок имеет следующую структуру:

ALTER O A, B, C, D, E, F, G.

Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? — ??, ЇGE? — Ї??, ЇMAX?, ЇMIN?.

Поле, А блока содержит имя Группы Транзактов, которая будет тестироваться. Поле В содержит максимальное число тестируемых транзактов (по умолчанию просматривается вся Группа). В поле С указывается имя или номер параметра транзакта, который должен быть изменен. Если значение этого поля равно PR, то изменяться будет приоритет транзакта. Поле D содержит значение, которое должно быть присвоено параметру, указанному в поле С. Поле Е имеет значение PR или номер/имя параметра транзакта, который проверяется на условие. Поле F содержит значение, с которым сравнивается параметр из поля Е. Поле G содержит имя блока. Поля Е, F и G ис-пользуются только совместно с полем O.

Если поле O пропущено, то В транзактам из группы, А в пара-метр С записывается значение D. Например:

ALTER Spis, 5, First, 3.5.

Здесь для пяти первых транзактов из группы Spis в параметр с именем First запишется значение 3.5.

Если поле O задано, то в параметр С записывается значение D только в том случае, если между Е и F выполняется заданное условие отношения. Из Группы Транзактов выбираются последовательно элементы до тех пор, пока не найдется В транзактов, для которых выполнится заданное условие. Транзакт, вошедший в блок ALTER, переходит к блоку G, если не находится В транзактов, для которых выполняется условие тестирования. Например:

ALTER NE Bin, 10, Price, 49.95,Part, 99.95,Out.

Здесь, когда активный транзакт попадает в блок ALTER, в Группе Транзактов с именем Bin ищутся транзакты, у которых значение параметра Part не равно 99.95. Для первых десяти найденных транзактов значение параметра Price устанавливается равным 49.95. Если в группе не находится десяти транзактов с указанным условием, то активный транзакт напрвляется к блоку Out. В противном случае активный транзакт переходит к следующему блоку.

Если в поле О используются значения МАХ или MIN, то поле F не используется, а значение параметра, указанного в поле Е ,.

должно быть равно максимальному (минимальному) значению этого параметра для всей группы.

Блок EXAMINE используется для проверки элементов группы. В поле, А блока указывается имя группы. Если поле В не указано, то рассматривается Группа Транзактов, если используется поле В, то оно задается числом и рассматривается Числовая Группа. Если поле В не указано, то проверяется, является ли активный транзакт элементом группы А. Если является, то он направляется к следующему за EXAMINE блоку, если нет — то транзакт направляется к блоку, имя которого указано в поле С. Если задано поле В, то проверяется, является ли заданное в этом поле число элементом группы. Если является, то активный транзакт направляется к следующему за EXAMINE блоку, если нет — то транзакт направляется к блоку, имя которого указано в поле С .

Блок REMOVE исключает элементы группы по заданному условию. Блок имеет следующую структуру:

REMOVE O A, B, C, D, E, F, G.

Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? — ??, ЇGE? — Ї??, ЇMAX?, ЇMIN?.

В поле, А блока указывается имя группы. Тип группы определяется полем С. Если поле С не задано, то рассматривается Группа Транзактов. Если поле С задано, то рассматривается Числовая группа, а в поле С указывается число, которое должно быть исключено из группы. Если указанное число найдено в Числовой группе, определен-ной полем А, то оно исключается из группы, а активный транзакт направляется к следующему за REMOVE блоку. Если число, указанное в поле С не является элементом группы и используется поле F, то активный транзакт направляется к блоку, имя которого указано в F. Для Числовых Групп используются только поля А, С и F .

Если рассматривается Группа Транзактов и не определены поля В, D и E (режим самоисключения), то из группы исключается активный транзакт (тот транзакт, который вошел в блок REMOVE). простейший пример:

REMOVE Self.

Транзакт, вошедший в блок REMOVE, исключается из Группы Транзактов с именем Self, если он является членом этой группы.

В режиме тестирования группы оператор условия может быть задан или нет. Если определен оператор условия О, то он задает отношение между атрибутом транзакта или его приоритетом (поле D) и значением, которое определено в поле E. Из Группы Транзактов исключаются все (по умолчанию) или В штук транзактов, для которых выполняется заданное условие. Если оператор условия не определен, но заданы поля D и E, ищутся и исключаются те транзакты, у которых значение атрибута поля D равно значению E. Если в операторе условия заданы значения MAX или MIN, то исключаются транзакты с максимальным или минимальным значением атрибута D.

В поле В указывается максимальное количество элементов, исключаемых из группы (по умолчанию — все). Если поле D не задано, то просто В штук транзактов исключается из группы.

В поле F указывается имя блока, куда направляется активный транзакт, если.

  • ? в режиме самоисключения активный транзакт не является элементом группы;
  • ? в режиме тестирования группы не исключен ни один транзакт;? в режиме тестирования группы количество исключенных

транзактов не достигло В .

Если поле F не определено, то активный транзакт всегда переходит к следующему блоку.

Например:

REMOVE G 3,10,20,11.4,Jump.

Здесь в Группе Транзактов 3 ищутся транзакты, у которых значение 20-го параметра превышает 11.4. Первые 10 транзактов, для которых выполняется указанное условие, исключаются из группы. Если 10 транзактов не найдено, то активный транзакт направляется к блоку Jump. В противном случае, транзакт переходит к следующему блоку.

Блок SCAN предназначен для поиска информации в Группе Транзактов для присвоения ее активному транзакту. Блок имеет следующую структуру:

SCAN O A, B, C, D, E, F.

Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? — ??, ЇGE? — Ї??, ЇMAX?, ЇMIN?.

В поле, А блока указывается имя группы. В поле В содержится имя тестируемого параметра или PR (если необходимо тестировать приоритет транзакта). В поле С содержится значение, которое сравнивается с В по заданному условию. В поле D указывается имя параметра транзакта группы, чье значение будет присваиваться активному транзакту. Поле E содержит имя параметра активного транзакта, в который должно быть записано значение параметра D. В поле F указывается имя блока, к которому направляется активный транзакт, если по заданному условию в группе не найдено ни одного транзакта.

Блок SCAN находит первый транзакт в Группе, который удовлетворяет заданным условиям, и значение его атрибута, определенного в поле D, присваивает атрибуту активного транзакта, определенного в поле E. В блоке обязательными являются поля D и E. Если не указаны поля В, С и условный оператор (никакого тестирования не производится), то из Группы выбирается первый же транзакт.

Если не используется условный оператор, но используются поля В и С, то в группе ищется транзакт, у которого значение атрибута В равно С .

Например:

SCAN E Lot, Part, 127, Price, Sum, Phone.

В данном примере, как только активный транзакт поступает в блок SCAN, в Группе Транзактов Lot ищется транзакт со значением атрибута Part равным 127. Если такой транзакт находится, значение его атрибута Price, присваивается атрибуту Sum активного транзакта. Если в группе не найдено транзакта с заданным условием, то активный транзакт направляется к блоку Phone.

Показать весь текст
Заполнить форму текущей работой