Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде

Иллюстрации

Показать все

Изобретение относится к области виртуальных машин. Техническим результатом является расширение функциональных возможностей, за счет распределенного подхода к обработке перехватов. Многоуровневый виртуализатор выполнен с возможностью устранять значительную часть связанных с перехватом функциональных возможностей из виртуализатора основного уровня (который существует вне каждого раздела), и, вместо этого, непосредственно включать в состав каждого раздела значительную часть этих функциональных возможностей. Определенные функции обработки перехватов выполнены как «внешний монитор», который выполняется внутри раздела и реагирует на отдельные события перехвата, а виртуализатор основного уровня устанавливает эти внешние мониторы в каждом разделе и впоследствии управляет внешними мониторами для событий перехвата и в единичном разделе, и между разделами. Этот распределенный подход к обработке перехватов допускает значительно менее сложный виртуализатор и перемещает функциональные возможности перехвата в каждый раздел, при этом каждый внешний монитор использует ресурсы соответствующей гостевой операционной системы в этом разделе, чтобы принять решение по событию перехвата. 5 н. и 15 з.п. ф-лы, 7 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение в целом имеет отношение к области виртуальных машин (также известных как «виртуализации процессора») и, более определенно, настоящее изобретение направлено на многоуровневый внешний монитор виртуальной машины (МВМ), где определенные функции обработки перехвата выполнены внешними мониторами, выполняющимися в отдельных разделах (каждый является экземпляром виртуальной машины или «ВМ») во взаимодействии с МВМ основного уровня, который управляет этими разделенными внешними мониторами.

УРОВЕНЬ ТЕХНИКИ

Компьютеры включают в себя центральные процессорные устройства (ЦПУ) общего назначения, которые спроектированы для выполнения определенного набора системных команд. Группу процессоров, имеющих аналогичные архитектуру или проектные спецификации, можно рассматривать как членов одного семейства процессоров. Примеры современных семейств процессоров включают в себя семейство процессоров Motorola 680X0, производимых Motorola, Inc. of Phoenix, Arizona; семейство процессоров Intel 80X86, производимых Intel Corporation of Sunnyvale, California; и семейство процессоров PowerPC, производимых Motorola, Inc. и используемых в компьютерах, производимых Apple Computer, Inc. of Cupertino, California. Несмотря на то что группа процессоров может относиться к одному и тому же семейству вследствие их аналогичной архитектуры и проектных положений, процессоры могут широко различаться в пределах семейства в соответствии с их тактовой частотой и другими эксплуатационными характеристиками.

Каждое семейство микропроцессоров исполняет команды, которые являются уникальными для семейства процессоров. Совокупный набор команд, которые процессор или семейство процессоров могут исполнить, известен как набор команд процессора. Как пример, набор команд, используемых семейством процессоров Intel 80X86, несовместим с набором команд, используемых семейством процессоров PowerPC. Набор команд Intel 80X86 основан на CISC-формате (Complex Instruction Set Computer - компьютер со сложным набором команд). Набор команд Motorola PowerPC основан на RISC-формате (Reduced Instruction Set Computer - компьютер с сокращенным набором команд). CISC-процессоры используют большое число команд, некоторые из них могут выполнять весьма сложные функции, но они, как правило, требуют для исполнения много тактовых циклов. RISC-процессоры используют меньшее число доступных команд для выполнения более простого набора функций, которые исполняются значительно быстрее.

К тому же уникальность семейства процессоров среди компьютерных систем обычно приводит к несовместимости между другими элементами архитектуры аппаратных средств компьютерных систем. Компьютерная система, изготовленная с процессором из семейства процессоров Intel 80X86, будет иметь архитектуру аппаратных средств, отличную от архитектуры аппаратных средств компьютерной системы, изготовленной с процессором из семейства процессоров PowerPC. Из-за уникальности набора команд процессора и архитектуры аппаратных средств компьютерной системы программы прикладного программного обеспечения обычно написаны для выполнения на конкретной компьютерной системе, выполняющей конкретную операционную систему.

Виртуализация процессора

