Исследовательская группа

Лаборатория языковых инструментов

Летняя школа по управлению памятью

26-30 августа 2013 г.

5661ba1d15772.jpgВедущий специалист: Олег Плисс, Oracle, Санта-Клара, США

Программа школы:

  • Введение. Цели и структура курса.
  • Основные понятия. Фрагментация внутренняя и внешняя, пропускная способность, латентность, предсказуемость, жесткое и мягкое реальное время.
  • Особенности аппаратного обеспечения современных ЭВМ. Иерархия памяти, страничная адресация, параллелизм. Локальность обращений к памяти, варианты устройства кэш-памяти, оптимизация структур данных и программ для повышения локальности. Латентность, внеочередное исполнение (out-of-order execution). Виртуальная память. Использование прерываний защиты памяти и обращения по невыровненному адресу для обработки редких граничных условий. Аппаратный параллелизм, обеспечение консистентности и когерентности. Динамическое порождение и самомодификация кода.
  • Статическое отведение памяти. Управление памятью на уровне операционной системы.
  • Отведение памяти в программном стеке. Секции фиксированного и переменного размера. Передача параметров и выдача результатов. Статически вложенные блоки.
  • Отведение памяти в пулах. Классификация пулов: накопительные и освободительные, непрерывные и кусочные, фиксированного размера и расширяемые; классификация по размеру, времени жизни и дисциплине отведения-освобождения объектов. Примитивные последовательные и связные пулы. Комбинированные пулы.
  • Ручное отведение памяти в «куче». Классификация механизмов управления кучей: последовательный поиск подходящего блока (FirstFit, NextFit, BestFit, WorstFit), разделение объектов по размерам (segregated storage, segregated fit), метод близнецов (и его разновидности), индексированный поиск, поиск по битовой карте. Деление и слияние блоков. Повышение производительности при помощи пулов. Трудность оценки производительности. Трассы отведения памяти.
  • Сборка мусора. Классификации алгоритмов: подсчет ссылок или сканирование, точная или консервативная сборка, прямые указатели или дескрипторы, полная или выборочная сборка, «останавливающая» (stop-the-world) или одновременная (concurrent), одно- и многопоточная. Автоматизированное освобождение памяти. «Умные» указатели. Счетчики ссылок, пометка с последующим освобождением, пометка с последующим уплотнением, копирование. Избегание и обработка переполнения стека. Сборка мусора поколениями. Барьеры доступа, записи и чтения. Одновременные и параллельные вариации алгоритмов.

Дополнительно