Сборники трудов ИСП РАН


Автоматизация разработки моделей устройств и вычислительных машин для QEMU

Ефимов В.Ю. (ИСП РАН, Москва, Россия)
Беззубиков А.А. (ИСП РАН, Москва, Россия)
Богомолов Д.А. (ИСП РАН, Москва, Россия)
Горемыкин О.В. (ИСП РАН, Москва, Россия)
Падарян В.А. (ИСП РАН, Москва, Россия; МГУ, Москва, Россия)

Аннотация

Разработка виртуальных устройств и машин для QEMU — трудоёмкий процесс. С целью поддержки разработчика, в данной работе был проведён анализ архитектуры QEMU и процесса разработки моделей отдельных устройств и виртуальных машин для QEMU. Предлагается подход к разработке, в рамках которого начальный этап ощутимо автоматизируется, благодаря применению декларативного описания устройств и машин, а также средств графического представления разрабатываемых устройств и машин. Подход реализован в интегрированном инструменте, позволяющем разработчику QEMU получить компилируемый набор файлов с исходным Си-кодом. Разработчик задаёт параметры генерации устройств и описывает состав машины на языке Python или в графическом редакторе, обеспечивающем визуализацию текстового описания. Результатом применения инструмента при построении машины становится фактически готовый Си-код, требующий только уточнить конфигурацию процессора и обработать параметры командной строки. В случае периферийного устройства от разработчика потребуется реализовать поведенческий аспект. Проведённые эксперименты с платформами Q35 и Cisco 2621XM показали, что количество строк в описании устройства в 11-26 раз меньше числа строк получаемой заготовки на языке Си. Такая разница в объёме достигнута за счёт генерации формального кода, реализующего служебные интерфейсы QEMU. Такой код составляет ощутимую долю кода устройства, в то время как может быть сгенерирован по сравнительно небольшому описанию. Суммарный объём сгенерированного кода заготовок составил от ¼ до ¾. Исходный код разработанного инструмента доступен по адресу https://github.com/ispras/qdt.

Ключевые слова

программный эмулятор; бинарный код; разработка виртуальных машин

Издание

Труды Института системного программирования РАН, том 29, вып. 6, 2017, стр. 77-104.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2017-29(6)-4

Полный текст статьи в формате pdf Вернуться к содержанию тома