Производители компьютеров хотят увеличить свою долю рынка, имея в наличии скорее больше, чем меньше приложений, выполняющихся на семействе микропроцессоров, ассоциированном с ассортиментом изделий производителей компьютеров. Чтобы расширить число операционных систем и программных приложений, которые могут выполняться на компьютерной системе, эта область техники получила развитие, при котором данный компьютер, имеющий один тип ЦПУ, именуемый ведущим, будет включать в себя программу эмулятора, которая позволяет ведущему компьютеру эмулировать команды неродственных типов ЦПУ, именуемых гостевыми. Таким образом, ведущий компьютер исполнит приложение, вследствие чего будет вызвана одна или несколько ведущих команд в ответ на данную гостевую команду. Таким образом, ведущий компьютер может выполнить как программное обеспечение, спроектированное для его собственной архитектуры аппаратных средств, так и программного обеспечения, написанного для компьютеров, имеющих неродственную архитектуру аппаратных средств. В качестве более конкретного примера, компьютерная система, произведенная Apple Computer, например, может выполнять операционные системы и программы, написанные для компьютерных систем на основе ПЭВМ. Также есть возможность использовать программу эмулятора для параллельной работы на единственном ЦПУ различных несовместимых операционных систем. В этой схеме, хотя каждая операционная система несовместима с другой, программа эмулятора может возложить функции ведущего узла на одну из двух операционных систем, позволяя другим несовместимым операционным системам выполняться параллельно на той же компьютерной системе.

Когда гостевая компьютерная система эмулирована на ведущей компьютерной системе, говорят, что гостевая компьютерная система является «виртуальной машиной», поскольку гостевая компьютерная система существует только в ведущей компьютерной системе как чисто программное представление работы одной конкретной архитектуры аппаратных средств. Термины эмулятор, виртуальная машина и эмуляция процессора иногда используются заменяя друг друга, чтобы обозначить способность имитировать или эмулировать архитектуру аппаратных средств целой компьютерной системы. В качестве примера, программное обеспечение Virtual PC, созданное Connectix Corporation of San Mateo, California, эмулирует целиком компьютер, который включает в себя процессор Intel 80X86 Pentium и различные компоненты системной платы и карты расширения. Работа этих компонентов эмулирована в виртуальной машине, которая выполняется на ведущей машине. Программа эмулятора, исполняющаяся на системном программном обеспечении и архитектуре аппаратных средств ведущего компьютера, такого как компьютерная система с процессором PowerPC, имитирует функционирование всей гостевой компьютерной системы.

Программа эмулятора действует как взаимообмен между архитектурой аппаратных средств ведущей машины и командами, переданными программным обеспечением, выполняющимся в пределах эмулированной среды. Эта эмулированная среда может быть создана монитором виртуальной машины (МВМ), который является уровнем программного обеспечения, выполняющимся непосредственно поверх аппаратных средств, и который виртуализирует все ресурсы машины, предоставляя интерфейсы, которые МВМ виртуализирует так же, как аппаратные средства (что дает возможность МВМ оставаться незамеченным на уровне операционной системы, выполняющейся выше). В этой конфигурации ведущая операционная система (ВОС) и МВМ могут выполняться параллельно на одних и тех же физических аппаратных средствах. Поочередно, программа эмулятора может быть самой ВОС, выполняющейся непосредственно на физических аппаратных средствах компьютера, и эмулировать другую конфигурацию аппаратных средств. В конкретной реализации этого варианта осуществления программное обеспечение ВОС может особо содержать один вариант осуществления «гипервизора».

Гипервизор является управляющей программой, которая существует вблизи уровня ядра ВОС и предоставляет возможность одной или более дополнительным операционным системам, отличных от ВОС, использовать аппаратные средства компьютерной системы, в том числе физический процессор(ы) компьютерной системы. Гипервизор эмулирует операционную среду для дополнительной операционной системы так, что дополнительная операционная система полагает, что она работает на своих привычных аппаратных средствах и/или среде операционной системы, и что она осуществляет логический контроль над компьютерной системой, даже при том, что фактическая работа может происходить на других аппаратных средствах и/или среде операционной системы, и что ВОС может осуществлять логический контроль над компьютерной системой. Это существенно, поскольку многие операционные системы функционируют исходя из условия, что операционная система должна работать, как если бы она осуществляла исключительный логический контроль над аппаратными средствами компьютерной системы. Таким образом, для совместного функционирования различных операционных систем на отдельной компьютерной системе, гипервизор каждой операционной системы должен функционировать, маскируя присутствие других операционных систем, так чтобы каждая операционная система функционировала, как если бы имела исключительный контроль над всей компьютерной системой в целом.

