- •НИУ ВШЭ – Пермь
- •Понятие информационной системы
- •Понятие корпоративной информационной системы
- •Эволюция информационных систем и технологий
- •Понятие процесса
- •Понятие ресурса
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Развитие процессов в ИС
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Проблема взаимного исключения: пример
- •Понятие критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Свойства критической секции
- •Условия реализации критической секции
- •Условия реализации критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Простейший пример критической секции
- •Программные методы решения: вариант 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 – алгоритм Деккера
- •Недостатки программных методов
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Блокирующие функции
- •Блокирующие функции
- •Блокирующие функции
- •Аппаратная поддержка выполнения блокирующих функций
- •Блокирование файлов при создании или открытии
- •Современные методы решения проблемы взаимного исключения
- •Современные методы решения проблемы взаимного исключения
- •Понятие семафора
- •Семафорные примитивы
- •Семафорные примитивы
- •Семафорные примитивы
- •Решение проблемы взаимного исключения с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Реализация отношения предшествования с помощью семафоров
- •Объекты диспетчеризации и синхронизация процессов
- •Использованные источники:
Развитие процессов в ИС
При выполнении процесса в ВС он проходит ряд дискретных состояний, связь которых можно представить с помощью графа:
Что, если параллельно с одними и
теми же ресурсами работают несколько процессов, выполняющихся на
разных процессорах? 
Завершение
11
Проблема взаимного исключения: пример
В ВС существует несколько процессов P1, P2, ... , Pn, каждый из
которых увеличивает значение разделяемой (общей) переменной C (например, выполняются программы, обслуживающие некоторые запросы, и требуется считать общее количество выполненных в ВС запросов).
Таким образом, в каждой из выполняющихся программ должны быть операторы вида
C := C + 1.
12
Проблема взаимного исключения: пример
Увеличение значения счётчика C выполняется с помощью последовательности из трёх (как минимум) операций: чтения (выборки из общей памяти или из общего файла) текущего значения переменной, увеличения значения этой переменной на 1 и сохранения (записи в память или в файл) увеличенного значения:
read(C); inc(C); write(C).
Эта последовательность операций выполняется каждым из процессов в ИС, причём процессы выполняются независимо друг от друга, поэтому неизвестен заранее порядок, в котором они
13 подойдут к выполнению этих действий.
Проблема взаимного исключения: пример
Таким образом возможна ситуация:
|
Порядок выполнения операций процессами |
|||
Процесс |
1 |
2 |
3 |
4 |
Pi |
read(C) |
inc(C) |
write(C) |
... |
Pj |
... |
read(C) |
inc(C) |
write(C) |
14
Проблема взаимного исключения: пример
Таким образом возможна ситуация:
C = 100
C = 100
read(C); inc(C); write(C).
|
read(C); |
|
… |
|
read(C); |
|
|
inc(C); |
|
|
inc(C); |
|
|
|
write(C). |
|
|
|
write(C). |
|
|
|
|
|
|
|
|
15
Проблема взаимного исключения: пример
Таким образом возможна ситуация:
read(C); inc(C); write(C).
C = 101
C = 100
C = 100
|
read(C); |
|
… |
|
read(C); |
|
|
inc(C); |
|
|
inc(C); |
|
|
|
write(C). |
|
|
|
write(C). |
|
|
|
|
|
|
|
|
16
Проблема взаимного исключения: пример
Таким образом возможна ситуация:
C = 101
read(C); inc(C); write(C).
C = 101
|
|
|
|
|
read(C); |
|
|
read(C); |
|
… |
|||
|
|
|
inc(C); |
|
||
|
inc(C); |
|
|
|
write(C). |
|
|
write(C). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C = 101
17
Проблема взаимного исключения: пример
Таким образом возможна ситуация:
read(C); inc(C); write(C).
C = 101
C = 101
|
read(C); |
|
… |
|
read(C); |
|
|
inc(C); |
|
|
inc(C); |
|
|
|
write(C). |
|
|
|
write(C). |
|
|
|
|
|
|
|
|
18
Проблема взаимного исключения: пример
Взаимное исключение необходимо в том случае, когда несколько процессов работают параллельно с разделяемыми (общими) данными, совместное использование которых может привести к их разрушению или к конфликтной ситуации.
C = 101
read(C); inc(C); write(C).
|
read(C); |
|
… |
|
read(C); |
|
|
inc(C); |
|
|
inc(C); |
|
|
|
write(C). |
|
|
|
write(C). |
|
|
|
|
|
|
|
|
19
Понятие критической секции
Критическая секция (интервал, участок) – это последовательность команд программы, операции которой связаны с обращением к разделяемым ресурсам, причём параллельное выполнение несколькими процессами действий, заданных в критических секциях, может привести к разрушению этих ресурсов или получению неверного результата.
Каждая критическая секция требует реализации взаимного исключения по отношению к одному конкретному разделяемому ресурсу (единице данных: переменной в общей памяти, целому файлу или записи в файле и т.п.), который выступает в качестве последовательно используемого, требующего монопольного доступа ресурса.
20
