Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
imit_Model_lektsii.doc
Скачиваний:
8
Добавлен:
22.09.2019
Размер:
427.01 Кб
Скачать

Лекция № 11 .

Из программы‚ приведенной в лекции № 10, можно убрать блоки DEPART, QUEUE, SEISE, RELEASE и соответственно переставить метку M на блок ADVANCE. Программа будет работать так же, только у нас не будет статистики.

Пример 11.1: Пусть у нас есть ОП, БП (общая очередь) и многопроцессорная система.

Н еобходимо построить программу с использованием цепи

пользователя. Будем считать, что времена выполнения в

ЦП одной функции распределения, и поэтому можно

использовать многоканальное устройство.

Версия 1:

* Следующий блок задает ёмкость многоканального устройства

1

STORAGE

3

GENERETE

15,5

PRIORITY

1

* Блок GATE проверяет устройство на занятость

GATE SNF

1‚F

M

ENTER

1

ADVANCE

10,7

LEAVE

1

UNLINK

C1,M1

TERMINATE

F

LINK

C1,FIFO

Для чего в программе необходим блок PRIORITY?

Рассмотрим ситуацию, когда в один и тот же момент времени должен появиться транзакт из блока GENERATE(назовём этот транзакт G-транзактом), и в тот же момент транзакт покидает блок ADVANCE(A-транзакт). Пусть в цепи пользователя находится хотя бы один транзакт. Будем считать что G-транзакт стоит в цепи текущих событий после A-транзакта.

Пусть нет блока PRIORITY. A-транзакт освобождает одно место в устройстве и, проходя блок UNLINK, инициирует вывод 1-го транзакта из цепи пользователя(U-транзакт). U-транзакт поступает в цепь текущих событий и занимает там место после G-транзакта. В соответствии с расположением в цепи текущих событий интерпретатор продвигает G-транзакт, и он занимает одно место в устройстве 1.

U-транзакт не может занять место в устройстве, следовательно наша модель будет работать не верно.

Версия 2:

1

STORAGE

3

GENERETE

15,5

GATE SNF

1‚F

M

ENTER

1

ADVANCE

10,7

* Следующий блок подтверждает приоритет транзакта и перемещает

* его в конец цепи текущих событий.

PRIOTITY

PR

BUFFER

LEAVE

1

UNLINK

C1,M1

TERMINATE

F

LINK

C1,FIFO

Блок BUFFER принудительно останавливает движение транзакта. Интерпретатор начинает с начала обрабатывать транзакты, находящиеся в цепи текущих событий.

Связку:

PRIORITY

PR

BUFFER

можно заменить на

BUFFER PR

Пример 11.2:

ЦП в отличие от предыдущего примера имеют свою БП и могут обладать разной производительностью.

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

GENERATE

* Далее параметр 1 получит значение в зависимости от типа команды.

ASSIGN

1,FN$A

PRIORITY

1

QUEUE

1

* В следующем блоке будет определяться свободный процессор. Если все

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

SELECT

2,1,3,0,F,M

N

SEIZE

P2

DEPART

1

ADVANCE

P1,FN$B

RELEASE

P2

UNLINK

P2,N,1

TERMINATE

* Этот блок SELECT определяет минимальную очередь.

* CH – CЧА, даёт текущее содержимое цепи пользователя.

M

SELECT MIN

2,1,3,,CH

LINK

P2,FIFO

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]