Для простоты, программы виртуализации процессора, включающие в себя, но не ограничивающиеся этим, МВМ и гипервизоры, все вместе именуются в настоящем описании как «виртуализаторы». Кроме того, также полагается, что любой аспект изобретений, раскрытых в настоящем описании в контексте гипервизора, является одинаково обоснованным и раскрытым для МВМ и других виртуализаторов, и наоборот.

Перехваты и Мониторы

Как известно и понятно специалистам в данной области техники, главной функцией виртуализатора (например, гипервизора или МВМ) является перехватывать события, происходящие, в то время как программное обеспечение выполняется на гостевой операционной системе в разделе (отдельная копия ВМ). В этом контексте событием является взаимодействие, которое происходит между некоторым компонентом раздела и некоторым ресурсом, физическим или виртуальным, который фактически не является частью раздела. Например, программа, исполняющаяся в первом разделе, может захотеть отправить данные на конкретное периферийное устройство, причем операционная система для этого раздела полагает, что обладает исключительным контролем над упомянутым устройством. Однако в этом случае, когда программа отправляет свои данные через гостевую операционную систему для своего раздела и гостевая операционная система пытается установить связь с периферийным устройством, виртуализатор перехватывает эту связь, чтобы управлять доступом этих разделов к упомянутому устройству наряду с другими попытками других разделов сделать то же самое, то есть при этом устройство фактически не выделено ни для какого отдельного раздела. Перехватывая события такого рода, виртуализатор по существу вводит в заблуждение гостевую ОС, заставляя думать, что она располагает всеми ресурсами машины (подобно ОС, выполняющейся на физических аппаратных средствах в обычных условиях), тогда как в действительности основные физические ресурсы фактически распределяются или разделяются среди нескольких разделов виртуальных машин. В этом смысле виртуализатор отвечает и за перехват таких событий и за реагирование на перехваты, когда они происходят. К сожалению, централизация этих функциональных возможностей в отдельном виртуализаторе, работающем вне каждого раздела, требует, чтобы виртуализатор был весьма сложным, тогда как по причинам, очевидным для специалистов, желателен более простой виртуализатор. Следовательно, для более простой модели виртуализатор-перехват в данной области техники необходимо еще обеспечить функциональные возможности перехвата. Настоящее изобретение обеспечивает такое решение.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

Различные варианты осуществления настоящего изобретения ориентированы на многоуровневый виртуализатор, который спроектирован так, чтобы устранять значительную часть связанных с перехватом функциональных возможностей из виртуализатора основного уровня (который существует вне каждого раздела), и, вместо этого, непосредственно включать в состав каждого раздела значительную часть этих функциональных возможностей. Для нескольких из вариантов осуществления определенные функции обработки перехватов выполнены как «внешний монитор», который выполняется внутри раздела и реагирует на отдельные события перехвата, а виртуализатор основного уровня устанавливает эти внешние мониторы в каждом разделе и впоследствии управляет внешними мониторами для событий перехвата и в единичном разделе, и между разделами. Этот распределенный подход к обработке перехватов допускает значительно менее сложный виртуализатор и перемещает функциональные возможности перехвата в каждый раздел, при этом каждый внешний монитор использует ресурсы соответствующей гостевой операционной системы в этом разделе, чтобы принять решение по событию перехвата.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Предшествующее раскрытие изобретения, так же как следующее детализированное описание предпочтительных вариантов осуществления, более понятны, когда изучаются совместно с прилагаемыми чертежами. Чтобы проиллюстрировать настоящее изобретение, на чертежах показаны типичные конструкции настоящего изобретения; однако настоящее изобретение неограничено конкретными раскрытыми способами и средствами. На чертежах:

