В воскресенье 11 октября в 18:00 Антон Подкопаев (MPI-SWS, JetBrains Research, ВШЭ) прочтёт лекцию "Модели памяти языков программирования: проблемы, решения и направления развития" https://compsciclub.ru/courses/csseminar/2020-autumn/classes/6061/
Лекция будет читаться через zoom. Подробные инструкции будут опубликованы в новостях курса (их получат те, кто запишется на курс).
Анонс лекции:
Использование компиляторных и процессорных оптимизаций приводит к тому, что современные языки программирования не гарантируют модель памяти последовательной консистентности (sequential consistency, SC, Lamport:TC79) для многопоточных программ. Вместо этого, такие языки обладают слабыми моделями памяти, допускающими больше возможных результатов исполнения программ. Такие модели памяти балансируют между производительностью, как следствие свободы, предоставляемой компилятору и процессору, и гарантиями на разумность поведения программы, предоставляемыми программисту.
В этом докладе вводятся слабые модели памяти, рассматриваются требования к моделям памяти языков программирования, а также обсуждаются достоинства и недостатки моделей, используемых в индустрии (C/C++11 Batty-al:POPL11 и Java Manson-al:POPL05). Далее рассматриваются новые модели памяти (RC11 Lahav-al:PLDI17, MRD Paviotti-al:ESOP20, Promising 1.0 Kang-al:POPL17, Promising 2.0 Hwan-al:PLDI20, Weakestmo Chakraborty-Vafeiadis:POPL19), призванные решить упомянутые недостатки. В заключении обсуждается то, как стоит подходить к выбору и/или модификации модели памяти для языка программирования или виртуальной машины.
Целевая аудитория:
- интересующиеся низкоуровневым многопоточным программированием;
- разработчики языков и виртуальных машин.
Основные идеи доклада:
- Модели памяти популярных языков (C/C++ и Java) имеют существенные недостатки.
- Существуют модели без них, но с разными компромиссами.
- Предлагается способ подбора или модификации модели памяти под требования языка и/или виртуальной машины.