Статья: Исследование и реализация способов расширения номенклатуры виртуальных устройств, подключаемых к гипервизорному виртуализационному решению

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Исследование и реализация способов расширения номенклатуры виртуальных устройств, подключаемых к гипервизорному виртуализационному решению

Введение

виртуализация интерфейс производительность

Актуальность темы исследования. На сегодняшний день в развитии компьютерной индустрии важную роль играет разработка, создание и модернизация внешних устройств, подключаемых к компьютеру. Более современные устройства, такие как камеры, передают большие объемы данных через различные интерфейсы для воспроизведения их на компьютере. Вместе с этим, все большую роль играют технологии виртуализации, применительно к частным и корпоративным решениям. Для сохранения актуальности виртуализации нужно расширять спектр возможностей виртуальных машин в соответствии с современными технологическими достижениями. Таким образом, для развития виртуализации необходимо поддерживать виртуализацию новых устройств, учитывая их запросы касательно скорости передачи данных.

Данная дипломная работа описывает методы расширения интерфейса взаимодействия устройств с гостевыми операционными системами, что позволяет виртуализовать новые классы устройств на должном уровне и, таким образом, расширить номенклатуру виртуальных устройств.

Объектом исследования является интерфейс передачи данных между гостевыми и хостовой операционной системами.

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

Используемая методология и степень разработанности темы. Решение данной задачи базируется на теории виртуализации памяти в гипервизорном виртуализационном решении и использовании данных об организации виртуального адресного пространства гостевой операционной системы. Данная тема является очень узкоспециализированной, поэтому исследования, описываемые в этой работе, являются уникальными.

Теоретическая значимость. Разработаны и реализованы две модели передачи данных между гостевой и хостовой операционными системами на основе общих страниц памяти для монитора виртуальных машин (VMM) и гостевой части виртуальной машины.

Практическая значимость. Для разработанных моделей измерена скорость передачи данных. Полученный интерфейс предлагается к использованию для виртуализируемых устройств в качестве альтернативы существующим методам передачи данных между гостевой и хостовой операционными системами.

Структура исследования. Работа состоит из введения, девяти глав и заключения. В первой главе описывается устройство гипервизорного вируализационного решения - платформы, для которой мы проводим расширение номенклатуры. Во второй главе рассматриваются четыре способы виртуализации устройств: эмуляция, проброс, аппаратная виртуализация и паравиртуализация. В третьей главе мы рассмотрим концепцию модульных устройств как способ расширить номенклатуру виртуальных устройств. В четвертой главе мы рассмотрим вопрос о возможных направлениях деятельности, связанной с созданием интерфейса между гостевой и хостовой операционными системами в зависимости от способа виртуализации устройств. В пятой главе мы рассмотрим основной механизм, используемый нами при создании интерфейса - Open ToolsGate (OTG). В шестой и седьмой главах описываются две модели передачи данных на основе механизма Open ToolsGate: базовая и расширенная. В восьмой главе приведены результаты измерения скорости передачи данных рассматриваемых моделей. И, наконец, в последней главе указаны дальнейшие направления деятельности для улучшения интерфейса и расширения номенклатуры.

1. Описание гипервизорного виртуализационного решения

Прежде всего, вкратце рассмотрим основные принципы работы платформы для нашей исследовательской работы. Главной составляющей гипервизорного виртуализационного решения является, собственно, сам гипервизор.

Гипервизор или Virtual Machine Manager - програмная схема, позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере [1]. Гипервизор также играет роль диспетчера ресурсов системы, таких как память, процессоры, устройства… Гипервизор обеспечивает изоляцию гостевых операционных систем друг от друга.

Гипервизоры разделяются по типу управления ресурсами хоста:

1. Гипервизор, который устанавливается непосредственно на аппаратную часть без предварительной установки операционной системы. Гипервизор такого типа, по сути, сам является «облегченной» версией хостовой операционной системы, выполняя функции распределения памяти и процессоров.

2. Гипервизор, который работает поверх установленной операционной системы в нулевом кольце (т.е. в качестве ядерного модуля). Гостевые операционные системы используют аппаратные ресурсы не напрямую, а через хостовою операционную систему (с помощью гипервизора).

В рамках данной дипломной работы мы будем рассматривать гипервизоры второго типа, как наиболее распространённые. Взаимосвязь базовых компонентов гипервизорного виртуализационного решения, использующего гипервизор второго типа, изображена на рисунке 1.1.

Устройство гипервизорного виртуализационного решения

Как можно увидеть из схемы, гипервизорное виртуализационное решение состоит из следующих основных компонент:

1. Приложение уровня пользователя - процесс в хостовой операционной системе, выполняющий такие функции, как [1]:

- Получение данных и команд от реальных устройств для последующей передачи их гостевой операционной системе.

- Работа с памятью гостевой и хостовой операционных систем, в том числе и для установления взаимодействия между ними.

- Реализация некоторых дополнительных функций гипервизорного виртуализационного решения.

2. Гипервизор - драйвер хостовой операционной системы, выполняющий две важные функции. Во-первых, гипервизор является диспетчером виртуальных машин. Он регистрирует новые виртуальные машины, отслеживает состояние уже зарегистрированных, а также отвечает за распределение системных ресурсов между виртуальными машинами. Во-вторых, гипервизор осуществляет переключение между приложением уровня пользователя и VMM (еще один компонент, используемый для виртуализации), используя механизм HyperSwitch. Данный механизм подменяет текущий контекст выполнения на контекст искусственно созданного процесса, в рамках которого исполняется VMM [2].

