Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки - PowerPoint PPT Presentation

bela
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки PowerPoint Presentation
Download Presentation
Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

play fullscreen
1 / 28
Download Presentation
Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки
132 Views
Download Presentation

Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки Милославский А. И.

  2. Термины • Крах. Аварийное завершение работы программы. • Атака. Возможность вмешаться в ход выполнения программы злоумышленником. • UB. Undefined behavior. Непредсказуемое поведение программы. • Утечки памяти. • Очистка. Приведение освобожденной памяти в эффективное для повторного выделения состояние.

  3. Виды темпоральных ошибок • 1. Многократное освобождение блока. • Нарушение работы системы выделения памяти. • Удаление чужих данных.

  4. Виды темпоральных ошибок • 2. Работа с блоком после освобождения его памяти. • Чтение стертых данных. • Ошибочное чтение чужих данных. • Перезапись чужих данных.

  5. Виды темпоральных ошибок • 3. Удаление неверного блока памяти. • 4. Утечки памяти.

  6. Постановка задачи • Требования: • 1. Умеренные накладные расходы. • 2. Неограниченное время работы. • 3. Минимизация всех негативных последствий темпоральных ошибок. • 4. Возможность выполнять временную работу, связанную с большими затратами вычислительной мощности, в «спокойное время» в фоновом режиме. • 5. Ранняя очистка. • 6. Работа системы с кодом, не приспособленным для этого специально. • Пожелания: • 7. Малые накладные расходы. • 8. Возможность аппаратной поддержки. • 9. Полное исключение темпоральных ошибок.

  7. Предыдущиеработы • [1] DinakarDhurjati, Vikram Adve – “Efficiently Detecting All Dangling Pointer Uses in Production Servers” • [2] Wei Xu, Daniel C. DuVarney, R. Sekar - “An Efficient and Backwards-Compatible Transformation to Ensure Memory Safety of C Programs” • [3] Harish Patil, Charles Fischer - “Low-cost, Concurrent Checking of Pointer and Array accesses in C Programs” • [4] Emery D.Berger, Benjamin G.Zorn – “DieHard: Probabilistic Memory Safety for Unsafe Languages”

  8. Сбор статистики • 1. Стартовая нагрузка • 2. Объем использованного виртуального пространства в единицу времени • 3. Распределение запросов по размеру запрошенного блока памяти • 4. Типичное время жизни блока • 5. Чередование выделения и освобождения блоков

  9. EVE Online

  10. EVE Online

  11. EVE Online

  12. Компилятор из поставки Visual Studio 2003

  13. Компилятор из поставки Visual Studio 2003

  14. Компилятор из поставки Visual Studio 2003

  15. Visual Studio 2003

  16. Visual Studio 2003

  17. Visual Studio 2003

  18. Стартовая нагрузка • Пик достигается за несколько секунд • Часто выполняется до 50% от общего числа запросов • В основном короткоживущие блоки • Большое чередование • Высокий потенциал фрагментации

  19. Объем использованного виртуального пространства в единицу времени • 2-3Мб в секунду • Можно ожидать 30Мб/с • Без очистки адресное пространство исчерпается за 100 дней

  20. Распределение запросов по размеру запрошенного блока памяти • Всегда есть типичные размеры блоков • Возможна оптимизация за счет отдельных менеджеров памяти

  21. Типичное время жизни блока • В основном очень малое время жизни • С учетом 15000 запросов в секунду, высокий риск возникновения проблем из-за ошибок

  22. Чередование выделения и освобождения блоков • Короткоживущие блоки сильно чередуются с долгоживущими • Высокая степень фрагментации • Корреляция с размером блока

  23. Среднее число блоков • Для EVE Online – около 3 миллионов • Повышенная сложность учета блоков

  24. DieHard • OKМногократноеосвобождение блока. • 99.5%Работа с блоком послеосвобождения его памяти. • 99.5%Удаление неверногоблока памяти. • XУтечки памяти.

  25. Результатыработы • Написана платформа для испытаний менеджера памяти на реальных программах • Написана система сбора статистики использования памяти в реальных программах • Написана программа для анализа собранной статистики • Выполнен анализ собранной статистики • Проведены исследования различных способов устройства менеджера памяти • Рассмотрено влияние факторов, выявленных в статистике, на исследованные методы • Собрана литература по вариантам, оптимизациям и различным аспектам реализации консервативных сборщиков мусора

  26. Дальнейшая работа • Придумать другие методы реализации менеджера памяти для лучшего выполнения требований и пожеланий • Добавить консервативный сборщик мусора (подчасть 1 пункта) • Реализовать менеджер памяти в коде • Испытать менеджера памяти на реальных программах с использованием готовой платформы • Внедрить готовый менеджер памяти в ОС