Основы современных операционных систем Лекция 12

advertisement
Основы современных
операционных систем
Лекция 12
vosafonov@gmail.com
http://polyhimnie.math.spbu.ru/jtl
Синхронизация процессов
(C) В.О. Сафонов, 2010
2
История
(C) В.О. Сафонов, 2010
3
Ограниченный буфер:
Представление
(C) В.О. Сафонов, 2010
4
Ограниченный буфер:
Производитель
(C) В.О. Сафонов, 2010
5
Ограниченный буфер:
Потребитель
(C) В.О. Сафонов, 2010
6
Ограниченный буфер:
Атомарность операций над counter
(C) В.О. Сафонов, 2010
7
Ограниченный буфер:
Реализация операций над counter
(C) В.О. Сафонов, 2010
8
Ограниченный буфер:
Совместное обращение (interleaving)
(C) В.О. Сафонов, 2010
9
Ограниченный буфер:
Эффект interleaving
(C) В.О. Сафонов, 2010
10
Конкуренция за общие данные
(race condition)
(C) В.О. Сафонов, 2010
11
Проблема критической секции
(C) В.О. Сафонов, 2010
12
Решение проблемы критической секции


(C) В.О. Сафонов, 2010
13
Первоначальные попытки решения
проблемы
(C) В.О. Сафонов, 2010
14
Алгоритм 1
(C) В.О. Сафонов, 2010
15
Алгоритм 2
(C) В.О. Сафонов, 2010
16
Алгоритм 3
(C) В.О. Сафонов, 2010
17
Алгоритм булочной
(bakery algorithm) – L. Lamport
(C) В.О. Сафонов, 2010
18
Алгоритм булочной
(C) В.О. Сафонов, 2010
19
Аппаратная поддержка
синхронизации
(C) В.О. Сафонов, 2010
20
Взаимное исключение с помощью
TestAndSet
(C) В.О. Сафонов, 2010
Аппаратное решение для
синхронизации
(C) В.О. Сафонов, 2010
Взаимное исключение с помощью Swap
(C) В.О. Сафонов, 2010
Общие семафоры –
counting semaphores
(по Э. Дейкстре)
(C) В.О. Сафонов, 2010
Критическая секция для N процессов
(C) В.О. Сафонов, 2010
Реализация семафора
(C) В.О. Сафонов, 2010
Реализация
(C) В.О. Сафонов, 2010
Семафоры как общее средство
синхронизации
(C) В.О. Сафонов, 2010
Два типа семафоров
(C) В.О. Сафонов, 2010
Вариант операции wait(S) для системных
процессов (“Эльбрус”)
(C) В.О. Сафонов, 2010
Реализация общего семафора S с
помощью двоичных семафоров
(C) В.О. Сафонов, 2010
Реализация операций над семафором S
(C) В.О. Сафонов, 2010
Классические задачи синхронизации
(C) В.О. Сафонов, 2010
Задача “ограниченный буфер”
(C) В.О. Сафонов, 2010
Процесс-производитель
ограниченного буфера
(C) В.О. Сафонов, 2010
Процесс-потребитель ограниченного
буфера
(C) В.О. Сафонов, 2010
Задача “читатели-писатели”
(C) В.О. Сафонов, 2010
Процесс-писатель
(C) В.О. Сафонов, 2010
Процесс-читатель
(C) В.О. Сафонов, 2010
Задача “обедающие философы”
nОбщие данные
semaphore chopstick[5];
Первоначально все значения равны 1
(C) В.О. Сафонов, 2010
Задача “обедающие философы”
(C) В.О. Сафонов, 2010
Критические области
(critical regions)
(C) В.О. Сафонов, 2010
Пример: ограниченный буфер
(C) В.О. Сафонов, 2010
Процесс-производитель
(C) В.О. Сафонов, 2010
Процесс-потребитель
(C) В.О. Сафонов, 2010
Реализация оператора
region x when B do S
(C) В.О. Сафонов, 2010
Реализация
(C) В.О. Сафонов, 2010
Мониторы (C. A. R. Hoare)
(C) В.О. Сафонов, 2010
Мониторы: условные переменные
(C) В.О. Сафонов, 2010
Схематическое представление
монитора
(C) В.О. Сафонов, 2010
Монитор с условными переменными
(C) В.О. Сафонов, 2010
Пример: обедающие философы
(C) В.О. Сафонов, 2010
Обедающие философы: реализация
операций pickup и putdown
(C) В.О. Сафонов, 2010
Обедающие философы:
реализация операции test
(C) В.О. Сафонов, 2010
Реализация мониторов с помощью
семафоров
(C) В.О. Сафонов, 2010
Реализация мониторов
(C) В.О. Сафонов, 2010
Реализация мониторов
(C) В.О. Сафонов, 2010
Реализация мониторов
(C) В.О. Сафонов, 2010
Синхронизация в Solaris
(C) В.О. Сафонов, 2010
Синхронизация в Windows 2000
(C) В.О. Сафонов, 2010
Q&A
(C) В.О. Сафонов, 2010
61
Download