WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

загрузка...
   Добро пожаловать!

Pages:     | 1 || 3 |

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

Также в процессе исследования и оценки производительности современных СВУП было установлено, что существующие системы обладают слабой производительностью и устаревшим принципом взаимодействия с программистом.

Данную проблему предлагается решить за счет использования оригинальных технических нововведений для обработки текста.

Основные потери производительности системы ВУП происходят на этапе обработки текста программы, поэтому необходимо усовершенствовать именно процессы компиляции и ввода/вывода. Для обеспечения эффективной компиляции в работе предлагается оригинальная схема устройства конечного автомата и синтаксического анализатора для разбора конструкций целевого языка программирования. Для повышения скорости ввода и вывода предлагается использовать новый метод чтения и записи текста.

Только за счет использования специально сконструированных для нужд СВУП методов обработки текста возможно достичь значительного роста производительности СВУП в целом.

Для обеспечения поддержки параллельных вычислений в СВУП предлагается метод внедрения элементов системы автоматизированного распараллеливания в архитектуру системы СВУП.

В работе проводится анализ существующих систем автоматизированного распараллеливания, и доказывается, что прямое слияние СВУП и системы распараллеливания невозможно, однако возможно распараллеливание вычислений на уровне функций с использованием программной библиотеки параллельных вычислений. Добавление данной функциональности значительно повысит производительность сетевых функций, и при правильном делении задач, может быть обеспечен многократный прирост скорости выполнения функции.

В третьей главе описанные выше методы повышения эффективности СВУП рассматриваются с технологической точки зрения, описывается вариант реализации каждого метода.

Для обеспечения в СВУП возможности автоматизированной модернизации программного кода АС, предложен метод поддержки всех типов данных, разрешенных в языке программирования, построенный на основе языкового расширения языка программирования Си и сложно-связного дерева для хранения имен типов, управление которым обеспечивает компилятор ВУП.

Дерево типов данных должно управляться непосредственно компилятором и представлять собой сложно-связный список, который содержит всю информацию о типе, а также об области видимости, которая определяется положением объявления (определения) переменной или функции в программе (рис. 4).

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

Для повышения гибкости передачи данных по сети был предложен алгоритм вычисления контрольный суммы, который позволяет автоматически рассчитывать идентификаторы сетевых функций, передавать данные адресованные через одинарные указатели и имеющие сложные типы данных. Формула суммы (3) заимствована из зарекомендовавших себя приложений сжатия данных и передачи данных по сети, что определяет устойчивые математические показатели данной суммы – низкую вероятность коллизии. Сумма, определяемая формулой (3) состоит из двух компонент (1) и (2). Первая компонента учитывает только сумму числовой последовательности, а вторая вводит в сумму весовой параметр, учитывающий порядок каждого числа, вместе они образуют итоговую контрольную сумму. В формулах суммы за X принимается символьная последовательность, содержащая объявления прототипа функции, а M принято равным 216 (для того чтобы итоговое число не выходило за рамки в 32-разрядного регистра).

l a(k,l) = ( X ) mod M (1) i i=k l b(k,l) = ( (l - i + 1)X ) mod M (2) i i =k s(k,l) = a(k,l) + 2 b(k,l) (3) Для повышения производительности систем ВУП, была предложена новая схема организации конечного автомата компилятора и новый метод ввода/вывода текста программы. В основе этих нововведений лежит синтаксический анализатор оригинальной конструкции, который обеспечивает 10 кратный прирост в производительности по сравнению с компиляторами, созданными при помощи средств автоматизированной разработки компиляторов, используемых в существующих СВУП. В главе приводится схема организации конечного автомата и описывается алгоритм ввода/вывода текстовых данных.

Для реализации поддержки многопроцессорных вычислений в СВУП предлагается использовать дополнение к языковому расширению с одной стороны и поддержку библиотеки параллельных вычислений с другой стороны. В работе практически доказывается возможность распараллеливания вычислений в СВУП на уровне функций.

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

В четвертой главе рассматривается реализация, описанных выше методов в виде собственной разработки - системы вызова удаленных процедур CRPC (Сbased remote procedure call). Главной отличительной чертой системы является поддержка языка программирования Си, что упрощает и ускоряет разработку Рис. 5. Технология модернизации АС с использованием усовершенствованной СВУП распределенных приложений и обеспечивает возможность модернизации программного кода АС.

Система CRPC содержит два программных компонента:

- компилятор сrpcc (CRPC wrapper-compiler), - программную библиотеку (CRPC library).

Центральным звеном является компилятор-оболочка, который читает поданный на вход программный код, и расширяет его специальным командами передачи данных по сети. При этом он поддерживает все встроенные в язык программирования Си типы данных и все типы, определяемые в программе, то есть он поддерживает все множество типов данных. Система позволяет передавать данные, адресуемые через указатели, любого типа, используя специальную языковую конструкцию.

Главной программой системы является программа crpcc. Она представляет собой компилятор языка Си с ограниченной поддержкой синтаксиса, который выступает оболочкой по отношению к обычному компилятору GCC-C. Программа crpcc построена на основе синтаксического анализатора оригинальной конструкции, что необходимо для уменьшения времени работы оболочки по сравнению со временем работы основного компилятора. Стояла задача сделать оболочку почти «незаметной» во всем процессе компиляции (временная оценка эффективности работы компилятора приведена в главе).

