Способ и система для виртуализации гостевого физического адреса в среде виртуальной машины

Изобретение относится к способу совместного использования страниц между виртуальными машинами в среде с несколькими виртуальными машинами. Техническим результатом является повышение производительности работы главного компьютера. Способ включает в себя изначально выполняемое выделение временного диапазона гостевых физических адресов первой виртуальной машины для совместного использования страниц со второй виртуальной машиной. Временный диапазон находится в пределах гостевого физического адресного пространства первой виртуальной машины. От второй виртуальной машины принимается запрос на доступ, такой как запрос прямого доступа к памяти, к страницам, доступным для первой виртуальной машины. Опорный счетчик незавершенных доступов к страницам увеличивается, чтобы показать незавершенный доступ, и страницы отображаются во временный диапазон гостевых физических адресов. Осуществляется доступ к страницам, и значение опорного счетчика уменьшается. Отображение во временном диапазоне гостевых физических адресов затем удаляется, если значение опорного счетчика равно нулю. 3 н. и 8 з.п. ф-лы, 6 ил.

 

Область техники, к которой относится изобретение

Изобретение относится к области компьютерного программирования. Более конкретно, изобретение имеет отношение к доступу со стороны второй виртуальной машины к ресурсам главного компьютера, доступным первой виртуальной машине, в среде виртуальной машины.

Предшествующий уровень техники

Виртуальная обработка данных позволяет нескольким виртуальным машинам, каждая из которых имеет свою собственную операционную систему, работать на главном компьютере. Главный компьютер имеет программу виртуализации, которая позволяет главному компьютеру выполнять команды программы виртуальной машины, которая может иметь иную модель центрального процессора по сравнению с главным компьютером. Программа виртуализации главного компьютера может также делать виртуальными аппаратные ресурсы главного компьютера для использования виртуальной машиной. Виртуальную машину, которая запрашивает аппаратные ресурсы, такие как центральный процессор, память, средства ввода-вывода и дисковое пространство, называют гостем по отношению к главному компьютеру.

В виртуальной машине гостевая компьютерная система существует только в системе главного компьютера как чистое программное представление функционирования одной определеннойаппаратной архитектуры. Термины "программа виртуализации", "эмулятор", "виртуальная машина" и "эмуляция процессора" иногда используются взаимозаменяемо для обозначения способности имитировать или эмулировать аппаратную архитектуру всей компьютерной системы, используя один или несколько подходов, известных и оцененных специалистами в данной области техники. Программа виртуализации, выполняющаяся на программном обеспечении операционной системы и архитектуре аппаратных средств главного компьютера, имитирует функционирование всей гостевой компьютерной системы.

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

В некоторых конфигурациях все же желательно, чтобы доступ к главным ресурсам одной виртуальной машины имелся и для второй виртуальной машины. Фиг.1 изображает виртуальную компьютерную систему 100. Система 100 включает в себя первую виртуальную машину 110, вторую виртуальную машину 115 и программное обеспечение 120 виртуализации, постоянно находящееся в системе главного компьютера 105. Программное обеспечение виртуализации помогает поддерживать управляемую изоляцию между виртуальными машинами, например, отделяя адреса виртуальных машин от адресов главной системы. Первая виртуальная машина 110 - это программа, которая включает в себя приложения 125 виртуальной машины, выполняющиеся на операционной системе 130, имеющей драйвер 150 для доступа к базе данных 145. Вторая виртуальная машина 115 - это программа, которая включает в себя приложения 135 виртуальной машины, выполняющиеся на операционной системе 140, имеющей виртуальный драйвер 155. Система главного компьютера 105 имеет ресурсы главного компьютера, такие как каналы ввода-вывода, память, процессоры и программное обеспечение, которые могут быть выделены для любой из виртуальных машин 110, 115. Вконкретном примере на фиг.1 ресурс главного компьютера - это канал 165 ввода-вывода, осуществляющий доступ к базе данных 145. Конфигурация на фиг.1 указывает, что вторая виртуальная машина 115 может обратиться к базе данных 145, используя виртуальный драйвер 155 через программное обеспечение 120 виртуализации, чтобы взаимодействовать с драйвером 150, связанным с путем 165 ввода-вывода к базе данных 145.

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