Фиг. 1 является структурной схемой, представляющей компьютерную систему, в состав которой могут быть включены аспекты настоящего изобретения;

Фиг. 2 иллюстрирует логическое разделение на уровни аппаратных средств и архитектуры программного обеспечения для эмулированной операционной среды в компьютерной системе;

Фиг. 3A иллюстрирует виртуализированную компьютерную систему, в которой эмуляция выполнена ведущей операционной системой (или непосредственно, или посредством гипервизора);

Фиг. 3B иллюстрирует альтернативную виртуализированную компьютерную систему, в которой эмуляция выполнена монитором виртуальной машины, выполняющимся параллельно с ведущей операционной системой;

Фиг. 4 является структурной схемой, иллюстрирующей единую сущность традиционных виртуализаторов, которые и устанавливают перехваты через какие-нибудь средства поддержки процессора (например, исключения, значения по умолчанию, ловушки, и т.д.) и реагируют на все перехваченные события;

Фиг. 5 является структурной схемой, иллюстрирующей принцип многоуровневого перехвата для нескольких вариантов осуществления настоящего изобретения; и

Фиг. 6 является схемой технологического процесса, иллюстрирующей способ, которым многоуровневый способ обрабатывает события перехвата.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

Предмет настоящего изобретения описан с учетом соответствия установленным законом требованиям. Однако само настоящее описание не подразумевает ограничения объема настоящего патента. Скорее, автор настоящего изобретения предполагает, что заявленный предмет изобретения также может быть осуществлен другими способами, включать в себя различные этапы или комбинации этапов, подобных тем, которые описаны в настоящем документе, в сочетании с другими имеющимися или будущими технологиями. Кроме того, хотя термин "этап" может использоваться в настоящем описании для обозначения различных элементов применяемых способов, термин не должен интерпретироваться как обозначающий какой-нибудь особый порядок среди, или между различными этапами, раскрытыми в настоящем описании, за исключением тех случаев, когда порядок отдельных этапов явно описан.

Компьютерная Среда

Многочисленные варианты осуществления настоящего изобретения могут исполняться на компьютере. Фиг.1 и нижеследующее обсуждение предназначены для того, чтобы обеспечить краткое общее описание подходящей вычислительной среды, в которой может быть реализовано настоящее изобретение. Хотя это не обязательно, настоящее изобретение будет описано в общем контексте исполнимых компьютерных команд, таких как программные модули, исполняемые компьютером, например клиентской рабочей станцией или сервером. Как правило, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Кроме того, специалистам в данной области техники понятно, что настоящее изобретение может применяться с другими конфигурациями компьютерной системы, включающими в себя портативные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, сетевые ПК, миникомпьютеры, универсальные компьютеры и т.п. Настоящее изобретение также может применяться в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые соединены через сеть передачи данных. В распределенной вычислительной среде программные модули могут быть расположены и на локальных, и на удаленных запоминающих устройствах.

Как показано на Фиг.1, типичная вычислительная система общего назначения включает в себя стандартный персональный компьютер 20 или подобный, включающий в себя устройство 21 обработки, системную память 22, и системную шину 23, которая соединяет различные системные компоненты, в том числе системную память и устройство 21 обработки. Системная шина 23 может быть любого из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину, и локальную шину, использующую любую из множества шинных архитектур. Системная память включает в себя постоянное запоминающее устройство 24 (ПЗУ) и оперативное запоминающее устройство 25 (ОЗУ). Базовая система 26 ввода/вывода (БСВВ), содержащая основные процедуры, которые помогают передавать информацию между элементами внутри персонального компьютера 20, например, в процессе начальной загрузки, хранится в ПЗУ 24. Персональный компьютер 20 может дополнительно включать в себя привод 27 жесткого диска для чтения и записи на жесткий диск (не показан), привод 28 магнитных дисков для чтения или записи на сменный магнитный диск 29, и привод 30 оптических дисков для чтения или записи на сменный оптический диск 31, такой как компакт-диск или другой оптический носитель. Привод 27 жесткого диска, привод 28 магнитных дисков и привод 30 оптических дисков связаны с системной шиной 23 соответственно через интерфейс 32 привода жесткого диска, интерфейс 33 привода магнитных дисков и интерфейс 34 привода оптических дисков. Приводы и соотнесенные с ними компьютеро-читаемые носители обеспечивают энергонезависимое хранение компьютеро-читаемых команд, структур данных, программных модулей и других данных для персонального компьютера 20. Хотя типичная среда, описанная в настоящем изложении, использует жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, специалистам в данной области техники будет понятно, что другие типы компьютеро-читаемых носителей, которые могут хранить данные, доступные компьютеру, например магнитные кассеты, карты флэш-памяти, цифровые видеодиски, кассеты Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ), и т.п., также могут использоваться в типичной операционной среде.

