Организация управления сетями хранения и обработки данных на основе непосредственной интерпретации логико-алгебраических спецификаций

ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ

УДК 681.324

С. А. Зинкин

ОРГАНИЗАЦИЯ УПРАВЛЕНИЯ СЕТЯМИ ХРАНЕНИЯ И ОБРАБОТКИ ДАННЫХ НА ОСНОВЕ НЕПОСРЕДСТВЕННОЙ ИНТЕРПРЕТАЦИИ ЛОГИКО-АЛГЕБРАИЧЕСКИХ СПЕЦИФИКАЦИЙ

Аннотация. Рассмотрены основы синтеза управляющих распределенных программ на основе формальных логико-алгебраических спецификаций. Приведены иллюстрирующие примеры, развитые на основе модели использования ресурсов Генриха - Глэссера. Даны логико-алгебраические спецификации для реализации нового подхода к реализации распределенных сетевых программ. Ключевые слова: хранение данных, обработка данных, формальное определение распределенных процессов, логико-алгебраический подход, сети абстрактных машин, распределенные поведенческие модели.

Abstract. The article describes the basics of a synthesis of distributed control programs based on formal logical-algebraic specifications. The author gives examples illustrating the developed Genrich-Glaesser model and introduces the logical-algebraic specifications for a new approach to implementation of distributed network applications.

Key words: data storage, data processing, formal representations of distributed processes, logical-algebraic approach, networks of abstract machines, distributed behavioral models.

Введение

Рассмотрим вопросы построения формальных сетевых спецификаций, описывающих распределение единиц некоторого ресурса R между запросами различных типов. Детализированные спецификации должны обеспечить эффективную реализацию сети программных модулей, управляющих распределенным сетевым ресурсом, например, реплицированными базами данных в предположении, что каждая копия базы данных размещена на собственном внешнем запоминающем устройстве (ВЗУ). На рис. 1 представлена типовая структура составной сети с распределенным ресурсом R. Здесь буквами M и K обозначены маршрутизаторы глобальной сети и коммутаторы локальных сетей соответственно, черными кружками обозначены узлы-единицы ресурса R, на которых установлены системы управления базами данных и к которым подключены обозначенные цилиндрами ВЗУ для хранения информации. Затемненными кружками представлены узлы-источники запросов на использование распределенного ресурса R.

Рис. 1. Реализация распределенного ресурса в вычислительной сети

В основу описания функционирования подобной системы положим показательный пример, предложенный в работах [1-3]. В работах [1, 2] модель использования ресурсов Я для запросов двух типов иллюстрирует предложенные автором сети «предикат-переход», а в работе [3] та же модель описана сетями машин абстрактных состояний. Недостатком рассмотренных моделей является то, что без использования приоритетных механизмов между запросами двух типов время обслуживания е-запросов резко увеличивается с ростом числа 5-запросов и система становится практически неработоспособной. Кроме того, в перечисленных работах не формализована процедурная составляющая модели. Предложенный в работах [4, 5] формализм сетей абстрактных машин (СеАМ) и его расширение (РСеАМ) и реализации данных сетей на базе Б8-технологии, описанной в работах [6, 7], в большей степени учитывают механизмы непосредственно интерпретируемых спецификаций, обеспечивают иерархическое проектирование распределенных программ. СеАМ-выражения строятся на базе суперпозиций операторов а-дизъюнкций, а в выражениях для расширенного варианта РСеАМ дополнительно используются суперпозиции операторов а-итераций из алгебры алгоритмов [8-10], хотя для записи условных и циклических выражений могла быть выбрана и другая подходящая нотация, например из [11].

Условиями в выражениях для модулей СеАМ и РСеАМ называются любые логические формулы с предикатными символами, используемыми в качестве логических переменных. В выражениях могут использоваться кванторы, функциональные символы с предикатом равенства, а сами выражения могут составляться на основе использования логик первого и высших порядков. Кроме того, в качестве логических переменных здесь могут быть использованы квантифицированные операторы выбора 3!, 3!!, V и V!!, к которым

применен оператор «подчеркивание» [4, 5]. При выполнении оператора 3! из области истинности предиката выбирается произвольный кортеж. При выполнении оператора 3!! выбирается единственный кортеж, находящийся

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