Гостевое физическое адресное пространство относится к физическому адресному пространству виртуальной машины. Соответственно, гостевой физический адрес относится к адресам в пределах гостевого физического адресного пространства. Использование гостевого физического адресного пространства поддерживает операции вставки, удаления и запроса для поддержки гостевой виртуальной машины. Гостевой виртуальный адрес - это виртуальный адрес, приватный для определенной виртуальной машины. Обычно гостевые виртуальные адреса транслируются в гостевые физические адреса. Однако гостевые физические адреса не могут использоваться для доступа к физической памяти главного компьютера. Соответственно, гостевые физические адреса транслируются в системные физические адреса. Чтобы уменьшить накладные расходы при переадресации, программа виртуализации поддерживает таблицы теневых страниц, которые отображают гостевые виртуальные адреса на системные физические адреса. Программа виртуализации также поддерживает внутренние структуры данных, которые хранят отображение гостевых физических адресов на системные физические адреса. Фиг.2 показывает пример отображения гостевых физических страниц на системные физические страницы. Следует обратить внимание, что может существовать несколько гостевых физических адресов, которые могут быть отображены на один гостевой физический адрес. Например, номер 202 страничного блока и номер 203 страничного блока гостевого физического адресного пространства отображаются на номер 102 системного физического страничного блока.

Работа виртуальной машины и управление гостевым физическим адресным пространством могут вызвать несколько интересных проблем. Например, когда область гостевого физического адресного пространства удалена, необходимо очистить гостевые виртуальные адреса, которые отображаются на области в удаленном разделе гостевого физического адресного пространства. Эта очистка приводит к тому, что любые невыполненные отображения на области в удаленном разделе гостевых физических адресов становятся недействительными. Таким образом, если раздел гостевых физических адресов будет удален, то любые виртуальные адреса, которые были созданы с использованием гостевых физических адресов в удаленной области, должны стать недействительными. В иллюстративной архитектуре могут быть два местоположения, где поддерживается отображение гостевых виртуальных адресов на системные физические адреса, следовательно есть два места, где эти отображения гостевых виртуальных адресов на системные физические адреса должны быть удалены. Две области, которые поддерживают отображения виртуальных адресов на физические, находятся в таблицах теневых страниц и в аппаратном буфере быстрого преобразования адреса. Каждый из этих кэшей должен быть очищен, чтобы поддержать правильность виртуализации и предотвратить нарушения безопасности между виртуальными машинами. Фиг.3 показывает отображения гостевых виртуальных адресов на системные физические адреса. Следует отметить, что несколько гостевых виртуальных адресов могут отображаться на одну и ту же системную физическую адресную страницу. Например, гостевые виртуальные адреса C000:1000 и C000:2000 отображаются на номер 102 системной физической страницы. Такое отображение является очевидным в таблице теневых страниц, полезной для ускорения преобразования гостевых виртуальных адресов в системные адреса. Так как структуры данных таблицы теневых страниц поддерживают отображение из гостевых виртуальных адресов в системные физические адреса, невозможно получить по запросу все гостевые виртуальные адреса, которые отображаются в определенный гостевой физический адрес, обратившись с запросом к таблице теневых страниц, показанной на фиг.3. Однако также поддерживается отображение гостевых физических адресов на системные физические адреса, как показано на фиг.2. Одна методика определения всех гостевых виртуальных адресов, которые были созданы с использованием определенного гостевого физического адреса, состоит в том, чтобы сделать запрос к отображению гостевых физических адресов на системные физические адреса (фиг.2) для всех системных физических адресов, которые отображаются на определенный гостевой физический адрес, и затем удалить все вхождения из отображения гостевых виртуальных адресов на системные физические адреса (таблица теневых страниц на фиг.3), которые отображаются на системные физические адреса. Этот метод может быть очень медленным, поскольку каждый из шагов включает в себя последовательный перебор отображений гостевых физических адресов на системные физические адреса и гостевых виртуальных адресов на системные физические адреса соответственно. Как альтернатива, могло бы поддерживаться обратное отображение гостевых физических адресов на гостевые виртуальные адреса, чтобы явно обработать это условие. Последний подход потребляет большой объем дополнительной памяти.

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