Множество программных модулей могут храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25, в том числе операционная система 35, одна или более прикладных программ 36, другие программные модули 37 и программные данные 38. Пользователь может вводить команды и информацию в персональный компьютер 20 через устройства ввода, такие как клавиатура 40 и координатно-указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой манипулятор, спутниковую тарелку, сканер и т.п. Эти и другие устройства ввода часто связаны с устройством 21 обработки через интерфейс 46 последовательного порта, который присоединен к системной шине, но могут связываться через другие интерфейсы, такие как параллельный порт, игровой порт или универсальную последовательную шину (USB - universal serial bus). Монитор 47 или другой тип устройства отображения также связан с системной шиной 23 через интерфейс, например, видеоадаптер 48. В дополнение к монитору 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как динамики и принтеры. Типичная система на Фиг. 1 также включает в себя контроллер 55 сервера, шину 56 интерфейса малых вычислительных систем (SCSI - Small Computer System Interface), и внешнее устройство 62 хранения данных, связанное с шиной 56 SCSI.

Персональный компьютер 20 может работать в сетевом окружении, используя логические связи с одним или более удаленными компьютерами, такими как удаленный компьютер 49. Удаленный компьютер 49 может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, таким же устройством или другим публичным узлом сети, и обычно включает в себя многие или все элементы, описанные выше в применении к персональному компьютеру 20, несмотря на то что на Фиг. 1 отображено только запоминающее устройство 50. Логические связи, изображенные на Фиг. 1, включают в себя локальную вычислительную сеть 51 (ЛВС) и глобальную вычислительную сеть 52 (ГВС). Такие сетевые среды являются обычным явлением в офисах, корпоративных компьютерных сетях, интранет-сетях и Интернет.

При использовании в сетевой среде ЛВС персональный компьютер 20 связан с ЛВС 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде ГВС персональный компьютер 20 обычно включает в себя модем 54 или другие средства установления взаимодействия через глобальную вычислительную сеть 52, например, Интернет. Модем 54, который может быть внутренним или внешним, связан с системной шиной 23 через интерфейс 46 последовательного порта. В сетевой среде программные модули, описывающие взаимосвязь с персональным компьютером 20 или его частями, могут храниться на удаленном запоминающем устройстве. Примем во внимание, что сетевое соединение приведено для примера и могут использоваться другие средства установления канала связи между компьютерами. Кроме того, допуская, что многочисленные варианты осуществления настоящего изобретения особенно хорошо подходят для компьютеризированных систем, ничто в этом документе не подразумевает ограничения настоящего изобретения такими вариантами осуществления.

Виртуальные Машины

С концептуальной точки зрения, компьютерные системы, как правило, содержат один или более уровней программного обеспечения, выполняющегося на фундаментальном уровне аппаратных средств. Это разделение на уровни сделано из общих соображений. По определению интерфейса для данного уровня программного обеспечения этот уровень может быть реализован иначе, другими, более высокими уровнями. В хорошо спроектированной компьютерной системе каждый уровень знает только об (и зависит только от) уровне непосредственно под ним. Это позволяет уровню или "стеку" (множественные смежные уровни) быть замененным без отрицательного влияния на уровни вышеупомянутого уровня или стека. Например, программные приложения (верхние уровни) обычно зависят от более низких уровней операционной системы (нижние уровни) при записи файлов на какое-нибудь энергонезависимое запоминающее устройство, и этим приложениям не нужно понимать различие между записью данных на гибкий диск, на жесткий диск, или в сетевую папку. Если этот нижний уровень заменен новыми компонентами операционной системы для записи файлов, функционирование программных приложений верхнего уровня остается незатронутым.

