Презентация "Взаимодействующие параллельные процессы" - скачать презентации по Информатике

Содержание

Слайд 2

Параллельные процессы

Параллельные процессы

Слайд 3

Взаимодействующие процессы

Взаимодействующие процессы

Слайд 4

Взаимодействующие процессы Независимые процессы имеют свое множество переменных и ресурсов. Другие

Взаимодействующие процессы

Независимые процессы имеют свое множество переменных и ресурсов. Другие процессы

не могут изменить значения переменных этого процесса.
Взаимодействующие процессы – совместно используют общие ресурсы, и выполнение одного процесса влияет на результат другого. Ресурсами могут быть области памяти, файлы данных, ВУ и т.д.
Взаимодействовать могут конкурирующие процессы, каждый из которых использует совместный ресурс только для своих целей, либо процессы, совместно выполняющие общую работу – асинхронные процессы.
Слайд 5

Использование общего ресурса В результате прерывания последовательность действий обеих программ может

Использование общего ресурса

В результате прерывания последовательность действий обеих программ
может измениться.

Пусть Count = 10 и эта последовательность станет
1-4-5-6-2-3.

1 CX = 10
4 CX = 10
5 CX = 9
6 Count = 9
CX = 11
Count = 11

Правильное значение CX = 10 Эта ситуация называется коллизией.
Работа с Count не является единой неделимой операцией.
1 inc Count 2 dec Count

Слайд 6

Проблема критического участка Общий ресурс, совместно используемый несколькими параллельными процессами, получил

Проблема критического участка

Общий ресурс, совместно используемый несколькими параллельными процессами, получил

название – критический ресурс.
Часть программы, использующая критический ресурс, называется критическим участком (критическим интервалом, критической секцией, критической областью).

Требования к критическому участку программы:
- только один процесс может находиться внутри критического участка (взаимное исключение);
- ни один процесс не должен ждать бесконечно долго входа в критический участок;
- ни один процесс не может оставаться внутри критического интервала бесконечно долго;
-операции взаимного исключения должны выполняться корректно при нарушении работы одного или нескольких процессов вне критического участка (устойчивость к нарушениям);
- вход и выход взаимоисключения должны быть идентичными для всех процессов и не зависеть от их числа (симметрия).

Слайд 7

Методы взаимоисключения Используется множество методов взаимоисключения взаимодействующих параллельных процессов в критических

Методы взаимоисключения

Используется множество методов взаимоисключения взаимодействующих параллельных процессов в критических

участках:
- взаимное исключение с активным ожиданием:
- запрещение прерываний,
- строгое чередование,
- алгоритмы Деккера и Петерсона,
- операция проверки и установки;
- семафоры и мьютексы;
- мониторный механизм взаимоисключения;
- обмен сообщениями между процессами;
Слайд 8

Параллельные процессы без взаимоисключения Cobegin (нач. установка) PROC1; PROC2; coend 1

Параллельные процессы без взаимоисключения

Cobegin
(нач. установка)
PROC1; PROC2;
coend

1
2
3
4

(переменные управления взаимоисключением)

Слайд 9

Взаимоисключение строгим чередованием процессов var NP: 1,2; Begin NP:=1; cobegin PROC1;

Взаимоисключение строгим чередованием процессов

var NP: 1,2;

Begin
NP:=1;
cobegin
PROC1; PROC2;

coend;
end.

1
2
3
4

Слайд 10

Попытка взаимоисключение с использованием флагов var C1, C2: boolean; Begin C1:=false;

Попытка взаимоисключение с использованием флагов

var C1, C2: boolean;

Begin
C1:=false; C2:=false;

cobegin
PROC1; PROC2; coend;
end.

1
2
3
4

Слайд 11

Алгоритм Деккера VAR C1,C2:Boolean; NP:1,2; begin NP:=1; C1:=FALSE; C2:=FALSE; Cobegin PROC1; PROC2; coend; end.

Алгоритм Деккера

VAR C1,C2:Boolean; NP:1,2;

begin
NP:=1;
C1:=FALSE; C2:=FALSE;
Cobegin PROC1; PROC2; coend;
end.

Слайд 12

Алгоритм Петерсона var C1, C2: boolean; var NP:1,2; begin C1:=false; C2:=false;

Алгоритм Петерсона

var C1, C2: boolean; var NP:1,2;

begin
C1:=false; C2:=false; cobegin

PROC1; PROC2; coend;
end.

1
2
3
4

Слайд 13

Взаимоисключение операцией проверка и установка (Test and Set) begin Common:=false; cobegin

Взаимоисключение операцией проверка и установка (Test and Set)

begin Common:=false;
cobegin PROC1; PROC2;

coend;
end.

1
2
3
4

Var Common:boolean;
Procedure TS (Лок, Общ);
begin Лок:=Общ;
Общ:=true; end;

Слайд 14

Операция Test and Set Procedure TS (Лок, Общ); begin Лок:=Общ; Общ:=TRUE;

Операция Test and Set

Procedure TS (Лок, Общ);
begin
Лок:=Общ;
Общ:=TRUE;
end;

Общ:=false;
(критич. участок свободен)
Лок1:=True;
While Лок1 do