3. Монитор Виртуальных Машин или VMM - представляет из себя файл с кодом, загружаемый в искусственно созданный процесс, переключение к которому происходит с помощью механизма HyperSwitch [1] [3]. Основные функции VMM:

- Эмуляция тех машинных инструкций, которые не могут быть исполнены непосредственно на процессоре. Такие инструкции могут возникать в следствие различия базовых архитектур у гостевой и хостовой операционных систем, а также в следствие наличия инструкций, непосредственное исполнение которых невозможно для гостевой операционной системы.

- Эмуляция различных аппаратных событий для гостевой операционной системы, например, прерываний [3].

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

В дальнейшем, наши исследования будут широко опираться на устройство этих компонент.

2. Классификация способов виртуализации устройств

Виртуализацию компьютеров можно условно разделить на три направления: виртуализация процессора, виртуализация памяти и виртуализация устройств [2]. В рамках данной дипломной работы мы будем рассматривать в основном виртуализацию устройств.

Виртуализация устройств подразделяется на четыре типа:

1. Полная эмуляция - такой тип виртуализации устройств, при котором происходит эмуляция всего стека устройства для гостевой операционной системы. Приложение уровня пользователя получает данные с устройства через какой-либо интерфейс (возможно, высокоуровневый), а затем конвертирует их в низкоуровневые запросы, которые используются непосредственно устройствами. Затем, с помощью HyperSwitch, происходит передача управления VMM, который эмулирует весь аппаратный стек данного устройства (устройство, шина, контроллер…). VMM передает запрос виртуальному устройству, и тот начинает его обрабатывать как это бы делало реальное устройство. В итоге, после обработки стеком виртуальных устройств, запрос приходит в гостевой драйвер устройства для последующей стандартной обработки. При такой модели гость полностью уверен в реальности виртуальных устройств, и, как следствие, в том, что он находиться на реальной аппаратуре [2].

2. Проброс - технология виртуализации устройств, при которой данные берутся непосредственно с устройства и в неизмененном виде передаются драйверу гостевой операционной системы. Для этой цели в кольцо уровня ноль хостовой операционной системы устанавливается программа-перехватчик. Она перехватывает запросы от устройств прежде чем их получит драйвер устройства хостовой операционной системы. Перехватчик посылает данные в приложение уровня пользователя, а оттуда данные передаются в VMM. VMM эмулирует событие прихода данных с устройства для гостя, таким образом передавая данные драйверу устройства гостевой операционной системы. Таким образом, создается т.н. мост между устройством и драйвером гостя. Дополнительно, программа перехватчик посылает сигнал хостовой операционной системе об отключении устройства. Это позволяет, по сути, передать устройство под управление гостевой операционной системе [2] [1].

3. Аппаратная виртуализация (Intel VT-d) - расширение техники проброса путем добавления в чипсет нового модуля - IOMMU. Данный модуль, при необходимости, перехватывает запросы устройств на DMA операции, и заменяет физическую память хостовой операционной системы на физическую память гостевой операционной системы. Таким образом, устройства могут совершать DMA операции напрямую с гостем, что значительно увеличивает производительность виртуальных устройств [2].

4. Паравиртуализация - техника виртуализации, при которой в качестве средства передачи данных между устройствами и гостевой операционной системой используется какой-либо нестандартный интерфейс (отличный от стандартных протоколов взаимодействия между устройствами и драйверами). Для того, чтобы реализовать такой метод, необходимо внести некоторые изменения в ядро гостевой операционной системы, чтобы она была готова к передаче данных через нестандартный интерфейс, что является одним из главных недостатков такого метода. Однако, при использовании данного метода, можно для каждого устройства наладить взаимодействие с гостевой операционной системой через свой собственный, подходящий для данного устройства, интерфейс. При этом, варьировать интерфейс можно не только в плане формата передаваемых данных, но и в плане уровня приема / передачи этих данных (более / менее высокоуровневый интерфейс) [2] [4].

3. Использование системы подгружаемых хостовых модулей для виртуализации широкого спектра устройств

Цель данной исследовательской работы - расширение номенклатуры виртуальных устройств. Для реализации задуманного в рамках дипломной работы была спроектирована общая система виртуализации устройств на основе подгружаемых хостовых модулей. Рассмотрим принцип работы данной системы.

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

Далее, на основе записей из реестра, виртуальная машина загружает модули к себе (в свое адресное пространство). Однако, чтобы виртуальная машина могла взаимодействовать с кодом модуля, необходимо чтобы в модуле был реализован определенный интерфейс обратных вызовов, который виртуальная машина может использовать при необходимости.

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

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

4. Open ToolsGate как механизм передачи данных при паравиртуализации

Как было заключено в предыдущей главе, наша основная задача - расширить интерфейс взаимодействия между устройствами и гостевой операционной системой. Для начала, давайте рассмотрим, какие стандартные интерфейсы используются для взаимодействия устройств с процессором и памятью:

Взаимодействие с памятью:

Источник: https://otherreferats.allbest.ru/download/1105667/