Клиент-сервер
Архитектура клиент-сервер один из вариантов построения систем, состоящих из наборов серверов, предоставляющих определенные сервисы; наборы клиентов, использующие эти сервисы; и средств связи, обеспечивающих передачу информации
Сопоставление программ смониторами и с передачей сообщений
С мониторами | С передачей сообщений |
Постоянные переменные | Локальные переменные сервера |
Идентефикаторы процедур | Канал запроса |
Вызов процедуры | SEND request(); recieve replu |
Вход в монитор | Receive reply() |
Возврат в процедуру | Сохранение ожидающих запросов |
Операция WAIT | Получение и обрабокта ожидающего запроса |
Операция SIGNAL | Ветки оператора выбора по видам переменной |
Тело процедуры |
Взаимодействующие равные. Обмен значениями.
Есть n процессов, имеющих переменную V. Требуется найти min и macx среди этих значений
- централизованное решение
- симметричное решение
1. Централизованное решение
Выделяется процесс который собирает n чисел, находит max и min и рассылает остальные процессы.
|
|
2. Симметричное решение
В этом случае все процессы работают одинаково каждый процесс отправляет свое значение всем остальным, затем все процессы параллельно вычисляют max и min из полученных значений
3. Кольцевое решение
Процессы замыкаются в логическое колько, каждый процесс получает сообщение от предшественника и отправляет сообщение приемнику
Вычисление происходит в 2 этапа:
1) процесс получает 2 числа, определячет min и max из них и своего значения и отправляет результаты дальше
2) Процесс получает глобальное значение min и max и передает результаты дальше
1 процесс выступает как инициатор процесса.
Симметричное решение является самым коротким и его легко программировать, так как все процессы выполняют одни и теже действия с другими строками в нем используется больше всего сообщений (сократить число сообщений можно с помощью микровещательной рассылки).
Сообщения оправляются и передаются параkлельно => надо учитывать характеристики каналов связи (если необходимо ставить задержки)
Чем больше передаются сообщения, тем меньше скорость.
Централизованное и кольцевое решение используют линейное число сообщений но имеют разные схемы взаимодействия:
- в централизованном решении все сообщения передаются управляющему процессу практически одновременно, поэтому существующую задержку выполненияуправляющего процесса может выполнить только первый recieve аналог. Результаты от управления процессами осуществляется без задержек.
- В кольцевом решении все процессы являются одновременно и производителями и потребителями соединенные в круговой конвенер, т. е. Последний процесс в кольце доолжен рождаться пока кажды процесс получает сообщение выполнит вычисление и отправит результаты другому процессу => оптимизировать это решение путем совмещения передачи сообщений невозможно.
|
|
Поэтому это решение непроизвод. Это решение приемлимо в том случае, если каждый процесс выполнит значительное количество вычислений.