Метод описания процессов выполнения заданий в мультипрограммных и мультипроцессорных системах - page 5

параметрические структуры задействованы в этой схеме. Блок генера-
тора потока выдает поток позадачно, помещая каждую задачу в пара-
метр ВХОД_ЗАДАЧИ. Аналогично блок CPU взаимодействует с бло-
ком диспетчера с помощью параметров ЗАДАЧА_НА_CPU и ЗАДА-
ЧА_ИЗ_CPU.
В блочно-параметрической схеме (рис. 2,
б
), отражающей потоко-
вую схему с рассредоточенными функциями, распределение функций
привело к изменению состава параметров схемы.
Для описания процессов в каждом блоке будем опираться на про-
цессную концепцию описания функционирования систем, изложен-
ную в работе [8]. Однако скорректируем метаязык изменением в нем
некоторых операторов и служебных слов с учетом рассматриваемой
предметной области [9]. Понятие “агрегат” по-прежнему соответству-
ет концепции и означает блок, в котором развивается один замкнутый
процесс [8]. Поскольку в предлагаемых ниже описаниях использова-
ны лишь агрегаты, понятие “инициатор” опущено. Веденные измене-
ния не меняют концепцию в целом и хорошо воспринимаются при
чтении программы. Программа на псевдоязыке, реализующая блочно-
параметрическую схему с сосредоточенными функциями приведена
ниже:
ОБЩИЕ ОПИСАНИЯ
тип
W
: вектор
(ОБЪЕМ, НОМЕР_ОЧЕРЕДИ, ЧИСЛО_КВАНТОВ);
ресурс
— ПАМ(Q);
тип : массив очередей
ОЧЕРЕДЬ (1 – N);
КВАНТ = K;
перед моделированием определить значения Q, K, N
процесс–агрегат ГЕНЕРАЦИЯ ПОТОКА ЗАДАЧ;
НАЧАЛО
: создать
ЗАДАЧА
типа
W;
определить параметры вектора ЗАДАЧА;
ВХОД_ЗАДАЧА := ЗАДАЧА;
ждать условие
ВХОД_ЗАДАЧА = 0;
перейти на метку
НАЧАЛО;
конец описания процесса–агрегата ГЕНЕРАЦИЯ ПОТОКА ЗАДАЧ;
процесс–агрегат ДИСПЕТЧЕР;
НАЧАЛО:
ждать условие 1
(ресурс ПАМ достаточен для объема ВХОД_ЗАДА-
ЧА(ОБЪЕМ))
с переходом на метку
ЗАППАМ,
условие2 (
ЗАДАЧА_ИЗ_CPU
6
=
0)
с переходом на метку
ОБРАБ;
ЗАППАМ:
занять ресурс
ПАМ
объемом
ВХОД_ЗАДАЧА (ОБЪЕМ):
ВХОД_ЗАДАЧА: = 0;
перейти на метку
НАЧАЛО;
ОБРАБ: ЗАДАЧА_ИЗ_CPU (ЧИСЛО_КВАНТОВ): = ЗАДАЧА_ИЗ_CPU (ЧИ-
СЛО_КВАНТОВ) – 1;
ЗАДАЧА_ИЗ_CPU (НОМЕР_ОЧЕРЕДИ) := n: = ЗАДАЧА_ИЗ_CPU (НО-
МЕР_ОЧЕРЕДИ) +1; если n > N то n := N;
если
ЗАДАЧА_ИЗ_CPU(ЧИСЛО_КВАНТОВ) = 0 то освободить ресурс ПАМ
на объем
ЗАДАЧА_ИЗ_CPU (ОБЪЕМ
) иначе записать
ЗАДАЧА_ИЗ_CPU
в
очередь
ОЧЕРЕДЬ(n);
ЗАДАЧА_ИЗ_CPU = 0;
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2014. № 1 125
1,2,3,4 6,7,8,9,10,11,12
Powered by FlippingBook