TS(Лок1,Общ);
true false
false <- false
false true

Общ:=true;
(критич. Участок занят)
Лок2:=True;
While Лок2 do TS(Лок2,Общ);
true true
true <- true
true true

Команда BTS источник, индекс
Переносит бит по адресу источник[индекс] -> CF (Лок),
Затем бит источник[индекс]<- 1 (Общ).
L: BTS M, 1 ; вход
JC L ; взаимоисключения
; критическая секция
AND M, 0B ; выход взаимоисключения

Слайд 15

Семафоры Семафоры, как средство синхронизации параллельных процессов, предложил голландский математик Э.

Семафоры

Семафоры, как средство синхронизации параллельных процессов, предложил голландский математик Э.

Дейкстра (E. W. Dijkstra) в 1965 г.
Семафор S это агрегат данных, который состоит из счетчика с целыми значениями S.C и очереди процессов S.Q, ждущих входа в критический участок. При создании семафора счетчик принимает начальное значение
C >= 0, а очередь – пустая.
Две операции над числовыми семафорами.
Слайд 16

Свойства числового семафора Работу числового семафора можно сравнить с работой автоматизиро-ванной

Свойства числового семафора

Работу числового семафора можно сравнить с работой автоматизиро-ванной

двери, которая открывается, если бросить жетон. Жетон пропускает только одного человека. Жетон бросает не тот, кто проходит, а другой.

Свойства числовых семафоров.
Пусть C0 – начальное значение S.C, nP и nV – общее число выполнения операций P(S) и V(S).
Тогда:
- текущее значение счетчика семафора: S.C = C0 – nP + nV;
- число процессов в состоянии ожидания: nB = max(0,–S.C);
- число форсирований: nF = min(nP,C0–nV).
Последний параметр показывает насколько nP больше nV. По аналогии с автоматической дверью nF дает знать, что количество прошедших равно наименьшему из двух чисел, одно из которых есть общее количество опущенных жетонов C0+nV(S), а другое – число желающих пройти дверь.

Слайд 17

Логический семафор - mutex Вместо числовой переменной S.C может использоваться переменная

Логический семафор - mutex

Вместо числовой переменной S.C может использоваться переменная

логического типа. Такой логический семафор получил название мьютекс (mutex – MUtual EXclusion semaphor, семафор взаимного исключения).
S.C принимает значения TRUE и FALSE, а операции P(S) и V(S) выражаются действиями:

Двоичные семафоры используются для операции взаимоисключения нескольких процессов в случае, когда в критическом участке должен находиться только один процесс, числовые семафоры обладают также другими расширенными возможностями.

Слайд 18

Взаимоисключение числовым семафором VAR S:Semaphore; begin S.C:=1; cobegin PROC1; PROC2; coend; end.

Взаимоисключение числовым семафором

VAR S:Semaphore;

begin
S.C:=1;
cobegin
PROC1;
PROC2;
coend;
end.

Слайд 19

Синхронизация процессов «Главный – Подчиненный» VAR Event:Semaphore; begin Event.C:=0; cobegin MASTER;

Синхронизация процессов «Главный – Подчиненный»

VAR Event:Semaphore;

begin
Event.C:=0;
cobegin MASTER; SLAVE; coend;
end.

Обратите внимание,

что здесь начальное значение счетчика семафора Event (событие) равно 0, т.е. семафор закрыт. Операция P(Event) переводит главный процесс в состояние «Ожидание», если значение семафора не было изменено. Открыть семафор может подчиненный процесс, сменив значение счетчика на 1, если подчиненный процесс выполнит V(Event) раньше.
Слайд 20

Синхронизация процессов «Производитель – Потребитель» VAR Buf:Record; Start,Finish:Semaphore; begin Start.C:=0; Finish.C:=1;

Синхронизация процессов «Производитель – Потребитель»

VAR Buf:Record;
Start,Finish:Semaphore;

begin
Start.C:=0; Finish.C:=1;
cobegin
Repeat PRODUSER Until

FALSE;
Repeat CONSUMER Until FALSE;
coend;
end.

Обратите внимание на начальные значения счетчиков семафоров.

Слайд 21

«Производитель – Потребитель» множественный буфер VAR Buf:array [1..N] of Record; Full,Empty,S:Semaphore;

«Производитель – Потребитель» множественный буфер

VAR Buf:array [1..N] of Record;
Full,Empty,S:Semaphore;

begin
S.C:=1; Full.C:=

; Empty.C:= ;
cobegin
Repeat PRODUSER Until FALSE;
Repeat CONSUMER Until FALSE;
coend;
end.
Слайд 22

«Читатели – Писатели» с приоритетом читателей VAR Nrdr:integer; W,R:Semaphore; Begin Nrdr:=0;

«Читатели – Писатели» с приоритетом читателей

VAR Nrdr:integer; W,R:Semaphore;

Begin Nrdr:=0; W.C:=1; R.C:=1;
cobegin
Repeat

READER Until FALSE;
. . .
Repeat READER Until FALSE;
Repeat WRITER Until FALSE;
. . .
Repeat WRITER Until FALSE;
coend; end.