Компилятор crpcc расширяет синтаксис языка Си новыми модификаторами:

1. remote – новый квалификатор класса памяти, используемый при объявлении удаленных функций (удаленное исполнение);

2. local – новый квалификатор класса памяти, используемый при объявлении функций, которые будут вызываться по сети, и выполняться локально (серверное исполнение);

3. attribute ((format_ptr (…) )) – новый атрибут функции, позволяющий связывать параметры-указатели с соответствующими параметрами, содержащими размер;

4. in – новый модификатор, который предписывает системе передавать данные, адресованные отмеченным параметром, только на сервер и не получать их назад (применим только к параметрам функций);

5. out – новый модификатор, который предписывает системе не передавать данные, адресованные отмеченным параметром, а только получить их от сервера (применим только к параметрам функций);

6. threaded – модификатор threaded применим как к функциям с модификатором local, так и к обычным, несетевым функциям. При наличии этого модификатора, функция будет автоматически распараллелена компилятором crpcc. Такой подход позволяет распараллеливать как обычные, несетевые функции, так и функции, непосредственно вызываемые по сети.

Существует два возможных подхода к созданию распределенных приложений с помощью системы CRPC. Первый подход – это написание программы с нуля и второй – это модернизация или рефакторинг уже существующего программного кода.

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

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

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

Важно отметить, что атрибуты управления указателями задаются только на клиенте, сервер управляет передачей динамически, основываясь только на директивах протокола сетевой передачи. Если говорить о системах аналогах, то они не позволяют возвращать клиенту массивы переменной длины и не поддерживает in/out передачу данных.

При разбиении на клиентскую и серверную часть уже существующего приложения необходимо придерживаться принципов модульности кода модернизируемой АС и целостности потоков данных. Выбор конкретного сценария модернизации зависит непосредственно от самого приложения. В работе рассматриваются наиболее общие случаи и рекомендации, необходимые для проведения корректной модернизации АС с использованием системы CRPC.

Учитывая возможные варианты сетевых функций, в исходном файле модернизируемой программы следует оставить только прототипы выбранных функций (клиентская сторона) и скопировать объявления функций в другой файл (новый файл серверной части). Затем отметить прототипы в первом файле как remote, а во втором как local. Если указатели используются как параметры удаленной функции, то необходимо применить новый атрибут на клиентской стороне. Примерный вид прототипов приведен на рисунке 6.

Рис. 6. Прототипы функций клиентской и серверной части Также в главе выделяется ряд технических нововведений, реализованных в системе CRPC и обеспечивающих решение проблем СВУП, поставленных в диссертации.

Разработанная система CRPC:

1. Поддерживает язык программирования Си, используя специальное синтаксическое расширение, позволяя производить сетевой рефакторинг имеющегося несетевого приложения;

2. Позволяет передавать и получать данные адресованные через указатели;

3. Использует автоматический принцип идентификации сетевых функций;

4. Позволяет регулировать сетевой трафик непосредственно из программы;

5. Позволяет производить автоматизированное распараллеливание на уровне функций;

6. Использует собственный протокол упаковки и передачи данных;

7. Имеет дополнительные возможности для работы с терминалом;

8. Поддерживает передачу данных по зашифрованному каналу;

9. Для работы системе требуется только стандартная библиотека Си ( + POSIX Threads и OpenSSL);

10. Система не зависит от аппаратной части компьютера;

11. Система может быть легко интегрирована в среду графической разработки;

12. Система свободно распространяется в исходных кодах.

Именно в сумме технические нововведения системы CRPC позволяют значительно автоматизировать сетевую разработку и модернизацию в рамках современных АС. Традиционные системы ВУП, такие как SunRPC, не обеспечивали такой гибкости и интерфейсной целостности при разработке АС. А возможность модернизации или рефакторинга АС на уровне языка программирования была реализована впервые в рамках операционной среды Unix.

Разработанная система CRPC распространяется с открытыми исходными кодами и свободно доступна в сети Интернет.

Для оценки производительности разработанной системы были произведены серии тестов. Первая серия тестов доказывает, что время работы компилятораоболочки crpcc практически не вносит дополнительных временных затрат при компиляции по сравнению с компиляцией обычным компилятором GCC-C. То есть время работы языкового расширения практически «не заметно» на фоне всего процесса компиляции. В таблице 1 показано время сборки трех проектов обычным компилятором и компилятором-оболочкой.

Табл. 1. Оценка времени компиляции Для временной оценки процесса передачи данных по сети была проведена серия тестов, по вызову сетевой функции сортировки данных методом чет-нечет сортировки. Использовались две программы – первая, написанная с использованием системы SunRPC, вторая с использованием разработанной системы CRPC. Тесты показывают (табл. 2), что время работы двух программ практически одинаковое, при одинаковом режиме передачи (SunRPC поддерживает только in передачу, без возврата данных клиенту). Таким образом, подсистема передачи данных разработанной ВУП не вносит дополнительных временных задержек, но при этом обеспечивает более богатую функциональность.

Pages:     | 1 || 3 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»