Код документа: RU2263343C2
Предпосылки изобретения
В типовой компьютерной системе устройства запрашивают услуги от программного обеспечения системы путем генерации запросов прерывания, которые передаются на контроллер прерываний через множество линий запросов прерываний. Как только контроллер прерываний идентифицирует активную линию запроса прерывания, он посылает сигнал прерывания в процессор. В ответ логика интерфейса контроллера прерываний в процессоре определяет, готово ли программное обеспечение для приема прерывания. Если программное обеспечение не готово для приема прерывания, то прерывание поддерживается в состоянии ожидания обработки до тех пор, пока программное обеспечение не будет готово к приему. Как только определено, что программное обеспечение готово, логика интерфейса контроллера прерываний запрашивает контроллер прерываний об уведомлении, какое из ожидающих обработки прерываний имеет наивысший приоритет. Контроллер прерываний присваивает приоритеты различным линиям запроса прерываний и идентифицирует запрос прерывания наивысшего приоритета для процессора, который затем переводит поток управления в код, который обрабатывает этот запрос прерывания.
В обычной операционной системе (ОС) все прерывания управляются единым объектом, известным как ядро ОС. В системе виртуальных машин монитор (управляющая программа) виртуальных машин (МВМ) должен осуществлять окончательный контроль над различными операциями и событиями, возникающими в системе, для обеспечения надлежащей работы виртуальных машин и для защиты от виртуальных машин и взаимной защиты между ними. Для достижения этого, МВМ в типовом случае принимает управление, когда программное обеспечение гостя (пользователя, не имеющего учетной записи пользователя или пароля) получает доступ к ресурсам аппаратных средств или обуславливает возникновение некоторого события, такого как прерывание или исключительная ситуация. Соответственно, в системе виртуальных машин прерывания в типовом случае управляются посредством МВМ.
В частности, когда операции в виртуальных машинах, поддерживаемые МВМ, вызывают генерацию прерываний устройствами в системе, МВМ выполняет роль посредника между виртуальной машиной и контроллером прерываний. То есть, когда возникает сигнал прерывания, функционирующая в текущий момент виртуальная машина прерывается, и управление процессора переходит к МВМ. Затем МВМ принимает прерывание, исполняет любые необходимые операции для контроллера прерываний и обрабатывает прерывание или доставляет прерывание на соответствующую виртуальную машину.
Краткое описание чертежей
Настоящее изобретение иллюстрируется для примера, но не в качестве ограничения, на чертежах, на которых одинаковые ссылочные позиции относятся к сходным элементам и на которых представлено следующее:
Фиг. 1 - вариант осуществления среды виртуальных машин, в которой может быть реализовано изобретение;
Фиг. 2 - блок-схема варианта осуществления системы для обработки прерываний в среде виртуальных машин;
Фиг. 3 - блок-схема алгоритма варианта осуществления процесса обработки прерываний в системе виртуальных машин;
Фиг. 4 - блок-схема, иллюстрирующая обработку прерываний в системе виртуальных машин, имеющей предпочтительную виртуальную машину, согласно варианту осуществления настоящего изобретения;
Фиг. 5 - блок-схема варианта осуществления процесса обработки прерываний, возникающих при работе непредпочтительной виртуальной машины, и
Фиг. 6 - блок-схема варианта осуществления процесса обработки прерываний в системе виртуальных машин без предпочтительной виртуальной машины.
Описание вариантов осуществления
Описаны способ и устройство для управления внешними прерываниями в системе виртуальных машин. В последующем описании в целях пояснения изложено множество конкретных деталей, чтобы обеспечить глубокое понимание настоящего изобретения. Однако для специалиста в данной области техники очевидно, что настоящее изобретение может быть реализовано без этих конкретных деталей.
Некоторые части нижеследующего детального описания представлены в терминах алгоритмов и символических представлений операций над битами данных в регистрах или памяти компьютерной системы. Эти алгоритмические описания и представления являются средствами, используемыми специалистами в области обработки данных для наиболее эффективной передачи сущности их работы другим специалистам в данной области техники. Алгоритм рассматривается здесь, и в принципе, как самосогласованная последовательность операций, приводящая к желаемому результату. Операции представляют собой требуемые физические манипуляции над физическими величинами. Обычно, хотя и не обязательно, эти величины принимают форму электрических или магнитных сигналов, над которыми могут осуществляться действия сохранения, переноса, объединения, сравнения и иные манипуляции. Иногда оказывается удобным, в основном по причинам всеобщего использования, ссылаться на такие сигналы как на биты, значения, элементы, символы, знаки, термы (составляющие), числа и тому подобное.
Однако следует иметь в виду, что все эти или подобные термины должны связываться с соответствующими физическими величинами и являются всего лишь удобными обозначениями этих величин. Если специально не указано иное, как очевидно из последующего описания, понятно, что на протяжении всего описания изобретения обсуждения с использованием таких терминов как «обработка», «вычисления», «расчет», «определение» и тому подобное могут относиться к действиям и процессам компьютерной системы или подобного электронного вычислительного устройства, которое манипулирует данными и преобразует данные, представленные как физические (электронные) величины в регистрах и блоках памяти компьютерной системы, в другие данные, аналогичным образом представленные как физические величины в регистрах и блоках памяти компьютерной системы, или других таких блоках хранения информации, устройствах передачи и отображения.
В последующем детальном описании вариантов осуществления изобретения ссылки делаются на чертежи, которые показывают в качестве иллюстрации конкретные варианты осуществления, в которых изобретение может быть реализовано. На чертежах одинаковыми ссылочными позициями обозначены по существу сходные компоненты на различных видах. Эти варианты осуществления описаны достаточно детально, чтобы дать возможность специалистам в данной области техники реализовать изобретение. Могут быть использованы и другие варианты осуществления, причем могут делаться изменения в структуре, логических средствах и в электронных средствах без отклонения от объема настоящего изобретения. Кроме того, следует иметь в виду, что различные варианты осуществления изобретения, хотя и отличающиеся, однако они не являются обязательно взаимоисключающими. Например, конкретный признак, структура или характеристика, описанные в одном варианте осуществления, могут быть включены в другие варианты осуществления. Поэтому последующее детальное описание не следует воспринимать в ограничительном смысле, при этом объем изобретения определяется только пунктами формулы изобретения, вместе с полным объемом эквивалентов, на которые распространяются эти пункты.
Фиг. 1 иллюстрирует вариант осуществления среды 100 виртуальных машин, в которой может быть реализовано настоящее изобретение. В этом варианте осуществления минимальные аппаратные средства («пустая» аппаратура, без программного обеспечения) 116 включают в себя компьютерную платформу, которая имеет возможность, например, исполнять стандартную операционную систему (ОС) или монитор виртуальных машин (МВМ), такой как МВМ 112. МВМ 112, хотя в типовом случае реализуется программным обеспечением, может эмулировать и экспортировать интерфейс пустой (без программного обеспечения) машины к более высокоуровневому программному обеспечению. Такое программное обеспечение более высокого уровня может содержать стандартную ОС или ОС реального времени, может представлять собой пустую (незаполненную) операционную среду с ограниченными функциональными возможностями операционной системы, может не включать в себя традиционные функции ОС и т.д. Альтернативно, МВМ 112 может исполняться внутри или сверху другого МВМ. МВМ и их типовые признаки и функциональные возможности хорошо известны специалистам в данной области техники и могут быть реализованы, например, аппаратными средствами, программным обеспечением, программно-аппаратными средствами (встроенными, «зашитыми» программами) или комбинацией различных методов.
Аппаратные средства 116 платформы могут представлять собой персональный компьютер (ПК), универсальную вычислительную машину, портативное устройство, карманное устройство, компьютерную приставку к телевизору или любую другую компьютерную систему. Аппаратные средства 116 платформы включают в себя процессор 118 и память 120.
Процессор 118 может представлять собой любой тип процессора, способный исполнять программное обеспечение, такой как микропроцессор, цифровой процессор сигналов, микроконтроллер и тому подобное. Процессор 118 может включать в себя микропрограмму (микрокод), программируемую логику или жестко запрограммированную логику для реализации исполнения вариантов осуществления способа согласно настоящему изобретению. Хотя на фиг. 1 показан только один такой процессор 118, в системе может иметься один или несколько процессоров.
Память 120 может представлять собой жесткий диск, гибкий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), флэш-память, любую комбинацию приведенных выше устройств или любой тип машинного носителя, считываемого процессором 118. Память 120 может сохранять инструкции и/или данные для исполнения воплощений способа, соответствующих настоящему изобретению.
МВМ 112 представляет другому программному обеспечению (например, программному обеспечению гостя) абстракцию одной или нескольких виртуальных машин (ВМ), что может обеспечивать одни и те же или разные абстракции различным пользователям-гостям. На фиг. 1 показаны две виртуальные машины 102 и 114. Программное обеспечение гостя, исполняемое на каждой виртуальной машине, может включать в себя ОС гостя, такое как ОС 104 и 106 гостей, и различные приложения 108 и 110 программного обеспечения гостей. Каждая из ОС 104 и 106 гостей ожидает доступа к физическим ресурсам (например, к регистрам процессора, памяти и устройствам ввода/вывода) в ВМ 102 и 114, на которых исполняется ОС 104 и 106 гостей, и обработки различных событий, включая прерывания, генерируемые устройствами системы в процессе работы ВМ 102 и 114.
В одном варианте осуществления прерывание, генерируемое в процессе работы ВМ 102 или 114, может классифицироваться как «привилегированное» событие или как «непривилегированное» событие. Для привилегированных событий МВМ 112 обеспечивает функциональные возможности, требуемые программным обеспечением гостя, при сохранении окончательного управления над этими привилегированными событиями. Непривилегированные события не требуют обработки МВМ 112 и управляются программным обеспечением гостя.
В одном варианте осуществления прерывания классифицируются как привилегированные или непривилегированные на основе текущего значения указателя управления прерыванием. Указатель управления прерыванием определяет, управляется ли прерывание программным обеспечением гостя или МВМ 112.
В одном варианте осуществления один указатель управления прерыванием (например, один бит) используется для всех прерываний. В другом варианте осуществления отдельный указатель управления прерыванием используется для каждого типа прерывания (например, номер прерывания). Например, в архитектуре установки инструкций Pentium IV (далее упоминаемой как архитектура IA-32 ISA) может иметься 256 указателей управления прерываниями (например, 256 битов), по одному для каждого возможного типа маскируемого прерывания аппаратных средств. В других вариантах осуществления отдельные указатели управления прерываниями могут использоваться для групп типов прерываний или для любой другой комбинации прерываний.
Указатель (указатели) управления прерываниями в типовом случае недоступны и/или не могут модифицироваться ВМ 102 и 114. В одном варианте осуществления МВМ 112 устанавливает значение (значения) указателя (указателей) управления прерываниями перед переносом управления к ВМ 102 или 114. Альтернативно, каждая из ВМ 102 или 114 связана с отличающимся указателем (набором указателей) управления прерываниями, который (которые) установлен(ы) на предварительно определенное (определенные) значение (значения).
В одном варианте осуществления один или несколько указателей управления прерываниями сохранены в структуре управления виртуальной машиной (СУВМ) 122, которая может находиться в памяти 120 (как показано на фиг. 1) или, альтернативно, в процессоре 118, комбинации памяти 120 и процессора 118, или в любом другом местоположении или местоположениях в памяти. Различное программное обеспечение гостя может управляться с использованием данных от различных отображений СУВМ, хотя только одна такая СУВМ показана на фиг. 1. Следует отметить, что любая другая структура данных (например, встроенный кэш, файл, таблица перекодировки и т.д.) может быть использована для сохранения указателя (указателей) управления прерываниями без потери общности. Указатель (указатели) управления прерываниями может представлять собой битовое поле в векторе управления или может быть битом или битовой картой, сохраненной в отдельном поле СУВМ.
Альтернативно, в одном варианте осуществления один или несколько указателей управления прерываниями сохранены в одном или нескольких регистрах машины или в памяти 120.
Если прерывание генерируется в процессе работы программного обеспечения гостя, то осуществляется обращение к соответствующему указателю управления прерыванием, чтобы определить, должно ли прерывание управляться программным обеспечением гостя. Если результат этого определения положителен, то прерывание должно управляться программным обеспечением гостя. В противном случае, прерывание управляется посредством МВМ 112.
В одном варианте осуществления, если прерывание должно управляться МВМ 122, то управление переносится к МВМ 112. Перенос управления между ВМ 102 или 104 и МВМ 112 реализуется посредством любого механизма, известного из уровня техники. Обработка прерывания, после того как управление перенесено к МВМ 112, описано более подробно ниже.
В одном варианте осуществления, если прерывание должно управляться программным обеспечением гостя, управление сохраняется за программным обеспечением гостя. Прерывание доставляется программному обеспечению гостя, если текущее исполняемое программное обеспечение готово к приему прерываний, как описано более подробно ниже.
На фиг. 2 показана блок-схема варианта осуществления системы 200 для обработки прерываний в среде виртуальных машин.
Согласно фиг. 2, устройства 214 (например, устройства ввода/вывода) запрашивают услуги от программного обеспечения системы путем генерации запросов прерывания, которые передаются к контроллеру 212 прерываний по одной или нескольким линиям 216 запроса прерывания. Как только контроллер 212 прерываний идентифицирует активную линию 210 запроса прерываний, он посылает сигнал 210 прерывания в центральный процессорный блок (ЦПБ) 202. В возможном варианте осуществления может иметься более одной линии 210 сигнализации прерывания к ЦПБ 202 или, альтернативно, «сигнал» прерывания может доставляться посредством сообщения, передаваемого по шине, или посредством любого другого механизма или протокола связи.
В ответ на активный сигнал 210 прерывания от контроллера 212 прерывания логика 204 интерфейса контроллера прерываний определяет, какое программное обеспечение осуществляет управление прерываниями. Если прерывание возникает в процессе работы МВМ, прерывание управляется посредством МВМ безусловным образом. Альтернативно, если прерывание возникает в процессе работы программного обеспечения гостя, логика 204 интерфейса контроллера прерываний определяет, должно ли управлять прерыванием программное обеспечение гостя или МВМ.
Это определение зависит от текущего значения указателя управления прерыванием, сохраненного, в одном из вариантов осуществления, в СУВМ 208. Указатель управления прерыванием определяет, должно ли программное обеспечение гостя или МВМ управлять прерыванием. Как описано выше, один или более указателей управления прерываниями могут использоваться для прерываний. Если используется более одного указателя управления прерываниями, то осуществляется доступ к конкретному указателю управления прерыванием, связанному с обрабатываемым прерыванием.
Если указатель управления прерыванием определяет, что прерывание должно управляться программным обеспечением гостя, то логика 204 интерфейса контроллера прерываний далее определяет, готово ли программное обеспечение гостя к приему прерываний. В одном варианте осуществления логика 204 интерфейса контроллера прерываний осуществляет это определение после проверки флага 206 прерывания, который может обновляться программным обеспечением гостя, когда состояние программного обеспечения гостя, указывающее на его способность принимать прерывания, изменяется. Например, в архитектуре IA-32 ISA регистр EFLAGS содержит бит флага прерывания IF, который, в частности, контролирует то, должно ли прерывание доставляться в программное обеспечение (другие факторы могут блокировать прерывания в архитектуре IA-32 ISA и эти факторы должны учитываться при определении того, может ли прерывание быть доставлено). Флаг 206 прерывания находится в ЦПБ 202 вне или внутри логики 204 интерфейса контроллера прерываний. Альтернативно, любой другой механизм, известный в уровне техники, может использоваться для определения того, готово ли программное обеспечение принимать прерывания.
Если логика 204 интерфейса контроллера прерываний определяет, что программное обеспечение гостя готово принять прерывание, она запрашивает контролер 212 прерываний идентифицировать, какое из прерываний, ожидающих обработки, имеет наивысший приоритет, и доставляет прерывание с наивысшим приоритетом в программное обеспечение гостя, обуславливая перевод потока управления на начало кода обработки прерывания, связанного с программным обеспечением гостя. В противном случае, если программное обеспечение гостя не готово в текущий момент принимать прерывания, то прерывание сохраняется в состоянии ожидания обработки до тех пор, пока программное обеспечение гостя не будет готовым к его приему.
Если указатель управления прерыванием определяет, что МВМ управляет прерыванием, то, в одном варианте осуществления, логика 204 интерфейса контролера прерываний запускает перевод управления к МВМ.
В другом варианте осуществления перевод управления к МВМ обусловлен текущим значением флага перевода прерывания, упоминаемого здесь как контрольный флаг прерывания (КФП). Таким образом, логика 204 интерфейса контролера прерываний сначала анализирует текущее значение КФП для определения того, должно ли поступление прерывания, управляемого МВМ, вызвать перевод управления к МВМ. КФП действует тем же способом, что и флаг 206 прерывания, указывая на то, разрешено ли прерываниям вызывать переводы на МВМ. В возможном варианте осуществления КФП находится в СУВМ 208 и управляется посредством МВМ. В другом варианте осуществления КФП находится в регистре или в памяти машины. Если КФМ не требует перевода управления, то прерывание будет поддерживаться в состоянии ожидания обработки, и не произойдет перевода управления. В противном случае, логика 204 интерфейса контроллера прерываний запускает перевод управления на МВМ.
В одном варианте осуществления множество КФП поддерживаются для прерываний с различными характеристиками, и КФП, который должен использоваться для конкретного прерывания, выбирается из этих КФП на основе характеристик прерывания.
Когда требуется перевод управления к МВМ, в одном варианте осуществления прерывание поддерживается в состоянии ожидания обработки в контроллере 212 прерываний вслед за переводом управления на МВМ. В этом варианте осуществления идентификатор источника прерывания (например, можно сослаться на вектор в архитектуре IA-32 ISA), который, в частности, идентифицирует устройство, генерирующее прерывание, может быть неизвестен для МВМ в момент, непосредственно следующий за переводом управления. Как часть процедуры перевода управления, процессор очищает флаг 206 прерывания, который является активным после перевода. Вслед за переводом управления МВМ может использовать флаг 206 прерывания для деблокирования прерываний и обеспечения доставки прерывания. МВМ может определить вектор ожидающего обработки прерывания с использованием любого механизма, известного в уровне техники. Например, в архитектуре IA-32 ISA каждый отдельный вектор прерывания обрабатывается однозначно определенным обработчиком прерываний, тем самым идентифицируя вектор прерывания, когда прерывание доставляется в МВМ.
В другом варианте осуществления идентификатор источника прерывания известен в контроллере 212 прерываний перед переводом управления к МВМ. В данном варианте осуществления прерывание может быть доставлено в МВМ с данными, определяющими идентификатор источника прерывания. Например, данные могут быть доставлены в поле в СУВМ.
На фиг. 3 представлена блок-схема возможного варианта осуществления процесса 300 для обработки прерываний в системе виртуальных машин. Процесс может выполняться логикой обработки, которая может содержать аппаратные средства (например, схемы, специализированную логику, программируемую логику, микрокод и т.д.), программное обеспечение (например, исполняемое на универсальной компьютерной системе или на специализированной машине) или комбинацию того и другого.
Согласно фиг. 3, процесс 300 начинается с того, что логика обработки идентифицирует наличие ожидающего обработку прерывания (блок 302 обработки) и определяет, возникло ли прерывание в течение работы МВМ или программного обеспечения гостя (блок 304 принятия решения).
Если прерывание возникло в течение работы МВМ, то логика обработки определяет, готов ли МВМ к приему прерываний (блок 306 принятия решения). Если результат определения положителен, то логика обработки доставляет прерывание к МВМ (блок 308 обработки). Если результат определения отрицателен, то логика обработки не доставляет прерывание к МВМ, оставляя прерывание в состоянии ожидания обработки (блок 316 обработки). В одном варианте осуществления логика обработки использует установку флага прерывания (например, флага прерывания, упоминаемого как EFLAGS.IF в архитектуре IA-32 ISA) для определения того, готов ли МВМ к приему прерываний.
Если результат определения в блоке 304 принятия решения отрицателен, то есть прерывание произошло в течение работы программного обеспечения гостя, то логика обработки далее определяет, управляет ли программное обеспечение гостя прерыванием (блок 310) принятия решения. Это определение зависит от указателя управления прерываниями. В одном варианте осуществления указатель управления прерываниями устанавливается посредством МВМ каждый раз, когда МВМ переводит управление на программное обеспечение гостя. Как описано выше, может иметься один или несколько указателей управления прерываниями, причем выбор конкретного указателя управления прерываниями определяется вектором прерывания или согласно другим критериям. В одном варианте осуществления каждая виртуальная машина имеет отдельный указатель управления прерыванием. Если используется более одного указателя управления прерыванием, то осуществляется доступ к указателю управления прерыванием, связанному с обрабатываемым прерыванием.
Если указатель управления прерыванием определяет, что программное обеспечение гостя управляет прерыванием, то логика обработки пытается доставить прерывание в программное обеспечение гостя путем исполнения блоков 306, 308 и 316 обработки, как описано выше.
В одном варианте осуществления, если указатель управления прерыванием определяет, что программное обеспечение не управляет прерыванием, то логика обработки принимает во внимание флаг перевода прерывания, упоминаемый здесь как контрольный флаг прерывания (КФП), и принимает решение на основе его содержания (блок 314 принятия решения). Если КФП указывает, что МВМ не готов к приему перевода управления вследствие прерываний, то прерывание поддерживается в состоянии ожидания обработки (блок 316 обработки), и управление остается за программным обеспечением гостя. В противном случае логика обработки переводит управление на МВМ (блок обработки 318).
В другом варианте осуществления (не показан) КФП не используется, и перевод управления происходит безусловно после определения, что прерывание управляется посредством МВМ.
В ходе перевода управления к МВМ флаг прерывания может быть установлен на предварительно определенное значение, оставлен немодифицированным или обновлен в соответствии с некоторыми другими механизмами. Вслед за переводом управления к МВМ логика обработки исполняет блоки 306, 308 и 316 обработки, как описано выше.
Как описано выше, вслед за переводом управления к МВМ (блок 318 обработки) прерывание может поддерживаться в состоянии ожидания обработки в контроллере прерываний. Если идентификатор источника прерывания известен, то логика обработки может пытаться доставить прерывание к МВМ с данными, определяющими источник прерывания.
В одном варианте осуществления, если прерывание поддерживается в состоянии ожидания обработки в контроллере прерываний вслед за переводом управления к МВМ, МВМ обновляет флаг прерывания, когда он становится готовым к приему прерываний. МВМ может затем сам обработать прерывание. Альтернативно, МВМ может оценить сущность прерывания для определения того, какая виртуальная машина назначается для обработки данного прерывания, эмулировать доставку прерывания к назначенной виртуальной машине и перевести управление на назначенную виртуальную машину, как описано более подробно ниже.
В другом варианте осуществления (не показан) логика обработки не доставляет прерывание к МВМ. Вместо этого, логика обработки обеспечивает информацию о прерывании для МВМ (например, либо в ответ на запрос МВМ, либо как часть информации, прошедшей к МВМ при переводе управления к МВМ). На основе этой информации МВМ определяет, какая виртуальная машина назначается для обработки данного прерывания, и либо переводит управление на эту виртуальную машину (куда будет доставлено прерывание, как описано выше), либо эмулирует доставку прерывания к виртуальной машине и затем переводит управление на эту виртуальную машину.
Заметим, что в то время как прерывание ожидает обработку, процесс 300 будет непрерывно повторяться до тех пор, пока прерывание не будет доставлено к МВМ или в программное обеспечение гостя или прерывание больше не будет находиться в состоянии ожидания обработки.
В одном варианте осуществления система виртуальной машины включает в себя предпочтительную виртуальную машину и одну или несколько непредпочтительных виртуальных машин. Предпочтительная виртуальная машина предназначена для обработки всех прерываний, генерируемых устройствами системы. Непредпочтительные виртуальные машины предназначены для выполнения операций иных, чем обработка прерываний (например, различных вычислений, шифрования, дешифрирования и т.д.). На фиг. 4 показана блок-схема, иллюстрирующая обработку прерываний в системе виртуальных машин, имеющей предпочтительную виртуальную машину, в соответствии с одним вариантом осуществления настоящего изобретения.
Согласно фиг. 4, ВМ1 404 является предпочтительной виртуальной машиной, которая управляет всеми прерываниями в системе 400. ВМ2 406 является непредпочтительной виртуальной машиной, которая управляет операциями, которые не связаны с обработкой прерываний в системе 400. Хотя на фиг. 4 показана только одна непредпочтительная ВМ (например, ВМ2 406), в системе может иметься более одной непредпочтительной ВМ. МВМ 402 знает, что ВМ1 404 является предпочтительной виртуальной машиной. При переводе управления на ВМ1 404 МВМ 402 устанавливает указатель управления прерыванием (или каждый из множества указателей управления прерываниями) на значение, указывающее, что ВМ1 404 управляет всеми прерываниями. Затем, когда возникает прерывание в течение работы ВМ1 404, логика интерфейса контроллера прерываний учитывает соответствующий указатель управления прерыванием, определяет, что прерывание управляется посредством ВМ1 404, и доставляет прерывание к ВМ1 404, когда ВМ1 404 готова к приему прерываний.
При переводе управления на ВМ2 406 МВМ 402 устанавливает указатель управления прерыванием (или каждый из указателей управления прерываниями) на значение, указывающее, что ВМ2 406 не управляет никакими прерываниями. Затем, когда возникает прерывание в течение работы ВМ2 406, логика интерфейса контроллера прерываний учитывает соответствующий указатель управления прерыванием, определяет, что ВМ2 406 не управляет прерыванием, и запускает перевод управления на МВМ 402. Дополнительно в одном варианте осуществления, в ходе перевода управления к МВМ 402 логика интерфейса контроллера прерывания устанавливает флаг прерывания на значение, указывающее, что все прерывания маскированы (например, устанавливая флаг прерывания на 0), тем самым препятствуя доставке прерываний к МВМ 402. В другом варианте осуществления флаг прерывания может быть установлен на предварительно определенное значение или на значение, считанное из структуры управления виртуальной машиной (СУВМ). Когда управление переводится на МВМ 402, МВМ 402 уведомляется, что причиной этого перевода является прерывание, ожидающее обработки. МВМ 402, зная, что все прерывания должны обрабатываться посредством ВМ1 404, модифицирует указатель (указатели) управления прерыванием, обеспечивая возможность ВМ1 404 управлять всеми прерываниями, и переводит управление на ВМ1 404. Если, после того как ВМ1 404 приняла управление, флаг прерывания указывает, что ВМ1 404 готова к приему прерываний, то логика интерфейса контроллера прерываний извлекает прерывание с наивысшим приоритетом из контроллера прерываний и доставляет прерывание с наивысшим приоритетом в ВМ1 404. В противном случае ВМ1 404 обновит флаг прерывания, как только она будет готова к приему прерываний. Когда ВМ1 404 готова к приему прерываний, логика интерфейса контроллера прерываний извлекает прерывание с наивысшим приоритетом из контроллера прерываний и доставляет прерывание с наивысшим приоритетом в ВМ1 404.
В другом варианте осуществления контрольный флаг прерывания (КФП) учитывается перед переводом управления на МВМ от ВМ2 406, как описано выше со ссылкой на фиг. 3.
На фиг. 5 представлена блок-схема одного варианта осуществления процесса 500 обработки прерываний, возникающих в процессе работы непредпочтительной виртуальной машины. Процесс может выполняться логикой обработки, которая может содержать аппаратные средства (то есть схемы, специализированную логику, программируемую логику, микрокод и т.д.), программное обеспечение (такое, как исполняемое на универсальной компьютерной системе или на специализированной машине) или комбинацию того и другого.
Согласно фиг. 5, процесс 500 начинается с того, что логика обработки идентифицирует и обрабатывает событие ожидающего обработки прерывания в течение работы непредпочтительной виртуальной машины (например, как показано на фиг. 3), обуславливая перевод управления к МВМ (блок 502 обработки). Затем МВМ вызывает предпочтительную виртуальную машину и устанавливает указатель управления прерыванием на значение, которое разрешает предпочтительной виртуальной машине управлять прерываниями (блок 508 обработки).
После того как вызвана предпочтительная ВМ, если прерывание все еще ожидает обработки (блок 510), то логика обработки определяет, готова ли предпочтительная виртуальная машина к приему прерываний (то есть учитывает флаг прерывания и/или состояние другой машины, чтобы определить, указывает ли это, что прерывания не маскированы) (блок 514 принятия решения). Если результат этого определения положителен, то логика обработки доставляет прерывание в программное обеспечение гостя (блок 518) обработки. Если оно не готово принимать прерывания, то прерывание поддерживается в состоянии ожидания обработки (блок 516 обработки), и оценка готовности повторяется (возврат к блоку 510 обработки).
В одном варианте осуществления МВМ не демаскирует (не показывает) прерывания в любой момент времени (то есть он не изменяет флаг прерываний, чтобы показать, что он может принять прерывания). В другом варианте осуществления (не показан) МВМ может демаскировать прерывания. Если прерывание находится в состоянии ожидания обработки, когда МВМ исполняет программу и прерывание не маскировано флагом прерывания, то прерывание будет доставлено к МВМ. МВМ эмулирует доставку прерывания на предпочтительную ВМ, когда она готова принимать прерывания, и переводит управление на предпочтительную ВМ.
На фиг. 6 представлена блок-схема одного варианта осуществления процесса 600 обработки прерываний в системе виртуальных машин, где прерывания могут обрабатываться более чем одной виртуальной машиной или МВМ. Процесс может выполняться логикой обработки, которая может содержать аппаратные средства (то есть схемы, специализированную логику, программируемую логику, микрокод и т.д.), программное обеспечение (такое, как исполняемое на универсальной компьютерной системе или на специализированной машине) или комбинацию того и другого.
Согласно фиг. 6, процесс 600 начинается после того, как логика (в блоке 602 обработки) либо доставила прерывание к МВМ (например, как в блоке 308 обработки на фиг. 3), либо перевела управление на МВМ вследствие наличия ожидающего обработки прерывания (например, как в блоке 318 обработки на фиг. 3).
Затем логика обработки в МВМ определяет идентификатор источника прерывания (блок 606 обработки). Например, в одном варианте осуществления МВМ может выполнять различные операции с памятью или операции ввода/вывода для получения идентификатора источника прерывания (например, вектора) с контроллера прерываний или устройств ввода/вывода. В других вариантах осуществления, в которых прерывание поддерживается в состоянии ожидания обработки в контроллере прерываний после перевода на МВМ вследствие ожидающего обработки прерывания, МВМ может демаскировать прерывания, позволяя процессору доставить прерывание в МВМ. Доставка прерывания к МВМ может обеспечить информацию относительно источника прерывания, как описано выше (например, обработчик прерываний, к которому доставлено прерывание, может определить источник прерывания в архитектуре IA-32 ISA). То есть, когда прерывание доставлено в МВМ или управление переведено на МВМ от программного обеспечения гостя, ввиду ожидающего обработку прерывания, МВМ может определить, что данное прерывание должно обрабатываться конкретной виртуальной машиной.
Затем МВМ определяет, должно ли прерывание обрабатываться непосредственно с помощью МВМ (блок 608 обработки). Результат этого определения может зависеть от того, инициировано ли прерывание устройством, которое управляется от МВМ или виртуальной машиной (например, МВМ может управлять накопителем на жестких дисках всех виртуальных машин, в то время как плата оцифровки видеоизображений может управляться конкретной виртуальной машиной). Если результат определения, полученный в блоке 608 принятия решения, положителен, то МВМ обслуживает прерывание (блок 610 обработки) и процесс 600 заканчивается.
Если результат определения, полученный в блоке 608 принятия решения, отрицателен, то МВМ определяет, какая виртуальная машина должна обслуживать прерывание (блок 612 обработки). Затем, когда эта виртуальная машина готова к приему прерываний, МВМ эмулирует доставку прерывания к виртуальной машине и переводит управление на виртуальную машину (блок 614 обработки). Таким образом, описан способ и устройство для обработки прерываний в системе виртуальных машин. Следует иметь в виду, что приведенное выше описание является иллюстративным, а не ограничительным. Многие другие варианты осуществления будут очевидны для специалистов в данной области техники на основе сведений, полученных из приведенного выше описания. Поэтому объем изобретения должен определяться на основе формулы изобретения вместе с полным объемом ее эквивалентов, на которые распространяются эти пункты.
Изобретение относится к вычислительной технике. Его использование позволяет управлять внешними прерываниями в системе виртуальных машин. Этот результат достигается благодаря тому, что распознают ожидающее обработки прерывание в процессе работы программного обеспечения гостя; определяют, управляет ли прерыванием программное обеспечение гостя; если программное обеспечение гостя не управляет прерыванием, определяют, готов ли монитор виртуальных машин (МВМ) принять управление; и переносят управление к МВМ, если МВМ готов принять управление; в противном случае, если программное обеспечение гостя управляет прерыванием, определяют, готово ли программное обеспечение гостя принять прерывания, и доставляют прерывание в программное обеспечение гостя, если программное обеспечение гостя готово принять прерывания. 3 н. и 22 з.п. ф-лы, 6 ил.