Концепция процесса

Содержание

Слайд 2

5. Концепция процесса 2002 v.0.1 Концепция процесса (2) Процесс – это

5. Концепция процесса 2002 v.0.1

Концепция процесса (2)

Процесс – это действия «машины» при

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

Концепция процесса – систем взглядов, положенная в основу подхода к построению средств реализации СРВ

Слайд 3

5. Концепция процесса 2002 v.0.1 «Машина» (виртуальная машина) – модель, реализующая

5. Концепция процесса 2002 v.0.1

«Машина» (виртуальная машина) – модель, реализующая пользовательское представление

некоторой вычислительной среды

Si– программа на языке Si, (S1 – ЯВУ, S2 – Assembler, S3 – машинный код)
Мi – виртуальная машина, реализующая эту программу - Paskal-машина, Assembler-машина, «железо»)

( Вейдерман, 1971 год – Иерархия виртуальных машин:

Концепция процесса (3)

Слайд 4

5. Концепция процесса 2002 v.0.1 Концепция процесса (4) Процесс 1 «Виртуальная

5. Концепция процесса 2002 v.0.1

Концепция процесса (4)

Процесс 1

«Виртуальная машина»

Процесс N

. . .

«Виртуальная

машина»
обеспечивает параллельное выполнение процессов
Процесс
описывется программой на некотором языке (например – задача (task) для «ADA-машины» , нитка (thread) для «Java – машины», задача многозадачной ОС)
Слайд 5

5. Концепция процесса 2002 v.0.1 Представление процессов S1 Sn Parbegin S1;

5. Концепция процесса 2002 v.0.1

Представление процессов

S1

Sn

Parbegin S1; . . . Sn Parend;

S1

S2

S3

S4

Parbegin

begin
Parbegin
S1;S2;
Parend;
S3;
end;
S4;
Parend;
Слайд 6

5. Концепция процесса 2002 v.0.1 Синхронизация процессов Parbegin f(5); f(7); Parend;

5. Концепция процесса 2002 v.0.1

Синхронизация процессов

Parbegin
f(5);
f(7);
Parend;

procedure f(I: integer);
var

C: integer;
while(true);
C:= A;
doSomething(C); { C:= C+I }
A:= C;
doSomethingElse();
endwhile;
endproc;

f(5)

f(7)

A

Слайд 7

5. Концепция процесса 2002 v.0.1 Синхронизация – выполнение заданных временных соотношений

5. Концепция процесса 2002 v.0.1

Синхронизация – выполнение заданных временных соотношений между процессами

Процесс

А

t

ta1

a1

ta1

Процесс B

t

tb1

b1

tb1

Синхронизация процессов (2)

Слайд 8

5. Концепция процесса 2002 v.0.1 Взаимная блокировка (тупик, deadlock) Занять X

5. Концепция процесса 2002 v.0.1

Взаимная блокировка (тупик, deadlock)

Занять X

Задача А

t

Освободить X

Задача B

Занять

Y

Освободить X

Занять Y

Занять X

Освободить Y

Освободить Y

Ресурс X

Ресурс Y

1

2

3

4

5

6

7

8

4

3

2

1

5

6

7

8

А

В

Слайд 9

5. Концепция процесса 2002 v.0.1 Процесс А t ta КС1 ta

5. Концепция процесса 2002 v.0.1

Процесс А

t

ta

КС1

ta

Процесс B

t

tb

tb

КС2

а) недопустимо одновременное выполнение

критических секций КС1 и КС2;
б) ни одна из задач не должна ждать входа в свою критическую секцию бесконечно долго (блокировка недопустима )
Попытка алгоритмического решения - Алгоритм Деккера

Задача взаимного исключения

Слайд 10

5. Концепция процесса 2002 v.0.1 Алгоритм Деккера - вспомогательная схема 1

5. Концепция процесса 2002 v.0.1

Алгоритм Деккера - вспомогательная схема 1

var Очередь: 1,2;
Очередь:=

1;
Parbegin
loop
while(Очередь = 2)
endwhile;
КС_1;
Очередь:= 2;
Остальное_1;
endloop;

loop
while(Очередь = 1)
endwhile;
КС_2;
Очередь:= 1;
Остальное_2;
endloop;
Parend.

Слайд 11

5. Концепция процесса 2002 v.0.1 Алгоритм Деккера, вспомогательная схема 1 Вспомогательная

5. Концепция процесса 2002 v.0.1

Алгоритм Деккера, вспомогательная схема 1

Вспомогательная схема 1: задача

не решена
а) при остановке одного из процессов второй процесс блокируется; причина – разделяемая переменная Очередь.
Однако
б) одновременное выполнение критических секций невозможно, т.к. вход к КCi строго контролируется переменной Очередь
б’) следует обратить внимание на то, что выполнение процессов строго чередуется.
Слайд 12

5. Концепция процесса 2002 v.0.1 Алгоритм Деккера - вспомогательная схема 2

5. Концепция процесса 2002 v.0.1

Алгоритм Деккера - вспомогательная схема 2

var с1,с2: занят,свободен;
с1:=

свободен; с2:= свободен
Parbegin
loop
с1:= занят; {*}
while(с2=занят)
endwhile;
КС_1;
с1:= свободен;
Остальное_1;
endloop;

loop
с2:= занят; {*}
while(с1=занят)
endwhile;
КС_2;
с2:= свободен;
Остальное_2;
endloop;
Parend.

Слайд 13

5. Концепция процесса 2002 v.0.1 Вспомогательная схема 2: задача не решена

5. Концепция процесса 2002 v.0.1

Вспомогательная схема 2: задача не решена
а) при одновременном

выполнении действий {*} происходит блокировка
Однако
б) одновременное выполнение критических секций невозможно, т.к. при входе одного процесса в свою КС второй будет остановлен в результате того, что переменная с примет запрещающее значение - схема надежна с точки зрения одновременного входа в КС

Алгоритм Деккера, вспомогательная схема 2

Слайд 14

5. Концепция процесса 2002 v.0.1 Алгоритм Деккера, реализация Parbegin loop с1:=

5. Концепция процесса 2002 v.0.1

Алгоритм Деккера, реализация

Parbegin
loop
с1:= занят; {*}
while(с2=занят)

if(Очередь=2)
с1:= свободен
endif;
while(c2=занят) endwhile;
с1:= занят;
endwhile;
КС_1;
с1:= свободен; Очередь:=2
Остальное_1;
endloop;

loop
с2:= занят; {*}
while(с1=занят)
if(Очередь=1)
с2:= свободен
endif;
while(c1=занят) endwhile;
с2:= занят;
endwhile;
КС_2;
с2:= свободен; Очередь:=1
Остальное_2;
endloop;
Parend.


{**}

{**}

Слайд 15

5. Концепция процесса 2002 v.0.1 Алгоритм Деккера, реализация (2) а) В

5. Концепция процесса 2002 v.0.1

Алгоритм Деккера, реализация (2)

а) В теле цикла {**}

параметр цикла не изменяется, т.е. цикл {**} можно представить как «занятое ожидание» -
while(c=занят) A endwhile.
В этих условиях рассматриваемый алгоритм аналогичен Схеме 2, которая обеспечивает взаимное исключение
б) При одновременном выполнении операторов {*} «работает» переменная Очередь, позволяющая разблокировать один из процессов. Недостаток Схемы 2 ликвидирован
в) Остановка одного из процессов вне критической секции не блокирует другой процесс. Ни один из процессов не будет ждать бесконечно долго входа в свою КС