ШИНА РАЗБИЕНИЙ
PARTITION BUS

Уведомление об авторском праве и разрешение
Часть раскрытия данного патентного документа может содержать материал, который подлежит защите авторским правом. Владелец авторского права не возражает против факсимильного воспроизведения любым лицом патентного документа или патентного раскрытия, как это представлено в файлах или записях Патентного ведомства США, но в остальном оставляет за собой все права, вытекающие из авторского права. Следующее уведомление должно быть применено к данному документу: 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 памяти сервисного разбиения, карта 622 памяти клиентского разбиения и карта 620 памяти невиртуализированной системы. Клиентское разбиение и сервисное разбиение могут изменять некоторые из их отображений 618 и 622 памяти, чтобы соответствовать отображению 620 памяти невиртуализированной системы, так что не требуется, чтобы данные копировались (в отличие от сценария модели страниц передачи), а вместо этого к ним может обеспечиваться доступ для обоих разбиений для считывания. Это означает, что клиентское разбиение и сервисное разбиение изменяют свои карты памяти, так что они совместно используют некоторые физические страницы памяти. Компромисс состоит в том, что карты 618 и 622 памяти клиентского и сервисного разбиений, соответственно, должны быть изменены первоначально, чтобы соответствовать некоторой карте 620 памяти невиртуализированной системы, и затем изменяться снова в обратном направлении к своим исходным отображениям, как только данная транзакция будет завершена. Таким образом, в отличие от модели страниц передачи, которая использует копирование для передач данных между разбиениями, модель манипулирования пространством использует изменения карт адресов.
Необходимо отметить, что упомянутые малые, промежуточные и большие объемы данных являются относительными понятиями и до некоторой степени определяются ресурсами компьютерной системы. В зависимости от доступности ресурсов системы может использоваться подходящая модель передачи. Следовательно, исходя из опыта, модель кольцевого буфера наиболее эффективна, когда должны передаваться малые объемы данных; модель страниц передачи наиболее эффективна, когда должны передаваться промежуточные объемы данных; и модель манипулирования адресным пространством наиболее эффективна, когда должны передаваться большие объемы данных.
Таким образом, в одном аспекте изобретения, модель кольцевого буфера использует области памяти, установленные отдельно, для пропускания как запросов, так и данных (в комбинации или отдельно, упоминаемых как «информация») между разбиениями. В этой модели пакеты информации, вводимые в кольцевой буфер, упорядочиваются таким образом, что один пакет следует за другим пакетом. Также ввод пакета в кольцевой буфер в типовом случае является относительно быстрой операцией, поскольку последовательные пакеты не могут вводиться до тех пор, пока не будут введены предыдущие пакеты. Таким образом, кольцевые буферы наилучшим образом подходят для данных, которые поступают быстро, так что не должно вводиться заметное время ожидания для последовательных пакетов.
На фиг.7 показана модель кольцевого буфера. Гипервизор (не показан) поддерживает два разбиения, клиентское разбиение 702 и сервисное разбиение 708. Сервисное разбиение 708 может исполнять некоторую сервисную ОС 710, которая посылает информацию в форме данных в клиентское разбиение 702 и его ОС 704. Данные последовательно упорядочиваются и размещаются в кольцевом буфере 706. Аналогичным образом, информация в форме запросов может передаваться от клиентского разбиения 702 посредством кольцевого буфера 706 в сервисное разбиение 708 для запроса о показателях некоторых сервисов. Кольцевой буфер 706 в памяти 705 невиртуализированной системы отображается как 706А и 706В на оба разбиения 702 и 708, соответственно, чтобы обеспечивать возможность перекачки (свопинга) запросов и данных между двумя разбиениями 702 и 708. Таким образом, фиг.7 иллюстрирует два пакета запросов и два пакета данных, посылаемых посредством кольцевого буфера 706 между сервисным разбиением 702 и клиентским разбиением 708.
В другом аспекте изобретения, используется модель передачи страниц. В этой модели пул страниц управляется библиотекой транспортировки. Интересно отметить, что как сервисное разбиение, так и клиентское разбиение могут распределять набор страниц передачи в любой момент времени и добавлять его к существующему набору, который уже используется. Разбиение, которое распределяет набор страниц передачи, присваивает себе управление этим набором, включая распределение и отмену распределения страниц в этом наборе.
Единственные затраты, связанные со страницами передачи, имеют место в то время, когда они распределяются и отображаются как на клиентское, так и на сервисное разбиения. Отображения физических адресов разбиений, таким образом, изменяются, но это однократная операция, которая не может амортизироваться по множеству передач. Кроме того, поскольку страницы передачи непрерывно отображаются на оба разбиения, секретные данные не могут в них сохраняться, но это также означает то, что их никогда не потребуется отделять.
Как отмечено выше, модель страниц передачи, показанная на фиг.8, отличается от модели кольцевого буфера, показанной на фиг.7, тем, что модель страниц передачи не нуждается в связанных с ними структуре, протоколе или упорядочении, что обеспечивает для клиента больше свободы для использования страниц передачи в качестве цели операций прямого доступа к памяти и для исключения необходимости в поддержке блокировок при манипулировании имеющимися в них данными.
На фиг.8 представлена примерная реализация модели страниц передачи. Показаны сервисное разбиение 802 и клиентское разбиение 804, причем эти два разбиения поддерживаются гипервизором 806. На фиг.8 процесс пользовательского режима в клиентском разбиении 804 запрашивает данные из файла, который обрабатывается сервисом 808 виртуального диска в сервисном разбиении 802. Запрос на получение данных из сервисного разбиения 802 моделируется как аппаратная транзакция прямого доступа к памяти.
Например, приложение 802 сначала создает запрос на семь страниц данных, что превышает то, что обычно может быть доступным в страницах 811 передачи. Таким образом, запрос должен быть разбит на два подзапроса. Первый запрос проходит к драйверу виртуального диска 814. В некоторых случаях это может быть фильтр, в других случаях это может быть полностью обученный драйвер диска (т.е. драйвер диска, который только осуществляет информационный обмен с синтезированными устройствами и не имеет никаких признаков функциональных средств виртуализации, сохраненных в нем; в широком смысле, термин «обученный» имеет отношение к среде ОС, которой известно, что она исполняется в виртуализированной среде).
Драйвер 814 виртуального диска создает стандартный запрос 818 прямого доступа к памяти с использованием функций, которые он получил от объекта своего физического устройства (PDO). Затем экземпляр 816 интерфейса драйвера виртуального диска распределяет все доступные в текущий момент страницы из пула страниц передачи. В этом примере это количество равно пяти страницам 811А-811Е, которые показаны в страницах 811 передачи с помощью вертикальных линий.
Затем в сервер посылается запрос в сервисном разбиении 802 для получения этих страниц из сервиса 808 виртуального диска. Если сервер заполнил запрошенные страницы, то есть скопировал запрошенные данные в страницы 811А-811Е, он посылает сообщение назад в клиентское разбиение 804. Данные затем копируются из страниц передачи в буферы, поддерживаемые приложением 812. Когда операция копирования заканчивается, страницы 811А-811Е передачи освобождаются.
Для второго запроса еще две страницы 810I и 810J распределяются из пула (другие обозначенные страницы 810F-810H являются страницами, зарезервированными другими запросами, которые не показаны). Таким образом, в сервисное разбиение 802 посылается новый запрос на две страницы данных. Как и ранее, сервер сервисного разбиения 802 заполняет данные в страницы 811I-811J передачи и передает сообщение, относящееся к его работе, назад к клиенту 804. Затем данные вновь копируются в буферы приложения 812, и запрос, который первоначально был разбит на две фазы, тем самым, завершается.
Страницы 811 передачи используются для передачи данных. Запросы передаются с использованием кольцевых буферов 810. Последовательный и пакетный характер передачи запросов в этом аспекте изобретения аналогичен рассмотренному со ссылкой на фиг. 7, где запросы и данные передаются с использованием только кольцевых буферов.
В других аспектах изобретения используется манипулирование адресным пространством во избежание высоких затрат на копирование памяти, которое выполняется в рамках моделей как кольцевого буфера, так и страниц передачи, описанных выше со ссылками на фиг.7 и 8, соответственно. Некоторые транзакции связаны с буферами, которые произвольно размещены в клиентском физическом адресном пространстве, и с очень большими объемами данных, которые требуется передать. В этой ситуации страницы передачи не используются, поскольку они сделали бы необходимым копирование данных из страниц передачи, которые находятся в фиксированных местоположениях, в буферы, которые расположены произвольным образом. Для обеспечения того, чтобы данные могли непосредственно помещаться в память, где они должны оказаться в конечном счете, физическая карта адресов сервисного разбиения должна быть изменена, чтобы она, по меньшей мере, временно содержала страницы из клиентского разбиения. Затем данные могут быть записаны непосредственно в эти страницы или считаны непосредственно из этих страниц либо с помощью программного обеспечения, либо аппаратными средствами. После того как транзакция завершена, карта адресов может быть изменена в обратном направлении путем исключения клиентских страниц из физической карты адресов сервера. Поскольку этот набор операций является сравнительно затратным, он не используется для передачи малых объемов данных, когда копирование данных в буферы передачи и из буферов передачи является более эффективным, чем изменение карт адресов.
На фиг.9 показаны клиентское разбиение 902 и сервисное разбиение 908, где оба разбиения поддерживаются с помощью гипервизора (не показан). Каждое разбиение 902 и 908 имеет свою собственную ОС 904 и 910, соответственно. Эти ОС поддерживают карты 914 и 916 адресов памяти, соответственно, которые отображают виртуальные адреса на физические адреса разбиения. Если между этими разбиениями должны передаваться большие объемы информации (главным образом, данных), то наиболее эффективный механизм обеспечивает изменение релевантных отображений 914 памяти клиентского разбиения и ассоциирование их с некоторыми отображениями 907 памяти невиртуализированной системы. Например, на фиг.9 отображение «А» в клиентском разбиении 902 ассоциировано с отображением «3» в памяти 905 невиртуализированной системы. Аналогичным образом, отображения 916 сервисной памяти ассоциированы с отображениями 907 невиртуализированной системы, так что как клиентское разбиение 902, так и сервисное разбиение 908 могут получать доступ к памяти 905 невиртуализированной системы, не требуя копирования данных из одного местоположения в памяти в другое местоположение. Таким образом, отображение “b” в сервисном разбиении 908 ассоциировано с отображением «3» в памяти 905 невиртуализированной системы. Компромисс по отношению к исключению копирования заключается в том, что отображения памяти должны изменяться в начале транзакции и возвращаться в прежнее состояние после того, как транзакция завершена. Эти компромиссы приемлемы в случаях, когда требуется передавать большие объемы данных.
В другом аспекте изобретения, фиг.10 иллюстрирует механизм передачи информации между разбиениями, не вызывая затрат, связанных с переключением контекстов. При наличии ОС, исполняемых в соответствующих их разбиениях, центральный процессор осуществляет переключения между этими контекстами, обеспечивая каждому временной сегмент. В такой системе с разделением по времени, ввиду переключения контекстов, имеются затраты, связанные с переключением с одной задачи (или разбиения) на другую задачу (или разбиение).
Кроме того, передача прерываний между разбиениями также сопровождается довольно затратным переключением контекстов. Например, такие прерывания может потребоваться переслать, если клиентское разбиение желает активизировать сервисное разбиение, чтобы получать сервисы из сервисного разбиения. Аналогичным образом, сервисному разбиению может потребоваться уведомить клиентское разбиение посредством прерывания, что оно завершило задачу, определенную клиентским разбиением.
Чтобы избежать такого дорогостоящего переключения контекстов, согласно фиг.10, в данном аспекте изобретения, кольцевые буферы используются как очереди команд для одного разбиения, чтобы поместить его команды в кольцевой буфер другого разбиения, тем самым избегая передачи прерываний, за исключением условий скорости (описано ниже).
Таким образом, показаны клиентское разбиение 1002 и сервисное разбиение 1010. Каждое разбиение исполняет некоторую операционную систему, Windows 98 или Windows XP, и эти разбиения поддерживаются некоторым гипервизором 1016. Если клиентскому разбиению 1002 нужен некоторый сервис из сервисного разбиения 1010, например сервис контроллера диска, который находится в ведении сервисного разбиения 1010 и который может соответствовать некоторому синтезированному устройству на сервисном разбиении 1010, то возможный путь получения этого сервиса для клиентского разбиения 1002 состоит в записи информации (в типовом случае команд/запросов) в кольцевой буфер 1006. Сервисное разбиение может затем считать эти команды и выполнять их соответственно конкретным запросам. Тот факт, что кольцевой буфер 1006 отображается (1006А и 1006В) на оба разбиения 1002 и 1010, позволяет этим разбиениям осуществлять информационный обмен без затрат на переключение контекстов.
Сервисное разбиение 1010 может также записать информацию (в типовом случае, ответы на запросы и/или данные) в кольцевой буфер 1006 и уведомить клиентское разбиение 1002, что его запрос завершен. В этом сценарии кольцевой буфер 1006 используется для представления шины 1008 разбиений, но могут применяться и другие модели, описанные выше.
Разбиению, использующему эту реализацию кольцевого буфера, не требуется получать прерывание, чтобы считать команду из кольцевого буфера, так что затраты на передачу прерывания (и связанное с этим переключение контекстов) могут быть исключены. Однако, если, например, сервисное разбиение не исполняет команды, посланные к нему из клиентского разбиения, то прерывание является адекватным способом для того, чтобы вызвать начало исполнения этих команд.
Таким образом, модель кольцевого буфера в этом случае избегает затрат на переключение контекстов, но может использовать прерывания при двух условиях: (1) когда выходной кольцевой буфер был пустым и позже стал не пустым; или (2) когда входящий кольцевой буфер был заполненным и позже стал незаполненным, при этом может потребоваться послать прерывания из одного разбиения в другое (с позиции клиентского разбиения 1002 кольцевой буфер 1006 является выходным кольцевым буфером, но кольцевой буфер 1006 является и входным кольцевым буфером, что справедливо с позиции сервисного разбиения 1010).
Например, в первом случае, если кольцевой буфер 1006 был пустым, а затем стал непустым, то клиентскому разбиению 1002 может потребоваться уведомить сервисное разбиение 1010, что его кольцевой буфер 1006 заполнен информацией (вероятно, командами/запросами). Во втором случае, если кольцевой буфер 1006 был заполненным и позже стал незаполненным, то клиентскому разбиению 1002 может потребоваться уведомить сервисное разбиение 1010 посредством прерывания, что его кольцевой буфер 1006 больше не заполнен.
Данный аспект изобретения реализуется эффективным образом, в частности в машине с более чем одним процессором. Можно обеспечить одновременное исполнение как клиентского разбиения 1002, так и сервисного разбиения 1010, причем каждое передает информацию другому без переключения контекстов.
В варианте этого аспекта изобретения будет вводиться задержка перед передачей прерывания в случае, если разбиение, которое должно получать прерывание, должно запускаться вновь спустя очень короткое время, тем самым делая ненужным прерывание. Задержка, разумеется, увеличит время ожидания, но затраты на время ожидания будут меньше, чем затраты на прерывание.
В другом аспекте изобретения, шина разбиений обеспечивает возможность различным версиям и экземплярам сервиса сосуществовать рядом друг с другом. Согласно фиг.11, предусмотрен сервис 1102. Идентификатор (ИД) каждого сервиса состоит из двух 128-битовых глобально уникальных идентификаторов (ГУИД). Первый из этих ИД уникально идентифицирует экземпляр сервиса. Например, экземпляр А сервиса 1104 может быть виртуальным диском, причем этот виртуальный диск получает уникальный ИД 1108, присвоенный ему (например, c80ccb8a…), а любые другие экземпляры виртуального диска (не показаны) будут получать другие уникальные ИД.
Наряду с ИД экземпляра сервиса будет иметь место ИД версии сервиса, также представленный посредством ГУИД. Этот ГУИД идентифицирует протокол, который реализуется сервером. (Этот протокол может быть полной совокупностью всех команд и операций, управляемых сервером.) Таким образом, согласно фиг.11, ИД 1106 версии сервиса для сервиса 1102 имеет вид: b73606dc… . Эти два ГУИД используются для создания ИД вставных модулей шинного уровня для синтезированных устройств на шине разбиений. Экземпляр ОС, исполняемой в клиентском разбиении, может принять решение на основе этих ИД вставных модулей, какой драйвер загрузить, обеспечивая возможность для ОС поддерживать множество версий сервиса, возможно даже в отдельных файлах драйверов. Кроме того, различные версии устройств, подобно сервисам, могут быть снабжены ГУИД для различения экземпляра устройства и версии устройства.
Кроме того, вполне возможным для серверного разбиения является создание одновременно множества экземпляров сервисов для одного ресурса, такого как диск, причем каждый сервис реализует различные версии протоколов. Клиентскому разбиению могут быть предоставлены два экземпляра того же самого виртуального диска, и оно может выбирать для загрузки только драйвер, связанный с версией протокола, которую оно поддерживает.
В некоторых аспектах изобретения предоставляется возможность принятия стратегических решений на основе идентификации и доверительности разбиений. Каналы шины разбиений могут не предоставляться в некоторых разбиениях. Для такой стратегии могут иметься различные причины: (1) нежелательно разрешать разбиению имитировать сервер загружаемого диска для секретных разбиений; (2) нежелательно разрешать каналы ввода/вывода, которые не являются доверительными; (3) нежелательно разрешать разбиениям вообще использовать какие-либо ресурсы в другом разбиении, что может случиться, когда делается предложение канала.
Для поддержки таких стратегических решений в данном аспекте изобретения предусмотрен агент, ответственный за стратегию каналов шины разбиений. Этот агент стратегии каналов принимает решения относительно предложений каналов. На фиг.12 показан агент стратегии каналов, реализованный в экземпляре разбиения, исполняющего версию Windows. Предположительно, такой агент должен иметь доступ к таким объектам, как проявление разбиения, что должно обуславливать то, что некоторые конкретные каналы ввода/вывода должны быть обеспечены для этого разбиения, но не другие.
Диаграмма состояний для этого аспекта изобретения показана на фиг.12. На фиг.12 показаны три разбиения, поддерживаемые гипервизором 926: (1) сервисное разбиение 1202, (2) разбиение 1204 фильтра защиты и (3) секретное вспомогательное разбиение 1206. В сервисном разбиении 1202, во-первых, первый канальный сервер 1208 посылает запрос в библиотеку 1210 распределения каналов с предложением канала. Во-вторых, это предложение сохраняется в кэше 1212 предложений. Кэш 1212 предложений, в свою очередь, направляет предложение в другой кэш 1218 разбиения 1204 фильтра защиты (или в любое место, где может находиться агент стратегии каналов, предусмотренный для секретного разбиения).
В-третьих, библиотека 1216 распределения каналов в разбиении 1204 фильтра защиты посылает предложение к агенту 1214 стратегии каналов для рассмотрения. В-четвертых, агент 1214 стратегии каналов посылает ответ библиотеке 1216 распределения каналов, сообщая библиотеке 1216, следует ли завершить предложение или переслать его. В-пятых, если предложение следует переслать, то оно посылается в кэш 1224 предложений в доверительном вспомогательном разбиении 1206.
В-шестых, когда предложение поступает в кэш 1224 предложений, оно запускает некоторый указанный канал и программное обеспечение в доверительном вспомогательном разбиении 1206 принимает решение открыть канал. В-седьмых, канальный клиент 1220 посылает затем сообщение непосредственно назад канальному серверу 1208, открывающему канал. Таким образом, предложения каналов могут рассматриваться агентами стратегии каналов, находящимися в разбиениях фильтров защиты.
Шина разбиений: дополнительные аспекты
В другом аспекте изобретения эмулированные модули устройств (ЭМУ) работают одновременно и согласованно с обученными (уведомленными о существовании виртуальных машин) механизмами передачи данных, подобными шине разбиений. ЭМУ создаются для ответа на запросы ввода/вывода тем же способом, что и в случае физических аппаратных средств. Если заданная вспомогательная операционная система была создана для поддержки конкретного физического аппаратного устройства (т.е. она содержит соответствующий драйвер), данная операционная система будет работать корректным образом без модифицирования, в предположении корректного создания ЭМУ. Поэтому ЭМУ обеспечивают превосходную совместимость с традиционными операционными системами, но они в типовом случае вводят высокие непроизводительные расходы на виртуализацию. Провайдеры сервиса виртуализации (ПСВ) в противоположность этому обеспечивают намного лучшие показатели, но требуют новых драйверов (и, возможно, других модификаций), которые должны быть написаны для клиентской ОС.
В одном случае системы виртуальной машины как ПСВ, так и ЭМУ реализуются, по меньшей мере, для части времени, в том же самом сервисном разбиении, причем ПСВ представляют собой сервисы, находящиеся поверх шины разбиений, обеспечивая внутреннюю поддержку для синтезированных устройств в клиентском разбиении, в противоположность эмулированным или виртуальным устройствам, которые доступны в клиентском разбиении. Именно с ПСВ осуществляют информационный обмен синтезированные устройства.
На фиг.13 показано клиентское разбиение 1304 и сервисное разбиение 1302, содержащие соответствующие ОС 1006 и 1308, исполняемые на разбиениях. Шина 1312 разбиений обеспечивает коммуникационное средство между двумя разбиениями 1302 и 1304. Также оба эти разбиения 1302 и 1304 поддерживаются гипервизором 1320. ЭМУ 1316 осуществляет информационный обмен с гипервизором 1320, чтобы обеспечить проявление эмулирования 1315 устройства как реального устройства для клиентского разбиения 1302. ЭМУ 1316 также зависит от ПСВ 1314, чтобы осуществлять информационный обмен с реальным физическим устройством 1322 (через драйвер 1318 устройства), которое совместно используется клиентским разбиением 1302. ПСВ 1314 также предоставляет это устройство 1322 клиентскому разбиению 1302 через синтезированное устройство.
Еще в одном аспекте изобретения, шина разбиения построена из трех библиотек или, в более общем смысле, из трех компонентов. Таким образом, на фиг.14А-14С компоненты шины разбиения показаны, как они используются в различных режимах. Этими тремя компонентами являются:
управление кольцевыми буферами,
управление каналами и
драйвер шины.
Различные среды используют разные компоненты шины разбиений. Например, как показано на фиг.14А, сервис 1431 пользовательского режима получает только компонент управления 1432 кольцевыми буферами, поскольку он основывается на коде режима ядра для осуществления управления каналами. Это акцентировано на фиг.14А иллюстрацией компонента управления 1432 кольцевыми буферами в блоке, изображенном сплошной линией, а двух других компонентов, а именно, управления 1434 каналами и драйвера 1436 шины, - в пунктирных блоках и с использованием серого шрифта, что указывает на отсутствие этих двух компонентов в пользовательском режиме 1431.
На фиг.14В сервисы режима 1433 ядра получают все три компонента, т.е. управления 1432 кольцевыми буферами, управления 1434 каналами и драйвера 1436 шины.
И, наконец, на фиг.14С среды загрузчика 1435 получают компоненты управления 1432 кольцевыми буферами и управления 1434 каналами, но не драйвера 1436 шины (показано в пунктирном блоке). Таким образом, шина разбиений компилируется из этих трех компонентов (и различных других менее значимых компонентов), и эти компоненты проявляются в различных комбинациях, в зависимости от среды, в которой используется шина разбиений.
Шина разбиений использует управление 1432 кольцевыми буферами для того, чтобы использовать кольцевые буферы для передачи данных между разбиениями. Управление 1434 каналами используется для установления коммуникационных каналов между разбиениями. Наконец, драйвер 1436 шины управляет операциями ввода и вывода между разбиениями, как только коммуникационные каналы установлены. Таким образом, синтезированные устройства в некоторых разбиениях могут присваивать себе реальные устройства в других разбиениях (на уровне аппаратных средств), и такие реальные устройства могут использоваться другими синтезированными устройствами в других разбиениях, поскольку операции ввода и вывода управляются драйвером 1436 шины.
Выше было отмечено, что не все использования для шин разбиений непосредственно связаны с физическими устройствами. Таким образом, в других аспектах изобретения, многие из использований, которые не соответствуют физическим устройствам, удобным образом реализованы в компонентах пользовательского режима (например, в DLL) вместо реализации их как драйверов режима ядра. Шина разбиений обеспечивает достаточную инфраструктуру для создания этих компонентов полностью в пользовательском режиме, обеспечивая возможность выполнения управления адресным пространством, доставки прерываний и других сервисов, которые в общем случае доступны только из режима ядра.
Хотя настоящее изобретение описано во взаимосвязи с предпочтительными аспектами, как показано на чертежах, понятно, что могут быть использованы другие подобные аспекты и могут быть осуществлены модификации и дополнения в отношении описанных аспектов для выполнения той же самой функции, что и в настоящем изобретении, без отклонения от его сущности. Например, в некоторых аспектах изобретения была описана шина разбиений, обеспечивающая механизмы для передачи данных между разбиениями и для предоставления во владение устройств выбранным разбиениям, при совместном использовании сервисов устройств с другими разбиениями. Однако другие эквивалентные устройства для данного аспекта изобретения также совместимы с описанными выше решениями. Поэтому настоящее изобретение не ограничено каким-либо отдельным аспектом, а должно интерпретироваться по сущности и объему в соответствии с формулой изобретения.