Удаляя гостевое физическое адресное пространство, важно убедиться, что пространство в настоящее время не включено в операцию прямого доступа к памяти. Одна методика предотвращения удаления страницы гостевого адресного пространства, обычно 4 КБ или более, в то время как происходит незавершенная транзакция прямого доступа к памяти, состоит в том, чтобы поддерживать один флаг на каждую страницу, определяющий, используется ли страница для операции прямого доступа к памяти. Различные физические устройства могут отображаться на одно и то же физическое адресное пространство, и, таким образом, одно и то же адресное пространство может быть включено в две различные, возможно незавершенные, операции прямого доступа к памяти. Таким образом, единственный флаг дает недостаточно информации, чтобы знать, когда обе транзакции прямого доступа к памяти завершены. Желателен более усовершенствованный алгоритм.

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

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

Сущность изобретения

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

Перечень фигур чертежей

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

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

фиг.2 - отображение гостевых физических адресов на системные физические адреса для виртуальной машины;

фиг.3 - отображение гостевых виртуальных адресов на системные физические адреса для виртуальной машины;

фиг.4 - отображение гостевых виртуальных адресов на гостевые физические адреса для виртуальной машины;

фиг.5 - блок-схема способа, включающего в себя аспекты изобретения; и

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

Подробное описание иллюстративных вариантов воплощения

Иллюстративные варианты воплощения изобретения

В одном аспекте изобретения создается переходная или временная область гостевого физического адресного пространства, чтобы определять, какие разделы гостевого физического адресного пространства требуют дополнительных структур данных, отображающих гостевые физические адреса на гостевые виртуальные адреса, чтобы позволить быстрое удаление или модификацию гостевого физического адресного пространства. Эта функция полезна для быстрой вставки и удаления гостевого физического адресного пространства, необходимых для поддержки транзакций ввода-вывода между сегментами или виртуальными машинами в среде виртуальной машины. Как один пример, поддержка взаимных транзакций прямого доступа к памяти виртуальных машин может быть обеспечена с использованием временного гостевого физического адресного пространства. В одном варианте воплощения переходная или временная область гостевого физического адресного пространства определяется либо гостем, либо программным обеспечением виртуализации как пространство в пределах гостевого физического адресного пространства, но которое находится вне пространства, выделенного для стандартных прикладных операций с операционной системой гостевой машины. Это местоположение вне стандартного использования гостевой операционной системы устраняет проблему гостевой операционной системы или гостевых приложений, состоящую в случайном использовании переходного или временного пространства в стандартных операциях гостевой виртуальной машины.

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

В одном аспекте изобретения для частей пространства гостевых физических адресов, отмеченных как переходные, поддерживается дополнительное отображение гостевых физических адресов на гостевые виртуальные адреса, которое обеспечивает быструю идентификацию гостевого виртуального адреса из гостевого физического адреса. Фиг.4 изображает пример отображения гостевых физических адресов на гостевые виртуальные адреса. Следует отметить, что имеется потенциально несколько гостевых виртуальных адресов, которые могут отображаться на один гостевой физический адрес. Например, на фиг.4 гостевой физический адрес 100 может отображаться на гостевые виртуальные адреса 8000:0000, 8000:1000, 8000:2000 и 8000:3000.

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

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

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

В другом аспекте изобретения используется сбалансированное двоичное дерево для быстрого запроса и модификации гостевого физического адресного пространства. Элементы в отображении гостевого физического адресного пространства могут вставляться, удаляться и запрашиваться на основе запросов от гостевых приложений. Чтобы достичь быстрых вставок, удалений и запросов структур данных гостевого физического адресного пространства, предпочтительна структура данных сбалансированного двоичного дерева. Сбалансированное двоичное дерево обеспечивает производительность, в худшем случае оцениваемую как O(log2 n), на всех операциях на гостевом физическом адресном пространстве.

