- •НИУ ВШЭ – Пермь
- •Понятие информационной системы
- •Понятие корпоративной информационной системы
- •Эволюция информационных систем и технологий
- •Понятие процесса
- •Понятие ресурса
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Понятие критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Условия реализации критической секции
- •Условия реализации критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Программные методы решения: вариант 1
- •Программные методы решения: вариант 1
- •Программные методы решения: вариант 1
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 2
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения: вариант 3
- •Программные методы решения:
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Программные методы решения: вариант 5 – алгоритм Деккера
- •Недостатки программных методов
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Блокирующие функции
- •Блокирующие функции
- •Блокирующие функции
- •Аппаратная поддержка выполнения блокирующих функций
- •Блокирование файлов при создании или открытии
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Понятие семафора
- •Семафорные примитивы
- •Семафорные примитивы
- •Семафорные примитивы
- •Решение проблемы взаимного исключения с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Объекты диспетчеризации и синхронизация процессов
- •Использованные источники:
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false
N := 1 ; start(P1) ;
start(P2) end INIT .
51
Первый процесс |
|
Второй процесс |
|
process P1; |
process P2; |
||
common boolean C1,C2 ; |
common boolean C1,C2 ; |
||
begin |
begin |
|
|
while true do |
while true do |
||
begin BEFORE ; |
begin BEFORE2 ; |
||
Устанавливается порядок |
C2 := true ; |
||
while C1 do |
|||
входа в критическую секцию |
begin |
||
при возникновении |
|
if N = 1 then |
|
|
begin |
||
конфликтной ситуации, когда |
|||
C2 := false ; |
|||
оба процесса параллельно |
while N=1 do ; |
||
заявляют о попытке войти в |
C2 := true ; |
||
свои критические секции |
end |
||
end ; |
|||
1 |
|
CS2 ; |
|
C1 := false; N := 2; |
|
C2 := false; N:=1; |
|
AFTER1 ; |
end |
AFTER2 ; |
|
end |
|
||
end P1 . |
end P2 . |
||
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P ) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
52
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
53
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
54
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
55
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
56
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
57
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
58
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
59
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
Программные методы решения: вариант 5 – алгоритм Деккера
Процедура инициализации
procedure INIT; common boolean C1,C2 ; common integer N ; begin
C1 := false ;
C2 := false ;
N := 1 ; start(P1) ;
Устанавливается порядок входа в критическую секцию при возникновении конфликтной ситуации, когда оба процесса параллельно заявляют о попытке войти в свои критические секции
60
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin BEFORE1 ; |
begin BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do |
while C1 do |
begin |
begin |
if N ≠ 1 then |
if N ≠ 2 then |
begin |
begin |
C1 := false ; |
C2 := false ; |
while N=2 do ; |
while N=1 do ; |
C1 := true ; |
C2 := true ; |
end |
end |
end ; |
end ; |
CS1 ; |
CS2 ; |
C1 := false; N := 2; |
C2 := false; N:=1; |
AFTER1 ; |
AFTER2 ; |
|
end |
end P1 . |
end P2 . |
