Главная » Просмотр файлов » Виртуализация исполнения машинного кода процессорной архитектуры ARM в Android-x86 окружении

Виртуализация исполнения машинного кода процессорной архитектуры ARM в Android-x86 окружении (1187396)

Файл №1187396 Виртуализация исполнения машинного кода процессорной архитектуры ARM в Android-x86 окружении (Виртуализация исполнения машинного кода процессорной архитектуры ARM в Android-x86 окружении)Виртуализация исполнения машинного кода процессорной архитектуры ARM в Android-x86 окружении (1187396)2020-09-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Министерство образования и науки Российской ФедерацииМОСКОВСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ(государственный университет)ФАКУЛЬТЕТ УПРАВЛЕНИЯ И ПРИКЛАДНОЙ МАТЕМАТИКИКАФЕДРА ИНФОРМАТИКИВиртуализация исполнения машинного кодапроцессорной архитектуры ARM в Android-x86окруженииВыпускная квалификационная работастудента 176 группыЛещёва Даниила СергеевичаНаучный руководительТормасов А.Г., д. ф.-м. н., профессорг. Долгопрудный20171Содержание1. Введение32.Технологии виртуализации52.1 Существующие технологии виртуализации62.2 Устройство QEMU73. Постановка задач114. Возможные подходы виртуализации134.1 Структура эмулятора134.2 User-mode эмуляция184.3 Загрузчик195.

Оптимизация эмуляции266. Оценка быстродействия эмуляции297. Бинарная трансляция337.1 Декомпозиция задачи бинарной трансляции397.2 Модуль code-flow анализа архитектуры ARM447.3 Анализ использования регистров и регистровый аллокатор487.4 Модуль бинарной трансляции507.5 Модуль связывания блоков578.

Оценки производительности619. Заключение6510. Список используемой литературы6721. ВведениеДанная работа является исследованием, относящимся к областивиртуализации, а также архитектурам двух семейств процессоров (ARM иx86). В данной работе рассматривается проблема выполнения машинногокода, скомпилированного под архитектуру ARM на процессорах семействаx86, а также возможное решение с помощью технологии виртуализации.В настоящее время виртуализация становится всё более и болеепопулярнойтехнологией,применяемойкакорганизациями,такиотдельными пользователями.

По своей сути виртуализация являетсяпредоставлениемдополнительногоабстрактногоуровнямеждупользовательскими программами (как ОС, так и приложениями) иаппаратнымиструктурами,накоторыхданныепрограммыбудутвыполняться.Существует огромное множество видов виртуализации, необходимовыделить те их них, которые позволяют исполнять машинный код наархитектуре, чужеродной по отношению к нему (ARM → x86). Их подробноеописание будет дано в разделе ниже, а пока стоит сказать, что в качествеотправной точки была взята эмуляция.Для того, чтобы исследование являлось актуальным, было решено вкачестве прикладной части работы использовать реальную проблему,возникающую перед разработчиками ПО.

Таковой была выбрана проблемапереноса Android приложений, использующих нативный код, с ARMархитектуры на x86 без пересборки. Необходимо сказать, что в данныймомент Android является одной из наиболее популярных мобильных ОС, что3влечёт за собой наличие большого числа разработчиков, выпускающихприложения под эту платформу.Основным языком разработки под Android является Java. Это позволяетразработчикам не задумываться о кроссплатформенности, так как Java-кодисполняется так называемой Java-машиной. До недавнего времени наплатформе Android использовался Dalvik, но с приходом версии 5.0 егозаменил ART.

В то же время Java позволяет использовать при написанииприложений нативные языки, в первую очередь C/C++ через JNI(Java NativeInterface)[1].На данный момент основная масса (>90%) Android-устройств работаютна процессорах архитектуры ARM, однако появляются производители, такиекак Lenovo, предоставляющие модели, работающие на процессорахархитектуры x86 [2].Возникает проблема с проблема с приложениями, использующиминативный машинный код в своем составе, но более не поддерживаемыеразработчиками. В большинстве своём это ресурсоемкие приложения,использующие, как правило, трехмерную графику – игры, CAD-пакеты ипрограммыдляработысвидео.Таккаконинеявляютсякроссплатформенными в отличие от чистых Java-приложений – ихневозможно использовать на устройстве с чужеродной архитектуройпроцессора.Однако данное ограничение можно обойти, если добавить слойвиртуализации, который позволит выполнять машинный код ARM насемействе процессоров x86 без пересборки приложения. Это также позволит4выполнятьотладкуприложений,использующихнативныйкоднепосредственно на рабочей станции разработчика, без необходимости вфизическом устройстве для отладки.2.

