RU2532708C2 - Способ и устройство для осуществления операции ввода/вывода в среде виртуализации - Google Patents

Способ и устройство для осуществления операции ввода/вывода в среде виртуализации Download PDF

Info

Publication number
RU2532708C2
RU2532708C2 RU2012127415/08A RU2012127415A RU2532708C2 RU 2532708 C2 RU2532708 C2 RU 2532708C2 RU 2012127415/08 A RU2012127415/08 A RU 2012127415/08A RU 2012127415 A RU2012127415 A RU 2012127415A RU 2532708 C2 RU2532708 C2 RU 2532708C2
Authority
RU
Russia
Prior art keywords
input
virtual machine
output
information
functions
Prior art date
Application number
RU2012127415/08A
Other languages
English (en)
Other versions
RU2012127415A (ru
Inventor
Яоцзу ДОНГ
Original Assignee
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2012127415A publication Critical patent/RU2012127415A/ru
Application granted granted Critical
Publication of RU2532708C2 publication Critical patent/RU2532708C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

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

Claims (26)

1. Способ для осуществления операции ввода/вывода в среде виртуализации, осуществляемый обслуживающей виртуальной машиной, содержащий:
запускают, с помощью модели устройства обслуживающей виртуальной машины, драйвер устройства обслуживающей виртуальной машины с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной, причем модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода;
при этом модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
2. Способ по п.1, который, если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, дополнительно содержит:
переводят, с помощью драйвера устройства, информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводят, с помощью драйвера устройства, обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
3. Способ по п.1, дополнительно содержащий:
поддерживают, с помощью драйвера устройства, состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
4. Способ по п.1, дополнительно содержащий:
сообщают, с помощью модели устройства, гостевой виртуальной машине о реализации операции ввода/вывода.
5. Способ по п.1, в котором информацию ввода/вывода записывают в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
6. Способ по п.1, в котором указатель конца, который указывает на конец информации ввода/вывода, обновляют с помощью гостевой виртуальной машины.
7. Устройство для осуществления операции ввода/вывода в среде виртуализации, содержащее:
модель устройства и драйвер устройства, при этом модель устройства запускает драйвер устройства с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной, причем модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода, и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
8. Устройство по п.7, в котором если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, то драйвер устройства:
переводит информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводит обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
9. Устройство по п.7, в котором драйвер устройства дополнительно поддерживает состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
10. Устройство по п.7, в котором модель устройства дополнительно сообщает гостевой виртуальной машине о реализации операции ввода/вывода.
11. Устройство по п.7, в котором информация ввода/вывода записана в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
12. Устройство по п.7, в котором гостевая виртуальная машина обновляет указатель конца, который указывает на конец информации ввода/вывода.
13. Считываемый машиной носитель информации для осуществления операции ввода/вывода в среде виртуализации, содержащий несколько команд, выполнение которых приводит к тому, что в системе:
запускают, с помощью модели устройства обслуживающей виртуальной машины, драйвер устройства обслуживающей виртуальной машины с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной,
при этом модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода; и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
14. Считываемый машиной носитель информации по п.13, в котором, если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, несколько команд дополнительно приводят к тому, что в системе:
переводят, с помощью драйвера устройства, информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводят, с помощью драйвера устройства, обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
15. Считываемый машиной носитель информации по п.13, в котором несколько команд дополнительно приводят к тому, что в системе:
поддерживают, с помощью драйвера устройства, состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
16. Считываемый машиной носитель информации по п.13, в котором несколько команд дополнительно приводят к тому, что в системе:
сообщают, с помощью модели устройства, гостевой виртуальной машине о реализации операции ввода/вывода.
17. Считываемый машиной носитель информации по п.13, в котором информация ввода/вывода записана в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
18. Считываемый машиной носитель информации по п.13, в котором гостевая виртуальная машина обновляет указатель конца, который указывает на конец информации ввода/вывода.
19. Система для осуществления операции ввода/вывода в среде виртуализации, содержащая:
аппаратную машину, содержащую устройство ввода/вывода; и
монитор виртуальных машин для сопряжения аппаратной машины и нескольких виртуальных машин, при этом виртуальная машина содержит:
гостевую виртуальную машину, предназначенную для записи информации ввода/вывода, касающейся операции ввода/вывода; и
обслуживающую виртуальную машину, которая содержит модель устройства и драйвер устройства, при этом модель устройства запускает драйвер устройства с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода и при этом модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода; и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
20. Система по п.19, в которой если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, то драйвер устройства обслуживающей виртуальной машины дополнительно:
переводит информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводит обновленную теневую информацию ввода/вывода, которая соответствует архитектуре, виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
21. Система по п.20, в которой гостевая виртуальная машина записывает информацию ввода/вывода в структуру данных, начиная с указателя начала, который обновляется виртуальным интерфейсом функций устройства ввода/вывода.
22. Система по п.20, в которой гостевая виртуальная машина обновляет указатель конца, указывающий конец информации ввода/вывода.
23. Система по п.20, в которой монитор виртуальных машин передает управление системой от гостевой виртуальной машины на обслуживающую виртуальную машину, если определено, что обновлен указатель конца.
24. Система по п.20, в которой виртуальный интерфейс функций устройства ввода/вывода обновляет информацию ввода/вывода в ответ на реализацию операции ввода/вывода.
25. Система по п.20, в которой драйвер устройства поддерживает состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
26. Система по п.20, в которой модель устройства сообщает гостевой виртуальной машине о реализации операции ввода/вывода.
RU2012127415/08A 2009-12-24 2009-12-24 Способ и устройство для осуществления операции ввода/вывода в среде виртуализации RU2532708C2 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2009/001543 WO2011075870A1 (en) 2009-12-24 2009-12-24 Method and apparatus for handling an i/o operation in a virtualization environment

Publications (2)

Publication Number Publication Date
RU2012127415A RU2012127415A (ru) 2014-01-10
RU2532708C2 true RU2532708C2 (ru) 2014-11-10

Family

ID=44194887

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2012127415/08A RU2532708C2 (ru) 2009-12-24 2009-12-24 Способ и устройство для осуществления операции ввода/вывода в среде виртуализации

Country Status (9)

Country Link
US (1) US20130055259A1 (ru)
EP (1) EP2517104A4 (ru)
JP (1) JP5608243B2 (ru)
KR (1) KR101521778B1 (ru)
CN (1) CN102754076B (ru)
AU (1) AU2009357325B2 (ru)
RU (1) RU2532708C2 (ru)
SG (1) SG181557A1 (ru)
WO (1) WO2011075870A1 (ru)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012151392A1 (en) * 2011-05-04 2012-11-08 Citrix Systems, Inc. Systems and methods for sr-iov pass-thru via an intermediary device
US8578378B2 (en) * 2011-07-28 2013-11-05 Intel Corporation Facilitating compatible interaction, at least in part
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
WO2013097105A1 (en) 2011-12-28 2013-07-04 Intel Corporation Efficient dynamic randomizing address remapping for pcm caching to improve endurance and anti-attack
CN102591702B (zh) * 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US10055254B2 (en) * 2013-07-12 2018-08-21 Bluedata Software, Inc. Accelerated data operations in virtual environments
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
US9846592B2 (en) * 2015-12-23 2017-12-19 Intel Corporation Versatile protected input/output device access and isolated servicing for virtual machines
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US10185679B2 (en) * 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN106844007B (zh) * 2016-12-29 2020-01-07 中国科学院计算技术研究所 一种基于空间复用的虚拟化方法与系统
US10642603B2 (en) 2018-01-16 2020-05-05 Nutanix, Inc. Scheduling upgrades in distributed computing systems
US10628350B1 (en) * 2018-01-18 2020-04-21 Cavium, Llc Methods and systems for generating interrupts by a response direct memory access module
US10838754B2 (en) * 2018-04-27 2020-11-17 Nutanix, Inc. Virtualized systems having hardware interface services for controlling hardware
CN109542831B (zh) * 2018-10-28 2023-05-23 西南电子技术研究所(中国电子科技集团公司第十研究所) 机载平台多核虚拟分区处理系统
US11422959B1 (en) 2021-02-25 2022-08-23 Red Hat, Inc. System to use descriptor rings for I/O communication

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
WO2009058490A2 (en) * 2007-10-31 2009-05-07 Hewlett-Packard Development Company, L.P. Hardware device interface supporting transaction authentication
RU2365988C2 (ru) * 2003-10-24 2009-08-27 Майкрософт Корпорейшн Обеспечение защищенного ввода в систему с высоконадежной средой исполнения программ

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107267B2 (en) * 2002-01-31 2006-09-12 Sun Microsystems, Inc. Method, system, program, and data structure for implementing a locking mechanism for a shared resource
US7793287B2 (en) * 2003-10-01 2010-09-07 Hewlett-Packard Development Company, L.P. Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
US7552419B2 (en) * 2004-03-18 2009-06-23 Intel Corporation Sharing trusted hardware across multiple operational environments
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
US7787303B2 (en) * 2007-09-20 2010-08-31 Cypress Semiconductor Corporation Programmable CSONOS logic element
US20090319740A1 (en) * 2008-06-18 2009-12-24 Fujitsu Limited Virtual computer system, information processing device providing virtual computer system, and program thereof
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2365988C2 (ru) * 2003-10-24 2009-08-27 Майкрософт Корпорейшн Обеспечение защищенного ввода в систему с высоконадежной средой исполнения программ
CN1936845A (zh) * 2005-09-19 2007-03-28 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
WO2007115425A1 (en) * 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
WO2009058490A2 (en) * 2007-10-31 2009-05-07 Hewlett-Packard Development Company, L.P. Hardware device interface supporting transaction authentication

Also Published As

Publication number Publication date
EP2517104A4 (en) 2013-06-05
AU2009357325B2 (en) 2014-04-10
EP2517104A1 (en) 2012-10-31
US20130055259A1 (en) 2013-02-28
RU2012127415A (ru) 2014-01-10
JP2013515983A (ja) 2013-05-09
WO2011075870A1 (en) 2011-06-30
CN102754076B (zh) 2016-09-07
SG181557A1 (en) 2012-07-30
AU2009357325A1 (en) 2012-07-05
CN102754076A (zh) 2012-10-24
JP5608243B2 (ja) 2014-10-15
KR20120098838A (ko) 2012-09-05
KR101521778B1 (ko) 2015-05-20

Similar Documents

Publication Publication Date Title
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US20230289305A1 (en) Direct access to a hardware device for virtual machines of a virtualized computer system
US5706514A (en) Distributed execution of mode mismatched commands in multiprocessor computer systems
US8028184B2 (en) Device allocation changing method
US9697024B2 (en) Interrupt management method, and computer implementing the interrupt management method
US9495172B2 (en) Method of controlling computer system and computer system
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
JP2015503784A (ja) グラフィックス処理部における仮想マシン間の移行
US9792136B2 (en) Hardware assisted inter hypervisor partition data transfers
US20120272015A1 (en) Virtual machine trigger
EP4220394A1 (en) Chip system, method for processing virtual interrupt, and corresponding device
US20230124004A1 (en) Method for handling exception or interrupt in heterogeneous instruction set architecture and apparatus
KR101716715B1 (ko) 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US20200183729A1 (en) Evolving hypervisor pass-through device to be consistently platform-independent by mediated-device in user space (muse)
US20230133273A1 (en) System and interrupt handling method
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
CN112352221A (zh) 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制
CN113312141A (zh) 用于虚拟机的虚拟串行端口
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
WO2020177567A1 (zh) 一种迁移数据的方法、装置及系统
US20190227942A1 (en) System and Method to Handle I/O Page Faults in an I/O Memory Management Unit
US20230033583A1 (en) Primary input-output queue serving host and guest operating systems concurrently
US10395037B2 (en) System and method for preserving data during an information handling system event using information handling system memory
CN117555832A (zh) 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质
CN114327741A (zh) 服务器系统、容器设置方法及装置

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20171225