Гибкость разделенного на уровни программного обеспечения позволяет виртуальной машине (ВМ) представлять виртуальный уровень аппаратных средств, который фактически является другим программным уровнем. Таким образом, ВМ может создавать для более высоких программных уровней иллюзию того, что упомянутые программные уровни выполняются на их собственной персональной компьютерной системе, и соответственно ВМ могут давать возможность различным «гостевым системам» выполняться одновременно на единственной «ведущей системе».

Фиг. 2 является схемой, представляющей логическое разделение на уровни аппаратных средств и архитектуры программного обеспечения для эмулированной операционной среды в компьютерной системе. На Фиг. 2 программа 94 эмуляции выполняется непосредственно или косвенно на физической архитектуре 92 аппаратных средств. Программа 94 эмуляции может быть (a) монитором виртуальной машины, который выполняется наряду с ведущей операционной системой, (b) специализированной ведущей операционной системой, имеющей собственные возможности эмуляции, или (c) ведущей операционной системой с компонентом гипервизора, в которой упомянутый компонент гипервизора выполняет упомянутую эмуляцию. Программа 94 эмуляции эмулирует гостевую архитектуру 96 аппаратных средств (показаны как прерывистая линия для иллюстрации того факта, что этот компонент является «виртуальной машиной», то есть аппаратными средствами, которые фактически не существуют, но вместо этого эмулированы упомянутой программой 94 эмуляции). Гостевая операционная система 98 исполняется на упомянутой гостевой архитектуре 96 аппаратных средств, и программное приложение 100 выполняется на гостевой операционной системе 98. Вследствие работы программы 94 эмуляции в эмулированной операционной среде на Фиг. 2 программное приложение 100 может выполняться в компьютерной системе 90, даже если программное приложение 100 спроектировано для выполнения в операционной системе, которая является в целом несовместимой с ведущей операционной системой и архитектурой 92 аппаратных средств.

Фиг.3A иллюстрирует виртуализированную вычислительную систему, содержащую программный уровень ведущей операционной системы 104, выполняющейся непосредственно над физическими аппаратными средствами 102 компьютера, где ведущая операционная система 104 (ведущая ОС) обеспечивает доступ к ресурсам физических аппаратных средств 102 компьютера, предоставляя интерфейсы, являющиеся такими же, как аппаратные средства, которые эмулирует (или «виртуализирует») ведущая ОС, которые, в свою очередь, дают возможность ведущей ОС оставаться незаметной для уровней операционной системы, выполняющихся выше. Для выполнения эмуляции ведущая операционная система 104 может быть специально спроектированной операционной системой с собственными возможностями эмуляции или, наоборот, это может быть стандартная операционная система с встроенным компонентом гипервизора для выполнения эмуляции.

Обратимся снова к Фиг. 3A, над ведущей ОС 104 находятся две реализации виртуальных машин (ВМ), ВМ A 108, которая может быть, например, виртуализированным процессором Intel 386, и ВМ B 110, которая может быть, например, виртуализированным вариантом одного из процессоров семейства Motorola 680X0. Над каждым ВМ, 108 и 110, находятся гостевые операционные системы (гостевые ОС), A 112 и B 114 соответственно. Над гостевой ОС A 112 выполняются два приложения, приложение A1 116 и приложение A2 118, и над гостевой ОС B 114 выполняется приложение B1 120.

В отношении Фиг. 3A важно отметить, что ВМ A 108 и ВМ B 110 (которые обозначены прерывистыми линиями) являются виртуализированными представлениями компьютерных аппаратных средств, которые существуют только как программные конструкции и которые делаются возможными благодаря наличию специализированного программного кода, который не только представляет ВМ A 108 и ВМ B 110 для Гостевой ОС A 112 и Гостевой ОС И 114, соответственно, но также выполняет все программные этапы, необходимые для Гостевой ОС A 112 и Гостевой ОС И 114, чтобы косвенно взаимодействовать с реальными физическими компьютерными аппаратными средствами 102.

