УДК 004.4'233
ОСОБЕННОСТИ ДЕТЕРМИНИРОВАННОГО ВОСПРОИЗВЕДЕНИЯ ПРОГРАММ ДЛЯ СИМУЛЯТОРА МОБИЛЬНОЙ ПЛАТФОРМЫ
Н.И.Фурсова, П.М.Довгалюк
SPECIFICS OF DETERMINISTIC SIMULATION OF SOFTWARE FOR A MOBILE PLATFORM EMULATOR
N.I.Fursova, P^Dovgalyuk
Институт электронных и информационных систем НовГУ, [email protected],
Pavel. Dovgaluk@ispras. ru
Описывается реализация технологии детерминированного воспроизведения программ для симулятора популярной мобильной платформы. Эта технология позволяет записывать и воспроизводить сценарии работы программ в симуляторе, что, в свою очередь, позволяет производить детерминированную отладку приложений. Ключевые слова: QEMU, детерминированное воспроизведение, мобильные платформы
This paper contains description of the technology of deterministic replay of program for emulator of popular mobile platform. This technology makes it possible to write and replay scenarios of programs work in the emulator. Also it allows to make deterministic debugging of applications.
Keywords: QEMU, deterministic replay, mobile platforms
В настоящее время мобильные устройства широко распространены и, учитывая мощности современных смартфонов, используются они уже не только для звонков и обмена сообщениями. Пользователи доверяют своим телефонам все больше конфиденциальной информации (личная и деловая переписка, финансовые операции и т.д.) и важно, чтобы программное обеспечение было надежным и максимально лишенным уязвимостей. Для достижения этой цели разрабатываемое программное обеспечение необходимо тщательно отлаживать и анализировать. Динамический анализ [1] представляет собой сложный процесс, но существует возможность его упростить при помощи детерминированного воспроизведения.
Детерминированное воспроизведение — это технология, позволяющая записывать и воспроизводить сценарии работы программ в симуляторе. Данная технология позволяет выполнять детерминированную отладку приложений [2].
Технология детерминированного воспроизведения не нова, однако для мобильных устройств она не применялась в необходимом масштабе. В работе [3] реализовано только воспроизведение работы устройств ввода, в то время как интересно воспроизведение системы в целом.
Для реализации технологии детерминированного воспроизведения был выбран симулятор популярной мобильной платформы, основанный на виртуальной машине QEMU. Данный симулятор имеет открытый исходный код, что позволяет вносить необходимые изменения.
Детерминированное воспроизведение основано на использовании журнала событий, предполагающем работу в два этапа: запись событий и воспроизведение событий. Данные устройств, вносящих недетерминированность, должны быть записаны в журнал
в режиме записи и считаны из него в режиме воспроизведения. Для реализации этого подхода необходимо доработать некоторые модули симулятора.
Изменения заключались в доработке таких модулей, как модуль динамической трансляции кода, видео- и аудиоадаптеры, сетевая карта, устройства ввода, часы, модуль работы с образами дисков. Доработанные части симулятора и их взаимодействия отражены на рисунке.
Схема реализации технологии детерминированного воспроизведения
Модуль retrace предоставляет остальным модулям симулятора доступ к журналу событий через специальные функции.
Рассмотрим доработанные модули. Модули симулятора, отвечающие за динамическую трансляцию кода, чтение аппаратных часов, клавиатуру и мышь, были модифицированы так же, как в работе [4].
Сетевая карта
Сеть является одним из самых известных источников недетерминированности, поскольку даже если данные из сети не запрашиваются явно (загрузка страниц в браузере, закачивание данных), сетевые пакеты все время приходят и отправляются (broadcast). Следовательно, вероятность того, что при записи и воспроизведении пакеты будут приходить в одно и то же время, стремится к нулю.
Поскольку исходящий трафик формируется виртуальными устройствами симулятора, то он не является недетерминированным и не нуждается в записи в журнал, в то время как входящий трафик идет из внешней сети через аппаратное обеспечение хостовой машины.
Таким образом, для функционирования разрабатываемого модуля важны только входящие сетевые пакеты. Поэтому решение заключается в том, чтобы записывать входящие сетевые пакеты в журнал и извлекать их оттуда, а не из внешней сети, при воспроизведении.
Видеоадаптер
Обновление экрана при работе симулятора происходит часто и может зависеть от разных событий. Поскольку обновление экрана происходит с помощью прерывания, то это действие, произошедшее в разные моменты времени при записи и воспроизведении, повлияет на ход воспроизведения.
Для решения этой проблемы может быть использован механизм контрольных точек. Идея заключается в том, что в режиме записи перед обновлением экрана ставится контрольная точка, которая записывается в журнал. В режиме воспроизведения, когда симулятору пришло событие обновления экрана, он сначала проверяет наличие этой контрольной точки в журнале. Если точка присутствует, происходит прерывание, если нет, то симулятор не делает прерывание в этот момент, ожидая наступления контрольной точки, и синхронизирует таким образом работу режима записи и воспроизведения.
Образы дисков
Симулятор в процессе своей работы использует несколько образов дисков. Некоторые из них являются системными и не вносят недетерминированности в работу симулятора, поскольку открываются им только для чтения, в то время как остальные (пользовательские) образы открываются на чтение и запись.
Таким образом, если при записи журнала образы дисков были изменены, то воспроизведение работать не будет, поскольку чтобы воспроизведение журнала было детерминированным, оно должно начинаться с того же самого состояния, что и запись. Состояние системы включает в себя состояния всех симулируемых устройств, в том числе и образы дисков.
Проблема может быть решена путем копирования образов дисков и использования временных файлов. Настоящие образы не подвергаются никаким изменениям при записи и воспроизведении. При старте симулятора происходит копирование образов, затем перезаписываются пути к файлам (вместо путей к настоящим образам записываются пути к временным), и вся дальнейшая работа происходит с этими временными файлами. Таким образом гарантируется идентичность образов при запуске и воспроизведении.
Заключение
Вышеизложенные принципы были реализованы на практике путем доработки модулей симулято-ра.
Симулятор с внесенными изменениями может быть использован для детерминированной отладки и для осуществления двухпроходной трассировки приложений, использующих такие периферийные устройства, как клавиатура, мышь, аудиоадаптер, сетевая карта.
Далее планируется разработать механизм сохранения состояний виртуальной машины, что ляжет в основу реализации обратной отладки приложений.
Работа поддержана грантом РФФИ (11-0700353).
1. Падарян В.А Динамический анализ бинарного кода // Мат. семинара каф. системного программирования ИСП, 22 марта 2013. Системные требования: Adobe Acrobat Reader. URL: http://sp.cmc.msu.ru/proseminar/2013/padaryan.2013.03.22.pdf (дата обращения: 15.09.2013). 40 стр.
2. Довгалюк П.М., Макаров В.А. Обратная отладка с помощью детерминированного воспроизведения программ в виртуальной машине // Вестник НовГУ. Сер.: Техн. науки. 2012. №68. С.51-56.
3. Gomez L., Neamtiu I., Azim T., Millstein T., RERAN: timing- and touch-sensitive record and replay // Proceedings of the International Conference on Software Engineering (ICSE '13). 2013. P.72-81.
4. Довгалюк П.М. Детерминированное воспроизведение процесса выполнения программ в виртуальной машине // Тр. Ин-та системного программирования РАН. 2012. Т.21. С.123-132.
Bibliography (Transliterated)
1. Padarian V.A. Dinamicheskii analiz binarnogo koda // Mat. seminara kaf. sistemnogo programmirovaniia ISP, 22 marta 2013. Sistemnye trebovaniia: Adobe Acrobat Reader. URL: http://sp.cmc.msu.ru/proseminar/2013/padaryan.2013.03.22.pdf (data obrashcheniia: 15.09.2013). 40 str.
2. Dovgaliuk P.M., Makarov V.A. Obratnaia otladka s pomo-shch'iu determinirovannogo vosproizvedeniia programm v virtual'noi mashine // Vestnik NovGU. Ser.: Tekhn. nauki. 2012. №68. S.51-56.
3. Gomez L., Neamtiu I., Azim T., Millstein T., RERAN: timing- and touch-sensitive record and replay // Proceedings of the International Conference on Software Engineering (ICSE '13). 2013. P.72-81.
4. Dovgaliuk P.M. Determinirovannoe vosproizvedenie protsessa vypolneniia programm v virtual'noi mashine // Tr. In-ta sistemnogo programmirovaniia RAN. 2012. T.21. S.123-132.