- •Введение
- •1 Средства для решения задач нелинейных алгебраических уравнений в распределенной вычислительной среде
- •1.1 Понятие распределенных вычислений как способа решения трудоёмких вычислительных задач с использованием нескольких компьютеров
- •1.2 Распределенные вычисления на основе стека
- •1.3 Понятие клиент-серверных систем
- •1.4 Методы и их модификации для решения систем нелинейных уравнений
- •2 Алгоритмы и методы для решения нелинейных алгебраиеских уравнений на основе метода натуральных градиентов
- •2.1 Техническое задание для написания программы для решения систем нелинейных алгебраических уравнений методом натуральных градиентов
- •2.2 Aлгоритм метода натуральных градиентов
- •2.3 Алгоритмы линейного и распределенного решения
- •2.4 Алгоритм синтаксического анализатора, разработанного на основе обратной польской записи
- •2.5 Математическая модель распределенного вычисления Якобиана отображения
- •2.6 Описание основных функций клиент-серверного приложения
- •3 Программный комплекс для решени нелинейных алгебраических уравнений методом натуральных градиентов
- •3.1 Руководство пользователя
- •3.2 Результат исследование зависимости времени нахождения решения от размерности системы и способа решения
- •Заключение
- •Список использованных источников
- •Приложение а
- •Код сервеной части
- •Приложение б
- •Код клиенткой части
- •Приложение в
- •Данные из тестовых файлов
- •Приложение г
1.2 Распределенные вычисления на основе стека
протоколов TCP/IP
Распределенные вычисления от централизованных отличаются наличием связи между процессами. Связи между централизованными процессами предполагают наличие разделяемой памяти. Классический пример создания буферов чтения/записи при обращении к массиву данных.
Основой взаимодействия распределенных вычислений служит посылка и прием сообщений. Уже на двух программных примитивах (посылка и прием) можно построить достаточно сложные средства сетевых коммуникаций, например, программные системы в архитектуре Клиент/Сервер или вызов удаленных процедур (Remote Procedure Call). Более подробно, средства удаленного вызова процедур предназначены для облегчения создания распределенных вычислений.
Реализация удаленных вызовов существенно сложнее реализации вызовов локальных процедур. Вызывающая и вызываемая процедуры выполняются на разных машинах. Они имеют разные адресные пространства и это создает дополнительные проблемы при передаче параметров и результатов, особенно для машин разных классов. Приложения RPC не могут рассчитывать на разделяемую память, следовательно, невозможно передать указатель на стек, значения параметров должны быть посланы с одного компьютера на другой. Другая отличительная особенность RPC – использование какой-либо системы связи между компьютерами. Однако эта связь очень прозрачна, то есть программист, проектирующий RPC-ориентированное приложение, не занимается низкоуровневыми протоколами. В реализации RPC участвуют, как минимум, два процесса и при аварийном завершении одного из них другой в ожидании ответа будет крутиться вхолостую.
Вопросы связи процессов (посредством передачи параметров или удаленных вызовов) тесно связаны с вопросами синхронизации процессов. Синхронизация необходима процессам для организации совместно используемых ресурсов. Основной алгоритм, который будет использован в распределенных системах – распределенный.
Если процесс хочет войти в критическую секцию, он формирует сообщение, содержащее имя нужной ему критической секции, номер процесса и текущее значение времени. Это сообщение рассылается всем другим процессам. Возможны три варианта:
– принимающий процесс находится не в критической секции – отсылается разрешение;
– процесс находится в критической секции – он не отправляет никакого ответа и ставит запрос в очередь;
– процесс хочет войти в критическую секцию, но еще не сделал этого – он сравнивает временную отметку поступившего сообщения со значением времени, которое содержится в его собственном запросе, разосланном всем другим процессам. Если время поступившего к нему сообщения меньше, то есть его собственный запрос возник позже, он посылает сообщение-разрешение. В противном случае он не посылает ничего и ставит поступившее сообщение в очередь. Процесс может войти в критическую секцию только в том случае, если он получил ответные сообщения-разрешения от всех остальных процессов. Ели процесс покидает критическую секцию, он посылает разрешение всем процессам из своей очереди и очищает ее.
Основные черты современного RPC-протокола:
– машинно-независимый инструментарий, позволяющий создавать приложения, способные обмениваться данными с приложениями, запущенными на различных типах ОС;
– проработанная технология создания клиент-серверных приложений;
– компилятор RPC-протокола, который позволяет скрыть низкоуровневую реализацию межсетевого обмена данными;
– аутентификация, дающая возможность строить распределенные приложения, обеспечивающие авторизированный доступ;
– набор высокоуровневых библиотек, позволяющий достаточно легко работать с такими сетевыми объектами, как пользователи (users), устройства и компьютеры, подключенные к сети (hosts), почтовые ящики (mailboxes).