RU2406113C2 - Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств - Google Patents

Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств Download PDF

Info

Publication number
RU2406113C2
RU2406113C2 RU2004133169/08A RU2004133169A RU2406113C2 RU 2406113 C2 RU2406113 C2 RU 2406113C2 RU 2004133169/08 A RU2004133169/08 A RU 2004133169/08A RU 2004133169 A RU2004133169 A RU 2004133169A RU 2406113 C2 RU2406113 C2 RU 2406113C2
Authority
RU
Russia
Prior art keywords
mode
dual
virtual device
functionality
virtual
Prior art date
Application number
RU2004133169/08A
Other languages
English (en)
Other versions
RU2004133169A (ru
Inventor
Эрик ТРОТ (US)
Эрик ТРОТ
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 RU2004133169A publication Critical patent/RU2004133169A/ru
Application granted granted Critical
Publication of RU2406113C2 publication Critical patent/RU2406113C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Группа изобретений относится к виртуальным устройствам в компьютерным системах. Технический результат является обеспечение высокого уровня совместимости с программным обеспечением, исполняемым в гостевой среде, аналогично подходу виртуализации аппаратного устройства. Различные варианты осуществления настоящего изобретения относятся к подходам двухрежимных виртуальных устройств. В определенных вариантах осуществления двухрежимное устройство является виртуальным устройством, которое основывается на реальных компонентах аппаратных средств. Варианты осуществления предусматривают "высокопроизводительный режим", который отсутствует в оригинальном аппаратном устройстве. Программные драйвера и другое программное обеспечение, разработанные для взаимодействия с оригинальным аппаратным устройством и не предназначенные использовать указанный высокопроизводительный режим, продолжают использовать "обычный режим" - виртуализация аппаратных средств, в то время как улучшенные версии гостевого программного обеспечения способны опознавать и использовать высокопроизводительный режим - идеализированная виртуализация. 4 н. и 35 з.п. ф-лы, 9 ил.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение в общем случае относится к области виртуальных устройств в компьютерных системах, а более конкретно, к улучшенным виртуальным устройствам в компьютерных системах, которые при необходимости работают по выбору в качестве виртуального аналога аппаратного устройства или в качестве виртуального идеализированного устройства.
УРОВЕНЬ ТЕХНИКИ
Виртуальное устройство представляет собой логическое устройство, реализованное при помощи программного обеспечения, которое соответствует какому-либо виду реального или идеализированного физического устройства. В общем случае существует два подхода к моделированию виртуальных устройств: подход “виртуальный аналог аппаратного устройства”, в котором непосредственно моделируют существующий компонент аппаратных средств; и подход “виртуальное идеализированное устройство”, который не является простым отражением физических аппаратных средств, но оптимизировано для среды VM (ВМ, виртуальной машины).
Подход, основанный на виртуальных аналогах аппаратных устройств, предлагает преимущества в отношении совместимости, поскольку виртуальное устройство действует во всех отношениях подобно реальному устройству, программное обеспечение, которое разработано для взаимодействия с таким устройством (например, драйвер), будет работать с виртуальным аналогом аппаратного устройства без модификации. Однако виртуальные аналоги аппаратных устройств имеют недостатки в отношении их производительности - физические аппаратные средства часто сложны для эмуляции виртуальным устройством без связанных с этим издержек в виде значительных накладных расходов (и неэффективности), поскольку разработки аппаратных средств обычно не принимают в расчет вопросы виртуализации, и таким образом, виртуальные аналоги аппаратных устройств часто являются заметно более медленными, чем их двойники - реальные аппаратные средства.
С другой стороны, виртуальные идеализированные устройства предоставляют значительную свободу для разработчиков конструкций виртуальных устройств, являющихся как простыми в осуществлении, так и эффективными в использовании. Поскольку конструкцию виртуальных идеализированных устройств не требуется согласовывать с ограничениями, налагаемыми конструкцией физических аппаратных средств, виртуальные идеализированные устройства могут быть оптимизированы для использования в среде ВМ. Более того, разработчикам идеализированных виртуальных устройств нет необходимости самим иметь дело с тонкими побочными эффектами (такими как временные параметры, изменения состояний и т.д.), которые существующие программные средства могут учитывать для корректной работы. Помимо этого, разработчики также могут разрабатывать идеализированные виртуальные устройства, которые являются аналогами аппаратных средств, которые фактически не существуют - например, виртуальное устройство, которое позволяет обмен данными между гостевой системой и системой-хозяином. Однако оборотная сторона заключается в том, что могут возникнуть вопросы совместимости с подходом виртуального идеализированного устройства, поскольку виртуальное устройство фактически не может во всех отношениях работать подобно реальному устройству, и программное обеспечение, которое разработано для взаимодействия с таким физическим устройством (например, драйвер), может не работать с идеализированным виртуальным устройством корректно или не работать вовсе, без модификации.
То, что является необходимым в данной области техники - это подход к виртуализированным устройствам, который включает в себя преимущества двух существующих принципов, обсуждавшихся в данном описании, но лишен большинства их ограничений.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Различные варианты осуществления настоящего изобретения относятся к подходу виртуальных двухрежимных устройств (т.е. “двухрежимным устройствам”), которые объединяют относительные преимущества подходов виртуализации аппаратных средств и идеализированных устройств и в то же время уменьшают соответствующие их недостатки. В определенных вариантах осуществления двухрежимное устройство представляет собой виртуальное устройство, которое основывается главным образом на реальных компонентах аппаратных средств для обеспечения высокого уровня совместимости с программным обеспечением, функционирующим в гостевой среде (подобно подходу виртуализации аппаратного устройства). Однако для преодоления проблемы низкой производительности, которая присуща виртуальным аналогам аппаратных устройств, такие варианты осуществления также обеспечивает идеализированный “высокопроизводительный режим”, который отсутствует в оригинальном аппаратном устройстве. Программные драйвера (и другое программное обеспечение), разработанные для взаимодействия с оригинальным аппаратным устройством, не знающие (и неспособные использовать) высокопроизводительного режима, будут продолжать использовать “обычный режим” (виртуализация аппаратных средств), в то время как улучшенные версии гостевого программного обеспечения будут способны распознавать и использовать высокопроизводительный режим (идеализированная виртуализация).
Краткое описание чертежей
Приведенное выше раскрытие изобретения так же, как следующее ниже подробное описание предпочтительных вариантов осуществления, будут лучше поняты при чтении совместно с прилагаемыми чертежами. С целью иллюстрации настоящего изобретения на чертежах приведены иллюстративные варианты настоящего изобретения; однако настоящее изобретение не ограничено конкретными раскрытыми способами и средствами. На чертежах:
Фиг.1 является блок-схемой, соответствующей компьютерной системе, в которую могут быть включены аспекты настоящего изобретения;
На Фиг.2 показано разбиение на логические уровни архитектуры аппаратных и программных средств для эмулированной рабочей среды в компьютерной системе;
На Фиг.3А показана виртуализированная компьютерная система;
На Фиг.3В показан альтернативный вариант осуществления виртуализированной компьютерной системы, включающей в себя монитор виртуальной машины, функционирующий параллельно с операционной системой-хозяином;
На Фиг.4А показана виртуализованная компьютерная система по Фиг.3, дополнительно включающая в себя драйвера, виртуальные устройства и аппаратные средства;
На Фиг.4В показан рабочий путь от приложения, исполняемого в гостевой операционной системе, до аппаратного устройства аппаратных средств компьютера;
На Фиг.5 в упрощенном виде показаны некоторые взаимосвязи между драйверами, виртуальным устройством и аппаратными средствами, показанными на Фиг.4;
На Фиг.6А показано замещение двухрежимным устройством виртуального устройства в подсистеме по Фиг.5, причем указанное двухрежимное устройство работает в обычном режиме; и
На Фиг.6В показано двухрежимное устройство по Фиг.6А, работающее в высокопроизводительном режиме.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Объект изобретения описан таким образом, чтобы удовлетворить установленным требованиям. Однако само описание не предназначено для ограничения объема настоящего патента. Напротив, изобретатель предполагал, что заявленный объект также может быть реализован другими способами, включая в себя различные этапы или комбинации этапов, подобных описанным в этом документе, в связи с другими существующими или будущими технологиями. Помимо этого, хотя термин “этап” может быть использован в данном описании для связи различных элементов применяемых способов, данный термин не следует истолковывать как предполагающий какой-либо особый порядок среди или между различными этапами, изложенными в данном описании, за исключением и кроме тех, в которых порядок отдельных этапов рассматривается в явном виде.
Компьютерная среда
Многочисленные варианты осуществления настоящего изобретения могут выполняться на компьютере. Фиг.1 и следующее ниже обсуждение предназначено для предоставления краткого общего описания подходящей компьютерной среды, в которой может быть реализовано изобретение. Хотя это не является необходимым, изобретение будет описано в контексте инструкций, выполняемых компьютером, таких как программные модули, выполняемые на компьютере, таком как клиентская рабочая станция или сервер. Обычно, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Помимо этого, специалистам в данной области техники будет очевидно, что настоящее изобретение может быть применено с другими конфигурациями компьютерных систем, включающими в себя портативные устройства, мультипроцессорные системы, микропроцессорные или программируемые бытовые электронные устройства, сетевые ПК, мини-компьютеры, мэйнфреймы и т.п. Изобретение также может применяться в распределенной компьютерной среде, в которой задачи выполняются удаленными процессорными устройствами, связанными через сеть обмена данными. В распределенной компьютерной среде программные модули могут размещаться как в локальном, так и удаленном запоминающем устройстве.
Как показано на Фиг.1, иллюстративная компьютерная система общего назначения включает в себя обычный персональный компьютер 20 или ему подобный, включающий в себя процессор 21, системную память 22 и системную шину 23, которая соединяет различные компоненты системы, в том числе системную память с процессором 21. Системная шина 23 может быть любой из нескольких типов конструкций шин, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из различных шинных архитектур. Системная память включает в себя постоянное запоминающее устройство 24 (ПЗУ) и оперативное запоминающее устройство 25 (ОЗУ). Базовая система 26 ввода/вывода (БСВВ, BIOS), включающая в себя основные процедуры, которые помогают передавать информацию между элементами внутри персонального компьютера 20, например во время запуска, хранится в ПЗУ 24. Персональный компьютер 20 может дополнительно включать в себя привод 27 жесткого диска для чтения данных с жесткого диска (не показан) и записи на него, привод 28 магнитного диска для чтения данных со съемного магнитного диска 29 и записи на него и привод оптического диска для чтения и записи данных на оптический диск 31, такой как CD ROM или другой оптический носитель. Привод 27 жесткого диска, привод 28 магнитного диска и привод 30 оптического диска подсоединены к системной шине 23 при помощи интерфейса 32 привода жесткого диска, интерфейса 33 привода магнитного диска и интерфейса 34 привода оптического диска соответственно. Приводы и связанные с ними читаемые компьютером носители обеспечивают в персональном компьютере 20 энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных. Хотя иллюстративная среда, изложенная в данном описании, использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалистам в данной области техники должно быть очевидным, что в иллюстративной рабочей среде также могут быть использованы другие типы читаемых компьютером носителей, которые могут хранить данные, доступные компьютеру, такие как магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ) и т.п.
Некоторые программные модули, включающие в себя оперативную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и данные 38 программ, могут храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Пользователь может вводить команды и информацию в персональный компьютер через устройства ввода, такие как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или т.п. Эти и другие устройства ввода часто соединены с процессором 21 через интерфейс 46 последовательного порта, который соединен с системной шиной, но могут быть подсоединены при помощи других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ, USB). Монитор 47 или другой тип устройства отображения также подсоединяют к системной шине 23 через интерфейс, такой как видеоадаптер 48. Дополнительно к монитору 47 персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как громкоговарители и принтеры. Иллюстративная система по Фиг.1 также включает в себя хост-адаптер 55, шину 56 интерфейса малых компьютерных систем (ИМКС, SCSI) и внешнее запоминающее устройство 62, подсоединенное к шине 56 SCSI.
Персональный компьютер 20 может работать в сетевой среде, используя логические связи с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 49. Удаленный компьютер 49 может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим сетевым узлом общего назначения, и обычно включает в себя большинство или все элементы, описанные выше в отношении персонального компьютера 20, хотя на Фиг.1 показано только запоминающее устройство 50. Логические связи, изображенные на Фиг.1, включают в себя локальную сеть 51 (ЛС) и глобальную сеть 52 (ГС). Такие сетевые среды являются обычным явлением в офисах, глобальных корпоративных компьютерных сетях, интрасетях и Интернет.
При использовании сетевой среды ЛС персональный компьютер 20 подсоединен к ЛС 51 через сетевой интерфейс или адаптер 53. При использовании сетевой среды ГС персональный компьютер 20 обычно включает в себя модем 54 или другое средство для организации обмена данными через глобальную сеть 52, такую как Интернет. Модем 54, который может быть внешним или внутренним, подсоединен к системной шине 23 через интерфейс 46 параллельного порта. В сетевой среде программные модули, изображенные в отношении персонального компьютера 20, или их части, могут быть сохранены в удаленном запоминающем устройстве. Очевидно, что показанные сетевые соединения являются иллюстративными и могут быть использованы другие средства для организации линий связи между компьютерами. Помимо этого, несмотря на то, что многочисленные варианты осуществления настоящего изобретения являются особо подходящими для компьютеризованных систем, ничто в этом документе не следует рассматривать в качестве ограничения настоящего изобретения такими вариантами осуществления.
Виртуальные машины
С абстрактной точки зрения компьютерные системы обычно включают в себя один или несколько уровней программного обеспечения, исполняемого на базовом уровне аппаратных средств. Указанное разбиение по уровням выполнено для целей абстракции. Определяя интерфейс для данного уровня программного обеспечения, такой уровень может быть реализован по-разному другими верхними по отношению к нему уровнями. В хорошо разработанной компьютерной системе каждый уровень знает только об уровне непосредственно под ним (и только от него зависит). Это позволяет уровню или “стеку” (набор граничащих друг с другом уровней) быть замененным без негативного влияния на уровни, находящиеся выше указанного уровня или стека. Например, прикладные программы (верхние уровни) обычно зависят от нижележащих уровней операционной системы (нижние уровни) при записи файлов в постоянное запоминающее устройство какого-либо вида, и от таких приложений не требуется понимания различий между записью данных на гибкий диск, жесткий диск или в сетевой каталог. Если такие нижние уровни заменяются новыми компонентами операционной системы для записи файлов, работа прикладных программ верхнего уровня останется незатронутой.
Гибкость разбитого на уровни программного обеспечения позволяет виртуальной машине (ВМ) представлять уровень виртуального аппаратного обеспечения, который фактически является другим уровнем программного обеспечения. В этом случае ВМ может создать иллюзию для уровней программного обеспечения, находящихся выше нее, что указанные уровни программного обеспечения работают в своей собственной компьютерной системе, и такие ВМ могут позволить набору “гостевых систем” выполняться одновременно в одной “системе-хозяине”.
Фиг.2 представляет собой диаграмму, изображающую логическое разбиение на уровни архитектуры аппаратных и программных средств для эмулированной рабочей среды в компьютерной системе. Программа 94 эмуляции исполняется в операционной системе-хозяине и/или архитектуре 92 аппаратных средств. Программа 94 эмуляции эмулирует гостевую архитектуру 96 аппаратных средств и гостевую операционную систему 98. Прикладная программа 100, в свою очередь, выполняется в гостевой операционной системе 98, в эмулированной рабочей среде по Фиг.2, поскольку при работе программы 94 эмуляции прикладная программа 100 может выполняться в компьютерной системе 90, даже несмотря на то, что прикладная программа 100 установлена для выполнения в операционной системе, которая обычно является несовместимой с операционной системой-хозяином и архитектурой 92 аппаратных средств.
На Фиг.3А показана виртуализованная компьютерная система, включающая в себя уровень 104 программного обеспечения операционной системы-хозяина, функционирующий непосредственно над физическими аппаратными средствами 102 компьютера, и операционная система-хозяин 104 (ОС-хозяин) виртуализует все ресурсы машины при помощи предоставления интерфейсов, которые являются такими же, что и у аппаратных средств, которые виртуализует ОС-хозяин (что позволяет ОС-хозяину выполняться незаметно для уровней операционной системы, выполняемых над ней).
В качестве альтернативы, монитор виртуальной машины или МВМ, уровень 104' программного обеспечения может выполняться вместо или параллельно с операционной системой-хозяином 104”, последняя возможность показана на Фиг.3В. Для простоты, все обсуждение в данном описании ниже (особенно относительно операционной системы-хозяина 104) будет относиться к варианту осуществления, показанному на Фиг.3А; однако каждый аспект такого обсуждения в равной степени может быть применен к варианту осуществления по Фиг.3В, в котором МВМ 104' по Фиг.3В по существу заменяет, на функциональном уровне, роль операционной системы-хозяина 104 по Фиг.3А, изложенную в данном описании ниже.
Возвращаясь снова к Фиг.3А, над ОС-хозяином 104 (или МВМ 104') находятся две реализации виртуальных машины (ВМ), ВМ А 108, которая, например, может быть виртуализованным процессором Intel 386, и ВМ В 110, которая, например, может быть виртуализованной версией одного из процессоров семейства Motorola 680X0. Над каждой ВМ 108 и 110 находится гостевая операционная система (гостевая ОС) А 112 и В 114 соответственно. Над гостевой ОС А 112 исполняются два приложения, приложение А1 116 и приложение А2 118, а над гостевой ОС В 114 исполняется приложение В1 120.
Виртуальные устройства
В отношении физических аппаратных устройств ВМ предоставляют несколько возможностей, позволяющих прикладным программам использовать указанные аппаратные средства. В некоторых системах ВМ аппаратное устройство (такое как привод жесткого диска или сетевой адаптер) может быть назначено одной ВМ, и только программное обеспечение, исполняемое в такой ВМ, может использовать указанное аппаратное устройство (архитектура выделенного устройства). Однако такая конструкция не позволяет совместное использование аппаратных устройств различными ВМ, а также ВМ и системой-хозяином. По этой причине многие реализации ВМ вместо этого используют “виртуальные устройства”.
Виртуальное устройство является логическим устройством, реализованным при помощи программного обеспечения, которое соответствует какому-либо виду реального или идеализированного физического устройства. Обычно виртуальные устройства обладают своим собственным набором состояний устройства, который может включать в себя, например, установки регистров, буферизованные данные, очереди отложенных команд и т.д. и т.п. В качестве не ограничивающего варианта осуществления, для виртуального сетевого адаптера вызывается программное обеспечение, связанное с виртуальным адаптером, когда код, исполняемый на ВМ, осуществляет обращение к сетевому адаптеру, и затем виртуальный адаптер может ответить на команды способом, который согласуется с реальной картой адаптера. В этом случае код, исполняемый внутри ВМ, не осведомлен, что он “общается” с виртуальным адаптером, а не с реальным, и затем виртуальный адаптер может непосредственно или опосредованно взаимодействовать с реальным адаптером, инициируя требуемые действия реального адаптера.
Во многих случаях запросы к виртуальному устройству отображаются на соответствующее устройство-хозяин. Например, сетевые пакеты, которые посланы из виртуального сетевого адаптера, могут быть направлены в один из реальных сетевых адаптеров, установленных в машине-хозяине. В этом отношении архитектура виртуального устройства обеспечивает производительность, подобную таковой, для архитектуры выделенного устройства, описанную выше. Однако в отличие от архитектуры выделенного устройства архитектура виртуального устройства позволяет набору виртуальных устройств отображаться на одно устройство-хозяин (реальное устройство). Например, три независимые ВМ могут каждая содержать виртуальный сетевой адаптер, и все три адаптера могут совместно использовать один адаптер-хозяин, тогда как в архитектуре выделенного устройства только одна ВМ может использовать адаптер-хозяин.
На Фиг.4А показана виртуализованная компьютерная система по Фиг.3, дополнительно включающая в себя драйвера, виртуальные устройства и аппаратные средства. Гостевая ОС А 112 и виртуальная машина А 108 включают в себя виртуальное устройство А 124, соответствующее драйверу А 122. Аналогично, гостевая ОС В 114 включает в себя драйвер В 126, а виртуальная машина В 110 включает в себя виртуальное устройство В 128, соответствующее драйверу В 126. Дополнительно, ОС-хозяин 104 включает в себя драйвер Х 130, а аппаратные средства 102 компьютера включают в себя аппаратное устройство Х 132, соответствующее драйверу Х 130.
На Фиг.4В показан рабочий путь от приложения, исполняемого в гостевой операционной системе, до аппаратного устройства в аппаратных средствах компьютера. Приложение А1 116 взаимодействует 134 с драйвером А 122, который, в свою очередь, взаимодействует 136 с виртуальным устройством А 124. Затем указанное виртуальное устройство А 124 взаимодействует 138 с драйвером Х 130 (в ОС-хозяине 104), который, в свою очередь, взаимодействует 140 непосредственно с аппаратным устройством Х 132. На Фиг.5 более просто показана та же взаимосвязь между драйверами, виртуальным устройством и аппаратными средствами, показанными на Фиг.4В.
Двухрежимное устройство
В общем случае существует два подхода при создании виртуальных устройств: принцип “виртуального аналога аппаратного устройства”, который непосредственно моделирует существующие компоненты аппаратных средств; и подход “виртуального идеализированного устройства”, который не является только отражением физических аппаратных средств, а оптимизирован для среды ВМ. Подход виртуального аналога аппаратного устройства предлагает преимущества в отношении совместимости, поскольку виртуальное устройство действует во всех отношениях подобно реальному устройству, программное обеспечение, которое разработано для взаимодействия с таким устройством (например, драйвером), будет работать с виртуальным аналогом аппаратного устройства без модификации. Однако виртуальные аналоги аппаратных устройств имеют недостатки в отношении их производительности - физические аппаратные средства часто сложны для эмуляции виртуальным устройством без связанных с этим значительных накладных расходов (и неэффективности), поскольку разработчики аппаратных средств обычно не принимают в расчет вопросы виртуализации, и, таким образом, виртуальные аналоги аппаратных устройств часто являются заметно более медленными, чем их реальные аппаратные двойники.
С другой стороны, виртуальные идеализированные устройства предоставляют значительную свободу для разработчиков конструкций виртуальных устройств, которые являются как простыми для осуществления, так и эффективными в использовании. Поскольку конструкцию виртуальных идеализированных устройств не требуется согласовывать с ограничениями, налагаемыми конструкцией физических аппаратных средств, виртуальные идеализированные устройства могут быть оптимизированы для использования в среде ВМ. Помимо этого, разработчики также могут разрабатывать виртуальные идеализированные устройства, которые являются аналогами аппаратных средств, которые фактически не существуют, - например, виртуальное устройство, которое позволяет обмен данными между гостевой системой и системой-хозяином. Однако оборотная сторона заключается в том, что могут возникать вопросы совместимости с подходом виртуального идеализированного устройства, поскольку виртуальное устройство фактически не может во всех отношениях работать подобно реальному устройству, и программное обеспечение, которое разработано для взаимодействия с таким физическим устройством (например, драйвером), может не работать с виртуальным идеализированным устройством корректно или не работать вовсе, без модификации.
Различные варианты осуществления настоящего изобретения относятся к подходам двухрежимных виртуальных устройств (т.е. “двухрежимные устройства”), которые объединяют относительные достоинства подходов виртуализации аппаратных средств и идеализированных устройств и в то же время уменьшают их относительные недостатки. В основных вариантах осуществления двухрежимное устройство является виртуальным устройством, которое основывается главным образом на реальных компонентах аппаратных средств для обеспечения высокого уровня совместимости с программным обеспечением, исполняемым в гостевой среде (подобно подходу виртуализации аппаратного устройства). Однако для преодоления проблемы низкой производительности, которая присуща виртуальным аналогам аппаратных устройств, такие варианты осуществления также предусматривают идеализированный “высокопроизводительный режим”, который отсутствует в оригинальном аппаратном устройстве. Программные драйвера (и другое программное обеспечение), разработанные для взаимодействия с оригинальным аппаратным устройством, и которые не знают (и не способны использовать) высокопроизводительный режим, будут продолжать использовать “обычный режим” (виртуализация аппаратных средств), в то время как версии гостевого программного обеспечения способны распознавать и использовать высокопроизводительный режим (идеализированная виртуализация).
Для определенных вариантов осуществления высокопроизводительный режим может быть полностью независимым от исходных функциональных возможностей обычного режима виртуального устройства. В качестве альтернативы, высокопроизводительный режим может включать в себя расширения или замещения исходных функциональных возможностей. В любом случае высокопроизводительный режим подобен подходам виртуализации идеализированного процессора, является ли он независимым от функциональных возможностей обычного режима, или он является его модернизацией. Помимо этого, также следует отметить, что в зависимости от того, какой вариант осуществления используется, переключение в высокопроизводительный режим может полностью блокировать обычный режим, это может частично блокировать обычный режим, и/или это может расширить функциональные возможности обычного режима.
В определенных вариантах осуществления настоящего изобретения высокопроизводительный режим может быть разрешен через использование зарезервированных битов в виртуальных регистрах устройства, тогда как альтернативные варианты осуществления могут добавлять взамен новые регистры (например, регистр, специально созданный для использования одним или несколькими виртуальными устройствами) или могут осуществлять вид квитирования связи таким образом, что предписанная последовательность команд или данных записывается в обычные регистры.
В качестве не ограничивающего примера рассмотрим двухрежимное устройство сетевой интерфейсной платы Ethernet. В обычном режиме отправка пакета информации в карту Ethernet может включать в себя до восьми (8) отлетных процедур записи в обычные регистры ввода/вывода. Указанные процедуры ввода/вывода требуются для установления параметров для передачи пакета, включающего в себя DMA адрес (т.е. положение в ОЗУ, в котором находится пакет данных), длину передачи и байт команды, который инициализирует передачу после того, как определены другие параметры. Однако каждая из таких процедур записи в регистры ввода/вывода является относительно дорогостоящей для ВМ, и суммарное время, требуемое для виртуализации такого доступа ввода/вывода, является значительным и приводит к большим потерям производительности. Однако виртуальная “идеализированная” карта Ethernet, т.е. виртуальная карта, функционирующая в высокопроизводительном режиме, может требовать только одну процедуру ввода/вывода для инициации отправки пакета, и, таким образом, двухрежимное устройство карты Ethernet (например, устройство, основанное на наборе микросхем DEC 21140), которое дополняется высокопроизводительным режимом, будет значительно увеличивать производительность в таких случаях, в которых может использоваться высокопроизводительный режим.
Для определенных вариантов осуществления высокопроизводительный режим может быть разрешен через использование специального, модифицированного драйвера, установленного внутри гостевой среды операционной системы, и как только высокопроизводительный режим разрешается, драйвер может использовать более оптимальный механизм для инициации отправки пакета. Однако если у гостя модифицированный драйвер отсутствует, обычный драйвер будет способен обеспечивать функциональные возможности использования сети, хотя и без оптимизации производительности возможной при высокопроизводительном режиме.
На Фиг.6А показано замещение двухрежимным устройством виртуального устройства в подсистеме по Фиг.5, причем указанное двухрежимное устройство работает в обычном режиме. На этом чертеже обычный драйвер А' 122' взаимодействует 136' с двухрежимным устройством 150, которое включает в себя как обычный режим 152 для виртуализации аппаратных средств, так и высокопроизводительный режим 154 для идеализированной виртуализации. Поскольку драйвер А' 122' не разработан для работы с идеализированной виртуализацией, предоставляемой высокопроизводительным режимом 154 двухрежимного устройства 150, он вместо этого работает с виртуализацией аппаратных средств, предоставляемой обычным режимом 152 двухрежимного устройства 150 (как показано), которая, в свою очередь, взаимодействует 138' с драйвером Х 130 ОС-хозяина.
Напротив, на Фиг.6В показано двухрежимное устройство, работающее в высокопроизводительном режиме. На этом чертеже высокопроизводительный драйвер А” 122” взаимодействует 136” с двухрежимным устройством 150. Поскольку высокопроизводительный драйвер А” 122” выполнен с возможностью работы с идеализированной виртуализацией, предоставляемой высокопроизводительным режимом 154 или двухрежимным устройством 150, он делает это (как показано), а двухрежимное устройство 150, в свою очередь, затем взаимодействует 138” с драйвером Х 130 ОС-хозяина.
Аппаратные средства на основе “двухрежимных” подходов используются в различных технологических областях для добавления новых функциональных возможностей аппаратному устройству, которое, в противном случае, несовместимо со старыми функциональными возможностями. Например, обычная PS/2 мышь посылает три байта информации в компьютер (Х-координату, Y-координату и состояние кнопки), но когда производители мыши добавили к мыши “колесо прокрутки”, им также потребовалось перейти к четырехбайтовому пакету информации, который включает в себя состояние колеса прокрутки. Для обеспечения обратной совместимости с драйверами мыши, которые не знали колеса прокрутки, новые мыши запускаются в “обычном режиме” и предоставляют только три байта информации, но когда загружался драйвер нового стиля, этот драйвер запускал “режим колеса прокрутки”, давая указание мыши начинать отправку четырехбайтовых пакетов.
Методики двухрежимных устройств
Существует несколько методик, при помощи которых драйвера гостевого режима могут идентифицировать двухрежимное устройство (т.е. отличить реальное аппаратное устройство и эмулированное устройство, которое поддерживает дополнительные режимы работы). Эти методики включают в себя, без ограничения следующие:
- Уникальный номер версии устройства: Многие устройства включают в себя идентификаторы версии устройства, доступные программному обеспечению. Эти значения иногда доступны непосредственно через порт ввода/вывода или отображаемый в память регистр. В другом случае, в устройство может быть послана определенная команда с запросом вернуть информацию о версии. В таких случаях иногда существует возможность модификации номера версии таким образом, что он не будет соответствовать каким-либо существующим реальным аппаратным средствам. Большинство драйверов игнорируют номер версии или выполняют проверку для минимального номера версии, таким образом, выбор нового уникального номера версии возможен без влияния на совместимость с существующими обычными драйверами.
- Неиспользуемые регистры: Некоторые устройства определяют совокупность портов ввода/вывода или отображаемых в памяти регистров, но используют только подмножество этой совокупности. Это является общим случаем, поскольку совокупности обычно размещены в блоках с размерами, кратными степени двойки, к тому же инженеры обычно резервируют больше, чем необходимо для дальнейшего расширения. Возможно использование “произвольного” или “резервного” регистра в совокупности в качестве идентификатора. Реальные аппаратные средства обычно возвращают значение 0х00 или 0хFF, если зарезервированный регистр является реальным. Эмулированное двухрежимное устройство может возвращать различные, определенные значения.
- Квитирование: Если две вышеуказанные методики являются невыполнимыми, обычно возможно разработать какую-либо форму квитирования “через заднюю дверь”. Это включает в себя определенную последовательность обращений к регистрам или команд устройству, использование которых является маловероятным для реальных сценариев. Например, если устройство является контроллером диска, методика квитирования может включать в себя отправку последовательности команд, которые считывают нулевые байты, находящиеся в начале определенного, заранее заданного списка секторов в определенном порядке (например, 0,3 и 7). В реальном контроллере такая процедура не будет эффективной (поскольку считывание нулевых байтов определено как отсутствие операции). Однако в двухрежимном устройстве, такая последовательность может вызвать другой эффект (например, установку определенного бита состояния в регистре состояния).
Конечно, одинаковые методики, используемые для идентификации эмулированного устройства, выполненного с возможностью двухрежимной работы, могут также применяться для автоматического разрешения “расширенного” режима для указанного устройства.
Заключение
Различные системы, способы и методики, изложенные в данном описании, могут быть реализованы аппаратно или программно, или, при необходимости, в виде сочетания и того, и другого. Таким образом, способы и устройства настоящего изобретения, или основные аспекты или их элементы, могут быть реализованы в форме программного кода (т.е. инструкций), осуществленного в материальном носителе, таком как гибкие магнитные диски, CD-ROM, жесткие диски или любые другие машиночитаемые носители, причем, если программный код загружен в машину, такую как компьютер, и исполняется ею, машина становится устройством для осуществления изобретения. В случае выполнения программного кода на программируемых компьютерах, компьютер обычно может включать в себя процессор, среду для хранения информации, читаемую процессором (включающую в себя энергозависимую и энергонезависимую память и/или запоминающие устройства), по меньшей мере, одно устройство ввода данных и, по меньшей мере, одно устройство вывода данных. Для связи с компьютерной системой одна или несколько программ предпочтительно реализованы на процедурном/объектно-ориентированном языке программирования высокого уровня. Однако программа(программы) могут быть реализованы на языке ассемблера или машинном языке, если это требуется. В любом случае язык может быть транслируемым или интерпретируемым языком в сочетании с аппаратными реализациями.
Способы и устройства настоящего изобретения также могут быть осуществлены в виде программного кода, который передается по какой-либо среде передачи, такой как электрические провода или кабели, через волоконно-оптический кабель, или посредством любого другого вида передачи, причем, если программный код получен, загружен и исполняется машиной, такой как СППЗУ, вентильная матрица, программируемое логическое устройство (ПЛУ), клиентский компьютер, устройство видеозаписи или т.п., указанная машина становится устройством для осуществления изобретения. При реализации на процессоре общего назначения программный код сочетается с процессором для обеспечения однозначно определяемого устройства, которое работает для выполнения указанных функциональных возможностей настоящего изобретения.
Поскольку настоящее изобретение описано в связи с предпочтительными вариантами различных чертежей, должно быть понятно, что могут быть использованы другие похожие варианты осуществления или могут быть произведены модификации или дополнения в изложенных вариантах осуществления для выполнения той же функции настоящего изобретения без отклонения от них. Например, хотя иллюстративные варианты осуществления настоящего изобретения описаны в контексте цифровых устройств, эмулирующих функциональные возможности персональных компьютеров, специалистам в данной области техники должно быть очевидным, что настоящее изобретение не ограничивается такими цифровыми устройствами, которые описаны в настоящей заявке на патент и может применяться для любого количества существующих или появляющихся компьютерных устройств или сред, таких как игровая консоль, микрокалькулятор, портативная вычислительная машина и т.п., либо проводных, либо беспроводных, и может применяться для любого количества таких компьютерных устройств, связанных через сеть обмена данными и взаимодействующих через указанную сеть. Помимо этого, необходимо подчеркнуть, что разнообразие компьютерных платформ, включающих в себя операционные системы для ручных устройств и другие специфичные для приложений системы сопряжения аппаратного/программного обеспечения, также учитываются настоящим описанием, особенно имея в виду продолжающееся увеличение количества беспроводных сетевых устройств. Следовательно, настоящее изобретение не следует ограничивать любым частным вариантом осуществления, но скорее должно рассматриваться в пределах объема согласно прилагаемой формуле изобретения.
В заключение, раскрытые варианты осуществления, изложенные в настоящем описании, могут быть приспособлены для использования для других архитектур процессоров, систем на основе компьютеров или систем виртуализации, и такие варианты осуществления также учитываются раскрытиями, приведенными в настоящем описании, и, таким образом, настоящее изобретение не ограничивается отдельными вариантами осуществления, изложенными в данном описании, но напротив, толкуется наиболее широко. Аналогично, применение методик с целью, отличной от виртуализации процессора, также учитывается в приведенных в настоящем описании раскрытиях, и любое такое использование методик в контексте, отличном от виртуализации процессора, следует истолковывать наиболее широко в контексте раскрытий, приведенных в настоящем описании.

Claims (39)

1. Способ работы двухрежимного виртуального устройства в компьютерной системе, причем способ содержит этапы, на которых: принимают посредством двухрежимного виртуального устройства запрос, причем двухрежимное виртуальное устройство выполнено с возможностью работать по выбору с одной или более виртуальными машинами в двух различных режимах, при этом первый режим содержит обычный режим, во время которого двухрежимное виртуальное устройство эмулирует определенное аппаратное устройство, при этом к двухрежимному виртуальному устройству осуществляется доступ посредством виртуальной машины через драйвер устройства, который выполнен с возможностью запускать определенное аппаратное устройство посредством конфигурирования эмулированных аппаратных компонентов эмулированного определенного аппаратного устройства, и второй режим содержит идеализированный режим, причем идеализированный режим выполнен с возможностью отправлять входящие/исходящие команды из гостевой операционной системы в операционную систему-хост;
выбирают операционный режим обслуживания запроса и выполняют команду согласно выбранному операционному режиму.
2. Способ по п.1, в котором:
двухрежимное виртуальное устройство выполнено с возможностью работать в обычном режиме, когда драйвер устройства, взаимодействующий с указанным двухрежимным виртуальным устройством, не предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме; и двухрежимное виртуальное устройство выполнено с возможностью работать в идеализированном режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме.
3. Способ по п.2, в котором функциональные возможности второго режима расширяют функциональные возможности первого режима.
4. Способ по п.1, в котором функциональные возможности второго режима содержат функциональные возможности первого режима.
5. Способ по п.1, в котором функциональные возможности второго режима содержат части функциональных возможностей первого режима.
6. Способ по п.2, в котором второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре виртуального устройства.
7. Способ по п.2, в котором второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре, специально созданном для использования одним или несколькими виртуальными устройствами.
8. Способ по п.2, в котором второй режим разрешается посредством использования предписанной последовательности команд или данных, которые изменяют значение, по меньшей мере, в одном регистре.
9. Способ по п.2, в котором второй режим разрешается посредством использования драйвера второго режима, установленного в среде гостевой операционной системы; и если драйвер второго режима отсутствует, взамен разрешается драйвер первого режима.
10. Компьютерная система, содержащая:
процессор, оперативно соединенный с памятью, причем память включает в себя команды для двухрежимного виртуального устройства;
при этом процессор выполнен с возможностью приводить в исполнение первый режим двухрежимного виртуального устройства, причем первый режим работает для эмулирования аппаратных компонентов эмулированного аппаратного устройства и при этом процессор выполнен с возможностью приводить в исполнение второй режим двухрежимного виртуального устройства, причем второй режим оптимизирован для отправки входящих/исходящих команд от гостевой операционной системы к операционной системе-хосту.
11. Система по п.10, в которой:
двухрежимное виртуальное устройство выполнено с возможностью работать, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, не предназначен для взаимодействия с абстрактным устройством;
и двухрежимное виртуальное устройство выполнено с возможностью работать во втором режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме.
12. Система по п.11, в которой функциональные возможности второго режима расширяют функциональные возможности первого режима.
13. Система по п.11, в которой функциональные возможности второго режима являются независимыми от функциональных возможностей первого режима.
14. Система по п.13, в которой функциональные возможности второго режима блокируют функциональные возможности первого режима.
15. Система по п.13, в которой функциональные возможности второго режима блокируют части функциональных возможностей первого режима.
16. Система по п.11, в которой второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре виртуального устройства.
17. Система по п.11, в которой второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре, специально созданном для использования одним или несколькими виртуальными устройствами.
18. Система по п.11, в которой второй режим разрешается посредством использования предписанной последовательности команд или данных, которые изменяют значение, по меньшей мере, одного регистра.
19. Система по п.11, в которой второй режим разрешается посредством использования драйвера второго режима, установленного в среде гостевой операционной системы.
20. Компьютерная система, содержащая:
процессор, оперативно соединенный с памятью;
при этом процессор выполнен с возможностью приводить в исполнение среду виртуальной машины;
при этом процессор выполнен с возможностью приводить в исполнение двухрежимное виртуальное устройство, которое выполнено с возможностью работать в первом режиме или во втором режиме;
при этом процессор выполнен с возможностью работать в первом режиме посредством исполнения команд, которые приводят в исполнение эмулированные аппаратные компоненты аппаратного виртуального устройства;
и при этом процессор выполнен с возможностью работать во втором режиме посредством исполнения команд, которые отправляют входящие/исходящие команды от гостевой операционной системы к операционной системе-хосту.
21. Система по п.20, в которой двухрежимное виртуальное устройство выполнено с возможностью работать в первом режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, не предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме; и двухрежимное виртуальное устройство выполнено с возможностью работать во втором режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме.
22. Система по п.21, в которой функциональные возможности второго режима расширяют функциональные возможности первого режима.
23. Система по п.21, в которой функциональные возможности второго режима являются независимыми от функциональных возможностей первого режима.
24. Система по п.23, в которой функциональные возможности второго режима блокируют функциональные возможности первого режима.
25. Система по п.23, в которой функциональные возможности второго режима блокируют часть функциональных возможностей первого режима.
26. Система по п.21, в которой второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре виртуального устройства.
27. Система по п.21, в которой второй режим разрешается посредством использования, по меньшей мере, одного бита в регистре, специально созданном для использования одним или несколькими виртуальными устройствами.
28. Система по п.21, в которой второй режим разрешается посредством использования предписанной последовательности команд или данных, которые изменяют значение, по меньшей мере, одного регистра.
29. Система по п.21, в которой второй режим разрешается посредством использования драйвера второго режима, установленного в среде гостевой операционной системы; и, если драйвер второго режима отсутствует, взамен разрешается драйвер первого режима.
30. Машиночитаемый носитель, содержащий читаемые компьютером инструкции, причем указанные читаемые компьютером инструкции содержат инструкции для двухрежимного виртуального устройства, причем инструкции для двухрежимного виртуального устройства, действующие для конфигурирования процессора для работы в первом или втором режиме, причем первый режим эмулирует аппаратные компоненты аппаратного устройства и при этом второй режим выполнен с возможностью отправлять входящие/исходящие команды из гостевой операционной системы в операционную систему-хост.
31. Машиночитаемый носитель по п.30, дополнительно содержащий инструкции для работы двухрежимного виртуального устройства в первом режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, не предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме; и работы двухрежимного виртуального устройства по выбору во втором режиме, когда драйвер, взаимодействующий с указанным двухрежимным виртуальным устройством, предназначен для взаимодействия с указанным двухрежимным виртуальным устройством, работающим в указанном втором режиме.
32. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для расширения функциональными возможностями второго режима функциональных возможностей первого режима.
33. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для функциональных возможностей второго режима, которые являются отдельными и отличными от функциональных возможностей первого режима.
34. Машиночитаемый носитель по п.33, дополнительно содержащий инструкции для второго режима для блокирования функциональных возможностей первого режима.
35. Машиночитаемый носитель по п.33, дополнительно содержащий инструкции для второго режима для блокирования частей функциональных возможностей первого режима.
36. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для разрешения второго режима посредством использования, по меньшей мере, одного бита в регистре виртуального устройства.
37. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для разрешения второго режима посредством использования, по меньшей мере, одного бита в регистре, специально созданном для использования одним или несколькими виртуальными устройствами.
38. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для разрешения второго режима посредством использования предписанной последовательности команд или данных, которые изменяют значение, по меньшей мере, одного регистра.
39. Машиночитаемый носитель по п.31, дополнительно содержащий инструкции для разрешения второго режима посредством использования драйвера второго режима, установленного в среде гостевой операционной системы; и, если драйвер второго режима отсутствует, разрешения первого режима посредством драйвера первого режима.
RU2004133169/08A 2003-12-12 2004-11-12 Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств RU2406113C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/734,450 US7558723B2 (en) 2003-12-12 2003-12-12 Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US10/734,450 2003-12-12

Publications (2)

Publication Number Publication Date
RU2004133169A RU2004133169A (ru) 2006-04-27
RU2406113C2 true RU2406113C2 (ru) 2010-12-10

Family

ID=34552773

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004133169/08A RU2406113C2 (ru) 2003-12-12 2004-11-12 Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств

Country Status (13)

Country Link
US (1) US7558723B2 (ru)
EP (1) EP1548589B1 (ru)
JP (1) JP4610307B2 (ru)
KR (1) KR20050059409A (ru)
CN (1) CN100449488C (ru)
AU (1) AU2004220769A1 (ru)
BR (1) BRPI0404496A (ru)
CA (1) CA2485239A1 (ru)
ES (1) ES2664817T3 (ru)
MX (1) MXPA04011275A (ru)
RU (1) RU2406113C2 (ru)
TW (1) TW200519632A (ru)
ZA (1) ZA200409138B (ru)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
JP4945186B2 (ja) * 2006-07-28 2012-06-06 株式会社東芝 記憶装置およびこれを含むメモリシステム
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US7793307B2 (en) * 2007-04-06 2010-09-07 Network Appliance, Inc. Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US20080320041A1 (en) * 2007-06-21 2008-12-25 Motorola, Inc. Adding virtual features via real world accessories
KR100917687B1 (ko) * 2007-06-26 2009-09-21 문창선 가상 인터페이스를 제공하기 위한 시스템 및 방법
US9043553B2 (en) 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8219988B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct for data processing system
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8645974B2 (en) 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
JP5056334B2 (ja) * 2007-10-15 2012-10-24 富士通株式会社 管理プログラム、管理装置、および管理方法
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
US8989802B2 (en) * 2009-01-27 2015-03-24 Symbol Technologies, Inc. Methods and apparatus for a mobile unit with device virtualization
TWI433527B (zh) 2009-09-11 2014-04-01 Shih Pi Ta Technology Ltd 一種建立通訊連線之方法及其系統
KR101275293B1 (ko) * 2009-10-26 2013-06-14 한국전자통신연구원 네트워크 장치 및 네트워크 가상화 지원 방법
US9529615B2 (en) 2010-11-24 2016-12-27 International Business Machines Corporation Virtual device emulation via hypervisor shared memory
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
JPWO2012102002A1 (ja) * 2011-01-24 2014-06-30 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路
US9804864B1 (en) * 2011-10-07 2017-10-31 BlueStack Systems, Inc. Method of mapping inputs and system thereof
US9329887B2 (en) 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
CN116401184A (zh) * 2016-01-22 2023-07-07 索尼互动娱乐股份有限公司 模拟向后兼容的传统总线行为
CN113490292B (zh) * 2021-07-16 2023-04-28 联想(北京)有限公司 通信处理方法和电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0212340A (ja) * 1988-06-29 1990-01-17 Nec Corp 仮想計算機
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5548783A (en) * 1993-10-28 1996-08-20 Dell Usa, L.P. Composite drive controller including composite disk driver for supporting composite drive accesses and a pass-through driver for supporting accesses to stand-alone SCSI peripherals
US5604887A (en) 1994-01-21 1997-02-18 Microsoft Corporation Method and system using dedicated location to share information between real and protected mode device drivers
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5940613A (en) * 1996-05-01 1999-08-17 Sun Microsystems, Inc. Method for creating a single binary virtual device driver for a windowing operating system
US5958022A (en) * 1997-03-21 1999-09-28 International Business Machines Corporation System and method for I/O access mode selection
RU99122746A (ru) * 1997-04-02 2001-09-20 Майкрософт Корпорейшн (Us) Способ интеграции виртуальной машины с редакторами способов ввода
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
JP2001256153A (ja) * 2000-03-09 2001-09-21 Canon Inc ネットワークデバイス制御装置および方法
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US7272831B2 (en) * 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
US20030061401A1 (en) * 2001-09-25 2003-03-27 Luciani Luis E. Input device virtualization with a programmable logic device of a server
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation

Also Published As

Publication number Publication date
AU2004220769A1 (en) 2005-06-30
BRPI0404496A (pt) 2005-08-23
CA2485239A1 (en) 2005-06-12
RU2004133169A (ru) 2006-04-27
US7558723B2 (en) 2009-07-07
JP2005174307A (ja) 2005-06-30
EP1548589A3 (en) 2007-06-06
EP1548589B1 (en) 2018-02-28
EP1548589A2 (en) 2005-06-29
US20050131668A1 (en) 2005-06-16
CN100449488C (zh) 2009-01-07
KR20050059409A (ko) 2005-06-20
ES2664817T3 (es) 2018-04-23
JP4610307B2 (ja) 2011-01-12
CN1627263A (zh) 2005-06-15
TW200519632A (en) 2005-06-16
MXPA04011275A (es) 2005-06-16
ZA200409138B (en) 2006-07-26

Similar Documents

Publication Publication Date Title
RU2406113C2 (ru) Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
US8539515B1 (en) System and method for using virtual machine for driver installation sandbox on remote system
KR101602519B1 (ko) 가상화된 저장소 할당 방법
US8112610B2 (en) Partition bus
US7725305B2 (en) Partial virtualization on computing device
US7496495B2 (en) Virtual operating system device communication relying on memory access violations
US7272831B2 (en) Method and apparatus for constructing host processor soft devices independent of the host processor operating system
US20090235358A1 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
US7761578B2 (en) Communicating in a virtual environment
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
US11256534B2 (en) System and method for trapping system calls for remote execution
KR20060046262A (ko) 64비트 x86 프로세서 상에서 레가시 32비트 x86 가상머신을 실행하기 위한 시스템 및 방법
US20180239624A1 (en) Preloading enhanced application startup
US8973019B1 (en) Method and system for emulation of super speed devices in virtual machines

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20191113