Методы коммуникации

При разделении программы на части (например, на процессы), которые работают параллельно, эти части (процессы) должны каким-то образом взаимодействовать друг с другом. Такое взаимодействие можно осуществить:

  • • с помощью общих переменных, путем использования общей памяти, считывая и записывая в нее данные (переменные);
  • • путем передачи сообщении, используя примитивы send и receptive как системные вызовы. При этом один процесс выполняет примитив send, указывая другой процесс в качестве пункта назначения. После того как второй процесс совершает receptive, сообщение копируется в адресное пространство получателя (приемника).

При двухточечной передаче сообщений задействованы один отправитель и один получатель. В некоторых случаях сообщение отправляется всем процессам (широковещание) или определенному набору процессов (мультивешание).

Базисные элементы синхронизации

При взаимодействии параллельные процессы должны синхронизировать свои действия. Процессы не должны использовать одни и те же данные одновременно. Например, когда один из процессов производит запись в ячейку памяти, никакой другой процесс не должен из нее считывать. Для этого используются семафоры, блокировки, мьютексы и критические секции [16]. Все они позволяют процессу использовать какой-то ресурс (общую переменную, устройство ввода-вывода и т.п.), и при этом никакие другие процессы доступа к этому ресурсу не имеют. Если получено разрешение на доступ, процесс может использовать этот ресурс. В случае, когда второй процесс запрашивает разрешение, а первый все еще использует этот ресурс, доступ будет запрещен до тех пор, пока первый процесс не освободит ресурс.

Многие параллельные программы имеют базисные элементы (примитивы), которые блокируют все процессы на период времени, пока не завершится определенная стадия работы (см. рис. 17.11,6). Примером такого примитива является барьер. Когда процессы встречают барьер, они блокируются до тех пор, пока последний процесс не встретит барьер. После этого все процессы одновременно освобождаются и продолжают работу.

 
< Пред   СОДЕРЖАНИЕ     След >