courses:high_performance_computing:questions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
courses:high_performance_computing:questions [2016/11/20 00:23] – kel | courses:high_performance_computing:questions [2016/11/20 00:55] – kel | ||
---|---|---|---|
Line 42: | Line 42: | ||
- Захвачен в 1 строке, | - Захвачен в 1 строке, | ||
- | ===== 6. Алгоритмы синхронизации | + | ===== 6. Ранжирование алгоритмов ===== |
Расположите алгоритмы синхронизации в порядке увеличения потенциальной производительности в жёсткой конкурентной среде: | Расположите алгоритмы синхронизации в порядке увеличения потенциальной производительности в жёсткой конкурентной среде: | ||
- Грубая, | - Грубая, | ||
Line 48: | Line 48: | ||
- Неблокирующая, | - Неблокирующая, | ||
- Грубая, | - Грубая, | ||
+ | |||
+ | ===== 7. Выбор алгоритма ===== | ||
+ | Отметьте вид алгоритмов синхронизации, | ||
+ | - Грубая | ||
+ | - Тонкая | ||
+ | - Оптимистичная | ||
+ | - Неблокирующая | ||
+ | |||
+ | ===== 8. Wait-free алгоритм ===== | ||
+ | Выберите корректное определение wait-free класса алгоритмов: | ||
+ | - Любой поток ожидает, | ||
+ | - Любой поток может выполнить свои функции за конечное число шагов, если ни один другой поток не находится в критической секции | ||
+ | - Система в целом продвигается вперед не зависимо ни от чего | ||
+ | - Любой поток может выполнить свои функции за конечное число шагов, не зависимо ни от чего | ||
+ | |||
+ | ===== 9. Определение типа ошибки ===== | ||
+ | Какая ошибка потенциально может возникнуть в приведённом коде: | ||
+ | <code c++> | ||
+ | void f() { | ||
+ | first_mutex.lock(); | ||
+ | second_mutex.lock(); | ||
+ | ... | ||
+ | } | ||
+ | |||
+ | void g() { | ||
+ | second_mutex.lock(); | ||
+ | first_mutex.lock(); | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | - Гонка данных (Data Race) | ||
+ | - Взаимная блокировка (Deadlock) | ||
+ | - Проблема ABA | ||
+ | - Инверсия приоритетов | ||
+ | |||
+ | ===== 10. Реализация lock-free алгоритмов ===== | ||
+ | Почему lock-free алгоритмы легче реализовать на языке со сборщиком мусора, | ||
+ | - Невозможна инверсия приоритетов | ||
+ | - Наличие существующих базовых контейнеров в java.util.concurrent | ||
+ | - Невозможна проблема ABA | ||
+ | - Наличие CAS-операций | ||
===== Консенсус ===== | ===== Консенсус ===== |
courses/high_performance_computing/questions.txt · Last modified: 2016/11/24 00:07 by kel