СПОСОБ И ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА ДЛЯ СОКРАЩЕНИЯ КОЛИЧЕСТВА ДАННЫХ, ПЕРЕДАВАЕМЫХ УДАЛЕННОМУ КЛИЕНТСКОМУ ТЕРМИНАЛУ
METHOD AND COMPUTER SYSTEM FOR REDUCING AMOUNT OF DATA TRANSMITTED TO REMOTE CLIENT TERMINAL

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[01] Настоящее изобретение относится к заявке на патент США с названием "Способ и система для копирования буфера кадров для передачи на удаленный дисплей" (номер дела: А336), имеющей такую же, как у настоящей заявки, дату подачи и полностью включенной в настоящее описание посредством ссылки.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[02] Существующие операционные системы обычно содержат уровень интерфейса графического изображения, к которому имеют доступ приложения для формирования изображений на устройстве отображения, например, мониторе. Уровень интерфейса графического изображения обеспечивает для приложений интерфейс программирования приложений (API) для изображений и преобразует изображения, запрашиваемые такими приложениями, в набор графических команд, которые далее поступают на драйвер видеоадаптера. Драйвер видеоадаптера, в свою очередь, принимает команды графики, преобразует их в соответствующие графические примитивы для видеоадаптера и направляет их на видеоадаптер (например, видеокарту, интегрированный видеочипсет и т.д.). Видеоадаптер принимает графические примитивы и немедленно обрабатывает их, или сохраняет в буфере обратного магазинного типа (FIFO буфер) для последовательного выполнения, с целью обновления буфера кадров в видеоадаптере, который используют для формирования и передачи видеосигнала на связанный внешний монитор. Одним из примеров интерфейса графического изображения такого уровня является интерфейс графических устройств (интерфейс GDI) операционной системы (ОС) Microsoft Windows, который реализован в виде динамически подключаемых библиотек на уровне пользователя и уровне ядра, доступных через ОС Windows.
[03] По мере развития технологий, например, при технологии вычислений на базе сервера (SBC) и инфраструктуры виртуального рабочего стола (VDI), организации способны заменять традиционные персональные компьютеры (ПК) исполняемыми копиями рабочих столов, размещенных на удаленных настольных серверах (или в выполняемых на них виртуальных машинах) в информационном центре. Приложение клиента-терминала, установленное на терминале пользователя, подключится к удаленному настольному серверу, который передает графический пользовательский интерфейс сеанса работы операционной системы для воспроизведения на дисплее терминала пользователя. Одним из примеров такого удаленного настольного сервера может служить виртуальная вычислительная сеть (VNC), которая использует протокол удаленного буфера кадров (RFB) для передачи буферов кадров (содержащих значения каждого пиксела, отображаемого на экране) с удаленного настольного удаленного настольного сервера клиенту. Для уменьшения количества отображаемых данных, относящихся к графическому пользовательскому интерфейсу, пересылаемому приложению клиента-терминала, удаленный настольный сервер может иметь вторую копию буфера кадров, которая отражает предшествующее состояние буфера кадров. Эта вторая копия обеспечивает возможность сравнения удаленным настольным сервером предшествующего и текущего состояний буфера кадров для распознавания различий отображаемых данных с целью кодирования (сужения ширины полосы пропускания сети) и последующей передачи в сеть, приложению клиента-терминала.
[04] Однако передача различий отображаемых данных в сеть приложению клиента-терминала может нарушить производительность как удаленного настольного сервера, так и приложения клиента-терминала из-за дополнительных вычислений, необходимых для кодирования различий отображаемых данных на удаленном настольном сервере и последующего декодирования их в приложении клиента-терминала. В качестве общего примера можно сказать, что для постоянной передачи данных целого буфера кадров, который поддерживает разрешение 1920×1200 и глубину цвета 24 бита на пиксел по сети со скоростью 60 раз в секунду, требуется передача более 3,09 гигабит данных в секунду. Даже учитывая, что различия отображаемых данных (а не буфера кадров целиком) можно определить и далее сжать с помощью технологий кодирования до их передачи, все равно может потребоваться значительная ширина полосы пропускания сети.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[05] Одна или несколько реализаций настоящего изобретения предоставляют способы на сервере, имеющем основной буфер изображения для хранения данных отображения, и кодирующее устройство дисплея, которое использует дополнительный буфер изображения для передачи данных отображения на удаленный клиентский терминал, для сокращения данных отображения, которые необходимо передать на удаленный клиентский терминал. При одном подобном способе очередь, состоящая из списка готовых простейших элементов графического изображения, обновляется по выполнении простейших элементов графического изображения в основном буфере изображения. Устройство кодирования отображения запрашивает список простейших элементов графического изображения, который соответствует обновленным данным отображения в дополнительном буфере изображения, и запрашиваемый список простейших элементов графического изображения извлекается из очереди и предоставляется устройству кодирования отображения. По получении запрашиваемого списка простейших элементов графического изображения устройство кодирования отображения может выборочно передавать удаленному клиентскому терминалу простейшие элементы графического изображения в запрашиваемом списке через обновленные данные отображения в дополнительном буфере изображения, соответствующие простейшим элементам графического изображения, в зависимости от оценки использования полосы пропускания.
[06] При одной реализации каждая запись в очереди включает порядковый номер и простейший элемент графического изображения, и полученный запрос включает порядковый номер, соответствующий последнему простейшему элементу графического изображения, для обновления данных в дополнительном буфере изображения. При подобной реализации стадия извлечения включает идентификацию каждой записи в очереди, включающей порядковый номер (включительно) и порядковый номер запроса.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[07] На фиг.1 изображена блок-схема удаленного настольного сервера в соответствии с одной из вариантов реализации изобретения.
[08] На фиг.2 изображена структура данных "передаваемого битового массива" в соответствии с одним из вариантов реализации изобретения.
[09] На фиг.3 изображена вторая структура данных "передаваемого битового массива" в соответствии с одним из вариантов реализации изобретения.
[10] На фиг.4 изображена очередь FIFO в соответствии с одним из вариантов реализации изобретения.
[11] На фиг.5 изображена схема последовательности операций, отражающая шаги передачи запросов на графическое изображение от приложения видеоадаптеру в соответствии с одним из вариантов реализации изобретения.
[12] На фиг.6 изображена схема последовательности операций, отражающая шаги передачи данных буфера кадров от видеоадаптера устройству кодирования в соответствии с одной из вариантов реализации изобретения.
[13] На фиг.7 изображен пример подгонки структуры данных "передаваемого битового массива" в соответствии с одним из вариантов реализации изобретения.
[14] На фиг.8 приведен один из примеров экономии ширины полосы пропускания при передаче графического примитива на удаленный клиентский дисплей, а не передача соответствующих изменений данных отображения, происходящих с буфером кадров.
[15] На фиг.9 изображена схема последовательности операций, отражающая шаги передачи графических примитивов от драйвера видеоадаптера устройству кодирования дисплея в соответствии с одной из реализации изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[16] На фигуре 1 изображена блок-схема удаленного настольного сервера в соответствии с одной из реализации изобретения. Сервер удаленного терминального доступа 100 может быть создан на аппаратной платформе класс настольного компьютера, переносного компьютера или сервера 102, такой как платформа архитектуры ×86. Подобная платформа может включать центральный процессор 104, оперативную память 106, сетевой адаптер 108 (NIC 108), жесткий диск 110 и другие устройства ввода/вывода, такие, например, и без ограничений, как мышь и клавиатура (не показаны на фиг.1).
1
N
1
N
1
N
1
N
[17] Уровень виртуализации программного обеспечения, также в дальнейшем именуемый управляющей программой ОС (гипервизором) 124, устанавливается поверх аппаратной платформы 102. Гипервизор 124 поддерживает пространство выполнения виртуальной машины 126, в котором множество виртуальных машин (VM) 128-128) могут быть одновременно устанавливаться и выполняться. При одной реализации каждая из машин VM 128-128 поддерживает различных пользователей, удаленно соединенных с различных клиентских терминалов. Для каждой из машин VM 128-128 гипервизор 124 управляет соответствующей виртуальной аппаратной платформой (т.е. виртуальными платформами 130-130), которая включает эмулируемое аппаратное обеспечение, реализованное в программном обеспечении, такое как центральный процессор 132, оперативная память 134, жесткий диск 136, сетевой адаптер 138 и видеоадаптер 140. Эмулируемый видеоадаптер 140 выделяет и поддерживает буфер 142 кадров, который является частью памяти, используемой видеоадаптером 140, в который хранится буфер значений пикселов от каждого монитора (т.е. "кадр") обновляется, и очередь "первым пришел - первым обслужен" (FIFO) 144, которая является частью памяти, используемой видеоадаптером 140, в которой хранятся простейшие элементы графического изображения, используемые для обновления буфера 142 кадров. При одной реализации очередь FIFO 144 является буфером совместно используемой памяти, доступ к которому получается и разделяется между видеоадаптером 140 и драйвером 154 видеоадаптера.
1
1
1
1
[18] Виртуальная аппаратная платформа 130 может функционировать как эквивалент стандартной аппаратной архитектуры ×86, как любая операционная система, поддерживаемая архитектурой ×86, например, Microsoft Windows, Linux, Solaris ×86, NetWare, FreeBSD и т.д., может быть установлена как подключенная операционная система (ОС) 146 для выполнения приложений 148 для установленной виртуальной машины, например VM 128. Приложения 148, требующие рисования на экране, предоставляют запросы на рисование через API, предоставляемый уровнем графического рисования 150 (например, Microsoft Windows GDI, при одной реализации), который, в свою очередь, преобразует запросы на рисование в команды рисования и передает команды рисования драйверу 154 видеоадаптера на уровне 152 драйвера устройств. Как показано на реализации фиг.1, драйвер 154 выделяет и поддерживает свою собственную очередь FIFO 157 для отслеживания простейших элементов графического изображения, а также структуру 156 данных, здесь и далее именуемую структурой данных "передаваемого битового массива" или структурой данных "точечный рисунок", которая отслеживает возможно изменяемые области буфера 142 кадров видеоадаптера 140. Более подробно реализация и использование структур данных точечных рисунков рассматривается ниже в данном разделе Подробное описание. Уровень 152 драйверов устройства включает дополнительные драйверы устройств, такие как драйвер сетевого адаптера 158, который взаимодействует с эмулируемыми устройствами на виртуальной аппаратной платформе 130(например, виртуальный сетевой адаптер 138 и т.д.), как если бы эти эмулируемые устройства были действительными физическими устройствами аппаратной платформы 102. Гипервизор 124 в общем случае отвечает за принятие запросов от драйверов устройств на уровне драйверов устройств 152, которые получаются эмулируемыми устройствами на виртуальной платформе 130, а также за преобразование запросов в соответствующие запросы для действительных драйверов устройств на уровне драйверов физических устройств гипервизора 124, который связывается с действительными устройствами на аппаратной платформе 102.
1
[19] Для передачи графических интерфейсов пользователя на дисплей удаленного клиентского терминала VM 128 далее включает видеокодер \160, взаимодействующее с драйвером 154 видеоадаптера (например, через API), для получения данных от буфера 142 кадров для кодирования (например, для сокращения ширины полосы пропускания сети) и последующей передачи по сети через драйвер сетевого адаптера 158 (например, через виртуальный сетевой адаптер 138 и, наконец, через физический сетевой адаптер 108). Видеокодер 160 выделяет и поддерживает дополнительный буфер 162 кадров для хранения данных, полученных от буфера 142 кадров, свою собственную структуру 164 данных точечного рисунка (здесь и далее именуемой структурой 164 данных точечного рисунка, соответствующей устройству кодирования) для идентификации измененных областей в дополнительном буфере 162 кадров, а также собственную очередь FIFO 166 для отслеживания простейших элементов графического изображения, выполнение которых привело к изменению областей в дополнительном буфере 162 кадров. В одном варианте реализации видеокодер 160 постоянно опрашивает драйвер 154 видеоадаптера (например, 30 или 60 раз в минуту) для копирования изменений буфера 142 кадров в дополнительный буфер 162 кадров для передачи удаленному клиентскому терминалу.
1
N
1
N
1
N
1
N
1
N
1
N
[20] Средние специалисты понимают, что различные термины, уровни и категоризация, используемые для описания компонентов виртуализации на фиг.1 можно называть по-другому, не нарушая их функциональности или духа изобретения. Например, виртуальные аппаратные платформы 130-130 можно рассматривать как часть мониторов виртуальной машины (VMM) 166-166, которые реализуют виртуальную поддержку системы, необходимую для координации действий гипервизора 124 и соответствующих VMs 128-128. Иначе виртуальные аппаратные платформы 130-130 можно рассматривать также отдельно от VMM 166-166, a VMM 166-166 можно рассматривать отдельно от гипервизора 124. Один из примеров гипервизора 124, который может использоваться в реализации изобретения, включен в качестве элемента программного продукта VMware's ESX™, который серийно выпускается компанией VMware, Inc., Пало Альто, Калифорния. Далее необходимо понимать, что реализации изобретения могут применяться в других виртуализированных компьютерных системах, таких как размещаемые системы виртуальных машин, при которых гипервизор реализован поверх операционной системы.
[21] На фиг.2 изображена структура данных "точечный рисунок" в соответствии с одной из реализации изобретения. И драйвер 154 видеоадаптера, и видеокодер 160 используют структуру данных точечного рисунка для отслеживания измененных областей буфера 142 кадров и дополнительного буфера 162 кадров, соответственно. При реализации, показанной на фиг.2, структура данных точечного рисунка является двухмерным битовым вектором, в котором каждый бит (здесь и далее именуемый "записью битового изображения") в битовом векторе представляет собой область N×N соответствующего буфера кадров. Установленный бит (также здесь и далее именуемый "помеченной" записью битового изображения) в битовом векторе указывает на то, что как минимум одно значение пиксела в соответствующей области N×N буфера кадров изменено в течение конкретного интервала времени (например, между опрашиванием запросов видеокодера 160). Например, на фиг.2 изображен пиксельный блок 200 размером 64×64 буфера кадров, где затемненные точки представляют собой значения пикселов, которые изменились в течение конкретного интервала времени. Битовый вектор 8×8 205 представляет собой соответствующий блок записей структуры данных точечного рисунка, где каждый бит (или запись битового изображения) соответствует области 8×8 в пиксельном блоке 200. Установленный бит (или помеченная запись битового изображения) в битовом векторе 205 представлена "X". Например, помеченная запись битового изображения 210 соответствует области буфера 215 кадров (все значения пикселов которой изменились в течение указанного интервала времени, на что указывают темные точки). На фиг.2 показаны другие помеченные записи битового изображения в битовом векторе 205, соответствующие областям в пиксельном блоке 200 буфера кадров с изменившимися значениями, на что указывают темные точки. При перемещении реализации двухмерного битового вектора структуры данных точечного изображения, аналогичного 205 на фиг.2, можно явно определить, какие области N×буфера кадров изменились в течение определенного интервала времени (а также легко пропустить области, которые не изменились в течение определенного интервала времени).
N
N
Q
Q
Q
Q
Q
q
Q
[22] На фиг.3 изображена вторая структура данных "точечный рисунок" в соответствии с одной из реализации изобретения. При реализации, изображенной на фиг.3, структура данных точечного изображения является деревом квадрантов области, где каждый уровень дерева представляет собой битовый вектор с большим разрешением из 2×2 пиксельных блоков пикселов. На фиг.3 изображен пиксельный блок 300 размером 64×64 буфера кадров, где затемненные точки представляют собой значения пикселов, которые изменились в течение конкретного интервала времени. Пиксельный блок последовательно разделяется на более и более мелкие подквадранты, до тех пор, пока каждый измененный пиксел (например, затемненные точки) содержится в более мелком подквадранте. Например, в пиксельном блоке 300 наименьшим подквадрантом является область из 8×8 пикселов, такая, как области 305, 310 и 315. Более крупные подквадранты включают подквадранты 16×16, такие как 320 и 325, а также подквадранты 32×32, такие как 330. Четырехуровневое дерево квадрантов 335 представляет собой структуру данных точечного изображения, которая соответствует пиксельному блоку 300 размером 64×64 буфера кадров. Как показано на фиг.3, каждый уровень дерева квадрантов 335 может быть реализован в виде битового вектора, биты которого соответствуют подквадранту конкретного размера в пиксельном блоке 300, от 64×64 до 8×8, в зависимости от уровня битового вектора. Узел в области дерева квадрантов 335, помеченный "X", указывает на то, что как минимум одно значение пиксела в соответствующем пиксельном блоке 300 подквадранта изменилось в течение конкретного интервала времени (т.е. затемненная точка). Например, узел 300 уровня 0 (уровня 64×64) области дерева квадрантов 335 представляет собой целый пиксельный блок размером 64×64 и помечен "X", поскольку как минимум одно значение пиксела в пиксельном блоке 300 изменилось. По контрасту, узел 330уровня (уровня 32×32) области дерева квадрантов 335 представляет собой подквадрант 330 размером 32×32 и не помечен, поскольку ни одно значение пиксела в подквадранте 330 не изменилось. Аналогично, узлы 320 и 325 уровня 2 (уровня 16×16) представляют собой подквадранты 16×16 320 и 325 соответственно, и не отмечены, поскольку ни одно значение пиксела в подквадрантах 320 и 325 не изменилось. Узлы 305, 310 и 315 уровня 3 (уровня 8×8) соответствуют областям 8×8 305, 310 и 315 пиксельного блока 300 соответственно, и соответственно помечены. В реализации дерева квадрантов структуры данных битового изображения, такой, как реализация, изображенная на фиг.3, каждый узел на более глубоком уровне дерева квадрантов области (т.е. соответствующей минимальному подквадранту, такому как область пикселов размером 8×8) является записью битового изображения. При перемещении реализации дерева квадрантов области структуры данных точечного изображения можно легко определить, какие области 8×8 (или другие подквадранты наименьшего размера) буфера кадров изменились в течение определенного интервала времени. Более того, благодаря древовидной структуре можно также легко пропустить подквадранты большего размера в буфере кадров, которые не изменились в течение определенного интервала времени. Далее необходимо понимать, что реализация дерева квадрантов области структуры данных точечного изображения может далее экономить память, используемую структурой данных точечного изображения, в зависимости от конкретной реализации дерева квадрантов области. Например, в то время как реализация двухмерного битового вектора структуры данных точечного изображения 205 на фиг.2 занимает 64 бита независимо от того, сколько областей 8×8 могут быть не отмеченными, дерево квадрантов области 335 на фиг.3 занимает меньше бит, если отмечено меньшее число областей 8×8. Как видно, реализация структуры данных точечного изображения 205 использует 64 бита, в то время как структура данных точечного изображения структуры 335 использует 33 бита. Необходимо понимать, что структура 164 данных точечного изображения устройства кодирования и структура 156 данных точечного изображения драйвера могут быть реализованы с помощью множества различных структур данных, включая структуры, изображенный на фиг.2 и 3, и что в любой конкретной реализации изобретения структура 164 может использовать структуру данных, отличную от структуры 156.
[23] На фиг.4 изображена очередь FIFO в соответствии с одной из реализаций изобретения. Видеоадаптер 140, драйвер 154 видеоадаптера и видеокодер 160 каждый используют очередь FIFO для отслеживания простейших элементов графического изображения буфера 142 кадров (для видеоадаптера 140 и драйвера 154 видеоадаптера) и дополнительный буфер 162 кадров (для видеокодера 160). Очередь FIFO 400 на фиг.4 является циклическим буфером размера 100, в котором каждая запись в очереди FIFO 400 включает порядковый номер 405 простейшего элемента графического изображения 410. При одной реализации примеры простейших элементов графического изображения включают основные инструкции рисования, такие как копирование (например, одной прямоугольной области в другую прямоугольную область), заливку (например, прямоугольной области цветом), обновление (например, существующей прямоугольной области данными отображения) и тому подобные. Например, запись очереди FIFO 415 имеет порядковый номер 8 и простейший элемент графического изображения, дающий команду видеоадаптеру 140 копировать содержимое исходного прямоугольника в область буфера 142 кадров в прямоугольник назначения в другой области буфера 142 кадров. Свободный указатель записи 420 указывает на следующую запись в очереди FIFO 400 для вставки новой записи (т.е. записи 6 очереди) и увеличивается на единицу каждый раз, когда новая запись вставляется в очередь FIFO 400. Текущий указатель записи 425 указывает на следующую запись в очереди FIFO 400, которая выполняется видеоадаптером 140 (т.е. запись очереди 97) и увеличивается на единицу каждый раз, когда видеоадаптер 140 завершает выполнение простейшего элемента графического изображения. Как показано на фиг.4, записи очереди с 6 по 96 представляют собой набор записей очереди, простейшие элементы графического изображения которых уже выполнены видеоадаптером 140 (называемые выполненными записями 430), а очереди записи с 1 по 5 и с 97 по 100 представляют собой набор записей очереди, содержащие невыполненные простейшие элементы графического изображения (называемые невыполненными записями 435). Необходимо понимать, что альтернативные реализации очередей FIFO могут использоваться как любые очереди FIFO 144, 157 и 166. Например, при одной реализации очередь FIFO 144 в видеоадаптере 140 может не иметь порядковых номеров. Аналогично, при альтернативной реализации каждому простейшему элементу графического изображения, хранящемуся в очереди FIFO, требуется одинаковое количество байт (например, 24 байта), так что могут быть получены порядковые номера (скорее, чем будут храниться как запись очереди) с помощью определения смещения от начальной точки в очереди.
[24] На фиг.5 изображена схема последовательности операций, отражающая шаги передачи запросов на рисование от приложения видеоадаптеру в соответствии с одной из реализации изобретения. Хотя шаги описаны со ссылкой на элементы удаленного настольного сервера 100 на фиг.1, необходимо понимать, что любая система, сконфигурированная для выполнения этих шагов в любом порядке, согласуется с настоящим изобретением.
[25] В соответствии с реализацией, показанной на фиг.5, на шаге 505, во время выполнения приложение 500 (т.е. одно из приложений 148, работающих на подключенной ОС OS 146) получает доступ к API графического уровня графического рисования 150 (например, GDI в Microsoft Windows) для представления на рассмотрение запросов на рисование на экран, например, для обновления его графического интерфейса пользователя в ответ на действие пользователя. На шаге 510 через подключенную ОС 146 уровень графического рисования 150 получает запросы на рисование и преобразует их в команды рисования, которые воспринимает драйвер 154 видеоадаптера. На шаге 515 уровень графического рисования 150 передает команды рисования драйверу 154 видеоадаптера. На шаге 520 драйвер 154 видеоадаптера получает команды рисования и отмечает записи структуры 156 данных точечного изображения драйвера для указания на то, что как минимум одна часть значений пикселов в областях буфера 142 кадров, соответствующих отмеченным записям структуры 156 данных будет обновлена в результате выполнения команд рисования. При одной реализации драйвер 154 видеоадаптера вычисляет или иным образом определяет область внутри буфера 142 кадров, такую как прямоугольник минимального размера, включает пикселы, которые будут обновлены в результате выполнения команд рисования (также называемый "ограничивающий прямоугольник"). Затем драйвер 154 видеоадаптера способен определить и отметить все записи битового изображения структуры 156 данных, соответствующие областям буфера 154 кадров, которые включают значения пикселов определяемой области. На шаге 525 драйвер 154 видеоадаптера преобразует команды рисования в специфичные для видеоадаптера простейшие элементы графического изображения и на шаге 530 вставляет специфичные для видеоадаптера простейшие элементы графического изображения, в свою очередь, FIFO 157, соответственно увеличивая на единицу свободный указатель записи очереди FIFO 157. На шаге 535 драйвер 154 затем вставляет простейшие элементы графического изображения в очередь FIFO 144 (например, при реализации, где очередь FIFO 144 разделяется между драйвером 154 и видеоадаптером 140) и соответственно увеличивает на единицу свободный указатель записи очереди FIFO 144. На шаге 540 видеоадаптер 140 обновляет буфер 142 кадров в соответствии с простейшими элементами графического изображения в очереди FIFO 144, когда над ними можно выполнять действия. В частности, на шаге 545, как только видеоадаптер 140 завершает выполнение простейшего элемента графического изображения, он увеличивает на единицу текущий указатель записи своей очереди FIFO 144 и на шаге 550 уведомляет драйвер 154 видеоадаптера о том, что необохдимо увеличить текущий указатель записи очереди FIFO 157, что драйвер 154 выполняет на шаге 555.
[26] На фиг.6 изображена схема последовательности операций, отражающая шаги передачи данных буфера кадров от видеоадаптера устройству кодирования в соответствии с одной из реализации изобретения. Хотя шаги описаны со ссылкой на элементы удаленного настольного сервера 100 на фиг.1, необходимо понимать, что любая система, сконфигурированная для выполнения этих шагов в любом порядке, согласуется с настоящим изобретением.
[27] В соответствии с вариантом реализации, показанным на фиг.6, видеокодер 160 - это процесс, выполняемый на подключенной ОС 146, который непрерывно опрашивает (например, каждые 30 или 60 раз в секунду) драйвер 154 видеоадаптера для поучения данных в буфер 154 изображения видеоадаптера 140 для кодирования и передачи их по сети (например, через драйвер сетевого адаптера 158) для получения удаленным клиентским терминалом. На шаге 600 видеокодер 160 через программу API, которой он обрабатывается с помощью драйвера 154 видеоадаптера, выдает запрос на обновление буфера кадров драйверу 154 и передает драйверу 154 ссылку памяти (например, указатель) на дополнительный буфер 162 кадров, чтобы разрешить драйверу 154 непосредственно изменить дополнительный буфер 162 кадров. На шаге 605 драйвер 154 получает запрос на обновление буфера кадров и на шаге 610 он перемещает структуру 156 данных для определения отмеченных записей точечного изображения, которые соответствуют областям буфера 142 кадров, измененным с предыдущего запроса обновления буфера кадров от видеокодера 160 (вследствие запросов на рисование от приложений, как показано на фиг.5). Если на шаге 615 текущая запись точечного изображения отмечается, тогда на шаге 620 драйвер 154 запрашивает соответствующую область (т.е. значения пикселов области) буфера 142 кадров от видеоадаптера 140. На шаге 625 видеоадаптер 140 получает запрос и передает запрашиваемую область буфера 142 кадров драйверу 154.
[28] На шаге 630 драйвер 154 получает запрашиваемую область буфера 142 кадров и на шаге 635 сравнивает значения пикселов в полученной области буфера 142 кадров со значениями пикселов соответствующей области в дополнительном буфере 162 кадров, которые отражают предыдущее состояние буфера 142 кадров по завершении ответа от драйвера 154 на предыдущий запрос буфера кадров на обновление от видеокодера 160. Этот шаг сравнения 635 позволяет драйверу 154 идентифицировать возможные несоответствия от визуально излишней передачи запросов на рисование приложениями, как показано на фиг.5. Например, возможно, вследствие недостаточной концентрации на оптимизации аспектов, связанных с функциональными возможностями рисования, некоторые приложения могут выдавать запросы на шаге 505 фиг.5, которые избыточно перерисовывают полностью свой графический интерфейс пользователя, даже если небольшая область графического интерфейса пользователя была в действительности изменена приложением. Подобные запросы на рисование запрашивают отметку записей в структуре 156 данных на шаге 520 фиг.5, даже если соответствующие области буфера кадров 142 отмеченных записей точечного изображения не обновлялись с новыми значениями пикселов (т.е. области соответствуют частям графического интерфейса пользователя, которые в действительности не изменялись). С такими отмеченными записями точечного изображения на шаге сравнения 635 открывается, что области буфера кадров 142 и дополнительного буфера кадров 162, соответствующие отмеченным записям точечного изображения, являются теми же самыми, поскольку значения пикселов таких областей не изменились вследствие запросов излишнего рисования, направленных приложениями (на шаге 505) по завершении ответа драйвера 154 на предыдущий запрос обновления буфера кадров от видеокодера 160.
[29] В этой связи на шаге 640, если шаг сравнения 635 указывает на то, что области буфера кадров 142 и дополнительного буфера кадров 162 являются одними и теми же, тогда на шаге 645 драйвер 154 "обрезает" структуру 156 данных точечного изображения драйвера, очищая отмеченную запись точечного изображения для указания на то, что действительные значения пикселов не изменились в соответствующей области буфера кадров 142 с момента завершения ответа драйвера видеоадаптера на предыдущий запрос на обновление буфера кадров от видеокодера 160. На фиг.7 изображен пример подгонки структуры данных "точечный рисунок" в соответствии с одной из реализации изобретения. На фиг.7 показал пиксельный блок 700 размером 88×72 буфера кадров 142. Каждый разделенный блок, такой как 705, представляет собой область пикселов размером 8×8, которая соответствует записи точечного изображения в структуре 156 данных. Как показано на фиг.7, приложение отправило запрос на рисование в соответствии с шагом 505 фиг.5 нарисовать смайлик, изображенный в пиксельном блоке 700. Однако запросы на рисование, выданные приложением, неэффективно требуют перерисовки целого пиксельного блока 700, а не просто запрос на рисование конкретных пикселов на самом смайлике. В этой связи каждая из записей точечного изображения в соответствующем блоке 710 точечного изображения размером 11×9 структуры 156 данных помечаются драйвером видеоадаптера в соответствии с шагом 420 фиг.5 (как отмеченная запись точечного изображения 715). Однако, когда видеокодер 160 направляет запрос на обновление буфера кадров драйверу 154, как описано по отношению к фиг.6, драйвер 154 способен отрезать блок точечного изображения 710, тем самым создавая блок точечного изображения 720, с помощью создания очищающих записей точечного изображения, такие как неотмеченное точечное изображение 725, соответствующие области которого в буфере изображения 142 в действительности не изменились (т.е. не содержали измененного пиксела смайлика) в соответствии с шагом 645 фиг.6.
[30] Однако, возвращаясь к фиг.6, если на шаге 640 шаг сравнения 635 указывает на то, что области буфера кадров 142 и дополнительного буфера кадров 162 различны (т.е. действительные значения пикселов в области буфера кадров 142 изменились в результате запросов на рисование от приложений на шаге 505 с момента завершения ответа на предыдущий запрос на изменение буфера кадров от видеокодера 160), то на шаге 650 драйвер 154 копируют значения пикселов в область буфера кадров 142 в соответствующую область дополнительного буфера 162 кадров для корректного отражения в дополнительном буфере 162 кадров измененных значений пикселов в область буфера кадров 142. На шаге 655, если драйвер 154 не завершил перемещение структуры 156 данных, цикл возвращается на шаг 610. Если на шаге 655 драйвер 154 завершает перемещение структуры 156 данных, то на шаге 660 драйвер 154 предоставляет копию структуры 156 данных видеокодеру 160, которая становится и здесь и далее именуется структурой 164 данных. В той степени, в которой отмеченные записи точечного изображения были очищены в структуре 156 данных на шаге 645, структура 164 данных отражает более оптимизированный вид областей в дополнительном буфере 162 кадров, которые содержат действительные измененные значения пикселов. На шаге 665 драйвер 154 очищает все отмеченные записи точечного изображения в структуре 156 данных, подготавливаясь к получению последующего запроса на обновление буфера кадров от видеокодера 160. На шаге 670 драйвер 154 предоставляет видеокодер 160 порядковый номер последнего простейшего элемента графического изображения в очереди FIFO 157 для его выполнения в буфере 142 кадров по выпуску запроса на обновление буфера кадров на шаге 600, указывая видеокодеру 160 на то, что он завершил свой ответ на запрос на обновление буфера кадров, выпущенный на шаге 600. В очереди FIFO реализации шага 4, например, порядковым номером, предоставленным видеокодеру 160 на шаге 670 является 96, что представляет собой запись очереди сразу же перед тем, как на запись очереди указывает указатель текущей записи 425.
[31] По завершении ответа драйвера 154 на запрос на обновление буфера кадров, отправляемый видеокодером 160 на шаге 600 дополнительный буфер 162 кадров содержит все измененные значения пикселов, получающиеся в результате запросов на рисование от приложений (с шага 505 на фиг.5) с момента завершения ответа на предыдущий запрос на обновление от видеокодера 160 и структура 164 данных содержит отмеченные записи точечных рисунков, которые указывают, какие области в дополнительном буфере изображений 162 содержат такие измененные значения пикселов.
[32] Имея подобную информацию, на шаге 675 видеокодер 160 может переместить структуру 164 данных для отмеченных записей точечного изображения и извлечь только те области из буфера 162 кадров, которые соответствуют таким отмеченным записям точечного рисунка для кодирования и передачи на удаленный клиентский дисплей. Однако в одной реализации изобретения видеокодер 160 может затем сократить ширину полосы пропускания, необходимую для передачи изменений в буфер 142 кадров на удаленный клиентский дисплей при помощи выборочной передачи простейших элементов графического изображения, которые описывают изменения, совершенные с буфером 142 кадров, а не передавать действительные соответствующие изменения данных отображения, которые отражаются в дополнительном буфере 162 кадров. На фиг.8 приведен один из примеров экономии полосы пропускания при передаче простейшего элемента графического изображения на удаленный клиентский дисплей, а не передача соответствующих изменений данных отображения, происходящих с буфером кадров. Блок 800 представляет собой пиксельный блок размером 88×72 буфера 142 кадров. Каждый разделенный блок, такой как 805, представляет собой область пикселов размером 8×8, которая соответствует записи точечного изображения в структуре 156 данных. Как показано на фиг.8, видеоадаптер 140 собирается выполнить "копию" простейшего элемента графического изображения 810 записи очереди FIFO 140 для копирования существующего прямоугольника в другую область пиксельный блок 800 (т.е. аналогичную записи очереди 415 фиг.4). По выполнении простейшего элемента графического изображения 810 пиксельный блок 800 буфера 142 кадров 142 преобразуется в пиксельный блок 815 (т.е. прямоугольник скопирован в новую область блока пикселов).
[33] Аналогично, в соответствии с шагом 520 фиг.5, структура 156 также обновляется, как показано блоком структуры данных точечного изображения 820. В то время как уравнение 825 раскрывает, что передача измененных данных отображения в буфере 142 кадров на удаленный клиентский терминал включает передачу около 3840 байт данных в несжатом формате, уравнение 830 раскрывает, что передача простейшего элемента графического изображения 810 самого по себе потребует только лишь 24 байт данных (т.е. при этом удаленный клиентский терминал будет выполнять полученный простейший элемент графического изображения для получения данных дисплея). Более того, в то время как технологии кодирования сжатия могут сократить объем передаваемых данных, даже оптимальная технология сжатия данных, которая сокращает размер несжатого формата, например, в 100 раз, все равно потребует передачи 38,4 байт информации, что по-прежнему больше, чем 24 байта простейшего элемента графического изображения. Другим преимуществом является сокращение времени работы центрального процессора. Например, в то время как может быть возможно использовать данные отображения сжатия до одинакового размера с соответствующим простейшим элементом графического изображения или даже меньше, передача простейшего элемента графического изображения требует значительно меньше времени работы центрального процессора, чем требует необходимый алгоритм сжатия.
[34] На фиг.9 изображена схема последовательности операций, отражающая шаги передачи простейших элементов графического изображения от видеоадаптера устройству кодирования в соответствии с одной из реализации изобретения. Хотя шаги описаны со ссылкой на элементы сервера удаленного терминального доступа 100 на фиг.1, необходимо понимать, что любая система, сконфигурированная для выполнения этих шагов в любом порядке, согласуется с настоящим изобретением.
[35] На шаге 900 видеокодер 160 получает порядковый номер, передаваемый драйвером 154 видеоадаптера по завершении запроса на обновление буфера кадров на шаге 670 фиг.6. На шаге 905 видеокодер 160 далее передает порядковый номер и ссылку памяти очереди FIFO 166 драйверу 154 в запросе на список простейших элементов графического изображения, имеющих отношение к обновленным данным дисплея, содержащимся в дополнительном буфере 162 кадров, полученным на шаге 900. Когда драйвер 154 получает запрос на шаге 910, он на шаге 915 определяет те записи очереди своей очереди FIFO 157, которые имеют порядковые номера включительно до порядкового номера, полученного в запросе, и копирует эти записи в очередь FIFO 166 для доступа с помощью видеокодера 160. Например, при одной реализации изобретения очередь FIFO 157 драйвера 154 обновляется в соответствии с шагами, изображенными на фиг.5 (т.е. шаги 530 и 555), и реализуется аналогично тому, как реализуется очередь FIFO 400 фиг.4, и драйвер 154 далее сохраняет копию предыдущего порядкового номера, который был передан видеокодеру 160 на шаге 670 фиг.6 для обновления запроса буфера кадров сразу перед текущим запросом на обновление буфера кадров, который привел к выпуску запроса на список простейших элементов графического изображения шага 900 с помощью видеокодера 160. Этот предыдущий порядковый номер представляет собой порядковый номер последнего простейшего элемента графического изображения в очереди FIFO 157, который был использован для обновления буфера 142 кадров в запросе на обновления буфера кадров сразу перед запросом на обновление текущего буфера кадров. В этой связи эти простейшие элементы графического изображения в записях очереди FIFO 157, имеющие порядковые номера, следующие за данным порядковым номером и выше (и включая) порядковый номер, полученный на шаге 905, представляют собой простейшие элементы графического изображения, которые обновили данные дисплея, скопированные в дополнительный буфер 162 кадров на шаге 650 фиг.6. При подобной реализации драйвер 154 копирует записи очереди этих простейших элементов графического изображения из своей очереди FIFO 157 в очередь FIFO 166 на шаге 920. На шаге 925 драйвер 154 далее очищает либо удаляет эти записи очереди из своей собственной очереди FIFO 157 и уведомляет видеокодер 160 о том, что он завершил ответы на список простейших элементов графического изображения, запрошенный на шаге 905.
[36] Необходимо понимать, что альтернативные реализации могут использовать другие реализации очереди FIFO 157, которая обновляется способом, отличным от процесса, показанного на фиг.5. Например, при одной альтернативной реализации простейшие элементы графического изображения не вставляются в очередь FIFO 157 на шаге 530. Скорее только простейшие элементы графического изображения, завершенные видеоадаптером 140 на шаге 550, включаются в очередь FIFO 157. В частности, шаг 550 изменяется так, что видеоадаптер 140 передает завершенные простейшие элементы графического изображения драйверу 154, который затем вставляет их, в свою очередь, FIFO 157. При такой реализации очередь FIFO 157 может быть реализована как простой векторный буфер, и она не требует свободного указателя записи 420 или текущего указателя записи 425. В частности, все записи от начала очереди FIFO 157 вплоть до запрашиваемого порядкового номера предоставляются видеокодеру 160 на шаге 910 и на шаге 915, оставшиеся записи перемещаются в начало очереди FIFO 157 после удаления записей, предоставленных на шаге 925.
[37] После шага 925 видеокодер 160 имеет доступ к обновленным данным отображения в дополнительном буфере 162 кадров, структуре 164 данных, указывающей, какие области дополнительного буфера 162 кадров включают обновленные данные отображения, и очередь FIFO 166, которая включает список простейших элементов графического изображения, которые выполняют обновленные данные изображения в дополнительном буфере 162 кадров. В этой связи видеокодер 160 способен определить более эффективный способ распространения изменений данных отображения удаленному клиентскому терминалу между передачей самих обновленных данных отображения или передачей простейших элементов графического изображения, исполняющих обновленные данные отображения. Например, возвращаясь к реализации, изображенной на фиг.9, на шаге 930 видеокодер 160 просматривает список простейших элементов графического изображения в очереди FIFO 166 для идентификации изолированных простейших элементов графического изображения, которые рисуются в областях буфера кадров в очереди FIFO 166. На шаге 935, если передача идентифицированного простейшего элемента графического изображения происходит быстрее, чем передача количества данных отображения, на которые влияет подобный простейший элемент графического изображения, тогда на шаге 940 видеокодер 160 очищает эти записи точечного изображения в структуре 164 данных, соответствующей областям буфера 162 кадров, на которые влияет простейший элемент графического изображения, и на шаге 945 передает простейший элемент графического изображения на удаленный клиентский терминал. Если на шаге 935 видеокодер 160 определит, что более эффективной является передача данных отображения, а не идентифицированного простейшего элемента графического элемента, то на шаге 950 устройство кодирования дисплея передает данные в дополнительный буфер 162 кадров (т.е. в соответствии с отмеченными записями в структуре 164 данных). Необходимо понимать, что различные способы могут использоваться видеокодером 160 для определения на шаге 935, передавать ли обновленные данные дисплея или соответствующие простейшие элементы графического изображения на удаленный клиентский терминал в соответствии с идеей изобретения, изложенной в данном документе. Например, при одной реализации изобретения видеокодер 160 сравнивает количество данных отображения, на которые влияет простейший элемент графического изображения, идентифицируемый на шаге 930, с размером самого простейшего элемента графического изображения. При альтернативной реализации изобретения определенные считается, что простейшие элементы графического изображения (например, копирование или заполнение простейших элементов графического изображения) являются более эффективными при передаче, чем данные отображения, на которые они влияют. Необходимо понимать, что любое количество эвристических процедур для определения, отправлять простейший элемент графического изображения или данные отображения, на которые он влияет в соответствии с изложенной в данном документе идеей изобретения.
1
[38] Необходимо понимать, что различные изменения и дополнения могут быть выполнены в конкретных реализациях изобретения, описанных в настоящем документе, без отрыва от более широкой идеи и области действия настоящего изобретения, изложенной в прилагаемой форумле изобретения. Например, хотя на фиг.1 изображена реализация, при которой видеокодер 160 и драйвер видеоадаптера 154 работают на виртуальной машине 128, которая связывается с виртуальным видеоадаптером 140 в гипервизоре 124, необходимо понимать, что реализации настоящего изобретения могут использоваться в любой архитерктуре виртуальных рабочих столов, включая невиртуальные архитектуры. Более того, при альтернативных реализациях изобретения скорее будут использоваться не видеокодер 160 и виртуальный видеоадаптер 140 в качестве программных элементов сервера, а аппаратные элементы для каждого из них или для любого из них. Аналогично, необходимо понимать, что альтернативные реализации изобретения могут не потребовать никакого виртуального видеоадаптера. Вместо этого в подобных альтернативных реализациях, например, драйвер видеоадаптера 154 может выделять буфер изображения 142 и очередь FIFO 144 и управлять ими самостоятельно. Аналогично, необходимо понимать, чтор очередь FIFO 166 может не потребоваться в альтернативных реализациях изобретения. Вместо этого в подобных альтернативных реализациях видеокодер 160 способен получать непосредственный доступ к очереди FIFO 157 драйвера видеоадаптера 154, например, через свои собственные указатели чтения. Аналогично, необходимо понимать, что другие различные структуры данных и буферы, описываемые в данном документе, могут выделяться и поддерживаться альтернативными элементами системы, не нарушая духа изобретения. Например, скорее вместо того, чтообы видеокодер 160 выделял и поддерживал вторичный буфер изображения 162 и передавал ссылку памяти драйверу видеоадаптера 154, как это подробно изложено на шаге 600 фиг.6, драйвер видеоадаптера 154 может выделять и поддерживать вторичный буфер изображения 162 (а также структуру 164 данных) и предоставлять доступ к ссылке памяти для видеокодера 160 при альтернативной реализации изобретения. Кроме того, необходимо понимать, что некоторые функции и шаги, выполняемые драйвером видеоадаптера, как это описано в данном документе, могут быть реализованы в отдельном расширении или элементе ранее существующего или стандартного драйвера видеоадаптера (т.е. видеокодер 160 может сообщаться с отдельным расширением драйвера видеоадаптера скорее, чем с самим ранее существующим драйвером видеоадаптера). Аналогично, необходимо понимать, что в альтернативных реализациях изобретения могут варьироваться количество и типы данных, обмен которыми происходит между элементами системы, как это описано в данном документе, или использовать известные технологии оптимизации, не нарушая духа изобретения. Например, скорее вместо того, чтобы видеокодер 160 передавал порядковый номер драйверу видеоадаптера 154 на шаге 905 фиг.9, при альтернативной реализации изобретения драйвер видеоадаптера 154 внутренне отслеживает предыдующие простейшие элементы графического изображения, которые он предоставил устройству кодирования дисплея в ходе предыдущих итераций на шаге 920 так, что он способен предоставить соответствующий простейший элемент графического изображения видеокодеру 160 без необходимости в порядковом номере. Кроме того, вместо предоставления копии стуктуры 156 данных в качестве структуры 164 данных на шаге 660 фиг.6 возможно предоставить при альтернативной реализации изобретения только соответствующие части стуктуры 156 для видеокодера 160, или иначе использовать альтернативную структуру 156 данных для обеспечения соответствующих подобных частей данных точечного изображения драйвера для видеокодера 160. Аналогично, в альтернативной реализации изобретения может не быть очереди FIFO 157 в драйвере видеоадаптера 154, скорее, записи очереди запросов FIFO из очереди FIFO 144 через видеоадаптер 140. Аналогично, вместо того (или в дополнение к тому), чтобы видеокодер 160 постоянно опрашивал драйвер видеоадаптера 154, в альтернативных реализациях изобретения драйвер видеоадаптера 154 может запустить прерывание видеокодерадисплея 160 на шаге 555 фиг.5 для уведомления видеокодера 160 о получении простейшего элемента графического изображения, который обновил буфер изображения 142. Таким образом, видеокодеру 160 нет необходимости выдавать постоянные запросы драйверу видеоадаптера 154, например, если буфер изображения 142 не изменяется.
[39] Различные реализации изобретения, описанные в данном документе, могут использовать различные операции, реализуемые на компьютерах, включая данные, хранящиеся в компьютерных сиситемах. Например, эти операции могут потребовать физических действий с физическими количествами; обычно, но необязательно, эти количества могут принимать форму магнитных сигналов, когда они, или их представления, могут сохраняться, передаваться, объединяться, сравниваться или обрабатываться еще каким-либо образом. Более того, подобные дейстия часто обозначаются терминами, такими как создание, идентификация, определение или сравнение. Любые операции, описываемые в данном документе, которые представляют собой часть одной или нескольких реализации изобретения, могут быть целесообразными машинными операциями. Кроме того, одна или более реализации изобретения имеет отношение также к устройству или аппаратуре для выполнения этих операций. Аппаратура может специально создаваться для специфичных требуемых задач, или она может быть выборочно активизироваться компьютером общего назначения, либо может создаваться компьютерной программой, хранящейся в компьютере. В частности, различные машины общего назначения могут использоваться компьютерными программами, написанными в соответствии с инструкциями, изложенными в данном документе, или может быть удобнее создать более специализированную аппаратуру для выполнения требуемых операций.
[40] Различные реализации изобретения, описанные в данном документе, могут быть реализованы на практике с другими конфигурациями компьютерных систем, включая портативные устройства, микропроцессорные системы, бытовую электронную аппаратуру, основанную на работе микропроцессоров, миникомпьютеры, универсальные вычислительные машины и тому подобные устройства.
[41] Одна или несколько реализации настоящего изобретения может быть реализована в качестве одной или более компьютерных программ, или одного, или более программных модулей на одном или нескольких машиночитаемых носителях. Термин "машиночитаемый носитель" означает любое устройство хранения данных, которое может хранить данные, которые впоследствии могут быть введены в комьютерную систему. Машиночитаемый носитель может быть основан на любой существующей или впоследствии разработанной технологии для включения компьютерных программ таким образом, чтобы они могли быть прочитаны компьютером. Примеры машиночитаемых носителей включают жетские диски, сетевые устройства хранения данных (NAS), постояненые запоминающие устройства, оперативные запоминающие устройства (например, устройства флэш-памяти), компакт диски CD, CD-ROM, CD-R или CD-RW, магнитную ленту и другие оптические и неоптические устройства хранения данных. Машиночитаемый носитель также может распространяться в подключенной компьютерной системе так, что код машиночитаемого носителя будет сохраняться и выполняться в распределенном режиме.
[42] Хотя одна или несколько реализации настоящего изобретения описываются подробно для ясности их понимания, очевидно, что определенные изменения и дополнения могут быть выполнены в пределах области действия формулы изобретения. Соответственно, описываемые реализации изобретения должны рассматриваться как описательные, а не ограничительные, и область действия формулы изобретения не должна ограничиваться подробной информацией, изложенной в данном документе, если иное не заявлется в формуле изобретения, но может изменяться в пределах области действия и эквивалентов формулы изобретения. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims.
[43] Кроме того, при том, что описанные способы виртуализации в общем подразумевают, что виртуальные машины представляют интерфейсы, соответствующие конкретной системе аппаратного обеспечения, средние специалисты должны понимать, что описанные способы с различными реализациями изобретения, могут использоваться совместно с виртуализацией, которая не соответствует непосредственно любой конкретной аппаратной системе. Системы виртуализации в соответствии с различными реализациями, реализуемым в качестве подключенных реализации, неподключенных реализаций или реализаций, которые стирают различия между ними, предусматриваются. Более того, различные операции виртуализации могут быть полностью или частично реализованы с помощью аппаратного обеспечения. Например, реализация аппаратного обеспечения может исользовать таблицу поиска запросов доступа к хранению для защиты данных, находящихся вне диска.
[44] Допустимы различные варианты, изменения, дополнения и усовершенствования, независимо от степени виртуализации. Следовательно, программное обеспечение виртуализации может включать элементы управляющего компьютера, консоли или подключенной операционной системы, которая выполняет функции виртуализации. Могут предоставляться многочисленные варианты элементов, операций или структур, описанных в данном документе. Наконец, разграничение различных элементов, операций и массивов данных в некотором роде является произвольным, и конкретные операции проиллюстрированы в контексте специфичных показательных конфигураций. Предусматривается другое распределение функциональных возможностей, и оно может входить в область действия изобретения. В общем случае, структуры и представленные функциональные возможности, представленные в качестве отдельных элементов в типовой конфигурации, могут быть реализованы в качестве объединенной структуры или элемента. Аналогично, структуры и функциональные возможности, представленные в качестве одиночного элемента, могут быть реализованы как отдельные элементы. Эти и прочие варианты, изменения, дополнения и усовершенствования могут входить в область действия прилагаемой формулы изобретения.