Фиг.5 изображает иллюстративный способ 500 в соответствии с аспектами изобретения. Предполагается, что компьютерная среда, в которой выполнен способ - это среда виртуальной машины, подобная изображенной на фиг.1, в которой главный компьютер предоставляет ресурсы для двух или более виртуальных машин. В среде, в которой виртуальная машина делает запросы к ресурсам главного компьютера, гостевой виртуальный адрес транслируется в гостевой физический адрес и затем транслируется в системный физический адрес. Трансляции адресов после выполнения используются и в таблице теневых страниц, и в буфере быстрого преобразования адреса, чтобы ускорить операции виртуальной машины. Однако когда необходимы изменения в гостевом физическом адресном пространстве, таблица теневых страниц и буфер быстрого преобразования адреса нуждаются в обновлении, чтобы предотвратить излишний доступ к неотображаемым адресам и переназначить отображение к более адекватным областям в адресном пространстве. Иллюстративный способ 500 на фиг.5 работает в этой среде и может использоваться как часть алгоритма изменения и обновления адреса, при этом предоставляя доступ из одного сегмента или виртуальной машины к другому сегменту или виртуальной машине.

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

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

Рассматриваемые страницы затем отображаются в гостевое физическое адресное пространство первой виртуальной машины в пределах предварительно определенного временного диапазона адресов (этап 540). После того как страницы отображены в гостевые физические адреса первой виртуальной машины, намеченная транзакция может быть начата (этап 550). Если запрос на доступ является запросом прямого доступа к памяти, запуск транзакции включает в себя посылку команд, таких как команды чтения и записи, параметров, таких как транзакции для определенного типа данных, таких как цвет видеоизображения, и определенных адресов источника и назначения со второй виртуальной машины на первую виртуальную машину, чтобы установить и произвести передачу прямого доступа к памяти.

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

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

Иллюстративное вычислительное устройство

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

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

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

В соответствии с фиг.6, иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютерной системы 610. Компоненты компьютерной системы 610 могут включать в себя, но без ограничения, процессор 620, системную память 630 и системную шину 621, которая соединяет различные компоненты системы, в том числе системную память с процессором 620. Системная шина 621 может быть любой из нескольких типов шин или шинных структур, в том числе шиной памяти или контроллером памяти, шиной периферии и локальной шиной, используя любую из множества архитектур шин. В качестве примера, но не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину усовершенствованной ISA (EISA), локальную шину ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI) (также известную как шина расширения).

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

Системная память 630 включает в себя компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 631 и оперативное запоминающее устройство (ОЗУ) 632. Базовая система 633 ввода-вывода (BIOS), содержащая основные процедуры, которые помогают передавать информацию между элементами в компьютерной системе 610, например, во время запуска, обычно хранится в ПЗУ 631. ОЗУ 632 обычно содержит данные и/или программные модули, которые мгновенно доступны процессору 620 и/или которые в данный момент обрабатываются процессором 620. В качестве примера, но не ограничения, фиг.6 иллюстрирует операционную систему 634, прикладные программы 635, другие программные модули 636 и данные 637 программ.

Компьютерная система 610 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Только в качестве примера фиг.6 иллюстрирует накопитель 641 на жестких дисках, который считывает или записывает на несменный энергонезависимый магнитный носитель, магнитный дисковод 651, который считывает или записывает на сменный энергонезависимый магнитный диск 652, и оптический дисковод 655, который считывает или записывает на сменный энергонезависимый оптический диск 656, такой как постоянное запоминающее устройство на компакт-диске (CDROM), перезаписываемый компакт-диск (CDRW), цифровой универсальный диск (DVD) или другой оптический носитель. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в иллюстративной среде, включают в себя, но без ограничения, кассеты магнитной ленты, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.п. Накопитель 641 на жестких дисках обычно соединяется с системной шиной 621 через интерфейс несменной памяти, такой как интерфейс 640, и магнитный дисковод 651 и оптический дисковод 655 обычно соединяются с системной шиной 621 интерфейсом сменной памяти, таким как интерфейс 650.

