СПОСОБ И УСТРОЙСТВО ДЛЯ ОСУЩЕСТВЛЕНИЯ ОПЕРАЦИИ ВВОДА/ВЫВОДА В СРЕДЕ ВИРТУАЛИЗАЦИИ
METHOD AND APPARATUS FOR INPUT/OUTPUT OPERATION IN VIRTUALISATION ENVIRONMENT

Архитектура виртуальной машины может логически разделять физическую машину, так что лежащее в основе аппаратное обеспечение машины используется совместно и кажется, что независимо работают одна или несколько виртуальных машин. Виртуализация ввода/вывода (ВВВ) может реализовывать функциональные возможности устройства ввода/вывода, используемые несколькими виртуальными машинами.
Программная эмуляция всего устройства может являться одним примером виртуализации ввода/вывода. Полная эмуляция устройства ввода/вывода может позволить виртуальным машинам повторно использовать существующие драйверы устройств. Виртуализация ввода/вывода с одним корнем (ВВВ-ОК) или любые другие решения по разделению ресурсов могут являться другим примером виртуализации ввода/вывода Разделение функции устройства ввода/вывода (например, функции устройства ввода/вывода, касающейся перемещения данных) на несколько виртуальных интерфейсов (ВИ), каждый из которых закреплен за одной виртуальной машиной, может уменьшить служебную информацию ввода/вывода в слое эмуляции программного обеспечения.
Краткое описание чертежей
Описанное здесь изобретение проиллюстрировано с помощью примера и на приложенных чертежах, которые не ограничивают изобретение. Для простоты и ясности иллюстрации элементы, показанные на фигурах, не обязательно выполнены в масштабе. Например, для ясности размеры некоторых элементов могут быть увеличены относительно размеров других элементов. Более того, где возможно, для обозначения соответствующих или аналогичных элементов на разных фигурах использованы одинаковые ссылочные позиции.
Фиг.1 - вид, показывающий один вариант осуществления вычислительной платформы, содержащей обслуживающую виртуальную машину, выполненную с возможностью управления операцией ввода/вывода, начатую гостевой виртуальной машиной;
фиг.2а - вид, показывающий вариант осуществления кольцевой структуры дескрипторов, в которой хранят дескрипторы ввода/вывода для операции ввода/вывода;
фиг.2b - вид, показывающий вариант осуществления кольцевой структуры дескрипторов и кольцевой структуры теневых дескрипторов, в которых хранят дескрипторы ввода/вывода для операции ввода/вывода;
фиг.3 - вид, показывающий вариант осуществления таблицы блока управления памятью ввода/вывода (БУПВВ), приспособленной для прямого доступа к памяти (ПДП), осуществляемого устройством ввода/вывода;
фиг.4 - вид, показывающий один вариант осуществления способа записи информации ввода/вывода, касающейся операции ввода/вывода, осуществляемой гостевой виртуальной машиной;
фиг.5 - вид, показывающий один вариант осуществления способа выполнения операции ввода/вывода, осуществляемой обслуживающей виртуальной машиной на основе информации ввода/вывода;
фиг.6а-6b - виды, показывающие другой вариант осуществления способа выполнения операции ввода/вывода, осуществляемой обслуживающей виртуальной машиной на основе информации ввода/вывода.
Подробное описание изобретения
В последующем описании приведены технологии выполнения операции ввода/вывода в среде виртуализации. В последующем описании для обеспечения более глубокого понимания рассматриваемого изобретения приведено большое количество конкретных деталей, таких как реализации логики, псевдокод, средства определения операндов, реализации разделения/совместного использования/дублирования ресурсов, типы и взаимосвязи системных компонентов и логические альтернативы разделения/объединения. Тем не менее, изобретение может быть реализовано без таких конкретных подробностей. В других примерах структуры управления, схемы уровня логических элементов и полные последовательности команд программного обеспечения не показаны подробно, чтобы сделать изобретение более понятным. С помощью приведенных описаний специалисты в рассматриваемой области могут реализовать соответствующие функциональные возможности без проведения лишних экспериментов.
В этом описании слова «один вариант осуществления», «вариант осуществления», «пример варианта осуществления» и т.д. показывают, что описанный вариант осуществления изобретения может содержать конкретный признак, структуру или характеристику, но каждый вариант осуществления не обязательно содержит конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно относятся к одному и тому же варианту осуществления изобретения. Далее, когда в связи с некоторым вариантом осуществления изобретения описан конкретный признак, структура или характеристика, считается, что в рамках своих знаний средний специалист в рассматриваемой области может осуществить такой признак, структуру или характеристику в связи с другими вариантами осуществления изобретения, описано ли это ясно или нет.
Варианты осуществления изобретения могут быть реализованы с помощью аппаратного обеспечения, аппаратно реализованного программного обеспечения, программного обеспечения или с помощью любого объединения перечисленного. Также варианты осуществления изобретения могут быть реализованы в виде команд, которые хранятся на считываемом машиной носителе информации и которые могут быть считаны и выполнены одним или несколькими процессорами. Считываемый машиной носитель информации может содержать любой механизм хранения или передачи информации в считываемом машиной (например, вычислительным устройством) виде. Например, считываемый машиной носитель информации может содержать постоянное запоминающее устройство (ПЗУ); оперативное запоминающее устройство (ОЗУ); запоминающее устройство на магнитных дисках; оптическое запоминающее устройство; устройства флэш-памяти; электрические, оптические, акустические или другие формы распространяющихся сигналов (например, несущие частоты, инфракрасные сигналы, цифровые сигналы и так далее) и другое.
На фиг.1 показан вариант осуществления вычислительной платформы 100, выполняющей операцию ввода/вывода в среде виртуализации. Неполный список примеров вычислительной системы 100 может включать в себя распределенные вычислительные системы, суперкомпьютеры, вычислительные кластеры, большие вычислительные машины, миникомпьютеры, персональные компьютеры, рабочие станции, серверы, переносные компьютеры, ноутбуки и другие устройства, выполненные с возможностью приема, передачи и обработки данных.
В варианте осуществления изобретения вычислительная платформа 100 может содержать лежащую в основе аппаратную машину 101, содержащую один или несколько процессоров 111, систему 121 памяти, чипсет 131, устройства 141 ввода/вывода и возможно другие компоненты. Один или несколько процессоров 111 могут быть с возможностью обмена данными соединены с различными компонентами (например, чипсетом 131) по одной или нескольким шинам, таким как шина процессора (не показана на фиг.1). Процессоры 111 могут быть реализованы в виде интегральной схемы (ИС) с одним или несколькими вычислительными ядрами, которые могут выполнять коды при подходящей архитектуре.
Система 121 памяти может хранить данные и команды, которые выполняет процессор 111. Примеры памяти 121 могут включать в себя любое из следующих полупроводниковых устройств или любое их объединение: устройства синхронной динамической оперативной памяти (SDRAM), устройства динамической оперативной памяти компании RAMBUS (RDRAM), устройства памяти с двойной скоростью (DDR), статическая оперативная память (SRAM) и устройства флэш-памяти.
Чипсет 131 может обеспечивать один или несколько каналов обмена данными между одним или несколькими процессорами 111, памятью 121 и другими компонентами, такими как устройство 141 ввода/вывода. Устройство 141 ввода/вывода может содержать, помимо прочего, устройства с разъемом взаимодействия периферийных компонентов (PCI) и/или с разъемом PCI типа экспресс (PCIe), соединенные с основной материнской платой по шине PCI или PCIe. Примерами устройства 141 ввода/вывода могут являться контроллер универсальной последовательной шины (USB), графический адаптер, аудиоконтроллер, контроллер сетевого интерфейса (NIC), запоминающее устройство и так далее.
1
n
1
n
1
n
Вычислительная платформа 100 может дополнительно содержать монитор 102 виртуальных машин (МВМ), которая отвечает за сопряжение лежащего в основе аппаратного обеспечения и виртуальных машин верхнего уровня (например, обслуживающей виртуальной машины 103, гостевой виртуальной машины 103-103), что нужно для облегчения и управления несколькими операционными системами (ОС) виртуальных машин (например, хостовой операционной системой 113 обслуживающей виртуальной машины 103, гостевыми операционными системами 113-113 гостевых виртуальных машин 103-103) с точки зрения совместного использования лежащих в основе физических ресурсов. Примерами монитора виртуальных машин могут являться следующие: Xen, ESX server, virtual PC, Virtual Server, Hyper-V, Parallel, OpenVZ, Qemu и так далее.
0
1
n
1
n
0
n
1
n
1
1
В одном варианте осуществления изобретения устройство 141 ввода/вывода (например, сетевая карта) может быть разделено на несколько функциональных частей, в том числе блок 141 управления (БУ), поддерживающий архитектуру виртуализации ввода/вывода (например, ВВВ с одним корнем), и несколько виртуальных интерфейсов 141-141 функций (ВИ), содержащий ресурсы времени выполнения для выделенных доступов (например, пары очередей в сетевом устройстве). Примерами БУ и ВИ могут являться физическая функция и виртуальная функция при архитектуре виртуализации ввода/вывода с одним корнем или архитектуре виртуализации ввода/вывода с несколькими корнями. БУ может дополнительно конфигурировать и управлять функциональными возможностями ВИ. В одном варианте осуществления изобретения несколько гостевых виртуальных машин 103-103 могут совместно использовать физические ресурсы, управляемые БУ 141, при этом за каждой из гостевых виртуальных машин 103i-103 может быть закреплен один или несколько ВИ 141-141. Например, за гостевой виртуальной машиной 103 может быть закреплен ВИ 141.
Ясно, что в других вариантах осуществления изобретения могут быть реализованы другие технологии для структуры устройства 141 ввода/вывода. В одном варианте осуществления изобретения устройство 141 ввода/вывода может содержать один или несколько ВИ без БУ. Например, существующий NIC, не обладающий способностью разделения, может содержать единственный ВИ, работающий при условии отсутствия БУ.
0
1
n
Обслуживающая виртуальная машина 103 может быть загружена кодами модели 114 устройства, драйвера 115 БУ и драйвера 116 ВИ. Модель 114 устройства может являться программной эмуляцией реального устройства 141 ввода/вывода, а может и не являться упомянутой программной эмуляцией. Драйвер 115 БУ может управлять БУ 141, который относится к инициализации устройства ввода/вывода и его конфигурации во время инициализации и работы вычислительной платформы 100. Драйвер 116 ВИ может являться драйвером устройства, приспособленным для управления одним или несколькими интерфейсами из ВИ 141-ВИ 141, в зависимости от политики управления. В одном варианте осуществления изобретения на основе политики управления драйвер ВИ может управлять ресурсами, выделенными гостевой ВМ, которую может поддерживать драйвер ВИ, а драйвер БУ может управлять общими операциями.
1
n
n
1
n
n
Каждая из гостевых виртуальных машин 103-103 может быть загружена кодами драйвера гостевого устройства, управляющего виртуальным устройством, представленным МВМ 102, например, драйвера 116 гостевой виртуальной машины 103 или драйвера 116 гостевой виртуальной машины 103. Драйвер гостевого устройства может быть способен работать в режиме, совместимом с ВИ 141 и их драйверами 116, а может быть неспособен работать в упомянутом режиме. В одном варианте осуществления изобретения драйвер гостевого устройства может быть существующим драйвером.
1
1
1
1
1
1
1
1
1
1
1
В одном варианте осуществления изобретения в ответ на то, что гостевая операционная система гостевой виртуальной машины (например, гостевая ОС 113 гостевой ВМ 103) загружает драйвер гостевого устройства (например, драйвер 116 гостевого устройства), обслуживающая ВМ 103 может запустить вариант модели 114 устройства и драйвер 116 ВИ. Например, вариантом модели 114 устройства может служить драйвер 116 гостевого устройства, а вариант драйвера 116 ВИ может управлять ВИ 141, закрепленным за гостевой ВМ 103. Например, если драйвер 116, гостевого устройства является существующим драйвером NIC на основе 82571 ЕВ (сетевой контроллер, изготовленный корпорацией Intel, город Санта Клара, штат Калифорния) и ВИ 141, закрепленный за гостевой ВМ 103, является NIC на основе 82571ЕВ или другим типом NIC, совместимого или не совместимого с 82571 ЕВ, то обслуживающая ВМ 103 может запустить вариант модели 114 устройства, представляющей виртуальный NIC на основе 82571ЕВ и вариант драйвера 116 ВИ, управляющего ВИ 141, то есть NIC на основе 82571ЕВ или другой тип NIC, совместимого или не совместимого с 82571ЕВ.
Ясно, что вариант осуществления изобретения, показанный на фиг.1, приведен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления вычислительной системы 100. Например, модель 114 устройства может содержать драйвер 116 ВИ или драйвер БУ или все драйверы вместе и так далее. Они могут быть запущены в привилегированном режиме, таком как ядро ОС, или не привилегированном режиме, таком как пользовательский режим ОС. Обслуживающая ВМ может быть даже разделена на несколько ВМ, при этом одна ВМ выполняет БУ, а другая ВМ выполняет Модель Устройства и драйвер ВИ или возможны любые другие объединения с достаточным обменом данными между несколькими ВМ.
1
1
1
1
1
1
1
1
В одном варианте осуществления изобретения, если операцией ввода/вывода командует приложение (например, приложение 117j), выполняющееся на гостевой ВМ 103 драйвер 116 гостевого устройства может записывать информацию ввода/вывода, касающуюся операции ввода/вывода, в буфер (не показан на фиг.1), закрепленный за гостевой ВМ 103. Например, драйвер 116 гостевого устройства может записывать дескрипторы ввода/вывода в кольцевую структуру, как показано на фиг.2а, с одной записью кольцевой структуры для одного дескриптора ввода/вывода. В одном варианте осуществления изобретения дескриптор ввода/вывода может указывать операцию ввода/вывода, касающуюся пакета данных. Например, если гостевое приложение 117 предписывает считать или записать 100 пакетов из гостевой памяти по адресам ххх-ууу, драйвер 116 гостевого устройства может записать 100 дескрипторов ввода/вывода в кольцо дескрипторов с фиг.2а. Драйвер 116 гостевого устройства может записать дескрипторы в кольцо дескрипторов, начиная с указателя 201 начала. Драйвер 116 гостевого устройства может обновить указатель 202 конца после завершения записи дескрипторов, касающихся операции ввода/вывода. В одном варианте осуществления изобретения указатель 201 начала и указатель 202 конца могут храниться в регистре начала и регистре конца (не показаны).
1
В одном варианте осуществления изобретения дескриптор может содержать данные, тип операции ввода/вывода (считать или записать), адрес гостевой памяти для ВИ 141 для считывания данных или для записи данных, состояние операции ввода/вывода и возможную другую информацию, нужную для операции ввода/вывода.
1
1
1
1
1
1
i
1
1
1
В одном варианте осуществления изобретения, если драйвер 116 гостевого устройства не может работать в режиме, совместимом с ВИ 141, закрепленным за гостевой ВМ 103, например, если ВИ 141 не может реализовать операцию ввода/вывода на основе дескрипторов, записанных драйвером 116 гостевого устройства, из-за различных битовых форматов и/или семантик, которые поддерживают ВИ 141 и драйвер 116 гостевого устройства, то драйвер 116 ВИ может сгенерировать теневое кольцо (как показано на фиг.2b) и перевести дескрипторы, указатель начала и указатель конца, которые соответствуют архитектуре гостевой ВМ 103, в теневые дескрипторы (Т-дескрипторы), указатель теневого начала (указатель Т-начала) и указатель теневого конца (указатель Т-конца), которые соответствуют архитектуре ВИ 141, так что ВИ 141 может реализовать операции ввода/вывода на основе теневых дескрипторов.
Ясно, что варианты осуществления изобретения, показанные на фиг.2а и 2b, приведены для иллюстрации, и другие технологии могут реализовывать другие варианты осуществления информации ввода/вывода. Например, информация ввода/вывода может быть записана в структуры данных, отличные от кольцевых структур с фиг.2а и 2b, такие как хэш-таблица, таблица ссылок и так далее. В качестве другого примера, единственное кольцо может быть использовано как для приема, так и для передачи, или отдельные кольца могут быть использованы для приема или передачи.
1
БУПВВ или аналогичная технология может позволить устройству 141 ввода/вывода направить доступ к системе 121 памяти через многократное отображение гостевого адреса, извлеченного из дескрипторов в кольце дескрипторов или кольца теневых дескрипторов, в хост-адрес. На фиг.3 показан вариант осуществления таблицы БУПВВ. Гостевая виртуальная машина, такая как гостевая ВМ 103, может содержать, по меньшей мере, одну таблицу БУПВВ, показывающую соответствующую взаимосвязь между адресом гостевой памяти, который соответствуют архитектуре гостевой ВМ, и адресом хост-памяти, который соответствуют архитектуре вычислительной хост-системы. МВМ 102 и обслуживающая ВМ 103 могут управлять таблицами БУПВВ для всех гостевых виртуальных машин. Более того, таблица страниц БУПВВ может быть индексирована с помощью разных способов, таких как индексирование идентификатором устройства (например, шина: устройство: номер функции в системе PCIe), номером гостевой ВМ или с помощью любого другого способа, определенного в реализациях БУПВВ.
Ясно, что в других вариантах осуществления изобретения могут быть использованы другие технологии доступа к памяти. В одном варианте осуществления изобретения может не использоваться БУПВВ, если гостевой адрес равен хост-адресу, например, благодаря программному решению. В другом варианте осуществления изобретения, драйвер гостевого устройства может работать с МВМ 102 с целью перевода гостевого адреса в хост-адрес путем использования таблицы отображений, аналогичной таблице БУПВВ.
1
На фиг.4 показан один вариант осуществления способа записи информации ввода/вывода, касающейся операции ввода/вывода, осуществляемой гостевой виртуальной машиной. В последующем описании в качестве примера используется гостевая ВМ 103 Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
1
1
1
1
1
1
В блоке 401 приложение 117, работающее на гостевой ВМ 103, может предписать операции ввода/вывода, например, записать 100 пакетов по адресу ххх-ууу в гостевой памяти. В блоке 402 драйвер 116 гостевого устройства может генерировать и записывать дескрипторы ввода/вывода, касающиеся операции ввода/вывода, в кольцо дескрипторов гостевой ВМ 103 (например, кольцо дескрипторов, аналогичное показанному на фиг.2а или 2b) до тех пор, пока все дескрипторы, касающиеся операции ввода/вывода, не будут записаны в кольцо дескрипторов в блоке 403. В одном варианте осуществления изобретения драйвер 116 гостевого устройства может записывать дескрипторы ввода/вывода, начиная с указателя начала (например, указателя 201 начала с фиг.2а или указателя 2201 начала с фиг.2b). В блоке 404 драйвер 116 гостевого устройства может обновить указатель конца (например, указатель 202 конца с фиг.2а или указатель 2202 конца с фиг.2b) после завершения записи в буфер всех дескрипторов, относящихся к операции ввода/вывода.
1
На фиг.5 показан один вариант осуществления способа выполнения операции ввода/вывода с помощью обслуживающей ВМ 103. Этот вариант осуществления может быть применен в ситуации, когда драйвер гостевой виртуальной машины способен работать в режиме, совместимом с ВИ, и/или когда его драйвер закреплен за гостевой виртуальной машиной. Например, драйвер гостевого устройства является существующим драйвером NIC на основе 82571 ЕВ, а ВИ является NIC на основе 82571 ЕВ или другим типом NIC, совместимым с NIC на основе 82571 ЕВ, например, виртуальной функцией NIC на основе 82571 ЕВ. В последующем описании в качестве примера используется гостевая ВМ 103. Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
1
1
В блоке 501 гостевая ВМ 103] обновляет указатель конца (например, указатель 202 конца с фиг.2а), который может инициировать выход виртуальной машины (например, VMExit), который может быть перехвачен МВМ 102, так что МВМ 102 может передать управление системой от гостевой ОС 113 гостевой ВМ 103 на модель 114 устройства обслуживающей ВМ 103.
1
1
1
1
1
1
1
В блоке 502 модель 114 устройства может запустить драйвер 116 ВИ в ответ на обновление конца. В блоках 503-506 драйвер 116 ВИ может управлять ВИ 114 закрепленным за гостевой ВМ 103 с целью реализации операции ввода/вывода на основе дескрипторов ввода/вывода, записанных гостевой ВМ 1031 (например, дескрипторов ввода/вывода с фиг.2а). Более конкретно, в блоке 503 драйвер 116 ВИ может запустить драйвер 114 ВИ для готовых дескрипторов ввода/вывода. В одном варианте осуществления изобретения драйвер 116 ВИ может запустить ВИ 114 путем обновления регистра конца (не показан). В блоке 504 драйвер 114 гостевого устройства может считать дескриптор из кольца дескрипторов гостевой ВМ 103 (например, кольца дескрипторов, аналогичного показанному на фиг.2а) и реализовать операцию ввода/вывода, как описано в дескрипторе ввода/вывода, например, принимая пакет и записывая пакет по адресу ххх в гостевой памяти. В одном варианте осуществления изобретения ВИ 114 может считать дескриптор ввода/вывода, на который показывает указатель начала из кольца дескрипторов (например, указатель 201 начала с фиг.2а).
1
1
1
1
1
1
i
В одном варианте осуществления изобретения ВИ 114 может использовать БУПВВ или аналогичную технологию для реализации прямого доступа к памяти (ПДП) для операции ввода/вывода. Например, ВИ 114 может получить адрес хост-памяти, соответствующий адресу гостевой памяти, из таблицы БУПВВ, выработанной для гостевой ВМ 103, и напрямую считать пакет из системы 121 памяти или записать пакет в систему 121 памяти. В другом варианте осуществления изобретения ВИ 114 может реализовать прямой доступ к памяти без таблицы БУПВВ, если гостевой адрес совпадает с хост-адресом при фиксированном отображении между гостевым адресом и хост-адресом. В блоке 505 ВИ 114 может дополнительно обновить дескриптор ввода/вывода, например, состояние операции ввода/вывода, содержащееся в дескрипторе ввода/вывода, с целью показа, что дескриптор ввода/вывода был реализован. В одном варианте осуществления изобретения ВИ 114 может использовать или может не использовать таблицу БУПВВ для обновления дескриптора ввода/вывода. ВИ 114 может дополнительно обновить указатель начала с целью перемещения вперед указателя начала и указания на следующий дескриптор ввода/вывода в кольце дескрипторов.
1
1
1
В блоке 506 ВИ 114 может определить, достиг ли он дескриптора ввода/вывода, на который указывает конец. Если конец не достигнут, ВИ 114 может продолжить считывать дескриптор ввода/вывода из кольца дескрипторов и реализовывать операцию ввода/вывода, которая предписана дескриптором ввода/вывода в блоках 504 и 505. Если конец достигнут, ВИ 114 может сообщить МВМ 102 о завершении операции ввода/вывода в блоке 507, например путем подачи на МВМ 102 сигнала о прерывании. В блоке 508 МВМ 102 может сообщить драйверу 116 ВИ о завершении операций ввода/вывода, например, путем вставки прерывания в обслуживающую ВМ 103.
1
1
1
1
1
1
1
1
В блоке 509 драйвер 116 ВИ может поддерживать состояние ВИ 114 и сообщить модели 114 устройства о завершении операции ввода/вывода. В блоке 510 модель 114 устройства может передать сигнал о виртуальном прерывании на гостевую ВМ 113, чтобы драйвер 116 гостевого устройства мог обработать это событие и сообщить приложению 117, что операции ввода/вывода реализованы. Например, драйвер 116 гостевого устройства может сообщить приложению 117 о том, что данные приняты и готовы к использованию. В одном варианте осуществления изобретения модель 114 устройства может дополнительно обновить регистр начала (не показан), чтобы показать, что управление кольцом дескрипторов передано назад драйверу 116 гостевого устройства. Ясно, что информирование драйвера 116 гостевого устройства может быть осуществлено другим образом, который может быть определен политиками устройства/драйвера, например, политикой устройства/драйвера, выполненной в случае, когда драйвер гостевого устройства запрещает прерывание устройства.
1
1
1
Ясно, что описанный вариант осуществления изобретения предназначен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления изобретения. Например, в зависимости от различных механизмов МВМ, ВИ 114 может сообщить машине верхнего уровня о завершении операции ввода/вывода различными способами. В одном варианте осуществления изобретения ВИ 114 может сообщить непосредственно обслуживающей ВМ 103, а не МВМ 102. В другом варианте осуществления изобретения ВИ 114 может сообщить машине верхнего уровня, когда завершена одна или несколько, а не все операции ввода/вывода, перечисленные в кольце дескрипторов, так что гостевое приложение может быть своевременно проинформировано о завершении части операций ввода/вывода.
1
На фиг.6а-6b показан другой вариант осуществления способа выполнения операции ввода/вывода с помощью обслуживающей ВМ 103. Этот вариант осуществления может быть применен в ситуации, когда драйвер гостевой виртуальной машины не способен работать в режиме, совместимом с ВИ, и/или когда его драйвер закреплен за гостевой виртуальной машиной. В последующем описании в качестве примера используется гостевая ВМ 103. Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
1
1
1
1
1
В блоке 601 МВМ может захватывать выход виртуальной машины (например, VMExit), вызванный гостевой ВМ 103 например, когда драйвер 116 гостевого устройства обращается к виртуальному устройству (например, модели 114 устройства). В блоке 601 МВМ 102 может передать управление системой от гостевой ОС 113 гостевой ВМ 103 на модель 114 устройства обслуживающей ВМ 103. В блоке 603 модель 114 устройства может определить, инициирован ли выход виртуальной машины тем фактом, что драйвер 116 гостевого устройства завершил запись дескрипторов ввода/вывода, относящихся к операции ввода/вывода, в кольцо дескрипторов (например, кольцо дескрипторов с фиг.2b). В одном варианте осуществления изобретения гостевая ВМ 103 может обновить указатель конца (например, указатель 2202 конца с фиг.2b), показывающий конец дескрипторов ввода/вывода. В этом случае модель 114 устройства может определить, инициирован ли выход виртуальной машины обновлением этого указателя конца.
1
1
1
1
1
Если выход виртуальной машины не инициирован тем фактом, что драйвер 116 гостевого устройства завершил запись дескрипторов ввода/вывода, то способ с фиг.6а-6b может вернуться к блоку 601, то есть МВМ может захватить следующий выход ВМ. Если выход виртуальной машины инициирован тем фактом, что драйвер 116 гостевого устройства завершил запись дескрипторов ввода/вывода, то в блоке 604 модель 114 устройства может запустить драйвер 116 ВИ с целью перевода дескрипторов ввода/вывода, которые соответствуют архитектуре гостевой ВМ 103, в теневые дескрипторы ввода/вывода, которые соответствуют архитектуре ВМ 141 и которые закреплены за гостевой ВМ 103, и с целью сохранения теневых дескрипторов ввода/вывода в кольце теневых дескрипторов (например, кольце теневых дескрипторов, которое показано на фиг.2b).
1
1
В блоке 605 драйвер 116 ВИ может перевести указатель конца, который соответствует архитектуре гостевой ВМ 103, в указатель теневого конца, который соответствуют архитектуре ВМ 141.
1
1
1
1
1
1
В блоках 606-610 драйвер 116 ВИ может управлять ВИ 114 с целью реализации операции ввода/вывода на основе дескрипторов ввода/вывода, записанных гостевой ВМ 103. Более конкретно, в блоке 606 драйвер 116 ВИ может запустить драйвер 114 ВИ для готовых теневых дескрипторов. В одном варианте осуществления изобретения драйвер 116 ВИ может запустить ВИ 114 путем обновления указателя теневого конца (не показан). В блоке 607 ВИ 114 может считать теневой дескриптор ввода/вывода из кольца теневых дескрипторов и реализовать операцию ввода/вывода, как описано в теневом дескрипторе ввода/вывода, например, путем приема пакета и записи пакета по адресу ххх в гостевую память или считывания пакета по адресу ххх из гостевой памяти и передачи этого пакета. В одном варианте осуществления изобретения ВИ 114 может считывать дескриптор ввода/вывода, на который показывает указатель теневого начала из кольца теневых дескрипторов (например, указатель 2201 теневого начала с фиг.2b).
1
1
1
1
1
1
1
В одном варианте осуществления изобретения ВИ 114 может использовать БУПВВ или аналогичную технологию для реализации прямого доступа к памяти для операции ввода/вывода. Например, ВИ 114 может получить адрес хост-памяти, соответствующий адресу гостевой памяти, из таблицы БУПВВ, выработанной для гостевой ВМ 103 и напрямую записать принятый пакет в систему 121 памяти. В другом варианте осуществления изобретения ВИ 114 может реализовать прямой доступ к памяти без таблицы БУПВВ, если гостевой адрес совпадает с хост-адресом при фиксированном отображении между гостевым адресом и хост-адресом. В блоке 608 ВИ 114 может дополнительно обновить теневой дескриптор ввода/вывода, например, состояние операции ввода/вывода, содержащееся в теневом дескрипторе ввода/вывода, с целью показа того, что дескриптор ввода/вывода был реализован. В одном варианте осуществления изобретения ВИ 114 может использовать таблицу БУПВВ для обновления дескриптора ввода/вывода. ВИ 114 может дополнительно обновить указатель теневого начала с целью перемещения вперед указателя теневого начала и указания на следующий теневой дескриптор ввода/вывода в кольце теневых дескрипторов.
1
1
1
В блоке 609 драйвер 116 ВИ может перевести обновленный теневой дескриптор ввода/вывода и указатель теневого начала назад к дескриптору ввода/вывода и указателю начала и обновить кольцо дескрипторов с учетом нового дескриптора ввода/вывода и указателя начала. В блоке 610 ВИ 114 может определить, достиг ли он теневого дескриптора ввода/вывода, на который указывает указатель теневого конца. Если конец не достигнут, ВИ 114 может продолжить считывать теневой дескриптор ввода/вывода из кольца теневых дескрипторов и реализовывать операцию ввода/вывода, которая описана теневым дескриптором ввода/вывода в блоках 607-609. Если конец достигнут, ВИ 114 может сообщить МВМ 102 о завершении операции ввода/вывода в блоке 611, например, путем подачи на МВМ 102 сигнала о прерывании. Далее МВМ 102 может сообщить драйверу 106 ВИ о завершении операции ввода/вывода, например, путем вставки прерывания в обслуживающую ВМ 103.
i
1
1
1
1
1
1
1
В блоке 612 драйвер 116 ВИ может поддерживать состояние ВИ 114 и сообщить модели 114 устройства о завершении операции ввода/вывода. В блоке 613 модель 114 устройства может передать сигнал о виртуальном прерывании на драйвер 116 гостевого устройства, чтобы драйвер 116 гостевого устройства мог обработать это событие и сообщить приложению 117, что операция ввода/вывода реализована. Например, драйвер 116 гостевого устройства может сообщить приложению 117 о том, что данные приняты и готовы к использованию. В одном варианте осуществления изобретения модель 114 устройства может дополнительно обновить регистр начала (не показан), чтобы показать, что управление кольцом дескрипторов передано назад драйверу 116 гостевого устройства. Ясно, что информирование драйвера 116 гостевого устройства может быть осуществлено другим образом, который может быть определен политиками устройства/драйвера, например, политикой устройства/драйвера, выполненной в случае, когда драйвер гостевого устройства запрещает прерывание устройства.
1
1
1
Ясно, что описанный вариант осуществления изобретения предназначен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления изобретения. Например, в зависимости от различных механизмов МВМ, ВИ 114 может сообщить машине верхнего уровня о завершении операции ввода/вывода различными способами. В одном варианте осуществления изобретения ВИ 114 может сообщить непосредственно обслуживающей ВМ 103, а не МВМ 102. В другом варианте осуществления изобретения ВИ 114 может сообщить машине верхнего уровня, когда завершена одна или несколько, а не все операции ввода/вывода, перечисленные в кольце дескрипторов, так что гостевое приложение может быть своевременно проинформировано о завершении части операций ввода/вывода.
Хотя определенные признаки изобретения описаны со ссылками на примеры вариантов осуществления изобретения, описание не предназначено для ограничения изобретения. Различные модификации примеров вариантов осуществления изобретения, а также другие варианты осуществления изобретения, которые ясны специалистам в рассматриваемой области, считаются не выходящими за пределы объема и новизны изобретения.