Шина разбиений
Иллюстрации
Показать всеИзобретение относится к способу и системе для интеграции разбиений в среде виртуальной машины. Техническим результатом является расширение функциональных возможностей, за счет совместного использования устройств и переноса данных между различными разбиениями в среде виртуальной машины. В виртуальной машине шина разбиений оперативно соединяет разбиения, что позволяет ей функционировать как механизм передачи данных, который обеспечивает передачу данных и совместное использование устройств между разбиениями. Шина разбиений основывается на программном обеспечении виртуализации для своего установления и для установления коммуникационных каналов между разбиениями и для ввода прерываний в разбиения. Кроме того, шина разбиений использует такие механизмы, как кольцевые буферы, страницы передачи и изменения карт памяти передачи информации (запросов и данных) и использует агенты принятия решений для принятия решений о том, когда информация должна передаваться или когда устройства должны совместно использоваться разбиениями. Способ описывает различные механизмы для обеспечения плавной интеграции между разбиениями. 3 н. и 16 з.п. ф-лы, 18 ил.
Реферат
Уведомление об авторском праве и разрешение
Часть раскрытия данного патентного документа может содержать материал, который подлежит защите авторским правом. Владелец авторского права не возражает против факсимильного воспроизведения любым лицом патентного документа или патентного раскрытия, как это представлено в файлах или записях Патентного ведомства США, но в остальном оставляет за собой все права, вытекающие из авторского права. Следующее уведомление должно быть применено к данному документу: Copyright © 2005, Microsoft Corp.
Область техники
Настоящее изобретение относится к области виртуальных машин (или «разбиений») и к операционным системам, которые исполняются в указанных разбиениях. Более конкретно, настоящее изобретение относится к системам и способам для перемещения данных и совместного использования устройств указанными разбиениями.
Предшествующий уровень техники
В типовой среде виртуальных машин множество виртуальных машин или «разбиений» исполняются поверх программного обеспечения виртуализации. Это программное обеспечение исполняется, в свою очередь, поверх аппаратного обеспечения. Программное обеспечение виртуализации представляет аппаратные средства таким способом, что позволяет множеству разбиений, каждое из которых имеет собственную операционную систему, исполняться на аппаратных средствах. Аппаратные средства, таким образом, виртуализуются для разбиений программным обеспечением виртуализации.
Индивидуальные разбиения могут исполнять различающиеся операционные системы, такие как Windows, Linux, Solaris и т.д. Эти операционные системы могут быть изолированы друг от друга так, что если одна операционная система в разбиении выйдет из строя, то она не повлияет на другие операционные системы в разбиениях.
Ценой, связанной с исполнением множества разбиений на комплекте аппаратных средств, является то, что программное обеспечение виртуализации потребляет значительное число процессорных циклов, когда оно виртуализирует устройства для каждого разбиения. Аналогичным образом, программное обеспечение виртуализации потребляет значительное число циклов, когда информация (запросы и/или данные) или устройства совместно используются такими разбиениями, причем причина состоит в том, что программное обеспечение виртуализации должно обрабатывать эту информацию и устройства, когда оно совместно используется разбиениями.
Более конкретно, в любой заданной среде виртуальной машины возникает класс проблем, потому что некоторые и, вероятно, все из устройств ввода/вывода, присутствующие в разбиениях, не предназначались для совместного использования множеством операционных систем, содержащихся в других разбиениях. Большинство моделей программирования устройств предполагает, что имеется одна и только одна операционная система, которой «принадлежит» устройство, что делает затруднительным или невозможным использование этого устройства одновременно различными операционным системами, находящимися в различных разбиениях. Могут возникнуть проблемы, если, например, контроллер диска получит команды одновременно от двух операционных систем. В этом случае каждая представляла бы себе, что она управляет структурами файловых систем, и каждая записывала бы данные по своему выбору, и вскоре диск был бы испорчен. Для предотвращения такого положения было бы предпочтительным предложить некоторый способ и систему для предоставления устройства во владение одной операционной системе, и затем совместно использовать сервисы устройства с другими исполняемыми операционными системами.
Дополнительно, возникает отдельный класс проблем, когда множество операционных систем пытаются совместно использовать одну и ту же машину, поскольку пользователи нуждаются в некотором уровне интеграции между этими операционными системами. Например, пользователю может оказаться желательным переместить между операционными системами данные, находящиеся в соответствующих им разбиениях. Таким образом, было бы также предпочтительным обеспечить способ и устройство перемещения данных или, в более широком смысле, информации между исполняемыми операционными системами.
Сущность изобретения
Предложены способы и системы, согласно различным аспектам настоящего изобретения, которые обеспечивают совместное использование устройств и перенос данных между различными разбиениями в среде виртуальной машины. В одном аспекте изобретения предложена шина разбиений, где шина разбиений представляет собой механизм переноса данных, который обеспечивает упомянутое совместное использование устройств между разбиениями и перенос данных.
В частности, шина разбиений использует кольцевые буферы для переноса информации (запросов и/или данных) из одного разбиения в другое разбиение. В других аспектах изобретения шина разбиений использует кольцевые буферы для посылки запросов из одного разбиения в другое разбиение и переносит страницы передачи для передачи данных из одного разбиения в другое разбиение. В других аспектах изобретения шина разбиений использует кольцевые буферы для страниц передачи для передачи запросов между разбиениями и манипулирования адресным пространством для переноса данных между разбиениями.
В дополнительных аспектах изобретения шина разбиений обеспечивает возможность существования локальных синтезированных устройств-посредников в одном разбиении, которые соответствуют сервисам в другом разбиении. Шина разбиений также позволяет этим синтезированным устройствам соответствовать либо реальным устройствам, таким как контроллеры памяти, либо абстрактным сервисам, таким как функциональные возможности «перетащить и оставить». В других аспектах шина разбиений обеспечивает механизм для передачи данных между разбиениями без расходов на переключение контекстов путем отображения кольцевых буферов в эти разбиения, которые могут быть записаны в них и считаны из них этими разбиениями. В других аспектах шина разбиений обеспечивает механизм версификации, где сервис, находящийся в разбиении, имеет глобально уникальную идентификацию, основанную на типе сервиса и экземпляре сервиса. В других аспектах шина разбиений использует агент стратегического решения для рассмотрения предложений каналов, осуществляемых одним разбиением другому разбиению. Этот агент стратегии может находиться в третьем разбиении. Еще в одних аспектах шина разбиений обеспечивает возможность одновременной работы эмулированных модулей устройств аппаратных средств и провайдеров сервисов виртуализации. Еще в одних аспектах шина разбиений составляется из комбинации трех компонентов в зависимости от того, находится ли клиентский компонент в пользовательском режиме или в режиме ядра. Компоненты включают в себя следующее: управление кольцевым буфером, распределение каналов и драйвер шины.
Другие признаки изобретения описаны ниже
Краткое описание чертежей
Вышеприведенное описание сущности изобретения, а также последующее детальное описание изобретения поясняются со ссылками на иллюстрирующие чертежи. Для иллюстрации изобретения представлены различные аспекты изобретения. Однако изобретение не ограничено конкретными раскрытыми системами и способами. На чертежах представлено следующее:
Фиг.1 - краткое обобщенное описание соответствующего вычислительного устройства, в связи с которым может быть реализовано настоящее изобретение;
Фиг.2 - блок-схема, представляющая логические уровни архитектуры аппаратных средств и программного обеспечения для виртуализованной операционной среды компьютерной системы;
Фиг.3А - блок-схема, представляющая виртуализованную вычислительную систему, в которой виртуализация выполняется главной операционной системой (либо непосредственно, либо через управляющую программу операционной системы (гипервизор));
Фиг.3В - блок-схема, представляющая альтернативную виртуализованную вычислительную систему, в которой виртуализация выполняется монитором виртуальной машины, исполняемым наряду с главной операционной системой;
Фиг.4 - обобщенное представление шины разбиений, обеспечивающей возможность переноса данных для совместного использования устройств разными разбиениями;
Фиг.5А - удаленные сервисы, представленные локальными синтезированными устройствами-посредниками;
Фиг.5В - типы синтезированных устройств, которые могут быть использованы в различных аспектах изобретения, включая контроллеры памяти и устройства с функцией «перетащить и оставить»;
Фиг.6 - различные типы механизмов переноса данных, используемые шиной разбиений, которые включают в себя модель кольцевого буфера, модель страниц передачи и модель манипуляции адресным пространством;
Фиг.7 - иллюстрация модели кольцевого буфера, которая может быть использована для передачи малых объемов данных между разбиениями;
Фиг.8 - модель страниц передачи, которая может быть использована для передачи промежуточных объемов данных между разбиениями;
Фиг.9 - модель манипулирования адресным пространством, которая может быть использована для передачи больших объемов данных между разбиениями;
Фиг.10 - механизм передачи данных между разбиениями без включения затрат, связанных с переключением контекста;
Фиг.11 - иллюстрация механизма модифицирования шины разбиений для интерфейсов и протоколов;
Фиг. 12 - иллюстрация стратегического решения, которое принимается одним разбиением на основе идентификации и доверительности другого разбиения;
Фиг.13 - представление одновременной работы эмулированных модулей устройств и провайдеров сервисов виртуализации;
Фиг. 14А - иллюстрация аспекта пользовательского режима для конкретной реализации шины разбиений;
Фиг.14В - иллюстрация аспекта режима ядра для конкретной реализации шины разбиений;
Фиг.14С - иллюстрация аспекта загрузки для конкретной реализации шины разбиений.
Детальное описание иллюстративных аспектов изобретения
Обзор
Представлены различные аспекты шины разбиений. Во-первых, представлен пример вычислительной среды вместе с общим обсуждением разбиений с операционными системами в средах виртуальных машин. После этого описания более детально описан перенос данных между разбиениями, обеспечиваемый шиной разбиений, и возможности совместного использования устройств. Представлено общее описание шины разбиений, за которым следует детальное рассмотрение возможностей совместного использования устройств с помощью разбиений посредством использования синтезированных устройств, с последующим детальным рассмотрением возможностей переноса информации посредством шины разбиений с использованием кольцевых буферов, вызовов переноса и манипулирования адресным пространством. Дополнительно рассмотрены другие аспекты шины разбиений, такие как использование стратегических агентов, которые контролируют предоставление каналов разбиений.
Примерная вычислительная среда
На фиг.1 и в последующем изложении приводится краткое обобщенное описание подходящей вычислительной среды, в связи с которой может быть реализовано настоящее изобретение. Например, любые из клиентских или серверных компьютеров или устройств, показанных на фиг.1, могут быть выполнены в этой форме. Следует иметь в виду, что портативные, переносные и другие вычислительные устройства и вычислительные объекты любого рода могут быть использованы в связи с настоящим изобретением, т.е. везде, откуда данные могут формироваться, обрабатываться, приниматься и/или передаваться в вычислительной среде. Хотя ниже в качестве примера описан универсальный хост-компьютер, однако это является только одним из примеров, и настоящее изобретение может быть реализовано с использованием «тонкого» клиента (малофункционального, маломощного сетевого клиента-терминала), имеющего свойства работы и взаимодействия с сетью/шиной. По существу, любая среда, где данные или содержимое могут быть сохранены или откуда данные могут быть извлечены и посланы на другой компьютер, является желательной или подходящей средой для функционирования методов сохранения объектов в соответствии с изобретением.
Хотя не требуется, однако изобретение может быть реализовано посредством операционной системы для использования разработчиком сервисов для устройства или объекта и/или включено в прикладное программное обеспечение, которое работает в соответствии с изобретением. Программное обеспечение может быть описано в общем контексте команд, исполняемых компьютером, таких как программные модули, исполняемые на одном или более компьютеров, таких как клиентские рабочие станции, серверы или другие устройства. В общем случае программные модули включают в себя стандартные программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. В типовом случае функциональность программных модулей может объединяться или распределяться, как это может быть желательным в различных вариантах осуществления. Более того, изобретение может быть реализовано с другими конфигурациями компьютерных систем и протоколами. Другими, хорошо известными вычислительными системами, средами и/или конфигурациями, которые могут подходить для использования с изобретением, являются, не ограничиваясь указанным, персональные компьютеры (ПК), автоматические кассовые аппараты, серверные компьютеры, миниатюрные или портативные устройства, мультипроцессорные системы, системы на основе микропроцессоров, программируемые приборы бытовой электроники, сетевые ПК, электронные приборы, осветительное оборудование, элементы управления внешней средой, миникомпьютеры, универсальные компьютеры и т.п.
Таким образом, фиг.1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано изобретение, хотя, как ясно из вышеизложенного, среда 100 вычислительной системы является лишь возможным примером подходящей вычислительной среды и не предполагает какого-либо ограничения объема использования или функциональности изобретения. Также вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных для примерной операционной среды 100.
Как показано на фиг.1, приведенная для примера система для реализации изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, не ограничиваясь указанным, блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с блоком 120 обработки. Системная шина 121 может быть любой из различных типов шинных структур, включая шину памяти или контроллер памяти, шину периферийных устройств, локальную шину, использующую любую из разнообразных шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину ISA (Архитектура, соответствующая промышленному стандарту), шину MCA (Микроканальная архитектура), усовершенствованную шину ISA (EISA), локальную шину VESA (Ассоциации по стандартам в области видеоэлектроники), шину соединения периферийных компонентов (PCI), также известную как шина расширения.
Компьютер 110 в типовом случае включает в себя множество считываемых компьютером сред (носителей). Считываемые компьютером носители могут представлять собой любые известные носители, к которым компьютер 110 может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители. К примеру, но не в качестве ограничения, считываемые компьютером носители могут содержать компьютерные носители записи и коммуникационную среду. Компьютерные носители записи включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители, реализованные любым методом или по любой технологии для хранения информации такой, как считываемые компьютером команды, структуры данных, программные модули или иные данные. Компьютерные носители записи содержат, не ограничиваясь указанным, оперативную память (RAM, ОЗУ), постоянную память (ROM, ПЗУ), электронно-стираемую программируемую постоянную память (EEPROM, ЭСППЗУ), память с групповой перезаписью (флэш-память) или другие технологии памяти, CD-ROM, универсальные цифровые диски (DVD) или иные устройства памяти на оптических дисках, магнитных кассетах, магнитных лентах, устройства памяти на магнитных дисках или иные магнитные устройства памяти, или любые иные носители, которые могут быть использованы для хранения желательной информации и к которым может быть обеспечен доступ компьютера 110. Коммуникационная среда в типовом случае воплощает считываемые компьютером команды, структуры данных, программные модули или иные данные в модулированном сигнале данных, таком как несущее колебание или иной транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, у которого одна или более характеристик установлены или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационная среда включает в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды передачи, такие как акустическая, радиочастотная, инфракрасная и другие беспроводные среды передачи. Комбинации любых вышеуказанных сред также должны быть включены в объем носителей (сред), считываемых компьютером.
Системная память 130 включает в себя компьютерный носитель записи в форме энергозависимой и/или энергонезависимой памяти, такой как постоянная память (ПЗУ, ROM) 131 и оперативная память (ОЗУ, RAM) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые подпрограммы, которые способствуют переносу информации между элементами в компьютере 110, например, при запуске, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые непосредственно доступны и/или обрабатываются блоком 120 обработки. В качестве примера, но не ограничения, на фиг. 1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/ несъемные, энергозависимые/энергонезависимые компьютерные носители записи. Например, на фиг.1 показан дисковод 141 жестких дисков для считывания с несъемного, энергонезависимого магнитного носителя и записи на него, дисковод 151 магнитных дисков для считывания со съемного энергонезависимого магнитного диска 152 и записи на него, и дисковод 155 оптических дисков для считывания со съемного энергонезависимого оптического диска 156 или записи на оптический диск, такой как, например, CD-RW, DVD-RW, или иные оптические носители записи. Другие съемные и несъемные, энергозависимые и энергонезависимые компьютерные носители записи, которые могут быть использованы в приведенной для примера операционной среде, включают в себя, не ограничиваясь указанным, кассеты на магнитных лентах, карты флэш-памяти, DVD, цифровые видеомагнитные ленты, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Дисковод 141 жестких дисков в типовом случае соединен с системной шиной 121 посредством интерфейса несъемной памяти, такого как интерфейс 140, и дисковод 151 магнитных дисков и дисковод 155 оптических дисков соединены с системной шиной 121 в типовом случае посредством интерфейса схемной памяти, такого как интерфейс 150.
Накопители и связанные с ними считываемые компьютером носители, описанные выше и показанные на фиг.1, обеспечивают хранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг. 1, например, показано, что накопитель 141 на жестком диске хранит операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть теми же самыми или отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены отличающимися ссылочными позициями для иллюстрации того, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 110 посредством устройств ввода, например клавиатуры 162, и координатно-указательного устройства 161, такого как мышь, трекбол или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую параболическую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком 120 обработки через интерфейс 160 пользовательского ввода, связанный с системной шиной 121, но могут быть соединены и посредством других интерфейсов и структур шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB) и т.д. Графический интерфейс 182 также может быть соединен с системной шиной 121. Один или более блоков обработки графики (GPU) 184 могут осуществлять информационный обмен с графическим интерфейсом 182. Монитор 191 или иное устройство отображения также соединено с системной шиной 121 через интерфейс, например, такой как видеоинтерфейс 190, который, в свою очередь, может осуществлять связь с видеопамятью 186. Помимо монитора 191 компьютеры также могут включать в себя другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть соединены через интерфейс 195 устройств вывода.
Компьютер 110 может работать в сетевой или распределенной среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой ПК, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой обычный сетевой узел и в типовом случае включает в себя многие или все из элементов, описанных выше применительно к компьютеру 110, хотя на фиг.1 показано только устройство 181 памяти. Логические соединения, показанные на фиг. 1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (сеть широкого охвата - WAN) 173, но могут включать в себя и другие сети/шины. Такие сетевые среды являются общеизвестными в офисах, компьютерных сетях предприятий, интранетах и в Интернете.
При использовании в сетевой среде локальной сети (LAN) компьютер 110 соединяется с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде глобальной сети (WAN) компьютер 110 в типовом случае включает в себя модем 172 или иное средство для установления связи в глобальной сети 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, соединен с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут быть сохранены в удаленном устройстве памяти. В качестве примера, но не ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185 как хранящиеся в устройстве 181 памяти. Следует иметь в виду, что показанные сетевые соединения приведены для примера и что могут быть использованы и другие средства установления канала связи между компьютерами.
Виртуальные машины
На фиг.2 представлена диаграмма, представляющая конфигурацию логических уровней аппаратных средств и архитектуры программного обеспечения для виртуализованной среды в компьютерной системе. Как показано на чертеже, программа 210 виртуализации исполняется непосредственно или опосредованно на архитектуре 212 физических аппаратных средств. Программа 210 виртуализации может быть монитором виртуальных машин, который исполняется наряду с главной операционной системой, или представлять собой главную операционную систему с компонентом управляющей программы операционной системы (гипервизора), причем этот компонент гипервизора выполняет виртуализацию. Программа 210 виртуализации виртуализирует вспомогательную архитектуру аппаратных 208 средств (показанную пунктиром, чтобы иллюстрировать тот факт, что этот компонент является разбиением «виртуальной машины»), то есть аппаратных средств, которые в действительности не существуют, а виртуализируются программой 210 виртуализации. Вспомогательная операционная система 206 исполняется на вспомогательной архитектуре 208 аппаратных средств, и прикладное программное обеспечение 204 исполняется на главной операционной системе 206. В виртуализированной операционной среде по фиг.2 прикладное программное обеспечение 204 может исполняться в компьютерной системе 202, даже если прикладное программное обеспечение 204 предназначено для исполнения на операционной системе, которая в принципе не совместима с главной операционной системой и архитектурой 212 аппаратных средств.
Фиг.3А иллюстрирует виртуализированную компьютерную систему, содержащую уровень 304 программного обеспечения главной операционной системы (главной ОС), исполняющуюся непосредственно над физическими компьютерными аппаратными средствами 302, причем главная ОС 304 обеспечивает доступ к ресурсам физических компьютерных аппаратных средств 302 за счет предоставления интерфейсов для разбиений А 308 и В 310 для использования операционными системами 312 и 314, соответственно. Это позволяет главной ОС 304 исполняться незаметно для уровней 312 и 314 операционных систем, исполняющихся над ней. И вновь, для выполнения виртуализации, главная ОС 304 может представлять собой специально разработанную операционную систему с собственными средствами виртуализации или, альтернативно, может представлять собой стандартную операционную систему с встроенным компонентом гипервизора для выполнения виртуализации (не показано).
Как показано на фиг.3А, над главной ОС 304 имеется два разбиения, а именно разбиение А 308, которое может представлять собой, например, виртуализированнный процессор Intel 386, и разбиение В 310, которое может представлять собой, например, виртуализированную версию одного из процессоров семейства Motorola 680X0. В каждом разбиении 308 и 310 имеются вспомогательные операционные системы (вспомогательные ОС) А 312 и В 314, соответственно. Над вспомогательной ОС А 312 исполняются два приложения, а именно приложение А1 316 и приложение А2 318, и над вспомогательной ОС В 314 исполняется приложение В1 320.
В отношении фиг.3А важно отметить, что разбиение А 308 и разбиение В 314 (которые показаны пунктирными линиями) являются виртуализированными представлениями компьютерных аппаратных средств, которые существуют только как программные структуры. Они стали возможными вследствие исполнения специализированного программного обеспечения виртуализации, которое не только представляет разбиение А 308 и разбиение В 310 вспомогательной ОС А 312 и вспомогательной ОС 314, соответственно, но которое также выполняет все шаги программного обеспечения, необходимые для вспомогательной ОС А 312 и вспомогательной ОС 314, чтобы косвенным образом взаимодействовать с реальными физическими компьютерными аппаратными средствами 302.
На фиг.3В показана альтернативная виртуализированная вычислительная система, в которой виртуализация выполняется монитором виртуальных машин (МВМ) 304', исполняющимся наряду с главной операционной системой 304”. В некоторых случаях МВМ 304' может представлять собой приложение, исполняющееся над главной операционной системой 304” и взаимодействующее с компьютерными аппаратными средствами 302 только через главную операционную систему 304”. В других случаях, как показано на фиг.3В, МВМ 304' может вместо этого содержать частично независимую систему программного обеспечения, которая на некоторых уровнях взаимодействует непосредственно с компьютерными аппаратными средствами 302 через главную операционную систему 304”, а на других уровнях МВМ 304' взаимодействует непосредственно с компьютерными аппаратными средствами 302 (подобно тому, как главная операционная система взаимодействует непосредственно с компьютерными аппаратными средствами). Еще в одном случае МВМ 304' может содержать полностью независимую систему программного обеспечения, которая на всех уровнях взаимодействует непосредственно с компьютерными аппаратными средствами 302 (подобно тому, как главная операционная система взаимодействует непосредственно с компьютерными аппаратными средствами) без использования главной операционной системы 304” (хотя все равно при взаимодействии с главной операционной системой 304”, чтобы координировать использование компьютерных аппаратных средств 302, чтобы избегать конфликтов и тому подобного).
Все эти варианты реализации вышеуказанных разбиений приведены для примера и иллюстрации и не должны интерпретироваться как ограничивающие изобретение каким-либо конкретным аспектом виртуализации.
Общее описание шины разбиений: совместное использование устройств и передача данных
В одном аспекте настоящего изобретения создана модель программного обеспечения шины аппаратных средств. Эта «шина» представляет собой «шину разбиений». Шина разбиений позволяет формализовать механизм передачи данных между разбиениями. Таким образом, с использованием шины разбиений становится намного легче построить сервисы, которые обеспечивают возможность совместного использования устройств и интеграции операционных систем.
Шина разбиений представляет собой механизм пересылки информации (запросов и/или данных) для использования между или внутри разбиений в системе с множеством исполняемых разбиений. Однако он не предполагается только механизмом пересылки информации, имеющимся в среде виртуальных машин. Как таковой, он не должен удовлетворять каждой отдельной возможной цели клиентского разбиения в соотношении клиентское разбиение/ сервисное разбиение. Например, не требуется, чтобы он загружался в среде режима NT-ядра достаточно рано, чтобы уровень абстракции аппаратных средств (HAL) мог использовать его для инициализации.
В одном аспекте шина разбиений основывается на межпроцессной коммуникации (IPC) управляющей программы операционной системы (гипервизора), чтобы осуществлять автономную установку, устанавливать коммуникационные каналы между разбиениями и вводить прерывания в разбиения.
Фиг.4 иллюстрирует общее представление шины разбиений, которое обеспечивает возможность совместного использования устройств и пересылку информации между разбиениями. Показаны три разбиения, сервисное разбиение 402 и два клиентских разбиения: клиентское разбиение А 404 и клиентское разбиение В 406. Эти разбиения поддерживаются гипервизором 410. Каждое из этих разбиений может иметь некоторую ОС, либо ту же самую, что и у других разбиений, либо другую. Таким образом, сервисное разбиение 402 может исполнять Windows XP, клиентское разбиение А 404 может исполнять Windows 2000, и клиентское разбиение В 406 - Windows 98.
Кроме того, каждое из этих разбиений содержит некоторые устройства. В частности, сервисное разбиение 402 содержит драйвер 418 устройства для физического устройства 424. Драйвер 418 устройства осуществляет информационный обмен с провайдером сервиса виртуализации (ПСВ) 417, который обеспечивает возможность синтезированным устройствам осуществлять информационный обмен с физическим устройством 424. Таким образом, синтезированное устройство 422 в клиентском разбиении В 406 может использовать сервисы физического устройства 424 через шину 408 разбиений.
Шина 408 разбиений обеспечивает средство для клиентского разбиения А 404 и клиентского разбиения В 406 для получения доступа к физическому устройству 424 для использования их синтезированными устройствами 420 и 422, соответственно. Иным образом, шина 408 разбиений обеспечивает средство для назначения владения устройством, таким как физическое устройство 424, одной ОС, такой как Windows XP 412, и затем средство для совместного использования сервисов устройства с другими исполняемыми ОС, такими как Windows 2000 414 и Windows 98 416.
Дополнительно, шина 408 разбиений также позволяет операционным системам перемещать данные между разбиениями, так что данные могут легко перемещаться, например, из сервисного разбиения 403 к второму клиентскому разбиению В 406, не требуя высоких вычислительных затрат, свойственных привлечению традиционных механизмов гипервизора 410 в транзакцию перемещения данных.
Шина разбиений: совместное использование устройств
В другом аспекте изобретения фиг.5 иллюстрирует удаленные сервисы, которые представлены локальными синтезированными устройствами-посредниками в разбиении. Если удаленный сервис 512, сохраненный, например, в некотором удаленном разбиении 508, с некоторой операционной системой 510 предоставляется через шину 514 разбиений, то синтезированное устройство 506 добавляется к операционной системе 504 клиентского разбиения. Имеется однозначное соответствие между экземплярами сервисов, подобных сервису 512, и синтезированными устройствами, подобными устройству 506. Каждое из синтезированных устройств может быть использовано для посылки или приема данных, как это соответствовало бы любому типовому устройству, по типовой шине протокола.
Фиг.5В иллюстрирует типы устройств и сервисов, которые могут соответствовать синтезированным устройствам, используемым на шине разбиения. В частности, как показано на фиг.5В, представлено синтезированное устройство 516. Это синтезированное устройство 516 может соответствовать множеству разнообразных устройств 518: хранения, сетевого взаимодействия, ввода (клавиатура и мышь), аудио, видео, смарткарт и т.д. Синтезированное устройство 516 может также соответствовать множеству различных устройств 518: временной синхронизации, функции «перетащить и оставить», совместного использования папок, вырезки и вставки, дистанционного исполнения, дистанционного запуска приложения, межпроцессорных коммуникаций. В действительности нет ограничений того, какие устройства и сервисы могут моделироваться синтезированным устройством 516.
Шина разбиений: передача данных
Шина 602 разбиений обеспечивает возможность передачи запросов (или команд) и данных, по меньшей мере, тремя различными путями, в зависимости от того, является ли объем данных, который должен пересылаться из одного разбиения в другое разбиение, малым, средним или большим. Таким образом, на фиг.6 показаны три модели посылки данных: модель 604 кольцевого буфера, модель 606 страниц передачи и модель 608 манипулирования адресным пространством.
В общем случае модель 604 кольцевого буфера использует кольцевые буферы 610 для посылки запросов и данных из одного разбиения в другое разбиение. Кольцевые буферы являются просто буферами фиксированного размера, так что, когда они заполнены, дополнительная информация помещается назад, в начало буфера, перезаписывая старые данные, в «кольце». В типовой виртуализированной системе кольцевой буфер одновременно предоставляется для доступа двум или более операционным системам.
Модель 606 страниц передачи использует кольцевые буферы 612 для посылки запросов и страниц 614 передачи, чтобы посылать данные (показаны две страницы передачи: страницы А и В). Страницы передачи являются страницами, распределенными в памяти для передачи информации путем копирования информации из одного разбиения в назначенную страницу и из назначенных страниц в другое разбиение. Модель страниц передачи отличается от кольцевого буфера тем, что она не имеет структуры, протокола или соответствующего упорядочения. Таким образом, модель страниц передачи является более подходящей в качестве цели операции DMA (прямого доступа к памяти) и для исключения необходимости в поддержке блокировок при манипулировании данными в страницах передачи.
Наконец, показана модель 608 манипулирования адресным пространством. Подобно другим двум моделям, кольцевой буфер 616 используется для хранения запросов из одного разбиения, которые должны считываться другим разбиением. Также показаны три карты памяти: карта 618 памяти сервисного разбиения, карт