🗊Презентация Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP

Нажмите для полного просмотра!
Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №1Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №2Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №3Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №4Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №5Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №6Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №7Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №8Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №9Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №10Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №11Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №12Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №13Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №14Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №15Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №16Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №17Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP, слайд №18

Вы можете ознакомиться и скачать презентацию на тему Операционные системы. Межпроцессное взаимодействие. Реализация блокировок и синхронизация потоков в OpenMP. Доклад-сообщение содержит 18 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Операционные системы
Межпроцессное взаимодействие
Описание слайда:
Операционные системы Межпроцессное взаимодействие

Слайд 2





Межпроцессное взаимодействие
Реализация блокировок и синхронизация потоков в OpenMP
Описание слайда:
Межпроцессное взаимодействие Реализация блокировок и синхронизация потоков в OpenMP

Слайд 3





Блокировки (замки) (1)
OpenMP включает набор функций, предназначенные для синхронизации кода с использованием блокировок. 
OpenMP два типа блокировок: 
простые блокировки;
рекурсивные (nestable) блокировки.
Блокировки обоих типов могут находиться в одном из трех состояний:
неинициализированном;
заблокированном;
разблокированном.
Описание слайда:
Блокировки (замки) (1) OpenMP включает набор функций, предназначенные для синхронизации кода с использованием блокировок. OpenMP два типа блокировок: простые блокировки; рекурсивные (nestable) блокировки. Блокировки обоих типов могут находиться в одном из трех состояний: неинициализированном; заблокированном; разблокированном.

Слайд 4





Блокировки (замки) (2)
Простые блокировки (omp_lock_t) не могут быть установлены более одного раза, даже тем же потоком. 
Рекурсивные блокировки (omp_nest_lock_t) идентичны простым с тем исключением, что, когда поток пытается установить уже принадлежащую ему рекурсивную блокировку, он не блокируется. Кроме того, OpenMP ведет учет ссылок на рекурсивные блокировки и следит за тем, сколько раз они были установлены.
OpenMP предоставляет подпрограммы, выполняющие операции над этими блокировками. Каждая такая функция имеет два варианта: для простых и для рекурсивных блокировок.
Описание слайда:
Блокировки (замки) (2) Простые блокировки (omp_lock_t) не могут быть установлены более одного раза, даже тем же потоком. Рекурсивные блокировки (omp_nest_lock_t) идентичны простым с тем исключением, что, когда поток пытается установить уже принадлежащую ему рекурсивную блокировку, он не блокируется. Кроме того, OpenMP ведет учет ссылок на рекурсивные блокировки и следит за тем, сколько раз они были установлены. OpenMP предоставляет подпрограммы, выполняющие операции над этими блокировками. Каждая такая функция имеет два варианта: для простых и для рекурсивных блокировок.

Слайд 5





Функции для работы с блокировками в OpenMP и Win32
Вы можете выполнить над блокировкой пять действий: инициализировать ее,  уничтожить , установить (захватить), освободить, проверить.
Описание слайда:
Функции для работы с блокировками в OpenMP и Win32 Вы можете выполнить над блокировкой пять действий: инициализировать ее,  уничтожить , установить (захватить), освободить, проверить.

Слайд 6





Пример использования блокировок
omp_lock_t lck;
omp_init_lock(&lck);
…
omp_set_lock(&lck);
…
omp_unset_lock(&lck);
Описание слайда:
Пример использования блокировок omp_lock_t lck; omp_init_lock(&lck); … omp_set_lock(&lck); … omp_unset_lock(&lck);

Слайд 7





Барьерная синхронизация
При одновременном выполнении нескольких потоков часто возникает необходимость их синхронизации. OpenMP поддерживает несколько типов синхронизации, помогающих во многих ситуациях.
Один из типов - неявная барьерная синхронизация, которая выполняется в конце каждого параллельного региона для всех сопоставленных с ним потоков. Механизм барьерной синхронизации таков, что, пока все потоки не достигнут конца параллельного региона, ни один поток не сможет перейти его границу.
Описание слайда:
Барьерная синхронизация При одновременном выполнении нескольких потоков часто возникает необходимость их синхронизации. OpenMP поддерживает несколько типов синхронизации, помогающих во многих ситуациях. Один из типов - неявная барьерная синхронизация, которая выполняется в конце каждого параллельного региона для всех сопоставленных с ним потоков. Механизм барьерной синхронизации таков, что, пока все потоки не достигнут конца параллельного региона, ни один поток не сможет перейти его границу.

Слайд 8





Неявная барьерная синхронизация
Неявная барьерная синхронизация выполняется также в конце каждого блока #pragma omp for, #pragma omp single и #pragma omp sections. 
Чтобы отключить неявную барьерную синхронизацию в каком-либо из этих трех блоков разделения работы, укажите раздел nowait.
Описание слайда:
Неявная барьерная синхронизация Неявная барьерная синхронизация выполняется также в конце каждого блока #pragma omp for, #pragma omp single и #pragma omp sections. Чтобы отключить неявную барьерную синхронизацию в каком-либо из этих трех блоков разделения работы, укажите раздел nowait.

Слайд 9





Типы явной синхронизации 
atomic
critical 
barrier 
master
ordered 
flush
Описание слайда:
Типы явной синхронизации atomic critical barrier master ordered flush

Слайд 10





