Основы современных операционных систем Лекция 12 [email protected] 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