русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Синхронизация процессов


Дата добавления: 2014-04-25; просмотров: 1042; Нарушение авторских прав


 

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

Основным механизмом синхронизации параллельных процессов, взаимодействующих с помощью передачи сообщений, является барьер. Барьер - это точка параллельной программы, в которой процесс ждёт все остальные процессы, с которыми он синхронизирует свою работу. Лишь только после того, как все процессы, синхронизирующие свою работу, достигли барьера, они продолжают дальнейшие вычисления. Если по какой-то причине хотя бы один из этих процессов не достигает барьера, то остальные процессы "зависают" в этой точке программы, а программа в целом уже никогда не сможет завершиться нормально.

Предположим, что нам нужно построить программу таким образом, чтобы сообщения от виртуальных процессоров с нечётными координатами выводились на терминал пользователя только после того, как будут выведены сообщения от всех виртуальных процессоров с чётными координатами. Язык mpC предоставляет для решения этой задачи библиотечную функцию MPC_Global_barrier(void), которая синхронизирует работу всех процессов параллельной программы. Её описание находится в заголовке mpc.h и выглядит следующим образом:

 

int [*]MPC_Global_barrier(void);

 

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



 

#include <mpc.h>

#define N 5

int [*]main()

{

net SimpleNet(N) mynet;

int [mynet]my_coordinate;

my_coordinate = I coordof mynet;

if(my_coordinate%2==0)

[mynet]MPC_Printf("Hello, even world!\n");

MPC_Global_barrier();

if(my_coordinate%2==1)

[mynet]MPC_Printf("Hello, odd world!\n");

}

Литература

1. Вендров А.М. CASE - технологии. Современные методы и средства

проектирования информационных систем. - http://www.citforum.ru

2. Липаев В.В. Качество программного обеспечения. - М.: Финансы и

статистика, 2005. - 263 с.

3. Кнут Дональд Э. Искусство программирования. Т. 3. Сортировка и

поиск: Уч. пос. - М.: Издательский дом «Вильямс», 2005.-832 с.

 

4. Шилдт Г. Самоучитель С++ - СПб:BHV-Санкт-Петербург, 1998. - 512 с.

 

5. Ластовецкий А.Л. Программирование параллельных вычислений на

неоднородных сетях компьютеров на языке mpC. - http://parallel.ru

 



<== предыдущая лекция | следующая лекция ==>
Сети. Родитель сети | Системы программирования и Объектно-ориентированное программирование


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.363 сек.