- •НИУ ВШЭ – Пермь
- •Понятие информационной системы
- •Понятие корпоративной информационной системы
- •Эволюция информационных систем и технологий
- •Понятие процесса
- •Понятие ресурса
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Понятие критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Условия реализации критической секции
- •Условия реализации критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Программные методы решения: вариант 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 – алгоритм Деккера
- •Недостатки программных методов
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Блокирующие функции
- •Блокирующие функции
- •Блокирующие функции
- •Аппаратная поддержка выполнения блокирующих функций
- •Блокирование файлов при создании или открытии
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Понятие семафора
- •Семафорные примитивы
- •Семафорные примитивы
- •Семафорные примитивы
- •Решение проблемы взаимного исключения с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Объекты диспетчеризации и синхронизация процессов
- •Использованные источники:
Программные методы решения: вариант 2
Процедура
инициализации
procedure INIT;
common boolean C1,C2 ; begin
C1 := false ;
C2 := false ; start(P1) ;
start(P2) end INIT .
Первый процесс
process P1;
common boolean C1,C2 ; begin
while true do begin
BEFORE1 ;
while C2 do ; C1 := true ;
CS1 ;
C1 := false ; AFTER1 ;
end end P1 .
Второй процесс
process P2;
common boolean C1,C2 ; begin
while true do begin
BEFORE2 ;
while C1 do ; C2 := true ;
CS2 ;
C2 := false ; AFTER2 ;
end end P2 .
41
Программные методы решения: вариант 2
Процедура |
процесс |
|
Процессы параллельно |
||
|
||
вошли в критическую |
boolean C1,C2 ; |
|
секцию! |
do
1 ;
C2 do ;
end INIT . C1 := true ;
CS1 ;
C1 := false ; AFTER1 ;
end end P1 .
Второй процесс
process P2;
common boolean C1,C2 ; begin
while true do begin
BEFORE2 ;
while C1 do ;
C2 := true ;
CS2 ;
C2 := false ; AFTER2 ;
end end P2 .
42
Программные методы решения: вариант 3
Процедура
инициализации
procedure INIT; common boolean begin
C1 := false
C2 := false ; start(P1) ;
start(P2) end INIT .
Устанавливается признак намерения занять
критическую секцию.
Все ли требования к процесс
критической секции выполняются? C1,C2 ;
BEFORE1 ; |
BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do ; |
while C1 do ; |
CS1 ; |
CS2 ; |
C1 := false ; |
C2 := false ; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
43
Программные методы решения: вариант 3
Процедура
инициализации
procedure INIT; common boolean C1,C2 ; begin
C1 := false ;
C2 := false ; start(P1) ;
start(P2) end INIT .
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin |
begin |
BEFORE1 ; |
BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do ; |
while C1 do ; |
CS1 ; |
CS2 ; |
C1 := false ; |
C2 := false ; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
44
Программные методы решения: вариант 3
Процедура
инициализации
procedure INIT; common boolean C1,C2 ; begin
C1 := false ;
C2 := false ; start(P1) ;
start(P2) end INIT .
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin |
begin |
BEFORE1 ; |
BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do ; |
while C1 do ; |
CS1 ; |
CS2 ; |
C1 := false ; |
C2 := false ; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
45
Программные методы решения: вариант 3
Процедура
инициализации
procedure INIT; common boolean C1,C2 ; begin
C1 := false ;
C2 := false ; start(P1) ;
start(P2) end INIT .
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin |
begin |
BEFORE1 ; |
BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do ; |
while C1 do ; |
CS1 ; |
CS2 ; |
C1 := false ; |
C2 := false ; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
46
Программные методы решения: вариант 3
Процедура
инициализации
procedure INIT; common boolean C1,C2 ; begin
C1 := false ;
C2 := false ; start(P1) ;
start(P2) end INIT .
Первый процесс |
Второй процесс |
process P1; |
process P2; |
common boolean C1,C2 ; |
common boolean C1,C2 ; |
begin |
begin |
while true do |
while true do |
begin |
begin |
BEFORE1 ; |
BEFORE2 ; |
C1 := true ; |
C2 := true ; |
while C2 do ; |
while C1 do ; |
CS1 ; |
CS2 ; |
C1 := false ; |
C2 := false ; |
AFTER1 ; |
AFTER2 ; |
end |
end |
end P1 . |
end P2 . |
47
Программные методы решения: вариант 3
Взаимное блокирование – Первый процесс
процессы никогда не войдут |
P1; |
|
в критическую секцию и не |
||
boolean C1,C2 ; |
||
смогут продолжить |
||
|
||
выполнение – |
true do |
|
«смертельные объятия»!begin |
||
BEFORE1 ;
C1 := true ; while C2 do ;
CS1 ;
C1 := false ;
AFTER1 ;
end end P1 .
Второй процесс
process P2;
common boolean C1,C2 ; begin
while true do begin
BEFORE2 ;
C2 := true ; while C1 do ;
CS2 ;
C2 := false ;
AFTER2 ;
end end P2 .
48
Программные методы решения: вариант 3
Общая проблема всех методов – «занятое ожидание» - время процессора тратится впустую
en INIT
CS1 ;
C1 := false ;
AFTER1 ;
end end P1 .
Второй процесс
process P2;
common boolean C1,C2 ; begin
while true do begin
BEFORE2 ;
C2 := true ; while C1 do ;
CS2 ;
C2 := false ;
AFTER2 ;
end end P2 .
49
Программные методы решения:
вариант 4 |
|
Процессы «усыпляются» на случайные |
||
|
|
интервалы времени, после чего |
||
|
|
повторяют попытки входа, «переждав» |
||
Процедура |
|
|
соперника. |
|
|
Используется специальная системная |
|||
инициализации |
|
|||
|
функция, выводящая на время |
|||
procedure INIT; |
process |
|||
процессы из конкуренции за ресурсы. |
||||
common boolean C1,C2 ; |
common |
|||
Процессор не занят на время ожидания |
||||
begin |
begin |
|
|
|
C1 := false ; |
while |
|
|
|
C2 := false ; |
begin |
|
|
|
start(P1) ; |
C1 |
|
||
start(P2) |
|
|
|
|
end INIT . |
|
|
|
|
|
|
C1 := true ; |
C2 := true ; |
|
|
|
end ; |
end ; |
|
|
CS1 ; C1 := false ; |
CS2 ; C2 := false ; |
||
|
AFTER1 ; |
AFTER2 ; |
||
|
end |
|
end |
|
50 |
end P1 . |
|
end P2 . |
|
|
|
|
||
