Моделирование взаимодействия процессов.
Параллельное программирование
Способы реализации параллельных вычислений
Способы реализации параллельных вычислений
Синхронизация параллельных процессов
Моделирование сетями Петри
Система с одним процессом
Моделирование взаимодействия процессов
Задача о взаимном исключении
Критическая секция
Моделирование взаимного исключения
Задача о производителе/потребителе
Моделирование буфера обмена
Задача об обедающих философах
Проблема тупика
Решение проблемы тупика
Моделирование разрешения тупиковой ситуации
Свойства сетей Петри
Свойство ограниченности
Свойство безопасности
Свойство консервативности
Уровни активности переходов
Уровни активности переходов
1.24M
Category: programmingprogramming

Моделирование взаимодействия процессов

1. Моделирование взаимодействия процессов.

Лекция 10

2. Параллельное программирование

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

3. Способы реализации параллельных вычислений

• Каждый вычислительный процесс может
быть реализован:
– в виде отдельного процесса операционной
системы,
– в виде отдельного потока выполнения внутри
одного процесса ОС

4. Способы реализации параллельных вычислений

• Параллельные программы могут физически
исполняться:
– последовательно на
единственном процессоре — перемежая по
очереди шаги выполнения каждого
вычислительного процесса;
– параллельно с выделением каждому
вычислительному процессу одного или
нескольких процессорных ядер

5. Синхронизация параллельных процессов

• При проектировании параллельных
программ важно обеспечить правильную
последовательность взаимодействий
между различными вычислительными
процессами, а также координацию в
использовании разделяемых ими ресурсов
• Эта задача называется синхронизацией
параллельных процессов

6. Моделирование сетями Петри

• Сети Петри, изначально созданные для
моделирования динамических дискретных
систем, являются одним из наиболее
удобных способов описания асинхронного
выполнения параллельных вычислительных
процессов

7. Система с одним процессом

• Вырожденным случаем параллельной
системы вычислительных процессов
является система с одним процессом
• Сначала рассмотрим, как сетью Петри
может быть представлен отдельный
вычислительный процесс, описываемый
программой на одном из существующих
языков программирования

8.

//программа, вычисляющая Y! и
//произведение всех чётных чисел Y!!
cin >> Y;
X1=1;
X2=1;
while (Y>0)
{
if (Y % 2 ==0)
X1 *= Y;
X2 *= Y--;
}
cout << X1 << “\t” << X2;

9.

a)
b)
c)
d)
e)
f)
cin >> Y; X1=1; X2=1;
Y>0
Y % 2 ==0
X1 *= Y;
X2 *= Y--;
cout << X1 << “\t” <<
X2;

10.

• В сети Петри, моделирующей блок-схему,
узлы блок-схемы представляются
переходами сети Петри, а дуги блок-схемы
– позициями сети Петри
• Фишка в сети Петри представляет счетчик
команд блок-схемы

11.

• Параллельная система может строиться
несколькими способами
• Один из способов состоит в простом
объединении процессов, без
взаимодействия во время их
одновременного выполнения
• Однако, такой способ введения
параллелизма имеет низкое практическое
значение

12. Моделирование взаимодействия процессов

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

13. Задача о взаимном исключении

• Пусть несколько процессов разделяют
общую переменную, запись, файл или
другой элемент данных
• Если два процесса и в одно и то же время
пытаются изменить этот элемент данных, то
могут возникнуть нежелательные
искажения

14.

• Например, возможна следующая
последовательность:
– Процесс P1 считывает значение x из разделяемого
объекта;
– Процесс P2 считывает значение х из разделяемого
объекта;
– Процесс P1 вычисляет новое значение x’ = f(x);
– Процесс P2 вычисляет новое значение x’’ = g(x);
– Процесс P1 записывает x’ в разделяемый объект;
– Процесс P2 записывает x’’ в разделяемый объект,
уничтожая значение x’
• Результат вычисления процесса P1 потерян

15. Критическая секция

• Для решения подобных проблем
используется метод взаимного исключения,
основанный на понятии критическая
секция
• Критическая секция – это участок кода
процесса, на котором он осуществляет
доступ к разделяемому объекту данных

16.

• Прежде, чем выполнить свою критическую
секцию, процесс ждёт, пока другой процесс
не закончит выполнение собственной
критической секции и лишь затем он входит
в критическую секцию
• При этом блокируется доступ для любого
другого процесса к своей критической
секции до выхода этого процесса из
критической секции

17. Моделирование взаимного исключения

P1
P2
S1
t1
S2
m
t2

18. Задача о производителе/потребителе

• В задаче о производителе/потребителе также
присутствует разделяемый объект – буфер,
посредством которого реализуется
взаимодействие через асинхронную передачу
сообщений
• Процесс-производитель создает сообщения,
которые помещаются в буфер
• Процесс-потребитель ждет, пока сообщение
не будет помещено в буфер, извлекает его
оттуда и использует

19. Моделирование буфера обмена

производитель
произвести
послать
в буфер
потребитель
B
извлечь
из буфера
использовать

20. Задача об обедающих философах

• В некоем пансионе нашли пристанище пять
философов. У каждого философа была своя
комната. Была у них и общая столовая с круглым
столом, вокруг которого стояли пять стульев.
• В центре стола стояла большая миска спагетти,
содержимое которой постоянно пополнялось. На
столе также лежало пять вилок, по одной между
соседними посадочными местами.
• Звали философов и за столом они располагались
в этом же порядке, против часовой стрелки.
Почувствовав голод, философ шёл в столовую,
садился на свой стул, брал сначала слева от себя
вилку, затем справа и приступал к еде. Закончив
трапезу, он клал на место обе вилки, выходил из-за
стола, и уходили размышлять

21. Проблема тупика

• В задаче об обедающих философах возможна
ситуация, в которой каждый философ возьмет
вилку слева, а затем будет ждать, когда
освободится вилка с правой стороны
• Так они будут ждать, пока не умрут от голода
• Тем самым, это состояние системы
«обедающие философы» является тупиковым

22. Решение проблемы тупика

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

23. Моделирование разрешения тупиковой ситуации

завj
ej
начj
пj
п1
дj
зав4
нач4
e4
д4
д1
e1
нач1
п4
п2
д3
д2
п3
нач3
нач2
e3
зав3
e2
зав2
зав1

24. Свойства сетей Петри

• Моделирование систем сетями Петри, прежде
всего, обусловлено необходимостью
проведения глубокого исследования их
поведения
• Очевидно, что это предполагает наличие
методов анализа свойств самих сетей Петри
• Тем самым исследование свойств реальной
системы может быть сведено к анализу
определенных свойств моделирующей сети
Петри

25. Свойство ограниченности

• Позиция
English     Русский Rules