Дисковые накопители и связанные с ними компьютерные носители данных, обсуждаемые выше и проиллюстрированные на фиг.6, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютерной системы 610. На фиг.6, например, накопитель 641 на жестких дисках проиллюстрирован как содержащий операционную систему 644, прикладные программы 645, другие программные модули 646 и данные 647 программ. Эти компоненты могут либо быть теми же самыми, либо отличными от операционной системы 634, прикладных программ 635, других программных модулей 636 и данных 637 программ. Операционной системе 644, прикладным программам 645, другим программным модулям 646 и данным 647 программ здесь даны другие номера, чтобы проиллюстрировать, что, как минимум, они являются другими копиями. Пользователь может вводить команды и информацию в компьютер 610 через устройства ввода данных, такие как клавиатура 662 и координатно-указательное устройство 661, обычно называемое мышью, шаровым манипулятором или сенсорной клавиатурой. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода данных часто соединяются с процессором 620 через интерфейс 660 пользовательского ввода, который присоединен к системной шине 621, но могут быть соединены другими интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 691 или другой тип устройства отображения также соединен с системной шиной 621 через интерфейс, такой как видеоинтерфейс 690, который может в свою очередь взаимодействовать с видеопамятью (не показана). В дополнение к монитору 691 компьютерные системы могут также включать в себя другие внешние устройства вывода, такие как динамики 697 и принтер 696, которые могут быть подсоединены через интерфейс периферийных устройств вывода 695.

Компьютерная система 610 может работать в сетевом окружении, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 680. Удаленный компьютер 680 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все из элементов, описанных выше относительно компьютерной системы 610, хотя только запоминающее устройство 681 проиллюстрировано на фиг.6. Логические соединения, изображенные на фиг.6, включают в себя локальную сеть 671 и глобальную сеть 673, но могут также включать в себя другие сети. Такие сетевые окружения являются обычным явлением в офисах, компьютерных сетях масштаба предприятия, интрасетях и Интернете.

При использовании в окружении локальной сети компьютер 110 связан с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании в окружении глобальной сети компьютер 110 обычно включает в себя модем 172 или другие средства для установления связи по глобальной сети 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть соединен с системной шиной 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевом окружении программные модули, изображенные относительно компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Будет оценено, что показанные сетевые соединения являются иллюстративными, и могут быть использованы другие средства установления линии связи между компьютерами.

Различные распределенные вычислительные инфраструктуры были разработаны и разрабатываются в свете сближения вычислений на ПК и Интернета. Индивидуальным и бизнес-пользователям одинаково предоставлен интерфейс для приложений и вычислительных устройств, имеющий возможность однородного взаимодействия по web и делающий вычислительные действия все более и более ориентированными на средства просмотра (браузеры) web или на сеть.

Например, платформа MICROSOFT®'s .NET™, доступная от Microsoft Corporation, включает серверы, службы по принципу стандартных блоков, такие как основывающееся на web хранение данных, и зaгружаемое программное обеспечение для устройств. Хотя иллюстративные варианты воплощения описаны здесь в связи с программным обеспечением, постоянно находящимся на вычислительном устройстве, одна или более частей варианта воплощения изобретения могут также быть осуществлены через операционную систему, интерфейс прикладного программирования (API) или "промежуточный" объект между любым сопроцессором, устройством отображения и запрашивающим объектом таким образом, что операция может быть выполнена, поддержана или доступна через все языки и службы .NET™, а также в других распределенных вычислительных инфраструктурах.

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

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

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

1. Способ совместного использования страниц между виртуальными машинами, работающими с использованием ресурсов главного компьютера, при этом способ содержит этапы, на которых:
выделяют временный диапазон гостевых физических адресов первой виртуальной машины для совместного использования страниц между виртуальными машинами;
принимают от второй виртуальной машины запрос на доступ к страницам, доступным для первой виртуальной машины, при этом запрос принимается программным обеспечением виртуализации на главном компьютере;
увеличивают значение опорного счетчика незавершенных доступов для указания незавершенной передачи прямого доступа к памяти (DMA) и удостоверяются в том, что отображение гостевых физических адресов на физические адреса главного компьютера для упомянутых страниц является действительным и вектор исключения DMA разрешает доступ к этим страницам;
отображают страницы в часть временного диапазона гостевых физических адресов первой виртуальной машины;
предоставляют второй виртуальной машине возможность доступа к страницам, доступным для первой виртуальной машины, посредством настройки контроллера DMA, так чтобы передавать информацию между второй виртуальной машиной и диапазоном физических адресов главного компьютера;
завершают доступ второй виртуальной машины к страницам и уведомляют программное обеспечение виртуализации о завершении доступа;
уменьшают значение опорного счетчика незавершенных доступов к страницам посредством установки вектора исключения DMA так, чтобы исключить выполнение контроллером DMA операций в отношении страниц, если значение опорного счетчика уменьшено до нуля; и
удаляют отображение страниц из временного диапазона гостевых физических адресов, если значение опорного счетчика равно нулю.