Атомарные операции
Директива atomic может быть применена только для простых выражений, но является наиболее эффективным средством организации взаимоисключения.
Позволяет выполнить операцию в атомарном режиме (неделимая операция). В этом случае происходит предотвращение прерывания доступа, чтения и записи данных, находящихся в общей памяти, со стороны других потоков.
#pragma omp atomic 
<операторы программы>
Описание слайда:
Атомарные операции Директива atomic может быть применена только для простых выражений, но является наиболее эффективным средством организации взаимоисключения. Позволяет выполнить операцию в атомарном режиме (неделимая операция). В этом случае происходит предотвращение прерывания доступа, чтения и записи данных, находящихся в общей памяти, со стороны других потоков. #pragma omp atomic <операторы программы>

Слайд 11





Критические секции
Для создания критических секций в OpenMP применяется директива #pragma omp critical [имя]. Она имеет такую же семантику, что и критическая секция Win32. 
Вы можете использовать именованную критическую секцию, и тогда доступ к блоку кода является взаимоисключающим только для других критических секций с тем же именем (это справедливо для всего процесса). 
Если имя не указано, директива ставится в соответствие некоему имени, выбираемому системой. Доступ ко всем неименованным критическим секциям является взаимоисключающим.
	#pragma omp critical [ name ] 
	<структурный блок программы>
Описание слайда:
Критические секции Для создания критических секций в OpenMP применяется директива #pragma omp critical [имя]. Она имеет такую же семантику, что и критическая секция Win32. Вы можете использовать именованную критическую секцию, и тогда доступ к блоку кода является взаимоисключающим только для других критических секций с тем же именем (это справедливо для всего процесса). Если имя не указано, директива ставится в соответствие некоему имени, выбираемому системой. Доступ ко всем неименованным критическим секциям является взаимоисключающим. #pragma omp critical [ name ] <структурный блок программы>

Слайд 12





Явная барьерная синхронизация
Для включения в код явной барьерной синхронизации используйте директиву barrier.
	
	#pragma omp barrier
Описание слайда:
Явная барьерная синхронизация Для включения в код явной барьерной синхронизации используйте директиву barrier. #pragma omp barrier

Слайд 13





Директива master
В ряде случаев требуется, чтобы блок кода был выполнен основным потоком. 
В этом случае применяется директива #pragma omp master. В отличие от директивы single при входе в блок master и выходе из него нет никакого неявного барьера.
Описание слайда:
Директива master В ряде случаев требуется, чтобы блок кода был выполнен основным потоком.  В этом случае применяется директива #pragma omp master. В отличие от директивы single при входе в блок master и выходе из него нет никакого неявного барьера.

Слайд 14





Упорядочивание итерация с помощью ordered
Директивы ordered определяют блок внутри тела цикла, который должен выполняться в том порядке, в котором итерации идут в последовательном цикле. 
#pragma omp ordered 
<структурный блок>
Описание слайда:
Упорядочивание итерация с помощью ordered Директивы ordered определяют блок внутри тела цикла, который должен выполняться в том порядке, в котором итерации идут в последовательном цикле. #pragma omp ordered <структурный блок>

Слайд 15





Применение ordered
Неправильно:
#pragma omp parallel for ordered 
for (int i = 0; i <10; i++) 
{ 
	myFunc(i); 
}
Описание слайда:
Применение ordered Неправильно: #pragma omp parallel for ordered for (int i = 0; i <10; i++) { myFunc(i); }

Слайд 16





Явный барьер памяти
В OpenMP реализована слабая модель памяти.
Директива flush позволяет определить точку синхронизации, в которой системой должно быть обеспечено единое для всех потоков состояние памяти (т.е. если потоком какое-либо значение извлекалось из памяти для модификации, измененное значение обязательно должно быть записано в общую память).
	#pragma omp flush [(list)]
Директива содержит список list с перечнем переменных, для которых выполняется синхронизация. При отсутствии списка синхронизация выполняется для всех переменных потока.
Описание слайда:
Явный барьер памяти В OpenMP реализована слабая модель памяти. Директива flush позволяет определить точку синхронизации, в которой системой должно быть обеспечено единое для всех потоков состояние памяти (т.е. если потоком какое-либо значение извлекалось из памяти для модификации, измененное значение обязательно должно быть записано в общую память). #pragma omp flush [(list)] Директива содержит список list с перечнем переменных, для которых выполняется синхронизация. При отсутствии списка синхронизация выполняется для всех переменных потока.

Слайд 17





Неявный барьер памяти
В директиве barrier.
При входе и выходе из параллельной секции директив parallel, critical, ordered.
При выходе из параллельной секции директив for, sections, single.
При входе и выходе из параллельной секции директив parallel for, parallel sections.
Описание слайда:
Неявный барьер памяти В директиве barrier. При входе и выходе из параллельной секции директив parallel, critical, ordered. При выходе из параллельной секции директив for, sections, single. При входе и выходе из параллельной секции директив parallel for, parallel sections.

Слайд 18





Отказ от неявного барьера памяти
При входе в параллельную секцию директивы for.
При входе и выходе из секции директивы master.
При входе в параллельную секцию директивы sections.
При входе в секцию директивы single.
При выходе из секции директив for, single или sections, если к директиве применено выражение nowait.
Описание слайда:
Отказ от неявного барьера памяти При входе в параллельную секцию директивы for. При входе и выходе из секции директивы master. При входе в параллельную секцию директивы sections. При входе в секцию директивы single. При выходе из секции директив for, single или sections, если к директиве применено выражение nowait.



Похожие презентации
Mypresentation.ru
Загрузить презентацию