Мифы о звукоизоляции Как построить дом из пеноблоков Как построить лестницы на садовом участке Подбираем краску для ремонта Каркасные дома из дерева |
Главная » Применение модели потоковых Применение модели потоковых вычислений с автовалидацией для контроля точности и достоверности данных в распределенных системах сбора и обработки информации Сидоров А.А., Шерешевский Л.А. (leo@industrialauto.ru ) Научно-внедренческая фирма Сенсоры, Модули, Системы Введение Точность и достоверность данных в системах сбора и обработки информации (ССОИ) являются критическими факторами, во многом определяющими безопасность и эффективность функционирования системы в целом. Наряду с непосредственно измеряемыми параметрами в ССОИ широко используются вычисляемые величины, описывающие недоступные для прямых измерений характеристики состояния объекта исследования. В отличие от измеряемых величин, погрешность которых однозначно определяется суммарной погрешностью измерительного тракта, определение точности расчетных параметров на основании имеющихся данных о точности используемых средств измерений представляет нетривиальную задачу. Вплоть до настоящего времени типичной остается ситуация, когда входные данные тщательно метрологически описываются, приборы и устройства, в которых они генерируются, регулярно эталонируются, тестируются и поверяются, но после переноса этих данных в вычислительную систему вся метрологическая информация оказывается совершенно невостребованной и никак в дальнейшем не используется, а получаемые в результате обработки выходные данные либо имеют метрологическую характеристику, достоверность которой вызывает сомнения, либо не имеют ее вовсе [5]. На точность вычисляемых параметров распределенных ССОИ (РССОИ) оказывают влияние три основных фактора: погрешности измерительных трактов (первичных измерительных преобразователей, устройств сопряжения, АЦП, устройств телеметрии и т.п.), вычислительные погрешности (погрешности представления исходных данных в ЭВМ, погрешности округления результатов математических операций), апертурные погрешности (обусловленные несинхронностью измерения различных параметров). Отсутствие универсального метода оценки влияния перечисленных факторов не позволяет в общем случае определить точность расчетных параметров. Стандартные же методы, применяемые при поверке и аттестации измерительных каналов, в большинстве случаев непригодны по причине принципиальной невозможности формирования эталонных величин. В связи с этим актуальной становится задача разработки методики, позволяющей единообразно описывать и учитывать точность как непосредственно измеряемых, так и расчетных параметров. Влияние вычислительных и измерительных погрешностей можно учесть при помощи традиционного анализа погрешностей, но данный метод обладает двумя существенными недостатками. Во-первых, анализ погрешностей производится вручную и для достаточно сложных алгоритмов данных он становится недопустимо трудоемким [1]. Во-вторых, анализ погрешностей выполняется a priori, на основании данных о максимальных границах погрешности отдельных параметров и диапазонах их изменения, а информация о текущих значениях параметров никак не используется. Единственной на сегодняшний день моделью вычислений, позволяющей учитывать одновременно вычислительные и измерительные погрешности, является аппроксиметика [5], в основу которой положено понятие аппроксимета - класса объектов, представляемых триадой A = mSp, где meLL - мантисса аппроксимета, SeN, S>1 - основание аппроксимета, peLL - степень аппроксимета. К сожалению, аппроксиметика не может выступать в роли универсального метода оценки точности и достоверности данных в РССОИ, т.к. она позволяет оценить лишь порядок точности результата, неудобна в работе, в связи с чем не получила практического распространения, не дает возможности учитывать апертурные погрешности. Задача учета апертурных погрешностей в АСУ ТП стала актуальной сравнительно недавно - с внедрением концепции распределенных систем. В централизованных системах предыдущего поколения информация с датчиков поступала непосредственно на вход ЭВМ. В настоящее время применяются более эффективные распределенные иерархические системы, в которых первичная обработка данных на нижнем уровне производится отдельными контроллерами в непосредственной близости от датчикового оборудования, а результаты в цифровом виде пересылаются на верхний уровень для отображения, дальнейшей обработки и анализа. При такой архитектуре измерительные данные могут поступать асинхронно с заметными задержками. К примеру, в системах телеметрии интервал опроса может достигать нескольких десятков секунд. В связи с этим возникает необходимость ответа на вопрос о том, насколько точно о значении расчетного параметра p(t) = f(xi(7), ... xn(t)) можно судить по результатам вычисления f(xi(ti), ... xn(tn)), где tj - реальные моменты измерений x,(t). В результате поисков способа универсального описания и учета точности измеряемых и расчетных параметров была разработана специальная модель потоковых вычислений с автовалидацией (МПВА) и создана ее программная реализация. В основу МПВА положены две фундаментальные концепции организации вычислений: потоковые вычисления (англ. dataflow computations) и вычисления с автовалидацией (англ. self-validated computations). Парадигма потоковых вычислений изначально создавалась для эффективной организации параллельной обработки данных, но позднее выяснилось, что она с успехом может быть использована при решении задач межпроцессной синхронизации по данным и управлению в распределенных вычислительных системах [3]. В потоковых моделях процесс вычислений задается потоковым графом, узлы которого являются пассивными вычислительными элементами (акторами), а дуги представляют каналы передачи данных (токенов). Акторы исполняются по мере прихода к ним всех необходимых токенов (операндов), которые, в свою очередь, возникают либо как исходные данные программы, либо как результат исполнения предыдущих команд [8]. После срабатывания актора токены-результаты пересылается по каналам в другие акторы для дальнейших вычислений. В контексте задачи учета точности расчетных параметров концепцию потоковых вычислений оказалось целесообразно использовать в силу наглядности представления зависимостей параметров и удобства моделирования поведения РССОИ в реальном времени. В свою очередь, модели вычислений с автовалидацией появились как отклик на проблему оценки точности и достоверности информации, используемой в расчетах. Эти модели позволяют производить проверку точности и надежности результатов производимых расчетов автоматически, в качестве составной части самого вычислительного процесса. Известно множество моделей вычислений с автовалидацией: алгебра многозначных величин (R.C. Young, 1931), интервальная арифметика (R. Moore, 1966), обобщенная интервальная арифметика (E. Hansen, 1975), арифметика направленных интервалов (S.M. Markov, 1992), ступенчатая интервальная арифметика (R.J. Lohner, 1993), аффинная арифметика (J.L.D. Comba, J. Stolfi, 1993), модифицированная арифметика гистограмм (D. Berleant, 1993), эллипсоидный анализ (Черноушко, Куржанский, Овсеевич, 1994). В МПВА преимущественно используются идеи и методы интервальной арифметики [7], получившей в практических приложениях более широкое по сравнению с другими моделями распространение в силу своей простоты и универсальности. В данной модели вычислений данные представляются в виде замкнутых интервалов X = [ x, x ] = (xe Щ x < x < x }, а операции над ними производятся согласно правилу ХлШв = (xe Ш\ x=x1®x2, xxeXA, x2eX5}, ®e(+, -, /}. Арифметика токенов Основной единицей информационного взаимодействия в МПВА является токен. При этом токен играет двойную роль: с одной стороны он определяет структуру представления результатов измерений и вычислений, а с другой является неделимой порцией данных, управляющих функционированием потоковой модели. Токен состоит из четырех компонентов: o интервал значения X = [ x, x ], o метка времени T = (teN t < t < t }, o динамическая характеристика ke Ш, o уровень достоверности r e [0,1]. Первый компонент токена представляет собой традиционную интервальную оценку измеряемой или расчетной величины, описываемой токеном. Помимо оценки значения параметра в системах автоматизации также важно знать, какому моменту времени это значение соответствует. Эта информация содержится в метке времени токена. В силу возможности неточного определения момента измерения и необходимости корректного описания результатов вычислений над данными несинхронных измерений в МПВА используется интервальная метка времени. Третий компонент токена - динамическая характеристика - используется для описания максимальной скорости изменения величины, описываемой токеном за период, соответствующий метке времени данного токена. Динамическая характеристика необходима для оценки влияния отдельных операндов на апертурную погрешность результата вычислений. Для этой же цели используется уровень достоверности, задающий степень надежности интервальной оценки. Конкретные механизмы определения точности и надежности результатов вычислений и измерений будут продемонстрированы ниже при описании арифметики токенов и алгоритмов работы потоковых элементов МПВА. Рассмотрим правила выполнения арифметических операций над токенами. Множество всех токенов обозначим символом ~Г. Пусть A и B - токены с совпадающими метками времени: AeT, Bel, Ta = Tb = T>. Результатом выполнения арифметической операции над токенами A и B будет также токен, причем A+B = (Xa+Xb, T0, kA+кв, ГАов), (1) A-B = (Xa-Xb, T0, kA+кв, гаов), (2) A-B = (Xa-Xb, T0, kXl ГАов), (3) А/B = (Xa/Xb, Tq, {k£ \Xb +кв \Xa )/p2(Xb, 0), ГАов), если 0 £Xb (4) где raob = min{rA, rB}, амплитуда интервала X = max{ x , x }, а расстояние между интервалами p(XA, XB) = max{ xA - xB , xA - xB }. В формулах (1)-(4) интервал значения токена вычисляется согласно стандартным правилам интервальной математики. Метка времени результата по очевидным соображениям устанавливается такая же, как и у обоих операндов. Правила определения динамической характеристики продиктованы физическим смыслом данного компонента токена: представляя верхнюю оценку абсолютной величины производной искомого параметра, динамическая характеристика вычисляется по правилам, похожим на обычные правила нахождения производных. Учитывая интервальную природу интервалов значений токенов в формулах (3), (4), X и p(X, 0) используются таким образом, чтобы в итоге получить верхнюю оценку скорости изменения результата. В свою очередь, последний компонент токена формируется в соответствии с естественным предположением о том, что достоверность результата любого действия над двумя операндами не может быть выше минимальной из достоверностей этих операндов. Несложно показать, что операции сложения и умножения для токенов с общей временной меткой обладают свойствами коммутативности и ассоциативности. Как и для интервалов, для токенов не выполняется закон дистрибутивности, однако, если операцию включения определить как A a B <=> XA a XB л TA a TB л kA < kB л rA > rB, то для токенов с общей временной меткой имеет место закон субдистрибутивности, хорошо известный в интервальной арифметике. Для таких токенов также имеет место свойство монотонности по включению: если A, B, C, D e Т, TA = TB = TC = TD и A aB, C a D, то A®C aB®D V®e{+, -, , /}. Для токенов несложно определить основные элементарные функции, например, exp(A) = (exp(XA), Ta, kA-exp( xA ), rA), ln(A) = (ln(XA), Ta, ka/ x±, rA), при Xa > 0. Одна из основных особенностей МПВА - это автоматическая оценка влияния несинхронности операндов на достоверность результата операции. Для этого в модели введена операция приведения токенов к общей временной метке, заключающаяся в снижении уровня достоверности токена при расширении его метки времени. При этом учитывается три фактора: динамическая характеристика токена, ширина интервала значения и разность ширины исходной и расширенной временных меток. Пусть Ae Т - произвольный токен, T1 - некоторая метка времени, причем t1 < tA, tA < t1, т.е. TAaT1. Результатом приведения токена A к временной метке T1 будем называть токен At1 = (Xa, Ta, kA, rA), где rA= Га ( (fl,-, (X) = x - x, a>(T) = t -1. (5) Общей временной меткой для токенов A1, ..., An будем называть метку T(A1, ., An) T(A1, An) = {teN min{tAJ}<t<max{tA~}}. j=1, n - j=1, n Операция приведения токенов к общей временной метке позволяет распространить арифметические операции (1)-(4) на случай произвольных токенов. Для этого достаточно потребовать предварительного приведения к общей временной метке всех токенов, участвующих в вычислении какого-либо расчетного параметра. При проведении вычислений с токенами следует учитывать эффект зависимости результата от порядка проведения вычислений. Так, например, результат вычисления выражения F = A-(B+C) может отличаться от результата цепочки вычислений D = B+C, F = A-D. Однако подобный эффект не является особенностью, характерной только для токенов, он имеет место быть и для интервалов (см., например, [6]). Кроме того, это свойство арифметики токенов никак не отражается на строгости получаемых интервальных оценок - варианты реализации могут влиять лишь на их точность. Принципы работы МПВА Описанная выше арифметика токенов определяет лишь правила выполнения операций, но не описывает логику организации вычислительного процесса. Рассмотрим принципы функционирования модели в целом. Вычислительный процесс в МПВА описывается схемой взаимодействия потоковых элементов - связным ориентированным графом. Данная схема формируется из потоковых элементов, объединенных однонаправленными каналами передачи данных. Потоковые элементы представляют собой автономные функциональные объекты, выполняющие в модели генерацию, преобразование, проверку и уничтожение данных. Потоковые элементы оснащаются портами ввода и портами вывода, к которым подключаются каналы передачи данных. Номенклатура потоковых элементов, использующихся в МПВА, гораздо уже, чем в большинстве потоковых моделей: почти любой алгоритм, использующийся в реальных РССОИ, можно реализовать при помощи всего 5 функциональных элементов - генератора, актора, валидатора, терминатора и канала передачи данных. Генератор и терминатор являются интерфейсными элементами модели. Каждый генератор осуществляет опрос одного параметра и в соответствии с заданными настройками порождает описывающие его токены. Терминатор, наоборот, служит для экспорта результатов работы модели во внешнюю вычислительную среду. Вычислительные элементы МПВА - актор и валидатор - реализуют преобразования токенов согласно заданному алгоритму и проверку соответствия результатов наложенным семантическим ограничениям. В свою очередь каналы, моделирующие реальные сетевые соединения, выполняют функции пересылки токенов между потоковыми элементами с промежуточным их хранением в очереди ограниченной длинны. Все потоковые элементы модели функционируют автономно и асинхронно Важной особенностью МПВА является правило автоматического срабатывания элементов при поступлении всех необходимых данных. Оно позволяет адекватно моделировать асинхронные по своей природе вычисления РССОИ. В отличие от МПВА на сегодняшний день в большинстве эксплуатирующихся систем используется принцип циклического срабатывания, при котором все расчетные параметры вычисляются вне зависимости от темпа поступления измерительных данных. Генератор, выполняющий импорт данных из внешней вычислительной среды, позволяет абстрагировать МПВА от особенностей реализации взаимодействия с конкретными системами АСУ ТП. В общем виде алгоритм функционирования генератора выглядит следующим образом. В начале цикла j-го генерации запоминается значение наблюдаемого параметра xi;0, после чего он опрашивается с фиксированным, заранее заданным периодом At. Результат каждого очередного опроса xj,i сравнивается с предыдущим опросом xj,i-1 и вычисляется разность Ax,;, = xj,i-xj,i-1. В зависимости от режима работы, генерация токена производится либо после K0 циклов опроса, либо при выходе значения измеряемого параметра за заданную апертуру (т.е. когда \х7;г-х7;0\ > D), после K<K0 циклов. Интервал значения X j-го токена определяется диапазоном значений параметра, зарегистрированных за время генерации токена K с учетом всех возможных неточностей, задаваемых параметром Error: x = min (x7i}-Error, x = max (x7i}+Error. i=1,K i=1,K Временная метка T формируется на основе информации о длительности периода генерации токена с поправкой Delay = [Delaymin, Delaymax] на задержку между моментом получения результата опроса параметра генератором и временем, регистрации соответствующей физической величины в объекте контроля и управления: t =tj-Delaymax, t =tj-Delaym,n. Динамическая характеристика k, описывающая максимальную скорость изменения регистрируемого параметра за период генерации токена, определяется в соответствии со следующим выражением: max{ Axjl } i=1,K TVRatio. Здесь TVRatio представляет размерностный коэффициент соотношения использующихся единиц измерения времени и регистрируемого параметра. Иллюстрация принципа формирования токенов генератором приведена на рисунках 1 и 2. Рисунок 1. Определение компонентов токенов, формируемых генератором 2-Error Актор представляет собой самостоятельный фрагмент вычислительной схемы Канторовича (см. [2]). У актора имеется некоторое количество конфигурируемых входных (Ni > 0) и выходных (No > 0) портов, которые служат интерфейсом с каналами передачи данных. Программа работы актора представляется последовательностью унарных и бинарных операций над токенами. При получении всех необходимых данных актор поглощает токены из входных портов, выполняет над ними заданные операции, а результаты также в форме токенов помещает в порты вывода. Валидатор представляет собой автономный элемент, реализующий функции семантического контроля данных. У валидатора имеется некоторое число (Nio > 0) конфигурируемых входных и такое же число выходных портов, которые служат интерфейсом с каналами передачи данных. Как и актор, валидатор срабатывает при получении токенов во все порты ввода и производит последовательную проверку всех семантических ограничений. Семантические ограничения валидатора задаются в виде упорядоченного набора пар вида отношение - коэффициент достоверности : сЧ), где c4ie[0,1], i = 1,M. Коэффициент достоверности отражает степень уверенности составителя модели в справедливости соответствующего отношения в различных режимах функционирования системы. Отношения, которые после подстановки в них соответствующих значений токенов не выполняются, считаются нарушенными, они индицируют присутствие в полученных токенах плохих данных. Уровни достоверности токенов, входящих в состав нарушенного отношения 4j, умножаются на коэффициент достоверности этого отношения сЧу-. После проверки всех отношений токены с уровнями достоверности не превышающими критического порога rmin уничтожаются, а остальные токены переносятся из портов ввода в порты вывода. Терминатор осуществляет уничтожение токенов и экспорт из МПВА представленных ими результатов вычислений. Он как и генератор позволяет абстрагировать модель от деталей взаимодействия с внешними вычислительными системами. Канал в МПВА осуществляет передачу данных между потоковыми элементами и является единственным средством взаимодействия компонентов модели. Канал функционирует независимо от других элементов СВПЭ и параллельно с ними. Каналы осуществляют передачу токенов из выходного порта элемента-источника во входной порт элемента-приемника с промежуточным хранением пересылаемых данных в ограниченной очереди с настраиваемой дисциплиной обслуживания. Программная реализация МПВА С целью практического тестирования разработанной модели была создана ее программная реализация - диагностическое приложение Dataflow SVC Simulator. Данное приложение предназначено для использования в составе АСУ ТП для решения задач оценки точности и достоверности расчетных данных. Оно позволяет сформировать модель, по которой осуществляются вычисления, и исследовать ее поведение на реальных данных без внесения изменений в программную и аппаратную архитектуру системы. Приложение Dataflow SVC Simulator работает в среде операционных систем Windows NT/2000 и в качестве основного источника данных использует SCADA-систему WinCC. На рисунке 3 показан внешний вид приложения и приведен пример потоковой схемы вычислений. file edit view simulation help t 01 1; тли: г Г t d1 1j г t d1 12 Г Г t 01 1j t d 1 12 Г L I t q1 1j г t oij; г Г S 01 Yi у S 01 15 S D1 1j Г S 01 15 S 01 1j w у S 01 15
t oi i: г У 0.00006 t 01 Vt У 0.91800 0.75300 N г
1.00000 N г 1712.001 N г i3 i4j a-u2M o1/o3 i s o+i5 J -o5 Л exp(o6)J в i6-o7 M o8 i7j o9 i8* for help, press fl Result Рисунок 3. Пример потоковой схемы в Dataflow SVC Simulator Практическое применение модели и ее программной реализации Апробирование предложенной МПВА и диагностического пакета Dataflow SVC Simulator проводилось в ряде реальных систем АСУ ТП. В качестве примера одной из успешно решенных проблем можно привести задачу поиск оптимального периода усреднения текущих значений в подсистеме расчета технико-экономических параметров (ТЭП) первого блока Тольяттинской ТЭЦ (ТоТЭЦ). Приведенный расход пара является одним из наиболее важных ТЭП и используется при расчете практически всех остальных показателей. Он находится по следующей формуле [4]: /(273 +1р )* Р i - i i v V * 1п 1пв Дпр = Д (273 +t)* Р i - i где Д - измерянный расход пара (сумма по сечениям), т/ч; t - текущая температура пара (среднее по сечениям), °C; tV, - температура пара при расчетных параметрах, °C; P - текущее давление пара (среднее по сечениям), кгс/см2; PV, - давление пара при расчетных параметрах, кгс/см2; i - текущая энтальпия пара, кДж; iV, - энтальпия пара при расчетных параметрах, кДж; im - текущая энтальпия питательной воды, кДж; i р.т- энтальпия питательной воды при расчетных параметрах, кДж. Определение энтальпии пара и питательной воды, зависящих от температуры и давления, производится с помощью аппроксимации двумерных графиков. Номинальные значения tV и PV также находятся по таблицам. Значения используемых функций в узлах аппроксимации хранятся в базе данных Sybase, а сама процедура аппроксимации вынесена в динамически подключаемую библиотеку DLL. В связи с тем, что расчет номинальных значений вызывает значительную загрузку АРМ, обновление их значений производится значительно реже, чем обновление непосредственно измеряемых значений. В частности, текущие значения расхода, давления и температуры пара усредняются за некоторый период AT, и лишь по истечении этого периода производится расчет номинальных характеристик. Данный подход позволяет снизить загрузку АРМ, но с очевидностью приводит к появлению методической погрешности. Для анализа влияния интервала усреднения на точность результата вычисления приведенного расхода пара был выбран типичный получасовой фрагмент ежесекундного архива значений технологических параметров первого котлоагрегата ТоТЭЦ. В системе Dataflow SVC Simulator была сформирована потоковая схема, соответствующая алгоритму вычисления Дпр в штатном ПО расчета ТЭП. После этого данные ежесекундного архива, усредняемые по периоду AT посредством вспомогательной программы SimulateTEP подавались на вход потоковой схемы. Полученные результаты записывались в файл и в последствии обрабатывались в пакете Excel. Параметры генераторов (оценки максимальных ошибок в значениях соответствующих параметров) задавались согласно паспортным данным, используемого измерительного оборудования и оценкам погрешности аппроксимации Ааппр, предоставленным разработчиками DLL. Эксперименты проводились со значениями AT 15 сек., 30 сек., 60 сек., 100 сек., 300 сек., 600 сек. и 900 сек. Полученные данные указывают на то, что при расчете ТЭП близким к оптимальному значению AT можно считать интервал порядка одной минуты. С одной стороны, более короткий интервал практически не сказывается на точности получаемых интервальных оценок, но приводит к увеличению загрузки процессора (100% в течение приблизительно 1-5 сек. для расчета всех ТЭП, в зависимости от конфигурации компьютера АРМ). С другой стороны, более длинный интервал заметно расширяет результирующий интервал. В соответствии с результатами период обновления ТЭП был установлен равным одной минуте. Заключение В настоящее время проверка точности и достоверности расчетных данных РССОИ в большинстве случаев не производится в силу отсутствия простых и эффективных методов учета измерительных, вычислительных и апертурных погрешностей. Для решения данной задачи была разработана модель потоковых вычислений с автовалидацией, позволяющая оценивать точность и надежность получаемых результатов автоматически в ходе вычислительного процесса. На основе предложенной модели вычислений было создано диагностическое приложение Dataflow SVC Simulator, позволяющее отслеживать упомянутые характеристики расчетных параметров в реальных РССОИ без внесения изменений в программную и аппаратную архитектуру системы. В ходе апробации модели и ее программной реализации в составе подсистемы расчета ТЭП первого блока ТоТЭЦ были получены ценные с практической точки зрения результаты, подтверждающие реальную полезность предложенных методов. СПИСОК ЛИТЕРАТУРЫ 1. Житников В.П., Шерыхалина Н.М. Оценка достоверности численных результатов при наличии нескольких методов решения задачи Вычислительные технологии. 1999. Том 4; №6. С. 77-87. 2. Канторович Л.В. О математической символике, удобной для выполнения машинных вычислений. ДАН СССР. 1957. № 113. С. 738-741. 3. Колосовский А. П. Организация вычислений, управляемых потоками данных, в распределенных системах автоматизации эксперимента: Дисс. на соиск. уч. ст. к. т. н. - Куйбышев: Куйбышевский филиал института машиноведения им. А.А.Благонравова, 1990. - 248с. 4. Отчет о НИОКР ОАОЭиЭ Самараэнерго . Разработка информационной системы АСУ ТП оперативного мониторинга ТЭП станции и отдельных единиц оборудования (котел, турбина) (Тольяттинская ТЭЦ). Самара: Научно-внедренческая фирма Сенсоры, Модули, Системы , 2000. - 51 с. 5. Юровицкий В.М. Аппроксиметика. - М.: ИАА ФинИст, 1995. 223 с. 6. Hyvonen E. Evaluation of Cascaded Interval Function Constraints. - Proceedings of the International Workshop on Constraint-Based Reasoning CONSTRAINT-95, Melbourne Beach, USA, 1995. 7. Moore R.E. The automatic analysis and control of error in digital computing based on the use of interval numbers. Error in Digital Computation, L.B. Rall, Ed., John Wiley and Sons, Inc., New York, 1965, Vol. I, pp. 61-130. 8. Silc J., Robic B., Ungerer T. Asynchrony in Parallel Computing: From Dataflow to Multithreading. - Parallel and Distributed Computing Practices, 1998, Vol.1, No.1, pp. 330. |
© 2024 РубинГудс.
Копирование запрещено. |