2. Способ по п.1, в котором при приеме запроса от второй виртуальной машины на доступ к страницам, доступным для первой виртуальной машины, принимают запрос DMA от второй виртуальной машины на доступ к страницам, отображенным на первую виртуальную машину.

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

4. Способ по п.1, в котором при удалении отображения страниц из временного диапазона гостевых физических адресов дополнительно отменяют отображение элементов страниц из одного или более из таблицы теневых страниц и буфера быстрого преобразования адреса.

5. Компьютерная система для совместного использования страниц между виртуальными машинами, содержащая:
главный компьютер, который имеет аппаратные ресурсы, доступные для множества виртуальных машин;
программное обеспечение виртуализации, которое содержит интерфейс между главным компьютером и любой из упомянутого множества виртуальных машин;
первую виртуальную машину и вторую виртуальную машину, при этом первая виртуальная машина имеет доступ к по меньшей мере одному страничному ресурсу;
временный диапазон гостевых физических адресов первой виртуальной машины для совместного использования страниц между виртуальными машинами;
главный процессор, имеющий доступ к памяти главного компьютера, которая имеет команды, которые при их исполнении выполняют способ, содержащий этапы, на которых:
принимают от второй виртуальной машины запрос на доступ к страницам, доступным для первой виртуальной машины, при этом запрос принимается программным обеспечением виртуализации;
увеличивают значение опорного счетчика незавершенных доступов для указания незавершенной передачи прямого доступа к памяти (DMA) и удостоверяются в том, что отображение гостевых физических адресов на физические адреса главного компьютера для упомянутых страниц является действительным и вектор исключения DMA разрешает доступ к этим страницам;
отображают страницы в часть временного диапазона гостевых физических адресов; предоставляют второй виртуальной машине возможность доступа к страницам, доступным для первой виртуальной машины, посредством настройки контроллера DMA, так чтобы передавать информацию между второй виртуальной машиной и диапазоном физических адресов главного компьютера;
уведомляют программное обеспечение виртуализации о завершении доступа;
уменьшают значение опорного счетчика незавершенных доступов к страницам посредством установки вектора исключения DMA так, чтобы исключить выполнение контроллером DMA операций в отношении страниц, если значение опорного счетчика уменьшено до нуля; и
удаляют отображение страниц из временного диапазона гостевых физических адресов, если значение опорного счетчика равно нулю.

6. Система по п.5, дополнительно содержащая по меньшей мере одно из буфера быстрого преобразования адреса и таблицы теневых страниц, причем это по меньшей мере одно из буфера быстрого преобразования адреса и таблицы теневых страниц обновляется в результате этапа способа, на котором удаляют отображение страниц.

7. Система по п.6, в которой при удалении отображения страниц из временного диапазона гостевых физических адресов дополнительно отменяют отображение элементов страниц из одного или более из таблицы теневых страниц и буфера быстрого преобразования адреса.

8. Система по п.5, в которой при завершении доступа к страницам второй виртуальной машины и уведомлении программного обеспечения виртуализации о завершении доступа принимают указание от контроллера DMA, что передача информации завершена, и посылают сообщение о завершении от первой виртуальной машины на вторую виртуальную машину, причем вторая виртуальная машина уведомляет программное обеспечение виртуализации о завершении.