Фиг. 3B иллюстрирует альтернативную виртуализированную вычислительную систему, в которой эмуляция производится монитором 104' виртуальной машины (МВМ), выполняющимся рядом с ведущей операционной системой 104”. Для определенных вариантов осуществления МВМ может быть приложением, выполняющимся над ведущей операционной системой 104 и взаимодействующим с компьютерными аппаратными средствами только через упомянутую ведущую операционную систему 104. В других вариантах осуществления, и как показано на Фиг. 3B, МВМ может вместо этого содержать частично независимую программную систему, которая на некоторых уровнях косвенно взаимодействует с компьютерными аппаратными средствами 102 с помощью ведущей операционной системы 104, но на других уровнях МВМ взаимодействует непосредственно с компьютерными аппаратными средствами 102 (подобно тому, как ведущая операционная система непосредственно взаимодействует с компьютерными аппаратными средствами). И помимо этого, в других вариантах осуществления МВМ может содержать полностью независимую программную систему, которая на всех уровнях взаимодействует непосредственно с компьютерными аппаратными средствами 102 (подобно тому, как ведущая операционная система непосредственно взаимодействует с компьютерными аппаратными средствами), не используя ведущую операционную систему 104 (хотя по-прежнему взаимодействуя с упомянутой ведущей операционной системой 104 насколько необходимо, чтобы координировать использование упомянутых компьютерных аппаратных средств 102 и избегать конфликтов и т.п.).

Предполагается, что все эти варианты реализации МВМ образовывают альтернативные варианты осуществления настоящего изобретения, как отображено в настоящем описании, и ничто в настоящем описании не должно толковаться как ограничение настоящего изобретения какой-либо отдельной конфигурацией МВМ. Кроме того, любая ссылка на взаимодействие между приложениями 116, 118, и 120 посредством ВМ A 108 и/или ВМ B 110 соответственно (возможно в сценарии эмуляции аппаратных средств) должна интерпретироваться, как существование фактического взаимодействия между приложениями 116, 118, 120 и МВМ. Аналогично, любая ссылка на взаимодействие между приложениями ВМ A 108 и/или ВМ B 110 с ведущей операционной системой 104 и/или компьютерными аппаратными средствами 102 (возможно для исполнения компьютерных команд, непосредственно или косвенно, на компьютерных аппаратных средствах 102) должна интерпретироваться, как существование фактического соответствующего взаимодействия между МВМ и ведущей операционной системой 104 или компьютерными аппаратными средствами 102.

Краткий обзор Перехватов Событий

Как обсуждалось ранее в настоящем описании, виртуализатор является программной прослойкой, которая выполняется на компьютерной системе и предоставляет возможность создания одной или более копий абстрактной виртуальной машины (ВМ) (каждая также именуется как раздел). Каждая из этих копий обычно ведет себя как реальный компьютер со своей собственной памятью, процессором(ами), и устройствами ввода/вывода, которые могут соответствовать действительным физическим ресурсам или виртуализированным ресурсам, которые физически не существуют. Для выполнения виртуализации большинство виртуализаторов должны перехватывать специфические события, которые происходят во время исполнения гостевого программного обеспечения в разделе. (Гостевое программное обеспечение является программным обеспечением, исполняющимся в пределах определенной виртуальной машины и обычно состоит из операционной системы и одного или более приложений.) Перехват специфических событий является ключевым в виртуализации, так как это позволяет виртуализатору давать гостю ложное впечатление, что он обладает всеми ресурсами на физической машине, тогда как в действительности эти ресурсы распределяются или разделяются (т.е. подразделяются и назначаются определенным виртуальным машинам). Например, рассмотрим компьютерную систему, имеющую четыре процессора и регистр, который сообщает общее количество процессоров, а также четыре виртуальные машины (раздела), выполняющиеся на системе, при этом каждой назначен единственный процессор. В этом примере, когда гостевое программное обеспечение для каждой из этих виртуальных машин считывает регистр "число процессоров", они в обычных условиях считывали бы значение "4" (которое является в действительности общим количеством физических процессоров и соответственно значением в физическом регистре). Однако, в этом случае, виртуализатор должен заставить каждую гостевую ОС поверить, что она выполняется на однопроцессорной системе. Чтобы достичь этого, виртуализатор для каждой виртуальной машины (раздела) выполняет виртуальные процессоры с возможностью генерации события "перехват", когда гость считывает регистр "число процессоров". Этот перехват предохраняет ВМ от прямого считывания регистра и заставляет передать управление от гостя виртуализатору. Тогда виртуализатор в состоянии подменить фактически присутствующее в регистре нормальное значение "4" значением, которое требуется сообщить, в данном случае "1".

