RU2406113C2 - Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств - Google Patents
Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 30
- 230000002902 bimodal effect Effects 0.000 claims 3
- 230000000903 blocking effect Effects 0.000 claims 2
- 238000013459 approach Methods 0.000 abstract description 20
- 230000000694 effects Effects 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000003993 interaction Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000013461 design Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 7
- 241000699666 Mus <mouse, genus> Species 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/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, дополнительно содержащий инструкции для разрешения второго режима посредством использования драйвера второго режима, установленного в среде гостевой операционной системы; и, если драйвер второго режима отсутствует, разрешения первого режима посредством драйвера первого режима.
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)
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)
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 |
-
2003
- 2003-12-12 US US10/734,450 patent/US7558723B2/en not_active Expired - Fee Related
-
2004
- 2004-10-15 AU AU2004220769A patent/AU2004220769A1/en not_active Abandoned
- 2004-10-18 TW TW093131595A patent/TW200519632A/zh unknown
- 2004-10-19 CA CA002485239A patent/CA2485239A1/en not_active Abandoned
- 2004-10-20 BR BR0404496-7A patent/BRPI0404496A/pt not_active IP Right Cessation
- 2004-11-01 KR KR1020040087954A patent/KR20050059409A/ko not_active Application Discontinuation
- 2004-11-04 ES ES04026219.8T patent/ES2664817T3/es active Active
- 2004-11-04 EP EP04026219.8A patent/EP1548589B1/en not_active Not-in-force
- 2004-11-11 ZA ZA200409138A patent/ZA200409138B/xx unknown
- 2004-11-12 JP JP2004329651A patent/JP4610307B2/ja not_active Expired - Fee Related
- 2004-11-12 MX MXPA04011275A patent/MXPA04011275A/es not_active Application Discontinuation
- 2004-11-12 RU RU2004133169/08A patent/RU2406113C2/ru not_active IP Right Cessation
- 2004-12-10 CN CNB2004101039185A patent/CN100449488C/zh not_active Expired - Fee Related
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 |