Enviar pesquisa
Carregar
Philosophers
•
0 gostou
•
1,488 visualizações
Alexey Fyodorov
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 34
Baixar agora
Baixar para ler offline
Recomendados
Общество Мертвых Потоков
Общество Мертвых Потоков
Alexey Fyodorov
Интеллектуальные робототехнические системы
Интеллектуальные робототехнические системы
Университет ИТМО
Talk juc jeeconf
Talk juc jeeconf
Dmitry Chuyko
IATE Lecture 3: Quality Assurance for Highload Systems
IATE Lecture 3: Quality Assurance for Highload Systems
Iosif Itkin
Java осень 2014 занятие 1
Java осень 2014 занятие 1
Technopark
Мягкая мебель из Испании и Италии
Мягкая мебель из Испании и Италии
skusnov
Итальянская и испанская мебель для гостиной
Итальянская и испанская мебель для гостиной
skusnov
Каталог модульных систем Selecta
Каталог модульных систем Selecta
8marta
Recomendados
Общество Мертвых Потоков
Общество Мертвых Потоков
Alexey Fyodorov
Интеллектуальные робототехнические системы
Интеллектуальные робототехнические системы
Университет ИТМО
Talk juc jeeconf
Talk juc jeeconf
Dmitry Chuyko
IATE Lecture 3: Quality Assurance for Highload Systems
IATE Lecture 3: Quality Assurance for Highload Systems
Iosif Itkin
Java осень 2014 занятие 1
Java осень 2014 занятие 1
Technopark
Мягкая мебель из Испании и Италии
Мягкая мебель из Испании и Италии
skusnov
Итальянская и испанская мебель для гостиной
Итальянская и испанская мебель для гостиной
skusnov
Каталог модульных систем Selecta
Каталог модульных систем Selecta
8marta
Non-blocking Michael-Scott queue algorithm
Non-blocking Michael-Scott queue algorithm
Alexey Fyodorov
How threads help each other
How threads help each other
Alexey Fyodorov
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Alexey Fyodorov
Counter Wars (JEEConf 2016)
Counter Wars (JEEConf 2016)
Alexey Fyodorov
Non-blocking synchronization — what is it and why we (don't?) need it
Non-blocking synchronization — what is it and why we (don't?) need it
Alexey Fyodorov
Синхронизация без блокировок и СМС
Синхронизация без блокировок и СМС
Alexey Fyodorov
Unsafe: to be or to be removed?
Unsafe: to be or to be removed?
Alexey Fyodorov
JDK: CPU, PSU, LU, FR — WTF?!
JDK: CPU, PSU, LU, FR — WTF?!
Alexey Fyodorov
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
Alexey Fyodorov
Java in Motion
Java in Motion
Alexey Fyodorov
Java Platform Tradeoffs (Riga 2013)
Java Platform Tradeoffs (Riga 2013)
Alexey Fyodorov
Java Platform Tradeoffs (CEE SECR 2013)
Java Platform Tradeoffs (CEE SECR 2013)
Alexey Fyodorov
Процесс изменения платформы Java
Процесс изменения платформы Java
Alexey Fyodorov
Java: how to thrive in the changing world
Java: how to thrive in the changing world
Alexey Fyodorov
Mais conteúdo relacionado
Mais de Alexey Fyodorov
Non-blocking Michael-Scott queue algorithm
Non-blocking Michael-Scott queue algorithm
Alexey Fyodorov
How threads help each other
How threads help each other
Alexey Fyodorov
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Alexey Fyodorov
Counter Wars (JEEConf 2016)
Counter Wars (JEEConf 2016)
Alexey Fyodorov
Non-blocking synchronization — what is it and why we (don't?) need it
Non-blocking synchronization — what is it and why we (don't?) need it
Alexey Fyodorov
Синхронизация без блокировок и СМС
Синхронизация без блокировок и СМС
Alexey Fyodorov
Unsafe: to be or to be removed?
Unsafe: to be or to be removed?
Alexey Fyodorov
JDK: CPU, PSU, LU, FR — WTF?!
JDK: CPU, PSU, LU, FR — WTF?!
Alexey Fyodorov
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
Alexey Fyodorov
Java in Motion
Java in Motion
Alexey Fyodorov
Java Platform Tradeoffs (Riga 2013)
Java Platform Tradeoffs (Riga 2013)
Alexey Fyodorov
Java Platform Tradeoffs (CEE SECR 2013)
Java Platform Tradeoffs (CEE SECR 2013)
Alexey Fyodorov
Процесс изменения платформы Java
Процесс изменения платформы Java
Alexey Fyodorov
Java: how to thrive in the changing world
Java: how to thrive in the changing world
Alexey Fyodorov
Mais de Alexey Fyodorov
(14)
Non-blocking Michael-Scott queue algorithm
Non-blocking Michael-Scott queue algorithm
How threads help each other
How threads help each other
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Counter Wars (JEEConf 2016)
Counter Wars (JEEConf 2016)
Non-blocking synchronization — what is it and why we (don't?) need it
Non-blocking synchronization — what is it and why we (don't?) need it
Синхронизация без блокировок и СМС
Синхронизация без блокировок и СМС
Unsafe: to be or to be removed?
Unsafe: to be or to be removed?
JDK: CPU, PSU, LU, FR — WTF?!
JDK: CPU, PSU, LU, FR — WTF?!
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
Java in Motion
Java in Motion
Java Platform Tradeoffs (Riga 2013)
Java Platform Tradeoffs (Riga 2013)
Java Platform Tradeoffs (CEE SECR 2013)
Java Platform Tradeoffs (CEE SECR 2013)
Процесс изменения платформы Java
Процесс изменения платформы Java
Java: how to thrive in the changing world
Java: how to thrive in the changing world
Philosophers
1.
Обедающие философы наносят ответный
удар Алексей Фёдоров @23derevo
2.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
3.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.3 Агенда Проблема обедающих философов Проблемы с обедающими философами Теория Практика на Java
4.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.4 Проблема обедающих философов Dijkstra, 1965 Hoare, 1985
5.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.5 Проблема обедающих философов 5 философов по кругу – Тарелка с едой перед каждым – Вилки между тарелками Каждый может – Размышлять – Брать одну вилку – Есть двумя вилками – Класть одну вилку Dijkstra, 1965 Hoare, 1985
6.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.6 Проблемы с обедающими философами Пусть каждый философ действует по некоторому алгоритму Могут ли все философы умереть с голоду Можно ли составить такой алгоритм, чтобы все философы гарантированно не умерли с голоду?
7.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.7 Параметры задачи Количество философов Есть ли возможность положить вилку, не пожрамши Сколько времени философ ест – Фиксированное или случайная величина Сколько времени философ размышляет – Фиксированное или случайная величина – Как это время соотносится с временем еды Какие ещё инструменты/элементы есть в системе? Что ещё?
8.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.8 Фиксированное время и случайное время Случайное время задаётся какой-то функцией распределения Константа тоже задаётся функцией распределения – А бывают ли вообще константы в реальном мире?
9.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.9 Фиксированное время и случайное время Случайное время задаётся какой-то функцией распределения Константа тоже задаётся функцией распределения – А бывают ли вообще константы в реальном мире? 200 40 60
10.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.10 Фиксированное время и случайное время Случайное время задаётся какой-то функцией распределения Константа тоже задаётся функцией распределения – А бывают ли вообще константы в реальном мире? 200 40 60
11.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.11 Решение Как только философ хочет есть, он делает следующие шаги: 1. Берёт левую от себя вилку 2. Берёт правую от себя вилку 3. Ест 4. Кладёт правую от себя вилку 5. Кладёт левую от себя вилку И так по кругу
12.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.12 Моделирование на Java
13.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.13 Стенд Dell Latitude E6420 – Intel Core i7 4 cores x 2 threads = 8 HW threads 2,2 GHz – 16 Gb RAM – Oracle JDK 8 update 5 Windows 7 SP1
14.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.14 SMALL DEMO
15.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.15 Теория
16.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.16 Взаимоблокировка Ресурс – объект, к которому предоставляется доступ. Во время работы процесс может брать (захватывать) ресурсы. Взаимоблокировка – такое состояние системы, при котором два или более процессов не могут продолжать своё выполнение из-за отсутствия необходимых для этого ресурсов. Каждый ждёт другого, поэтому никто не может продолжить
17.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.17 Выгружаемые и невыгружаемые ресурсы Выгружаемые ресурсы – ресурсы, которые могут быть безболезненно отобраны у процесса, который ими обладает Невыгружаемые ресурсы – ресурсы, которые нельзя отобрать у процесса, не вызвав при этом сбой в вычислениях Мы будем говорить, в основном, о невыгружаемых ресурсах
18.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.18 Операции над невыгружаемыми ресурсами Запрос ресурса – Берём ресурс или ждём (встаём в «очередь» ожидания) – Виды блокирующих запросов без таймаута с таймаутом с исключением (ошибкой) Использование ресурса Освобождение ресурса
19.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.19 Условия возникновения взаимоблокировок Коффман, 1971 1. Условие взаимного исключения ( ≤ 1 ) 2. Условие удержания и ожидания ( 1 + ) 3. Условие невыгружаемости ( < ) 4. Условие циклического ожидания ( O ) Следствие: любая стратегия упреждения/обнаружения/устранения блокировок основана на нарушении какого-то из этих пунктов
20.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.20 Моделирование взаимоблокировок Граф ресурсов (Holt, 1972)
21.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.21 Стратегии борьбы с блокировками Игнорирование проблемы Обнаружение и восстановление Динамическое уклонение Предотвращение за счёт структурного подавления любого из четырёх необходимых для возникновения условий: 1. Условие взаимного исключения 2. Условие удержания и ожидания 3. Условие невыгружаемости 4. Условие циклического ожидания
22.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.22 Игнорирование проблемы Делаем вид, что проблема отсутствует – Насколько часто возникает проблема? – Как часто возникают сбои в системе по другим причинам? – Насколько серьёзны могут быть последствия?
23.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.23 Обнаружение взаимоблокировок и восстановление работоспособности Шаги – Позволить блокировке произойти – Пытаться обнаружить момент возникновения – Попробовать восстановить работоспособность В нашем примере можно просто перезапускать философов
24.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.24 Выход из взаимоблокировки Приоритетный захват ресурсов – Приоритизировать (все) процессы – Отобрать ресурс у менее приоритетного процесса Откат – Периодически создаются контрольные точки – При обнаружении блокировки происходит откат При откате часть работы (которая была выполнениа после прохождания последней контрольной точки) теряется Уничтожение и перезапуск процессов
25.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.25 Уклонение от взаимоблокировки Траектории ресурса Безопасное и небезопасное состояние Алгоритм банкира – Дейкстра, 1965
26.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.26 Предотвращение взаимоблокировки Атака условия взаимного исключения Атака условия ожидания и удержания Атака условия невыгружаемости Атака условия циклического ожидания
27.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.27 Атака условия взаимного исключения Редко возможна: часто программа становится некорректной Убирать ненужные локи Иногда функциональность не страдает
28.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.28 Атака условия ожидания и удержания Запрашивать ВСЕ необходимые ресурсы не в процессе работы, а до начала работы. – Но не всегда ресурсы известны заранее Вначале временно высвободить все удерживаемые ресурсы
29.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.29 Атака условия невыгружаемости Разрешить выгружать!
30.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.30 Атака условия циклического ожидания Нумерация ресурсов
31.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.31 DEMO TIME
32.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.32 Литература
33.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.33 Литература
34.
Copyright © 2014,
Oracle and/or its affiliates. All rights reserved.34 Q&A @23derevo fyodorov.spbu@gmail.com https://bitbucket.org/23derevo/concurrency
Baixar agora