9. Машиночитаемый носитель, имеющий машиноисполняемые команды для выполнения способа совместного использования страниц между виртуальными машинами, работающими с использованием ресурсов с главного компьютера, причем способ содержит этапы, на которых:
выделяют временный диапазон гостевых физических адресов первой виртуальной машины для совместного использования страниц между виртуальными машинами;
принимают от второй виртуальной машины запрос на доступ к страницам, доступным для первой виртуальной машины, при этом запрос принимается программным обеспечением виртуализации на главном компьютере;
увеличивают значение опорного счетчика незавершенных доступов для указания незавершенной передачи прямого доступа к памяти (DMA) и удостоверяются в том, что отображение гостевых физических адресов на физические адреса главного компьютера для упомянутых страниц является действительным и вектор исключения DMA разрешает доступ к этим страницам, при этом опорный счетчик функционирует для блокирования других доступов к страницам;
отображают страницы в часть временного диапазона гостевых физических адресов первой виртуальной машины;
предоставляют второй виртуальной машине возможность доступа к страницам, доступным для первой виртуальной машины, посредством настройки контроллера DMA, так чтобы передавать информацию между второй виртуальной машиной и диапазоном физических адресов главного компьютера;
завершают доступ второй виртуальной машины к страницам и уведомляют программное обеспечение виртуализации о завершении доступа;
уменьшают значение опорного счетчика незавершенных доступов к страницам посредством установки вектора исключения DMA так, чтобы исключить выполнение контроллером DMA операций в отношении страниц, если значение опорного счетчика уменьшено до нуля; и
удаляют отображение страниц из временного диапазона гостевых физических адресов, если значение опорного счетчика равно нулю.

10. Машиночитаемый носитель по п.9, в котором при приеме запроса от второй виртуальной машины на доступ к страницам, доступным для первой виртуальной машины, принимают запрос DMA от второй виртуальной машины на доступ к страницам, отображенным на первую виртуальную машину.

11. Машиночитаемый носитель по п.9, в котором при завершении доступа к страницам второй виртуальной машины и уведомлении программного обеспечения виртуализации о завершении доступа принимают указание от аппаратных средств главного компьютера, что операции DMA завершены, и посылают сообщение о завершении от первой виртуальной машины на вторую виртуальную машину, причем вторая виртуальная машина уведомляет программное обеспечение виртуализации о завершении.



 

Похожие патенты:

Изобретение относится к системе и способу для предложения родственных терминов. .

Изобретение относится к обработке естественно-языковых текстов и может быть использовано для автоматизации поиска необходимых документов в большой их коллекции. .

Изобретение относится к обработке естественно-языковых текстов и может быть использовано для автоматизации поиска необходимых документов в большой их коллекции. .

Изобретение относится к системам управления подготовкой и применением авиационных средств поражения (АСП). .

Изобретение относится к способу, системе и устройству, предназначенным для обеспечения возможности просмотра и изменения электронной таблицы в контексте прикладной программы веб-браузера.

Изобретение относится к поиску изображений на Web-страницах и к анализу связанности изображений Web-страниц. .

Изобретение относится к области визуализации web-страниц. .

Изобретение относится к средствам поиска требуемой информации и контента, а именно к устройствам, в которых реализована функция поискового посредника между множеством приложений и множеством поисковых функций.

Изобретение относится к области создания и редактирования визуальных представлений. .

Изобретение относится к информационно-измерительным устройствам и может быть использовано в вычислительной технике, в системах управления и обработки сигналов
Изобретение относится к вычислительной технике и может использоваться для поиска и идентификации объектов по их описаниям и их пополнение

Изобретение относится к контентно-ориентированному поиску Интернет-ресурсов

Изобретение относится к области для определения разборчивости символа

Изобретение относится к системе распространения видеоданных и способу упреждения запросов рабочей станции пользователя на получение изображения и обнаружения, преобразования и при необходимости перемещения ожидаемых представлений файлов видеоданных в область локальной памяти для доступа к ним
Изобретение относится к области сетей передачи данных, а более конкретно - к системе и способу управления документооборотом и процессами печати

Изобретение относится к конфигурируемым пользователем библиотекам программного обеспечения

Изобретение относится к средствам обработки цифровых данных и может найти применение для обработки, хранения, анализа и представления данных об объектах, находящихся в разнородных базах данных, и связях между ними

Изобретение относится к системам и способам обновления IHV драйвера дисплея без перезагрузки

Изобретение относится к области вычислительной техники и предназначено для моделирования задач при проектировании вычислительных систем (ВС)
Наверх