Как хорошо известно, и легко понятно специалистам в данной области техники, вообще перехваты могут быть разделены на две категории: перехваты процессора, и перехваты памяти. Перехваты процессора являются событиями, которые связаны с определенными командами процессора, регистрами, исключениями или прерываниями. Перехваты памяти являются характерными для действий, которые заставляют процессор считывать или записывать в заданных ячейках памяти, в том числе с явно заданным типом доступа, например, команда "ПЕРЕМЕЩЕНИЕ", которая читает из памяти, или с неявно заданным типом доступа, например, ссылка, сгенерированная процессором, когда им совершается обход таблиц страниц в ответ на неудачу при поиске в буфере быстрого преобразования адреса.

Обычно виртуализатор (существующий вне каждого раздела) отвечает и за «устанавливание» перехвата и за «реагирование» на перехват, когда он происходит. Методики для устанавливания перехватов сильно зависят от данной архитектуры процессора. Большинство процессоров обеспечивают метод "ловушки" на определенные события. В некоторых случаях управление над перехватами может быть мелкомодульным или крупномодульным. В последнем случае виртуализатору, возможно, нужно установить единственный крупномодульный перехват и затем "отфильтровать" определенные события, которые требуется перехватить и игнорировать другие события перехвата. Если процессор обеспечивает мелкомодульное управление над определенными типами перехвата, виртуализатор может запросить только те перехваты, которые ему требуются. В идеале перехват должен произойти только, когда виртуализатору нужно отменить стандартный режим работы процессора, поскольку сообщение о перехвате в целом существенно прибавляет накладные расходы на обработку данных, которые уменьшают производительность системы. Обращаясь снова к предыдущему примеру четырехпроцессорной компьютерной системы с четырьмя ВМ, если пользователь конфигурирует единственную четырехпроцессорную виртуальную машину на четырехпроцессорной физической системе, нет никакой потребности перехватывать доступ к регистру «число процессоров», так что хорошо написанный виртуализатор должен избежать перехвата в этом случае и тем самым избежать излишних накладных расходов и нанесения ущерба производительности.

Другой методикой уменьшения потребности в перехватах является общее понятие «теневого регистра». Теневой регистр является копией реального регистра, который доступен при выполнении в пределах виртуальной машины. Снова обращаясь к нашему предыдущему примеру, если система реализует теневой регистр “число процессоров”, то процессы, работающие вне виртуализированной среды (в том числе сам виртуализатор), должны иметь доступ к регистру и считывать реальное значение, но для гостевого процесса, выполняющегося внутри виртуализированной среды, при доступе к этому регистру должно считываться теневое значение, тогда как виртуализатор запрограммировал теневой регистр на сообщение о соответствующем числе процессоров. Заблаговременно программируя эту информацию, виртуализатору не нужно запрашивать перехват доступа к этому регистру, но, вместо этого, всегда заставляет каждый раздел считывать теневое значение вместо реального значения. Однако наряду с тем, что этот подход избегает дорогостоящего события перехвата, требуется дополнительное усложнение процессора (обычно дополнительный регистр), что приводит к некоторому снижению гибкости (по сравнению с универсальным обработчиком перехватов, который может выполнять произвольные действия).

Более конкретно, традиционные виртуализаторы были монолитными по своему характеру, то есть они отвечали и за установление перехватов, и за реагирование на перехваченные события, когда те про