Целью настоящей работы является построение сети абстрактных машин, управляющей распределенным сетевым ресурсом хранения R. Детализированные модели функционирования распределенного ресурса R, построенные на основе формализма СеАМ, представлены в работах [12, 13].

1. Построение управляющей сети абстрактных машин

Рассмотрим сеть абстрактных машин, содержащую каузально связанные модули, осуществляющие управление распределенным ресурсом R. Пусть A = {a1, a2, ..., a^j} - множество запросов к модулям ВЗУ, подключенным к сети и представляющим в совокупности распределенный ресурс, состоящий из множества единиц R (и содержащим искомые копии одной и той же базы данных); T - множество «жетонов», или «билетов», дающих возможность получить доступ к единицам ресурса R. Число жетонов nT = |T| совпадает с числом единиц nR = jRj ресурса R. Абстрактная структура моделируемой системы представлена на рис. 2.

На рис. 2 прямоугольниками представлены очереди, представленные в модели унарными предикатами, причем имена очередей использованы далее в качестве индексов соответствующих предикатных имен. Кружками представлены множества запросов, жетонов и единиц сетевого ресурса.

СеАМ-выражением для модуля m0 описывается установка режима обслуживания запроса и его перевод из очередиpgot в очередь pw:

т0 = [(3!xе A)pgot(x)]([(3!m е M)p^g (m)]

Сетевой

Рис. 2. Абстрактная структура сети хранения данных

В выражении для модуля m0 используются следующие предикаты и одна функция:

pgot(x) - унарный предикат, определяющий готовность клиента сети ВЗУ к выдаче запроса x е A;

preg(m) - унарный предикат, задающий один из трех режимов обработки запросов, m е M, M = {e, p, 5}: e - запрос, требующий для своего выполнения всех единиц ресурса R, представленного совокупностью модулей ВЗУ на магнитных дисках; p - запрос, требующий определенную единицу ресурса R, т.е. адресуемый модуль ВЗУ; s - запрос, для выполнения которого достаточно любой единицы ресурса R;

fm(x) - функция, используемая для указания на режим или тип обработки запроса x;

pw(x) - унарный предикат, область истинности которого представляет общую очередь запросов (без различия по типу запросов).

В дальнейшем там, где это не противоречит контексту, мы будем использовать обычное для имитационного моделирования отождествление функций, предикатов или отношений с моделируемыми объектами: например, унарный предикатный символ pgot будем использовать и для именования очереди клиентских запросов, а унарным предикатным символом pw обозначим очередь запросов, для каждого из которых определен режим обслуживания. Таким образом, СеАМ-выражением для модуля m0 описывается установка режима обслуживания каждого запроса и перевод данного запроса из очереди pgot в очередь pw.

В связи с тем, что условия в квадратных скобках не зависят друг от друга, выражение (1) можно представить и в следующем семантически эквивалентном виде:

mo = [((3! x е A)pgot (x))&((3 !m е M)pKg (m))]

В результате выполнения квантифицированных операторов 3! и V формируются истинные или ложные значения условий успешного или не-

успешного их выполнения. Эти условия формируются путем применения оператора «подчеркивание», который при единственности условия в квадратных скобках может опускаться.

Модуль me осуществляет выбор запросов e-типа из очереди pw и формирует из выбранных запросов очередь pwe:

me = [(3! x е A)(pw (x) & (fm (x) = e))]

В выражении для модуля me используются унарные предикаты pw(x) и pwe(x), а также функция pm(x).

Модуль msif выбирает из очереди pw запросы p-типа и помещает их в очередь pwsif

msif = [(3! x е A)(pw (x) & (fm (x) = p))]

При выполнении модуля msi запрос p-типа переходит из очереди pwsif в очередь pwsi со сформированным номером (адресом) единицы ресурса R:

msi = [(3!xе A)pwsif (x)]([(3!i е 1)pirand (i)]

Модуль msi для запросов p-типа формирует номер i единицы ресурса R с помощью оператора (3!i е I)pirand (i) путем псевдослучайного равновероятного выбора одного из значений переменной i (i = 1, 2, ..., nR); здесьpirand(i) -унарный предикат; fnum(x) - унарная функция для сохранения выбранного значения переменной i; pwsif(x) и pwsi(x) - унарные предикаты, области истинности которых задают соответственно одноименные очереди pwsif и pwsi; nR -число единиц ресурса R.

Выражение (5) представимо также и в следующем семантически эквивалентном виде:

msi = [((3! x е A)pwsif (x)) & ((3!i е 1)pirand (i))]

Модуль ms выбирает из очереди pw(x) запросы s-типа и помещает их в очередь pws(x):

ms = [(3! x е A)(pw (x) & (fm (x) = s))]

Модуль mate выполняет необходимые проверки для дальнейшего выполнения запроса e-типа:

mate = [(3!x е A)pwe (x)]([(Vt е T)(^pwork (t))]

([(3!qе {r,w})ptip(q)]([(Vtе T)pav(t)]

({Pate (xt) ^ true. Pav (t) ^ fa186, /oper (t) ^ 4, Pwork (t) ^ true

Pwe

Для обслуживания одного подобного запроса необходимо иметь все жетоны t е T. Оператор

или записи (w) данных. Оператор (Vt е T) pav(t) выбирает все жетоны из области истинности предиката pav(t), совпадающей при (Vt е T)(—pwork (t)) = true с областью его определения. Предикат pav(t) характеризует наличие (при pav(ti) = true) или отсутствие (при pav(ti) = false) свободного жетона ti, позволяющего занять i-ю единицу ресурса R. Напомним, что в результате выполнения квантифицированных операторов 3! и V формируются истинные или ложные значения условий успешного или неуспешного их выполнения. Если все проверки оказались успешными, то далее выбранный запрос (представленный значением предметной переменной x) связывается со всеми жетонами t е T с помощью правила обновления предиката pate (x, t) ^ true . Пусть в данном случае для некоторого запроса aj e-типа с помощью оператора (Vt е T)pav (t) и при (Vt е T)(—pwork (t)) = true были выбраны все жетоны t е T. Поэтому в соответствии с правилом pate (x, t) ^ true в блоке модуля mate будет реально выполнено nT = |T| обновлений предикатаpate:

pate(ap ti) ^ true, pate(ap t2) ^ true, ..., pate(ap t|T|) ^ true, т.е. будет сформировано отношение

{< aj, tl >, < aj, t2>, ., < aj, t\T\ >},

связывающее выбранный запрос aj со всеми жетонами множества T = {tl, t2, ..., t|T|}. Вместо оператора выбора (V t eT) pav (t) можно было бы использовать оператор (V!!tе T)pav(t), но в данном случае в этом нет необходимости, так как при истинном условии (Vt е T)(—pwork (t)) все жетоны были свободны. Далее выполняется nT обновлений предиката pav(t), в результате чего все жетоны становятся занятыми; в результате nT обновлений унарной функции /oper(t) задается «коллективная» операция записи или чтения данных; nT обновлений унарного предиката pwork(t) инициируют рабочие операции для каждого из модулей ВЗУ (затрагивающие, естественно, и другие устройства системы ВЗУ). Далее запрос перемещается из очереди pwe в очередь pue, в которой он остается на все время выполнения коллективной операции в системе ВЗУ.

При выполнении модуля mati запрос p-типа передается из очереди pwsi в очередь pusi при условии наличия соответствующего жетона с требуемым номером:

mati = [(5! х e A)PwSi (x)]

([((3\te T)(pav jt) & (fnum (x) = find jt))) &—((3zE A)pwe(z))]

([—Pwork (t )]([(3 E {r,w}) Ptip (q)]({fati( x) ^ t, Рау (t) ^ fa186,

Pwsi(x) ^ Pusi(x) ^ true, foper (t) ^ q, Pwork (t) ^true}

vRE ) v RE ) v RE ) v RE ).

Здесь для нумерации жетонов используется функция fnd(t). Данный модуль выполняется при условии, что в очереди pwe отсутствуют запросы e-типа, обладающие более высоким относительным приоритетом, чем запросы p-типа. Данное условие задается выражением —i((3z e A)pwe (z)), принимающим истинное значение при пустой области истинности предиката pwe(z). В остальном модуль mati выполняется аналогично модулю mate с инициализацией одной рабочей операции записи или чтения данных в отдельном модуле ВЗУ, номер которого, как единицы ресурса R, задается функцией fnum(x). Функция fati(x) связывает выбранный жетон с выбранным ранее запросом, для чего выполняется обновление функции fati(x) ^ t. В дальнейшем этот факт связи будет использован для корректного возвращения жетона модулем musi.

Модуль mta выбирает запрос s-типа из очереди pws и передает его в очередь pus, в которой он будет пребывать до полного окончания выполнения рабочей операции:

mta = [(3 ! x e A)Pws (x)]

([((3!t E T)PaV (t)) & —((3w E A)Pwe (w)) & —((3z E A)Pwsi (z))]

([——Pwork (t)]([(3 !q E {r, w}) Ptip (q)]({fta (t) ^ x Pav (t) ^

Pws (x) ^ false, Pus (x) ^ true, foper (t) ^ q, Pwork (t) ^ true} v

v RE ) v RE ) v RE ) v RE ).

Запросу s-типа для выполнения нужен один произвольно выбранный

жетон t; для связывания жетона t с запросом x используется функция fta(t), обновляемая с помощью правила fta(t) ^ x. Данная связь в дальнейшем используется модулем mus для корректного возвращения жетона. Запрос s-типа обладает самым низким относительным приоритетом, поэтому он выполняется при условии, что в очередях pwe и pwsi отсутствуют запросы e-типа и p-типа. Это условие задается формулой —((3w e A)pwe (w)) & —((3z e A)pwsi (z)),

включенной в a-условие модуля mta. В остальном модуль выполняет дей-

ствия, аналогичные действиям модулей mate и mati.

Модуль mue фиксирует окончание обслуживания е-запроса, а затем он удаляет данный запрос из очереди pue, если истинно условие —((3t e T)pwork (t)), что свидетельствует об окончании выполнения коллективной рабочей операции во всех модулях ВЗУ :

mue = [((3 ! x e A)Pue (x)) & —((3t e T)pWork (t))]

([(Vt e T) fT (t)]({Pue (x) ^ false, Pgot (x) ^ true, Pav (t) ^ true,

foper

Оператор (Vt e T)Pt (t) выбирает все жетоны, представленные в моде-

ли значениями предметной переменной t в области истинности характеристической функции (унарного предиката) pT. Далее разрываются все связи е-запроса с жетонами путем обновления предиката pate (x, t), а сам запрос после удаления из очереди pue возвращается во входную очередь pgot. Все жетоны t e T освобождаются при выполнении правилаpav(t) ^ true.

Модуль musi возвращает запрос p-типа во входную очередь pgot после завершения выполнения рабочей операции определенным модулем ВЗУ:

musi = [(3!x e A)Pusi(x)]([(3!t e T)( fati (x) = t)]([——Pwork (t)]

({Pusi ( x) ^ false, Pgot ( x) ^ true, Pav (t ) ^ true, fati ( x) ^ undef,

foper

После выполнения последовательности вычислений и проверок трех a-условий p-запрос удаляется из очереди pusi и возвращается во входную очередь pgot. Использованный жетон освобождается (pav(t) ^ true) и его связь с запросом аннулируется (fati(x) ^ undef).

Модуль mus выполняется аналогично предыдущему модулю musi; он фиксирует окончание обслуживания s-запроса, возвращает его во входную очередь pgot, а также возвращает использованный жетон:

mus = [(3! x e A)Pus (x)]([(3!t e T)( fta (t) = x)]([——Pwork (t)]

({Pus ( x) ^ false, Pgot ( x ) ^ true, Pav (t ) ^ true,

foper

Для запуска сети необходимо назначить каждому модулю по агенту-серверу. Агенты-серверы циклически опрашивают a-условия модулей и определяют порядок выполнения запросов. Анализ предметной области и особенности FS-технологии показывает, что модулям m0, msif, msi, musi, ms и mus может быть назначено по nA = |A| агентов-серверов, модулям mati и mta - по nT = |T| агентов-серверов, а модулям me, mate и mue достаточно назначить по одному агенту. Одиннадцать модулей СеАМ взаимодействуют через разделяемое FS-пространство функций и предикатов; часть модулей, связанных с обработкой запросов p- и s-типов, могут выполняться несколькими агентами-серверами, или «мультиагентами-серверами». При реализации каузальных связей модули взаимодействуют, модифицируя и проверяя функции и предикаты (точнее, информационные объекты, представляющие указанные функции и предикаты в FS-пространстве), находящиеся в ограниченных окрестно-

стях Р8-пространства, что может быть использовано для более эффективного размещения данных объектов и повышения эффективности функционирования реализации сети СеАМ в целом.

Основным преимуществом сетей СеАМ является то, что запуск модулей на выполнение реализуется естественно, по мере готовности, или истинности логических условий. При этом ряд модулей, размещенных на различных физических узлах вычислительной сети, может выполняться параллельно (естественный параллелизм). Другие модули могут выполняться, конкурируя из-за ресурсов - функций и предикатов, составляющих Б8-пространство. Взаимодействие модулей, каузально связанных посредством Б8-простран-ства, иллюстрирует рис. 3.

Рис. 3. Организация каузальных межмодульных связей

Здесь стрелки, ведущие от предикатов к модулям, обозначают факты проверки предикатов модулями, а стрелки, ведущие от модулей к предикатам, обозначают факты модификации предикатов модулями.

2. Предотвращение тупиковых ситуаций в сети машин абстрактных состояний при формировании сложных запросов

Формализм СеАМ позволяет осуществлять модификации описаний дискретных систем. В качестве примера рассмотрим систему организации доступа к элементам (единицам) распределенного ресурса, описанную выражениями (1)-(13). К запросам вида е (использование всех единиц ресурса), р (использование предопределенной, заранее проиндексированной единицы ресурса К), s (использование любой свободной единицы ресурса) добавим новый тип запроса, например, к-запрос. В отличие от запроса типа е, запрос типа к собирает жетоны на право использования единиц ресурса по одному до тех пор, пока у него не окажется полный набор жетонов. Затем для запроса типа к выполняется некоторая групповая операция, требующая наличия всех единиц ресурса К. Напомним, что запрос типа е также требует наличия всех свободных единиц ресурса до начала групповой обработки.

Дополнительные модули теЬ таШ, таШц, тиеЬ описываемые приведенными ниже выражениями (14)-(17), позволяют реализовать в модели обслуживание запроса типа к при условии, что запрос типа е обладает более высоким относительным приоритетом по сравнению с к-запросом (без прерывания начавшегося обслуживания). Этот приоритет реализуется путем реализации проверки условия —|(3г е А)рм,е (г) в выражении (15). В свою очередь,

к-запрос должен обладать более высоким относительным приоритетом по сравнению с запросами p и s; для реализации такого приоритета необходимо в условной части модулей (9) и (10) реализовать проверку условия

-(3!(хе A, t е T)pwei(х,t)).

Модуль mei формирует очередь pwei, выбирая к-запрос из очереди pw:

mei = [(3!хе A)(pw(х)&(fm(х) = к))]([-(3!(хе A, tе T)pwei(х,t))]

Здесь связь запроса х с жетоном t в очереди pwei является «фиктивной» -она лишь «декларирует намерение» к-запроса получить жетоны в будущем. В очереди pwei может находиться не более одного к-запроса.

Модуль matei выбирает освобождающиеся жетоны по одному и формирует новую очередь patw, в которой устанавливаются реальные связи выбранного к-запроса с выбираемыми жетонами:

matei = [-(3zе A)pwe(z)]([(V!!tе T)pm(t)]([3!(хе A)pwei(х,t)]

Добавление в сеть модуля matei может привести к тупиковой ситуации в системе, так как при поступлении в очередь pwe е-запроса более высокого приоритета сбор жетонов для к-запроса будет блокирован.

Остальные выражения для дополнительных модулей новой сети имеют следующий вид. Модуль matan переводит к-запрос из очереди patw в очередь puei после сбора всех жетонов. Во время пребывания к-запроса в этой очереди выполняется рабочая операция записи или чтения всеми модулями ВЗУ:

matall = [(Vt е T)-pav (t)]([V(х е Лt е T)patw (х, t)]

([(3!qе {r,w})ptip(q)]([(Vtе T)-pworic(t)]

({patw (х, t) ^ fo1^ foper (t) ^ q, pwoгк (t) ^ true,

puei

Модуль muei возвращает все использованные жетоны и перемещает к-запрос из очереди puei во входную очередь по завершении обслуживания:

muei = [((3! х е A)puei (х)) & -((3t е T)pWotк (t))]([(Vt е T)pt (t)]

({puei (х) ^ false, pgot (х) ^ true, pav (t) ^ true,

foper

Модуль m'ati заменяет в новой сети модуль mati и отличается от него тем, что в его условную часть добавлена проверка условия отсутствия к-запросов в очереди pwei:

m'ati = [(3!хе A)pwsi(х)]([-(3!(хе A, t е T)pwei(х,t))]

([((3!t е T)(puv (t) & (fnum (х) = find (t))) & -((3z е A)pwe (z))]

([-pwo^(t )]([(3! q е {r, w}) ptip (q)]

({fati(х) ^ t, Pаv (t) ^ pwsi(х) ^ pusi(х) ^ true

foper

Модуль mta заменяет в новой сети модуль mta и отличается от него, как

и предыдущий модуль, наличием в его условной части проверки условия отсутствия к-запросов в очереди pwei:

m'ta = [(3!хе A)pws(х)]([-(3!(х е A, tе T)pwei (х, t))]

([((3! t е T)pav (t)) & -((3w е A)pwe (w)) & -((3z е A)pwsi (z))]

([-Pwork(t )]([(3! q е {r, w}) ptip (q)]

Для разрешения тупиковой ситуации без изменения системы приоритетов предлагается следующий способ: при поступлении некоторого запроса е-типа, отмечаемого обновлением предиката pwe (ai) ^ true, запрос к-типа «отдает» захваченные ранее жетоны по одному с помощью модулей matoff и

ma toff :

matoff = [(3х е A)pwe (х)]([3!(х е A,t е T)patw(х,t)]

m'atoff = [3!(хе A,t е T)pwei (х, t)]([pei(х)]

Другим способом недопущения тупиковой ситуации является обеспечение одинаковых приоритетов для e- и к-запросов; в этом случае условная часть выражения (15) не должна содержать проверку условия

-(3zе A)pwe (z), а модули matoff и ma f при этом не нужны:

m'atei = [(3 !t е T) pav (t)]([3!(х е A) pwei(х, t)]

Тупиковая ситуация не возникнет также, если запросу k-типа присвоить относительный приоритет над запросами типа e; при этом условная часть выражения (15) не должна содержать проверку условия —(Bz е A) fwe (z), а в условную часть выражения (8) необходимо добавить проверку высказывания —(B!(Xе A, tе T)Pwei(X,t)):

m'ate = [(B! X е A)Pwe (x)]([(Vt е T)(—Pwork (t))]

([(B!q е {r, w})Ptip (q)]([(Vt е T)Pav(t)]([('Vt е T)Pt (t)]

[—(B!(Xе A, tе T)Pwei(X,t))]

({Pate (X, t) ^true Pov (t) ^ fa186, foPer (t) ^ q,

Pwork (t) ^ true, Pwe (X) ^ false, Pue (X) ^ true} v

vRE ) v RE) v RE) v RE) v RE) v RE).

Следует учитывать, что два последних варианта недопущения тупиковой ситуации изменяют первоначально поставленные условия. Для недопущения тупиковой ситуации можно также просто выполнять запросы e-типа в режиме выполнения запросов k-типа. Выбор приемлемой реализации приоритетных механизмов в сети ВЗУ может быть осуществлен с помощью статистических экспериментов с имитационными моделями, реализованными на основе формализма временных СеАМ.

3. Использование расширенного варианта формализма для описания процессов выбора и обработки сложных запросов в вычислительной сети с копиями базы данных

Опишем формирование и управление выполнением сложных запросов к системе ВЗУ с помощью расширенного варианта формализма РСеАМ. Формализм РСеАМ отличается от формализма СеАМ «усиленной» за счет использования темпоральных, или временных, операций процедурной составляющей модели представления знаний. В приведенных ниже выражениях используются две темпоральные операции - «непосредственного следования» и «возможно одновременного выполнения» действий, обозначенные упрощенно символами «;» и «,» соответственно. Заметим, что в выражениях для модулей заключительные символы «;» являются обычными разделительными межмодульными символами и их следует отличать от упрощенного обозначения операции «непосредственного следования». Наряду с операцией «а-дизъюнкция» здесь разрешено использование операции «а-итерация». Выражения (24)-(27) описывают выполнение запросов e, p и s типов в системе или сети ВЗУ. Модуль РСеАМ состоит из основного модуля mesis и дополнительных фрагментов mA, mB и mC, описывающих обработку запросов типов e, P и s соответственно:

mesis=[—Ps(«)]{[(B!xе A)Pgot(x)]{RE}; (B!mеM)PKg(m);

(Pgot (x) ^ false, fm (x) ^ m, Pw (x) ^ true);

[fm

где ps - стартовый предикат, a - константа; при ps(a) = true модуль начинает, а при ps(a) = false заканчивает свою работу;

mA = ((pw(x) ^ false, pwe(x) ^ true); [(Vie T)p+v(t)]{RE};

(Vt e T)pt (t)(pate (x, t) ^ true, pav (t) ^ false); p“v;

(pwe (x) ^ false, pUe (x) ^ true); [(Vt e T)(—pwork (t))] {RE};

(3!qe {r,w})ptip(q)((Vte T)pt (t)(f0per (t) ^ q);

(Vt e t)pt (t)(pwork (t) ^ true); [—((3t e t)pwork (t))]{RE};

(Vt e T)pt (t)(pue (x) ^ false, pgot (x) ^ true, pav (t) ^ true,

foper

mB = ((pw(x) ^ false, pwsi (x) ^ true, [(3!/'e I)pirand (0]( fnum (x) ^i v rE );

[(3!t e T )(pav (t )& (fnum (x) = find (t))&((3 !q e {r ,w})ptip Ш &

'((3z e A)pwe (z))]{RE}; (fan (x) ^ t, pav (t) ^ false, pwsi (x) ^ false,

foper (t) ^ q; pusi (x) ^ true);

[ pwork (t)] {R } ; pwork (t) ^ true; [ pwork (t)]{R } ;

(pusi (x) ^ false, pgot (x) ^ true, pav (t) ^ true,

foper

me = ((pw (x) ^ false, pws (x) ^ true);

[((3!te T)pav(t)) &((3!qe {r,w})ptip(q)) &—(3ze A)pwe(z) &

&—(3w e A)pwsi (w)]{RE}; (fta (t) ^ x, pav (t) ^ false, pws (x) ^ false, foper (t) ^ q, pus (x) ^true};

[ pwork (t)]{R }; pwork (t) ^ true; [ pwork (t)]{R };

(pus (x) ^ false, pgot (x) ^ true, paw (t) ^ true,

foper

В выражениях (24)-(27) используются функции и предикаты, определенные ранее для выражений (1)-(13). Для выполнения модуля mesis необходимы

nA=|A| агентов-серверов {a^s, a^e^,..., a^n},;} , образующих одно семейство.

Во фрагменте mA записи p^ и pav означают блокирование и разблокирование предиката pav в процессе выполнения заданного фрагмента модуля.

E

При выполнении а-итерации [(Vi е T)pav (t)]{Ä } сначала проверяется истинность условия в квадратных скобках. Если оно ложно, то предикат pav(t) разблокируется, а текущий агент-сервер снова становится в очередь за правом выбора предиката pav(t). Если же условие (V te T)pav(t) истинно, то происходит выход агента-сервера из цикла ожидания, и он выполняет все последующие

действия, блокируя предикат pav(t) до тех пор, пока не встретится символ pav .

Агенты-серверы (в совокупности составляющие «мультиагент»-сервер), интерпретируя выражения (24)-(27), конкурируют друг с другом из-за используемых ресурсов - функций и предикатов, составляющих FS-пространство. На отдельных интервалах времени агенты-серверы работают параллельно (при этом реализуется естественный параллелизм).

Заключение

Решение поставленной задачи показывает, что сети абстрактных машин обладают большими выразительными способностями в представлении распределенных асинхронных систем, в том числе способностями представления локального управления, параллельных, конфликтных и асинхронных событий. Возможность иерархического моделирования на их основе и неинтер-претированность сетевой модели предоставляет возможность описания системы на различных уровнях абстракции и системной иерархии. Данные сети обладают способностями к реконфигурации и самомодификации, что существенно расширяет их функциональные возможности. Используемый формализм соответствует такой тенденции создания сетевого программного обеспечения, в котором стираются грани между сетевой операционной системой, распределенной системой управления базой данных и распределенным приложением, а проект «видим» разработчику на всех его этапах. Предлагаемые модели и методы могут быть использованы в качестве основы для создания новой объектно-ориентированной сетевой технологии проектирования распределенных систем хранения и обработки данных на основе согласованных взаимодействий объектов через общее пространство - коммуникационную среду или общее пространство информационных объектов.

Предложенные методы пригодны для формального описания распределенных приложений, создаваемых на базе известных технологий построения распределенных систем, а также систем управления сетями: Remote Method Invocation, Jini, JavaSpaces, Java Management Extensions, Common Object Request Broker Architecture, JXTA [14] и других технологий, в том числе технологий агентно-ориентированного программирования.

Список литературы

1. Genrich, H. J. Predicate/transition nets / H. J. Genrich // Lecture Notes in Computer Science. Springer-Verlag. - 1986. - V. 254. - P. 207-247.

2. Genrich, H. J. Equivalence transformations of PrT-Nets // Lecture Notes in Computer Science. - Springer-Verlag, 1990. - V. 424. - P. 179-208.

3. Glaesser, U. Combining abstract state machines with predicate/transition nets / U. Glaesser // Lecture Notes in Computer Science. Springer-Verlag. - 1997. - V. 1333. -P. 108-122.

4. Зинкин, С. А. Сети абстрактных машин высших порядков в проектировании систем и сетей хранения и обработки данных (базовый формализм и его расширения) // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 3. - С. 13-22.

5. Зинкин, С. А. Сети абстрактных машин высших порядков в проектировании систем и сетей хранения и обработки данных (механизмы интерпретации и варианты использования) / С. А. Зинкин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 4. - С. 37-51.

6. Зинкин, С. А. Реализация барьерной синхронизации и управление процессами в виртуальном сетевом дисковом массиве / С. А. Зинкин // Информационные технологии. - 2008. - № 12. - С. 22-29.

7. Зинкин, С. А. Элементы новой объектно-ориентированной технологии для моделирования и реализации систем и сетей хранения и обработки данных / С. А. Зинкин // Информационные технологии. - 2008. - № 10. - С. 20-27.

8. Глушков, В. М. Алгебра. Языки. Программирование / В. М. Глушков, Г. Е. Цейтлин, Е. Л. Ющенко. - Киев : Наукова думка, 1978. - 320 с.

9. Глушков, В. М. Методы символьной мультиобработки / В. М. Глушков, Г. Е. Цейтлин, Е. Л. Ющенко. - Киев : Наукова думка, 1980. - 252 с.

10. Капитонова, Ю. В. Математическая теория проектирования вычислительных систем / Ю. В. Капитонова, А. А. Летичевский. - М. : Наука, 1988. - 296 с.

11. Лавров, С. С. Программирование. Математические основы, средства, теория. -СПб. : БХВ-Петербург, 2001. - 320 с.

12. Волчихин, В. И. Абстрактное и структурное моделирование сетей хранения и обработки данных / В. И. Волчихин, С. А. Зинкин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 4. - С. 3-18.

13. Волчихин, В . И . Логико-алгебраические модели и методы в проектировании функциональной архитектуры распределенных систем хранения и обработки данных / В. И. Волчихин, С. А. Зинкин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2012. - № 2. - С. 3-16.

14. Дейтел, Х. М. Технологии программирования на Java 2. Книга 2. Распределенные приложения / Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри - М. : Бином-Пресс, 2003. - 464 с.

Зинкин Сергей Александрович доктор технических наук, профессор, кафедра вычислительной техники, Пензенский государственный университет

Zinkin Sergey Alexandrovich Doctor of engineering sciences, professor, sub-department of computer engineering, Penza State University

E-mail: zsa49@yandex.ru

УДК 681.324 Зинкин, С. А.

Организация управления сетями хранения и обработки данных на основе непосредственной интерпретации логико-алгебраических спецификаций / С. А. Зинкин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2012. - № 4 (24). - С. 3-17.