Одной из основных проблем проектирования является проблема синхронизации. Существующие методы различаются по удобству использования, по стоимости реализации и по эффективности выполнения самих вычислительных процессов и работы вычислительной системы в целом.
Различные ОС имеют разные средства синхронизации.
Знание средств синхронизации позволяет создавать корректно работающие программы, которые, во-первых, обеспечивают правильный обмен данными между процессами и, во-вторых, позволяют избежать возникновение тупиков в системе.
Параллельными называются процессы, которые одновременно находятся в каком-либо активном состоянии.
Два параллельных процесса могут быть независимыми.
Независимыми называются процессы множество переменных, которых не пересекаются. Под переменными подразумеваются формы данных, а также области операционной памяти, сопоставленные определенной программе и промежуточным переменным.
Независимые процессы не влияют на работу друг друга (с точки зрения логики исполнения), они могут только задерживать работу друг друга.
Взаимодействующие – это те процессы, которые совместно используют некоторые переменные и выполнение одного может влиять на выполнение другого.
Критическими ресурсами называются ресурсы, которые не могут быть использованы несколькими процессами. Поэтому когда несколько процессов требуют этот ресурс, нужна их синхронизация.
В результате чего этот ресурс будет находиться в распоряжении только одного процесса на интервале времени. Другие процессы должны ждать.
Взаимодействовать могут 2 разновидности процессов: конкурирующие и совместно исполняющие некоторую работу. Конкурирующие действуют в некотором плане независимо, но имеют доступ к некоторым переменным.
Процессы, выполняющие некоторую работу характеризуются тем, что результаты передаются другому процессу (т. е обмениваются данными).
Пример:
Имеются 2 процесса Р1 и Р2 с общей переменной х. Пусть эти 2 процесса независимы друг от друга, изменяют это значение при этом используется некоторая область операционной памяти.
№ оператора
Р1
№ оператора
Р2
R1:=x
R2:=x
R1: R1+1
R2: R2+1
X:= R1
X:= R2
Оба процесса могут исполняться с разной скоростью, поэтому время исполнения 1-6 не предсказуемо. Рассмотрим 2 случая:
Первый случай – когда используются операторы 1,2,3, а затем 4,5,6.
P1 R1:=x R1:=R1+1 x:=R1
P2 R2:=x R2:=R2+1 x:=R2
X
2 случай – когда в исполнение 1,2,3 вмешиваются 4,5,6