Технологии виртуализацииКак уже было сказано выше, в данной работе наибольший интереспредставляют те технологии виртуализации, которые позволяют исполнятьмашинный код ARM на x86, то есть способные предоставлять возможностьиспользовать аппаратную платформу, не связанную архитектурно или каклибо ещё с реальным железом, на котором происходит виртуализация. Внастоящее время эта тема активно развивается посредством усилийразличных компаний из сферы информационных технологий, также написанобольшое количество литературы, посвященной данному вопросу [3,4,5].2.1 Существующие технологии виртуализацииВ настоящее время среди подобных систем можно выделить три наиболеераспространенных технологии [6]:2.1.1. ЭмуляцияЗаключается в полном или частичном представлении необходимыхаппаратныхкомпонентов(процессор,память,устройства)ввидевиртуальных объектов. Для исполнения машинного кода в таком окружениитребуется пошаговый разбор и эмуляция инструкций на виртуальномпроцессоре.Из плюсов подобного подхода можно выделить независимость отаппаратной начинки хостовой системы, а также широкий простор длякастомизации.

К сожалению у такого подхода есть один существенный5минус – эмуляция крайне малопроизводительна, падение быстродействияобычно достигает нескольких порядков.На сегодняшний день такой подход использует QEMU для целого рядапроцессорных архитектур, которые не являются широко распространеннымиили же имеют сложную для трансляции структуру машинного кода.2.1.2. Статическая бинарная трансляцияПодразумевает однократную полную трансляцию гостевого машинногокода в машинный код хостовой системы. Основной проблемой данногоподхода является его сложность, так как без запуска программы невозможно,к примеру, заранее узнать наиболее часто используемые блоки инструкций,для того чтобы провести оптимизации.Основнымпреимуществомтакогоподходаявляетсяскоростьполученного кода, так как после трансляции весь код исполняется нареальной аппаратуры.

К недостаткам можно отнести практическуюсложность реализации.В настоящий момент такой подход использует ART, однако в его случаепроисходить трансляция Java байт-кода в машинные инструкции.2.1.3. Динамическая бинарная трансляцияДанный подход подразумевает трансляцию гостевого машинного кода вмашинный код хостовой платформы на лету, во время исполнения. Для этогокак правило используется эмулятор, который после единичного прохода поблоку машинных инструкций гостевого кода транслирует его в блокмашинныхинструкцийхостовойсистемы,которыйвпоследствииисполняется нативно.Достоинством данного метода является быстродействие, которое6достигается за счёт того, что все или почти все инструкции гостевого кода вконечном счёте исполняются нативно. Также динамический подходпозволяет собирать статистику исполняемого кода , выделять наиболее частоиспользуемые участки кода для оптимизации, находить неиспользуемый код.Вданноевремятакимподходомпользуетсяотечественныймикропроцессор «Эльбрус», предоставляющий таким образом полнуюсовместимость с платформой x86.

Также такой подход для отдельныхучастков кода использует QEMU.2.2 Устройство QEMUВ данный момент QEMU является относительно быстрым машиннымэмулятором, который использует оригинальный динамический транслятор.Он может эмулировать различные архитектуры процессоров (x86, PowerPC,ARM, Sparc), а также является кроссплатформенным. На данный моментQEMU поддерживает полную эмуляцию системы, что позволяет запускатьоперационную систему без модификаций на виртуальной машине. Такжеподдерживается так называемый user-mode в Linux окружении, когда процессисполняемогофайла,скомпилированногопододнупроцессорнуюархитектуру может быть запущен на другой.Далее рассмотри подробно реализацию динамического транслятора,который использует QEMU [7]. Данный динамический транслятор позволяетосуществлять преобразование между гостевыми и хостовыми наборамимашинных инструкций непосредственно во время исполнения программы.Далее полученный бинарный код хранится в кэше и может быть использованснова.

По сравнения с интерпретированием такой подход позволяет7осуществлять выборку и декодирование лишь однажды, а не при каждомпроходе по блоку исходного двоичного кода [19,20].Обычно динамические трансляторы сложно переносить с однойпроцессорной архитектуры на другую, так как генератор кода должен бытьполностью переписан при изменении набора машинных инструкций. Длятого, чтобы избежать этого QEMU использует в качестве кодогенераторакомпиляторС,которыйпредставлендлямножествапроцессорныхархитектур. QEMU таким образом остается лишь собирать полученные блокимашинных инструкций воедино.В первую очередь динамический транслятор в QEMU разделяет каждуюпроцессорную инструкцию на некоторое количество более простыхинструкций, так называемых микроопераций.

Характеристики

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов ВКР

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее