Энтропийный кодер для сжатия изображения

Иллюстрации

Показать все

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

Реферат

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

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

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

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

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

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

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

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

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

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

фиг.3 изображает операционную среду для аспектов практической реализации настоящего раскрытия,

фиг.4 изображает операционную среду для аспектов практической реализации настоящего раскрытия,

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

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

фиг.7 иллюстрирует пример процесса декодирования,

фиг.8 иллюстрирует пример процесса кодирования,

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

Вычислительные операционные среды в общем виде

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

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

Система удаленного рабочего стола представляет собой компьютерную систему, которая поддерживает приложения, которые могут исполняться дистанционно клиентскими компьютерными системами. Входные данные вводятся на клиентской компьютерной системе и переносятся по сети (например, с использованием протоколов, основанных на семействе протоколов международного союза связи (ITU) T.120, таких как протокол удаленного рабочего стола (RDP)) в приложение на терминальном сервере. Приложение обрабатывает входные данные, как если бы входные данные вводились на терминальном сервере. Приложение генерирует выходные данные в ответ на принятые входные данные, и выходные данные переносятся по сети в клиентскую компьютерную систему.

Варианты осуществления могут выполняться на одном или нескольких компьютерах. Фиг.1 и 2 и последующее описание предназначены, чтобы обеспечить краткое общее описание подходящей вычислительной операционной среды, в которой раскрытие может быть реализовано. Специалистам должно быть понятно, что компьютерные системы 200, 300 могут иметь все или некоторые из компонентов, описанных в отношении компьютера 100 по фиг.1 и 2.

Термин «схемы», используемый по всему описанию, может включать в себя компоненты аппаратных средств, такие как аппаратные контроллеры прерываний, накопители на жестких дисках, сетевые адаптеры, графические процессоры, аппаратные средства, основанные на видео/аудио кодеках, и встроенные программы (firmware)/программное обеспечение, используемое для функционирования с такими аппаратными средствами. Термин «схемы» также может включать в себя микропроцессоры, сконфигурированные для выполнения функций посредством встроенного программного обеспечения или посредством переключателей, установленных некоторым способом, или одним или несколькими логическими процессорами, например, одним или несколькими ядрами многоядерного центрального процессора. Логические процессоры в данном примере могут быть сконфигурированы посредством инструкций программного обеспечения, воплощающих логику, функционирующую для выполнения функций, которые загружаются из памяти, например, оперативного запоминающего устройства (RAM, ОЗУ), постоянного запоминающего устройства (ROM, ПЗУ), встроенного программного обеспечения и/или виртуальной памяти. В иллюстративных вариантах осуществления, где схемы включают в себя комбинацию аппаратных средств и программного обеспечения, разработчик может записывать исходный код, воплощающий логику, которая по существу транслируется в считываемый машиной код, который может быть выполнен логическим процессором. Поскольку специалист может понять, что состояние уровня техники развилось до той точки, где существует небольшая разница между аппаратными средствами, программным обеспечением или комбинацией аппаратных средств/программного обеспечения, выбор аппаратных средств против программного обеспечения для выполнения функций является просто конструктивным выбором. Таким образом, поскольку специалист может понять, что процесс программного обеспечения может быть преобразован в эквивалентную структуру аппаратных средств и структура аппаратных средств сама по себе может быть преобразована в эквивалентный процесс программного обеспечения, выбор осуществления в аппаратных средствах против осуществления в программном обеспечении является тривиальным и остается за разработчиком.

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

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

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

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

Обратимся теперь к фиг.2, на которой изображен другой вариант осуществления иллюстративной компьютерной системы 100. Компьютерная система 100 может включать в себя логический процессор 102, например, исполнительное ядро. Хотя иллюстрируется один логический процессор 102, в других вариантах осуществления компьютерная система 100 может иметь многочисленные логические процессоры, например, многочисленные исполнительные ядра на одной подложке процессора и/или многочисленные подложки процессора, каждая из которых может иметь многочисленные исполнительные ядра. Как показано на данной фигуре, различные считываемые компьютером носители 110 могут быть соединены между собой одной или несколькими системными шинами, которые подсоединяют различные компоненты системы к логическому процессору 102. Системные шины могут быть любого типа из нескольких типов структур шин, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из разнообразного множества архитектур шин. В иллюстративных вариантах осуществления считываемые компьютером носители 110 могут включать в себя, например, оперативное запоминающее устройство (ОЗУ) 104, запоминающее устройство 106, например, электромеханический накопитель, твердотельный накопитель, например, встроенное программное обеспечение 108, например, перепрограммируемое ПЗУ или ОЗУ, и сменные запоминающие устройства 118, как, например, CD-ROM диски, дискеты, диски DVD, флэш-накопители, внешние запоминающие устройства и т.д. Специалистам должно быть понятно, что могут быть использованы другие типы считываемых компьютером носителей, такие как магнитные кассеты, платы флэш-памяти, цифровые видеодиски, картриджи со съемным магнитным диском Бернулли.

Считываемые компьютером носители обеспечивают энергонезависимое хранение исполняемых процессором инструкций 122, структур данных, программных модулей и других данных для компьютера 100. Базовая система ввода/вывода (BIOS) 120, содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютерной системы 100, как, например, во время пуска, могут сохраняться во встроенном программном обеспечении 108. Несколько программ могут храниться во встроенном программном обеспечении 108, в запоминающем устройстве 106, в ОЗУ 104 и/или в сменных запоминающих устройствах 118 и могут исполняться логическим процессором 102, включая операционную систему и/или прикладные программы.

Команды и информация могут приниматься компьютером 100 через устройства 116 ввода, которые могут включать в себя клавиатуру и координатно-указательное устройство, но не ограничиваются ими. Другие устройства ввода могут включать в себя микрофон, джойстик, игровой пульт, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к логическому процессору 102 через интерфейс с последовательным портом, который связан с системной шиной, но могут быть подсоединены другими интерфейсами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Дисплей или другие типы устройств отображения также могут быть подсоединены к системной шине через некоторый интерфейс, такой как видеоадаптер, который может быть подсоединен к графическому процессору 112 или быть его частью. В дополнение к дисплею, компьютеры обычно включают в себя периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры. Иллюстративная система также включает в себя хост-адаптер, шину интерфейса малых компьютерных систем (SCSI) и внешнее запоминающее устройство, подсоединенное к SCSI шине.

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

При использовании в сетевой среде LAN или WAN компьютерная система 100 может быть подсоединена к LAN или WAN сети через сетевую интерфейсную плату (NIC) 114. Плата NIC 114, которая может быть внутренней или внешней, может быть подсоединена к системной шине. В сетевой среде программные модули, показанные относительно компьютерной системы 100 или ее частей, могут сохраняться в удаленном запоминающем устройстве. Должно быть понятно, что описанные здесь сетевые соединения являются примерами и что можно использовать другие средства для установления линии связи между компьютерами. Более того, хотя предполагается, что многочисленные варианты осуществления настоящего раскрытия особенно хорошо подходят для компьютерных систем, ничего в этом документе не предназначено, чтобы ограничить раскрытие этими вариантами осуществления.

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

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

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

Обратимся теперь к фиг.3 и 4, на которых изображены высокоуровневые блок-схемы компьютерных систем, сконфигурированных для реализации виртуальных машин. Как показано на этих фигурах, компьютерная система 100 может включать в себя элементы, описанные на фиг.1 и 2, и компоненты, функционирующие для осуществления виртуальных машин. Одним из таких компонентов является гипервизор 202, который в уровне технике также может упоминаться как монитор виртуальных машин. Гипервизор 202 в изображенном варианте осуществления может конфигурироваться для управления и арбитража доступа к аппаратным средствам компьютерной системы 100. Вообще говоря, гипервизор 202 может генерировать среды исполнения программ, называемые разделами, с дочернего раздела 1 по дочерний раздел N (где N - целое число, большее или равное 1). В некоторых вариантах осуществления дочерний раздел может рассматриваться как базовый блок изоляции, поддерживаемой гипервизором 202, то есть каждому дочернему разделу может быть поставлен в соответствие набор ресурсов аппаратных средств, например, память, устройства, логические процессоры и т.д., которые находятся под управлением гипервизора 202 и/или родительского раздела, и гипервизор 202 может изолировать один раздел от доступа ресурсов других разделов. В вариантах осуществления гипервизор 202 может быть автономным программным продуктом, частью операционной системы, встроенным программным обеспечением материнской платы, специализированной интегральной схемой или их комбинацией.

В вышеупомянутом примере компьютерная система 100 включает в себя родительский раздел 204, который также может считаться доменом 0 в сообществе открытого исходного кода. Родительский раздел 204 может быть сконфигурирован, чтобы обеспечивать ресурсы для гостевых операционных систем, исполняющихся в дочерних разделах 1-N, посредством использования поставщиков 228 услуг виртуализации (VSP), которые также известны как внутренние конечные драйверы в сообществе открытого исходного кода. В этой иллюстративной архитектуре родительский раздел 204 может управлять доступом к базовым аппаратным средствам. Поставщики VSP 228 могут быть использованы для мультиплексирования интерфейсов в отношении ресурсов аппаратных средств посредством клиентов услуг виртуализации (VSC), которые также известны как внешние конечные драйверы в сообществе открытого исходного кода. Каждый дочерний раздел может включать в себя один или несколько виртуальных процессоров, таких как виртуальные процессоры 230-232, в отношении которых гостевые операционные системы 220-222 могут выполнять управление и планирование логических соединений для выполнения на них. В основном, виртуальные процессоры 230-232 представляют собой исполняемые инструкции и ассоциированную информацию состояния, которые обеспечивают представление физического процессора со специфической архитектурой. Например, одна виртуальная машина может иметь виртуальный процессор, имеющий характеристики процессора Intel x86, тогда как другой виртуальный процессор, может иметь характеристики процессора PowerPC. Виртуальные процессоры компьютерной системы в этом примере могут быть поставлены в соответствие логическим процессорам компьютерной системы, так что инструкции, которые реализуют виртуальные процессоры, будут поддерживаться логическими процессорами. Таким образом, в этих иллюстративных вариантах осуществления может одновременно осуществляться множество виртуальных процессоров, тогда как другой логический процессор исполняет инструкции гипервизора. Вообще говоря, и как иллюстрируется на фигурах, комбинация виртуальных процессоров, различных VSC клиентов и памяти в некотором разделе может рассматриваться как виртуальная машина, как, например, виртуальная машина 240 или 242.

В основном, гостевые операционные системы 220-222 могут включать в себя любую операционную систему, такую как, например, операционные системы от Microsoft®, Apple®, сообщества открытого исходного кода и т.п. Гостевые операционные системы могут включать в себя режимы функционирования пользователя/ядра и могут иметь ядра, которые включают в себя планировщики, диспетчеры памяти и т.д. Режим ядра может включать в себя режим исполнения в логическом процессоре, который предоставляет доступ по меньшей мере инструкциям привилегированного процессора. Каждая гостевая операционная система 220-222 может иметь ассоциированные файловые системы, которые могут иметь приложения, хранящиеся в них, такие как терминальные серверы, серверы электронной коммерции, серверы электронной почты и т.п., и гостевые операционные системы как таковые. Гостевые операционные системы 220-222 могут планировать логические соединения для их исполнения на виртуальных процессорах 230-232, и примеры таких приложений могут приводиться в исполнение.

Обратимся теперь к фиг.4, на которой изображена альтернативная архитектура, которая может быть использована для реализации виртуальных машин. Фиг.4 изображает компоненты, подобные компонентам по фиг.3, однако, в этом иллюстративном варианте осуществления, гипервизор 202 может включать в себя поставщиков 228 услуг виртуализации и драйверы 224 устройств, и родительский раздел 204 может содержать утилиты 236 конфигурации. В этой архитектуре гипервизор 202 может выполнять такие же или подобные функции, как гипервизор 202 фиг.3. Гипервизор 202 по фиг.4 может быть автономным программным продуктом, частью операционной системы, встроенным программным обеспечением материнской платы, или часть гипервизора 202 может быть реализована специализированными интегральными схемами. В этом примере, родительский раздел 204 может иметь инструкции, которые могут быть использованы, чтобы конфигурировать гипервизор 202, однако запросы доступа к аппаратным средствам могут обрабатываться гипервизором 202 вместо передачи в родительский раздел 204.

Обратимся теперь к фиг.5, на которой компьютер 100 может включать в себя схемы, сконфигурированные для обеспечения услуг удаленного рабочего стола. В иллюстративном варианте осуществления изображенная операционная система 400 может работать непосредственно на аппаратных средствах, или гостевые операционные системы 220 или 222 могут быть реализованы виртуальной машиной, такой как VM 216 или VM 218. Базовые аппаратные средства 208, 210, 234, 212 и 214 показаны пунктирными линиями, чтобы идентифицировать, какие аппаратные средства могут быть виртуализированы.

Дистанционные услуги могут быть обеспечены по меньшей мере для одного клиента, такого как клиент 401 (хотя изображен один клиент, дистанционные услуги могут быть обеспечены для нескольких клиентов). Иллюстративный клиент 401 может включать в себя терминал компьютера, который реализуется аппаратными средствами, сконфигурированными направлять входные данные пользователя в сеанс удаленного сервера и отображать информацию пользовательского интерфейса, сгенерированную сеансом. В другом варианте осуществления клиент 401 может быть реализован компьютером, который включает в себя элементы, подобные элементам компьютера 100 по фиг.1b. В этом варианте осуществления клиент 401 может включать в себя схемы, сконфигурированные для действия операционных систем, и схемы, сконфигурированные для эмуляции функциональных возможностей терминалов, например, приложение клиента удаленного рабочего стола, которое может исполняться одним или несколькими логическими процессорами 102. Специалисту должно быть понятно, что схемы, сконфигурированные выполнять операционную систему, также могут включать в себя схемы, сконфигурированные для эмуляции терминала.

Каждый подсоединяющийся клиент может иметь сеанс (как например, сеанс 404), который позволяет клиенту осуществлять доступ к данным и к приложениям, хранимым в компьютере 100. В основном, приложения и некоторые компоненты операционной системы могут загружаться в определенную область памяти, присвоенную определенному сеансу. Таким образом, в некоторых случаях некоторые компоненты операционной системы (OS, ОС) могут порождаться N раз (где N представляет собой число текущих сеансов). Эти различные компоненты ОС системы могут запрашивать услуги из ядра 418 операционной системы, которые могут, например, манипулировать памятью; обеспечивать считывание/запись дисков; и конфигурировать логические соединения каждого сеанса для выполнения на логическом процессоре 102. Некоторые иллюстративные подсистемы, которые могут загружаться в пространство сеанса, могут включать в себя подсистемы, которые генерируют операционные среды рабочего стола, подсистемы, которые отслеживают перемещение курсора мыши на рабочем столе, подсистемы, которые преобразуют щелчки кнопкой мыши на пиктограмме в команды, которые реализуют экземпляр программы, и т.п. Процессы, которые реализуют эти услуги, например, отслеживание перемещения курсора мыши, помечаются определенным идентификатором и загружаются в определенную область памяти, которая выделяется для сеанса.

Сеанс может быть сгенерирован диспетчером 416 сеансов, например, процесс. Например, диспетчер 416 сеансов может инициализировать и контролировать каждый дистанционный сеанс посредством генерации идентификатора сеанса для определенного пространства сеанса; посредством присваивания памяти этому пространству сеанса; и посредством генерации переменных среды системы и экземпляров процессов подсистемы в памяти, присвоенной пространству сеанса. Диспетчер 416 сеансов может быть активирован, когда операционная система 400 принимает запрос на сеанс удаленного рабочего стола.

Запрос на соединение может сначала обрабатываться транспортным стеком 410, например, стеком RDP протокола. Инструкции транспортного стека 410 могут конфигурировать логический процессор 102, чтобы он выполнял прослушивание на предмет сообщений соединения на определенном порте и направлял их в диспетчер 416 сеансов. Когда генерируются сеансы, транспортный стек 410 может создавать экземпляр стека протокола удаленного рабочего стола для каждого сеанса. Экземпляр 414 стека является иллюстративным экземпляром, который может генерироваться для сеанса 404. В общем, каждый экземпляр стека протокола удаленного рабочего стола может быть сконфигурирован направлять входные данные в ассоциированный клиент и направлять клиентские входные данные в подсистему 444 операционной среды для соответствующего дистанционного сеанса.

Как показано на данной фигуре, в одном варианте осуществления приложение 448 (хотя показано одно, другие также могут исполняться) может исполняться и генерировать массив битов. Упомянутый массив может обрабатываться графическим интерфейсом 446, который, в свою очередь, может визуализировать битовые карты, например, массивы значений пикселей, которые могут сохраняться в памяти. Как показано на фигуре, может быть создан экземпляр подсистемы 420 дистанционного отображения, которая может захватывать вызовы визуализации и посылать эти вызовы по сети в клиент 401 посредством экземпляра 414 стека для сеанса.

В дополнение к организации дистанционной работы с графическими данными и видеоданными, также может быть создан экземпляр перенаправителя 458 Plug and Play для организации дистанционной работы разнообразных устройств, таких как принтеры, mp3 плееры, клиентские файловые системы, CD-ROM дисководы и т.д. Перенаправитель 458 Plug and Play может принимать информацию от компонента клиентск