Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


courses:high_performance_computing:questions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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