СИСТЕМЫ И СПОСОБЫ МНОГОУРОВНЕВОЙ ОБРАБОТКИ ПЕРЕХВАТОВ В ВИРТУАЛЬНОЙ МАШИННОЙ СРЕДЕ
SYSTEMS AND METHODS FOR MULTILEVEL PROCESSING OF INTERCEPTIONS IN VIRTUAL MACHINE ENVIRONMENT

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение в целом имеет отношение к области виртуальных машин (также известных как «виртуализации процессора») и, более определенно, настоящее изобретение направлено на многоуровневый внешний монитор виртуальной машины (МВМ), где определенные функции обработки перехвата выполнены внешними мониторами, выполняющимися в отдельных разделах (каждый является экземпляром виртуальной машины или «ВМ») во взаимодействии с МВМ основного уровня, который управляет этими разделенными внешними мониторами.
УРОВЕНЬ ТЕХНИКИ
Компьютеры включают в себя центральные процессорные устройства (ЦПУ) общего назначения, которые спроектированы для выполнения определенного набора системных команд. Группу процессоров, имеющих аналогичные архитектуру или проектные спецификации, можно рассматривать как членов одного семейства процессоров. Примеры современных семейств процессоров включают в себя семейство процессоров 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".
Как хорошо известно, и легко понятно специалистам в данной области техники, вообще перехваты могут быть разделены на две категории: перехваты процессора, и перехваты памяти. Перехваты процессора являются событиями, которые связаны с определенными командами процессора, регистрами, исключениями или прерываниями. Перехваты памяти являются характерными для действий, которые заставляют процессор считывать или записывать в заданных ячейках памяти, в том числе с явно заданным типом доступа, например, команда "ПЕРЕМЕЩЕНИЕ", которая читает из памяти, или с неявно заданным типом доступа, например, ссылка, сгенерированная процессором, когда им совершается обход таблиц страниц в ответ на неудачу при поиске в буфере быстрого преобразования адреса.
Обычно виртуализатор (существующий вне каждого раздела) отвечает и за «устанавливание» перехвата и за «реагирование» на перехват, когда он происходит. Методики для устанавливания перехватов сильно зависят от данной архитектуры процессора. Большинство процессоров обеспечивают метод "ловушки" на определенные события. В некоторых случаях управление над перехватами может быть мелкомодульным или крупномодульным. В последнем случае виртуализатору, возможно, нужно установить единственный крупномодульный перехват и затем "отфильтровать" определенные события, которые требуется перехватить и игнорировать другие события перехвата. Если процессор обеспечивает мелкомодульное управление над определенными типами перехвата, виртуализатор может запросить только те перехваты, которые ему требуются. В идеале перехват должен произойти только, когда виртуализатору нужно отменить стандартный режим работы процессора, поскольку сообщение о перехвате в целом существенно прибавляет накладные расходы на обработку данных, которые уменьшают производительность системы. Обращаясь снова к предыдущему примеру четырехпроцессорной компьютерной системы с четырьмя ВМ, если пользователь конфигурирует единственную четырехпроцессорную виртуальную машину на четырехпроцессорной физической системе, нет никакой потребности перехватывать доступ к регистру «число процессоров», так что хорошо написанный виртуализатор должен избежать перехвата в этом случае и тем самым избежать излишних накладных расходов и нанесения ущерба производительности.
Другой методикой уменьшения потребности в перехватах является общее понятие «теневого регистра». Теневой регистр является копией реального регистра, который доступен при выполнении в пределах виртуальной машины. Снова обращаясь к нашему предыдущему примеру, если система реализует теневой регистр “число процессоров”, то процессы, работающие вне виртуализированной среды (в том числе сам виртуализатор), должны иметь доступ к регистру и считывать реальное значение, но для гостевого процесса, выполняющегося внутри виртуализированной среды, при доступе к этому регистру должно считываться теневое значение, тогда как виртуализатор запрограммировал теневой регистр на сообщение о соответствующем числе процессоров. Заблаговременно программируя эту информацию, виртуализатору не нужно запрашивать перехват доступа к этому регистру, но, вместо этого, всегда заставляет каждый раздел считывать теневое значение вместо реального значения. Однако наряду с тем, что этот подход избегает дорогостоящего события перехвата, требуется дополнительное усложнение процессора (обычно дополнительный регистр), что приводит к некоторому снижению гибкости (по сравнению с универсальным обработчиком перехватов, который может выполнять произвольные действия).
Более конкретно, традиционные виртуализаторы были монолитными по своему характеру, то есть они отвечали и за установление перехватов, и за реагирование на перехваченные события, когда те происходят, и, таким образом, эти виртуализаторы прежде были обязательно сложными и громоздкими. Фиг. 4 является структурной схемой, иллюстрирующей монолитную сущность традиционных виртуализаторов, которые и устанавливают перехваты с помощью всех средств поддержки процессора (например, исключений, значений по умолчанию, ловушек, и т.д.), и реагируют на все перехваченные события. На Фиг. 4 виртуализатор 404, работающий над физическими компьютерными аппаратными средствами 402, виртуализирует две виртуальные машинные среды, ВМ A 408 и ВМ B 410. Гостевая операционная система (ГОС) A 412 исполняется в ВМ A 408, и ГОС B 414 исполняется в ВМ B 410. Программные приложения А1 416 и A2 418 исполняются в ГОС A 412 на ВМ A 408, и программное приложение B1 420 исполняется в ГОС B 414 на ВМ B 410. В этом варианте осуществления виртуализатор проиллюстрирован, как гипервизор (хотя другие виртуализаторы также предполагаются и могли бы использоваться), и ВМ A 408 является «первичным разделом», то есть гостевая операционная система (ГОС) A ВМ A также используется гипервизором, чтобы обеспечить функциональные возможности, которые могли бы иначе быть обеспечены ведущей операционной системой (которая, как поймут специалисты в данной области техники, является ненужной и отсутствует в этой конкретной конфигурации виртуализации).
Что касается перехватов, виртуализатор 404 (снова, в данном случае, гипервизор) содержит полные функциональные возможности 450 перехвата, что сильно увеличивает сложность виртуализатора 404. Таким образом, в этой схеме, событие в первом разделе (например, ВМ A 408) инициирует перехват и заставляет процессор передать управление от гостевой ОС, выполняющейся в первом разделе (например, гостевая ОС A 412), виртуализатору 404. Затем виртуализатор 404 определяет причину перехвата и реагирует на это, возвращая управление обратно гостевой ОС A 412 по завершению.
Многоуровневые События Перехвата
Различные варианты осуществления настоящего изобретения ориентированы на многоуровневое проектирование виртуализатора и способов обработки перехватов, которые позволяют значительную часть сложностей, связанных с перехватом, вывести из виртуализатора основного уровня (компонент виртуализатора, исполняющийся вне виртуализированной среды) и поместить во внешние мониторы, которые существуют в пределах каждого раздела (виртуальной машины). В этой схеме виртуализатор основного уровня (который, для определенных вариантов осуществления, может быть интегрирован в обобщенный гипервизор) остается простым, в то время как некоторые или все обработчики перехватов выполнены одним или более внешними мониторами, которые выполняются в пределах каждого раздела, то есть на гостевом уровне, и или в том же самом разделе, или в разделе, отличном от того, который сгенерировал событие перехвата.
Фиг. 5 является структурной схемой, иллюстрирующей технологию многоуровневого перехвата для некоторых вариантов осуществления настоящего изобретения. На Фиг.5 виртуализатор 504, работающий выше физических компьютерных аппаратных средств 502, виртуализирует две виртуальные машинные среды, ВМ A 508 и ВМ B 510. ГОС A 512 исполняется в ВМ A 508, и ГОС B 514 исполняется в ВМ B 510. Программные приложения А1 516 и A2 518 исполняются в ГОС A 512 на ВМ A 508, и программное приложение B1 520 исполняется в ГОС B 514 на ВМ B 510. В этом варианте осуществления виртуализатор также проиллюстрирован, как гипервизор (хотя другие виртуализаторы тоже предполагаются и могли бы использоваться), и ВМ A 508 является «первичным разделом», то есть гостевая операционная система (ГОС) A ВМ A также используется гипервизором, чтобы обеспечить функциональные возможности, которые могли бы иначе быть обеспечены ведущей операционной системой.
Однако, что касается перехватов, виртуализатор 504 (снова, в данном случае, гипервизор) содержит только минимальные функциональные возможности 550 перехвата, и большая часть функциональных возможностей перехвата вместо этого включена в состав одного или более внешних мониторов (ВнМ) 562 и 564 в каждом разделе 508 и 510 (показаны в настоящем описании, как включенные в состав виртуализации ВМ каждого раздела, хотя положение ВнМ относительно ВМ, гостевой ОС и приложений в разделе может меняться в альтернативных вариантах осуществления).
В этой схеме, обращаясь и к Фиг. 5, и к Фиг. 6, последняя из которых является схемой технологического процесса, иллюстрирующей способ, которым многоуровневый способ обрабатывает события перехвата, на этапе 602 событие в первом разделе (например, ВМ A 508) инициирует перехват и, на этапе 604, заставляет процессор передать управление от гостевой ОС, выполняющейся в первом разделе (например, гостевая ОС A 512), виртуализатору 504. Затем, на этапе 606, виртуализатор 504 определяет, обрабатывать ли перехват, используя свои собственные заданные по умолчанию (и простые) механизмы обработки или передать перехват на "внешний монитор" (например, ВнМ 462). Например, виртуализатор может выбрать первое (самостоятельная обработка перехвата на этапе 608), если источник перехвата запросил обработку по умолчанию или, наоборот, второе (передача перехвата на ВнМ посредством этапа 610), если, например, источник перехвата запросил, чтобы режим работы по умолчанию не использовался. Если виртуализатор собирается передать перехват для обработки внешнему монитору, виртуализатор, на этапе 610, сначала подает сигнал определенному внешнему монитору, который будет обрабатывать перехват, предоставляя возможность этому ВнМ, на этапе 612, отреагировать на перехват одним из двух способов: (a) ВнМ возвращает перехват виртуализатору и посылает запрос виртуализатору на обработку перехвата обычным способом по умолчанию на этапе 614 (например, когда ВнМ не способен обработать конкретное событие перехвата), или (b) ВнМ обрабатывает перехват (и, для определенных вариантов осуществления, уведомляет виртуализатор о том, что никакое действие по умолчанию от виртуализатора не требуется) на этапе 616. Управление возвращается к источнику перехвата (например, гостевой ОС A 412) на этапе 618, когда обработка перехвата завершена.
При реализации, внешние мониторы могут быть поставлены в соответствие с виртуализатором для каждого раздела, для каждого виртуального процессора, для каждого класса перехватов; или, вместо установления соответствия, ВнМ могут опрашиваться виртуализатором, когда требуется обработать перехват (то есть вызываться по очереди, пока один из внешних мониторов не принимает решения обработать перехват). Определенные варианты осуществления настоящего изобретения допускают только внешние мониторы, которые должны быть поставлены в соответствие по разделам так, что все запрошенные перехваты для данного раздела будут направлены на определенный внешний монитор. Однако для других вариантов осуществления более чем один раздел может иметь альтернативные внешние мониторы, выполняющиеся в других разделах, которые позволят получать немного различный режим работы (например, различные версии внешних мониторов) для каждого раздела.
Для некоторых вариантов осуществления разделу может быть не позволено обрабатывать его собственные перехваты, чтобы предотвратить круговые зависимости и тупиковые ситуации. Следовательно, для этих вариантов осуществления внешний монитор каждого раздела должен выполняться в пределах другого раздела. В системе на основе гипервизора с первичным разделом, как поймут специалисты в данной области техники, это означает, что, по меньшей мере, один раздел (первичный раздел) не может иметь внешнего монитора и, таким образом, первичный раздел для таких вариантов осуществления может рассчитывать только на обработку перехватов по умолчанию, обеспеченную виртуализатором (гипервизором). С другой стороны, для определенных альтернативных вариантов осуществления для ведущей системы (имеющей ведущую операционную систему), внешние мониторы могут выполняться в пределах ведущей ОС и всех разделов, поскольку высказанное опасение относительно круговых зависимостей и тупиковых ситуаций не относится к фактической ведущей операционной системе.
Альтернативные варианты осуществления
Как упоминалось ранее в настоящем описании, перехваты могут быть разделены на два класса, перехваты памяти, и перехваты процессора. Среди прочего перехваты памяти используются для виртуализации областей памяти, которые не действуют подобно обычному ОЗУ, например регистры с распределением памяти, ПЗУ и планарной видеопамяти, и могут использоваться для следующего, но не ограничиваясь этим: чтение (1-16 байтов); запись (1-16 байтов); фиксированные логические операции чтения/изменения/записи AND, OR, XOR (1, 2, 4 или 8 байтов); фиксированные арифметические операции чтения/изменения/записи ADD, SUB (1, 2, 4 или 8 байтов); и фиксированные операции сравнения XCHG, CMPXCHG (1, 2, 4 или 8 байтов). В отличие от этого, и среди прочего, перехваты процессора могут быть использованы для следующего: команды HLT, PAUSE и CPUID; доступ к регистрам команд (РК), отладочным регистрам (ОР), модельно-специфическим регистрам (МСР); отдельные исключения; внешние прерывания; доступ к портам ввода/вывода (команды ввода/вывода); и фатальные исключения (например, троекратный сбой).
Кроме того, в определенных вариантах осуществления настоящего изобретения, перехваты могут быть переданы на внешний монитор в процессе исполнения гостевой команды. Например, отдельная команда могла получить доступ к двум адресам памяти, которые ассоциированы с перехватами. В этом случае оба перехвата должны быть обработаны прежде, чем гостевая команда сможет завершиться. Эти перехваты последовательно определяются и обрабатываются и, для определенных вариантов осуществления, виртуализатор отвечает за выполнение завершения команды. Например, CPUID возвращает информацию о процессоре в регистры EAX, EDX, EBX, и ECX, и существует два способа, которые виртуализатор мог бы выбрать для передачи перехват CPUID на внешний монитор: (a) внешний монитор завершает команду CPUID, записывая значения назад в соответствующие регистры и совершая приращение EIP (счетчика команд) после команды CPUID; или (b) внешний монитор возвращает значения, предоставленные командой CPUID. В первом случае, виртуализатор доставляет внутрикомандный перехват. С точки зрения внешнего монитора, виртуализированный процессор еще не исполнил команду CPUID, и когда внешний монитор заканчивает обработку перехвата, исполнение команды CPUID будет завершено. Во втором случае, наоборот, виртуализатор отвечает за запись этих значений обратно в соответствующие регистры и увеличение EIP после окончания команды CPUID. Этот способ приводит в результате к более простому внешнему монитору и лучшей производительности, когда виртуализатор доставляет перехват в середине команды, и, с точки зрения внешнего монитора, виртуализированный процессор начал исполнять команду CPUID. Когда внешний монитор закончит обработку перехвата, виртуализатор завершит команду CPUTD. Дополнительно, определенные варианты осуществления поддерживают перехваты в середине команды, когда это возможно, потому что они приводят в результате к более простому интерфейсу внешнего монитора, также предусматривая перехваты между командами, такие как перехваты в исключениях и прерываниях, которые естественно происходят на границах команд.
Кроме того, как обсуждалось ранее, монитор основного уровня определяет обработку "по умолчанию" (обычно простую) для каждого типа перехватов. Например, команда CPUID по умолчанию возвращает те же сведения о ЦПУ, которые физический процессор возвращал бы обычно, и фатальное исключение (например, тройной сбой в архитектурах x86) по умолчанию вызывает завершение раздела. Однако для некоторых вариантов осуществления внешний монитор может отменить режим работы по умолчанию для определенных классов перехватов, вызывая основной виртуализатор, чтобы определить, какие перехваты он хотел бы отменить, в то время как перехваты, которые не отменены, по-прежнему обрабатываются заданным по умолчанию способом.
Большинство виртуализаторов также дают возможность гостевому программному обеспечению устанавливать связь с виртуализатором через четко определенные механизмы. Для определенных вариантов осуществления настоящего изобретения это может быть сделано с помощью синтезируемых МСР (модельно-специфические регистры). Позволяя внешнему монитору переопределять режим доступов к этим МСР, внешние мониторы могут заставить это выглядеть так, словно не существует никакого виртуализатора. Они могут также имитировать присутствие гипервизора или МВМ с другой версией. Это предусматривает рекурсивную виртуализацию, то есть гипервизор, или МВМ, может выполняться в пределах раздела, который выполняется выше другого гипервизора или МВМ. Это может быть полезным для моделирования новых версий гипервизора/МВМ, для обеспечения обратной совместимости со старшими версиями, или для того, чтобы обеспечить совместимость с реализациями от сторонних производителей.
Для проектов, подразумевающих и виртуализатор основного уровня, и внешний монитор, существует потребность в способе подачи сигнала внешнему монитору, когда происходит перехват, и, необязательно, передачи параметров, связанных с перехватом. Поскольку внешний монитор выполняется в другом разделе, который может быть занят в данное время, исполняя другой код, определенные варианты осуществления требуют асинхронного механизма для доставки этого сигнала. В одной реализации этот сигнал может доставляться как синтетическое прерывание (см. перекрестно-ссылочные заявки на патент, перечисленные ранее в настоящем описании). В то время как традиционные механизмы прерываний процессора подразумевают исполнение программы обработки прерывания в ответ на определенный источник прерывания, синтетический контроллер прерываний расширяет этот механизм и дает возможность передавать параметры программе обработки прерывания. В случае перехватов параметры указывают информацию о незаконченном перехвате, и внешний монитор может использовать эту информацию, чтобы эффективно обработать перехват.
Заключение
Различные системы, способы, и методики, характеризуемые в настоящем описании, могут быть реализованы с аппаратными средствами или программным обеспечением или, где целесообразно, с комбинацией обоих. Так, способы и устройства настоящего изобретения, или его определенных аспектов или частей, могут принять вид программного кода (т.е. команд), воплощенного в вещественных носителях, таких как гибкие диски, компакт-диски, жесткие диски, или любые другие машинно-читаемые носители информации, причем когда программный код загружен и исполняется на машине, такой как компьютер, машина становится устройством для применения на практике изобретения. В случае исполнения программного кода на программируемых компьютерах компьютер будет, как правило, включать в себя процессор, носители информации, читаемые процессором (в том числе энергозависимая и энергонезависимая память и/или запоминающие элементы), по меньшей мере, одно устройство ввода, и, по меньшей мере, одно устройство вывода, одну или более программу, желательно реализованную на процедурном языке программирования высокого уровня, или на объектно-ориентированном языке программирования, для взаимодействия с компьютерной системой. Однако программа(ы) может быть реализована на языке ассемблера или на машинном языке, если требуется. В любом случае язык может быть транслируемым или интерпретируемым языком, и объединенным с реализациями аппаратных средств.
Способы и устройства настоящего изобретения могут также быть осуществлены в виде программного кода, который передан по каким-нибудь каналам передачи информации, например, через электрическую проводку или по кабельной сети, по волоконно-оптическому кабелю, или с помощью любого другого вида передачи информации, причем когда программный код принят, загружен и исполняется машиной, такой как стираемое программируемое постоянное запоминающее устройство (СППЗУ), вентильная матрица, программируемое логическое устройство (ПЛУ), клиентский компьютер, видеомагнитофон и т.п., машина становится устройством для применения на практике изобретения. При реализации на процессоре общего назначения программный код объединяется с процессором, чтобы предоставить уникальное устройство, которое выполняет индексацию набора функциональных возможностей настоящего изобретения.
В то время как настоящее изобретение было описано в связи с предпочтительными вариантами осуществления, изображенными на различных чертежах, нужно понимать, что могут использоваться другие сходные варианты осуществления, или могут быть сделаны модификации и дополнения к изложенному варианту осуществления для выполнения функций настоящего изобретения без отклонений от его сущности и объема. Например, в то время как иллюстративные варианты осуществления изобретения описаны в контексте цифровых устройств, эмулирующих функциональные возможности персональных компьютеров, специалист в данной области техники поймет, что настоящее изобретение не ограничено теми цифровыми устройствами, которые описаны в настоящей заявке на патент, и может применяться к любому из ряда существующих или появляющихся вычислительных устройств или сред, таких как игровая приставка, карманный компьютер, портативный компьютер, и т.д., проводных или беспроводных, и может быть применен к любому из ряда таких вычислительных устройств, соединенных с помощью сети передачи данных и взаимодействующих через сеть. Более того, нужно подчеркнуть, что множество компьютерных платформ, в том числе операционные системы для карманных компьютеров и другие приложения для систем со специфическими интерфейсами аппаратных средств/программного обеспечения, рассматриваемых в настоящем описании, особенно таких как ряд беспроводных сетевых устройств, продолжает разрастаться. Следовательно, настоящее изобретение не должно быть ограничено никаким единственным вариантом осуществления, а скорее истолковываться в широте и объеме, соответствующих прилагаемой формуле изобретения.
В заключение, раскрытые варианты осуществления, описанные в настоящем описании, могут быть приспособлены к использованию в других процессорных архитектурах, управляемых компьютером системах, или виртуализациях систем, и такие варианты осуществления определенно ожидаются согласно раскрытиям, представленным в настоящем описании, и, таким образом, настоящее изобретение не должно быть ограничено определенными вариантами осуществления, описанными в настоящем описании, а вместо этого толковаться более широко. Аналогично, использование синтетических команд для целей, отличных от виртуализации процессора, также ожидается согласно раскрытиям, представленным в настоящем описании, и любое такое использование синтетических команд в контекстах, отличных от виртуализации процессора, должно более широко читаться в раскрытиях, сделанных в настоящем описании.