JP2013542515A - 異環境間リダイレクション - Google Patents

異環境間リダイレクション Download PDF

Info

Publication number
JP2013542515A
JP2013542515A JP2013531845A JP2013531845A JP2013542515A JP 2013542515 A JP2013542515 A JP 2013542515A JP 2013531845 A JP2013531845 A JP 2013531845A JP 2013531845 A JP2013531845 A JP 2013531845A JP 2013542515 A JP2013542515 A JP 2013542515A
Authority
JP
Japan
Prior art keywords
application
operating system
mobile
graphics
desktop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2013531845A
Other languages
English (en)
Inventor
リーブス、ブライアン
リーブス、ポール
テルツ、リチャード
リーブス、デイビッド
サーパル、サンジブ
タイゲ、クリストファー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Z124 Co
Original Assignee
Z124 Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Z124 Co filed Critical Z124 Co
Publication of JP2013542515A publication Critical patent/JP2013542515A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Telephone Function (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

仮想化されることなく共有カーネル上で同時に独立して動作するモバイルオペレーティングシステムとデスクトップオペレーティングシステムを有するモバイルコンピューティングデバイス。異環境間レンダリングは、モバイルオペレーティングシステムのレンダリングエンジンを用いて行なわれ、非拡張または拡張レンダリングコンテキストを作成し得る。透過的な異環境間使用モデルを容易にするために、モバイルオペレーティングシステムのアプリケーション及び/またはミラーリングされたコンテキストへの、デスクトップオペレーティングシステムに関連するユーザ環境からのアクセスが提供される。モバイルオペレーティングシステムのアプリケーション及び/またはミラーリングされたコンテキストへのアクセスは、デスクトップオペレーティングシステムのユーザ環境のメニュー内のメニューアイコンまたはメニューリストアイテムにより提供される。

Description

本願は、概して、モバイルコンピューティング環境の分野、より詳しくは、1つのモバイルコンピューティングデバイスにおいて複数のオペレーティングシステムの使用を通じた複数のユーザ環境をサポートすることに関する。
モバイルコンピューティングデバイスは、今日の社会において遍在化しつつある。例えば、2008年末の時点で、米国人の90パーセントがモバイル無線デバイスを有していた。同時に、モバイルデバイスの能力は急速に進化しており、その一例が、携帯電話機能とともに高度なコンピュータ機能も備えたスマートフォンである。モバイルプロバイダは、過去3年間に数種類のプラットフォームに基づく何百機種もの新型スマートフォンを発売した(例えば、Apple iPhone、Android、BlackBerry、Palm、Windows Mobile)。米国では、スマートフォンの普及率は2010年半ばまでに23%近くに到達し、ある年齢層では35%を超えた。欧州では、スマートフォン市場は2009年から2010年の間に41%成長し、2010年7月現在、欧州主要5カ国だけでも加入件数は6,000万件以上に上った。
スマートフォンはますます人気を博し、コンピューティング能力も向上しつつあるが、それによって提供されるユーザ体験は限定的である。具体的には、これらは一般にモバイルデバイスのハードウェア用に変更されたオペレーティングシステムを搭載しており、変更されたオペレーティングシステムでは限られた数のアプリケーションしか利用できない。例えば、多くのスマートフォンはGoogleのAndroidオペレーティングシステムを実行する。Androidが実行できるのは、Javaベースの仮想マシンランタイム環境内で動作するように特に開発されたアプリケーションだけである。これに加えて、Androidは変更されたLinuxカーネルに基づいているものの、Linuxとは異なる規格のCライブラリ、システムマネージャ及びサービスを使用する。従って、Linux用に書かれたアプリケーションは、変更またはポートしないかぎり、Androidでは動作しない。同様に、AppleのiPhoneではiOSモバイルオペレーティングシステムが採用されている。この場合も、iOSはMac OS Xから派生しているが、OS X用に開発されたアプリケーションはiOSでは動作しない。そのため、AndroidやiOS等のモバイルオペレーティングシステムには多くのアプリケーションを利用できるが、LinuxやMac OS X等、デスクトップオペレーティングシステム用の他の多数の一般的なアプリケーションは、モバイルプラットフォームでは利用できない。
従って、スマートフォンは一般に、限られた数のユーザ体験に適し、主にモバイル環境用に設計されたアプリケーションを提供する。特に、スマートフォンは、適当なデスクトップユーザ体験を提供せず、また、一般的なデスクトップアプリケーションを実行しない。その結果、多くのユーザはスマートフォン、ラップトップ、及び/またはタブレットコンピュータ等、複数のコンピューティングデバイスを持ち、使用する。この場合、デバイスごとにCPU、メモリ、ファイル記憶装置及びオペレーティングシステムが異なる。
スマートフォンと他のコンピューティングデバイスの間の接続とファイル共有を可能にするには、1つのデバイス(例えば、モバイルOSを実行するスマートフォン)を第二の、完全に異種のデバイス(例えば、デスクトップOSを実行するノートブック、デスクトップ、またはタブレット)に無線または有線接続を通じて連結する。情報はデバイス間で、各デバイスで別々に動作するアプリケーション間でデータを同期させることによって共有される。このプロセスは一般に「同期」と呼ばれ、面倒であり、通常、ユーザによる積極的な管理が必要となる。
本発明の実施形態は、1つのモバイルコンピューティングデバイスにおいて、スマートフォンのモバイルコンピューティング体験と第二の端末環境の適切なユーザ体験を提供することに関する。第二の端末環境は、有線(例えば、USB、Firewire、Thunderbolt等)または無線(例えば、Bluetooth、WiFi等)接続によりコンピューティングデバイスに接続された視覚的レンダリングデバイス(例えば、モニタやディスプレイ)、入力デバイス(例えば、マウス、タッチパッド、タッチスクリーン、キーボード等)、及びその他のコンピューティング周辺機器(例えば、HDD、光ディスクドライブ、メモリスティック、カメラ、プリンタ等)のいくつかの組合せであってもよい。実施形態では、モバイル環境のユーザ体験に関連するモバイルオペレーティングシステムと第二の端末環境のユーザ体験に関連するデスクトップオペレーティングシステムが、共有カーネル上で同時に独立して動作する。
各種の実施形態と適合する1つの態様によれば、異環境間リダイレクションは、方法であって、第二の実行環境を有する第二のオペレーティングシステムによって、第一のオペレーティングシステムのためにコンパイルされ、第一のオペレーティングシステムの第一の実行環境内にロードされたアプリケーションのリストを第一のオペレーティングシステムに問い合わせることであって、第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、問い合わせること、第二のオペレーティングシステムにおいて、アプリケーションオブジェクトのリストを受け取ることであって、各アプリケーションオブジェクトがアプリケーションパッケージを含む、受け取ること、第二のオペレーティングシステムのメニューにおいて、アプリケーションオブジェクトのリストの中の1つのアプリケーションオブジェクトに対応する第一のメニューアイテムのインスタンスを作成すること、第一のメニューアイテムが、選択された時に、第二のオペレーティングシステムのコンソールアプリケーションを実行するように、第一のメニューアイテムを第二のオペレーティングシステムのコンソールアプリケーションに関連付けること、アプリケーションオブジェクトに対応する第一のOSの中のアプリケーションパッケージを示すパラメータを、第一のメニューアイテムに関連付けること含む、方法により提供される。
各種の実施形態と適合する他の態様によれば、第一のオペレーティングシステムの第一のグラフィクスサーバが、第二のオペレーティングシステムの第二のグラフィクスサーバと非互換的であってもよい。第一のグラフィクスサーバは、Android用グラフィクスサーバであってよく、第二のグラフィクスサーバは、Xウィンドウ型のグラフィクスサーバであってよい。第二のオペレーティングシステムのグラフィクスサーバがXウィンドウ型のグラフィクスサーバであり、第一のオペレーティングシステムの、アプリケーションオブジェクトに対応するアプリケーションが、第二のオペレーティングシステムのXウィンドウ型のグラフィクスサーバと非互換的なグラフィクスライブラリを使用してもよい。
各種の実施形態と適合する他の態様によれば、アプリケーションオブジェクトが、アプリケーション名、アプリケーションパッケージ名、およびアプリケーションアイコンを含んでもよい。第一のメニューアイテムが、選択されると、アプリケーションパッケージ名を実行パラメータとしてコンソールアプリケーションに送ってもよい。第二のオペレーティングシステムのメニューが、第二のアプリケーションに対応する第二のメニューアイテムを含み、第二のアプリケーションが第二の実行環境のためにコンパイルされ、第二の実行環境内にロードされていてもよい。第一のオペレーティングシステムがモバイルオペレーティングシステムを含んでもよく、第二のオペレーティングシステムがデスクトップオペレーティングシステムを含んでもよい。
各種の実施形態と適合する他の態様によれば、アプリケーションまたはグラフィクスコンテキストの異環境間リダイレクションのための方法であって、第一のオペレーティングシステムのためにコンパイルされ、第一のオペレーティングシステムの第一の実行環境内にロードされた第一のアプリケーションを、第一のオペレーティングシステムにおいて起動させるための要求を、第一のオペレーティングシステムによって、第二のオペレーティングシステムから受け取ることであって、第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、受け取ること、第一のオペレーティングシステムによって仮想ディスプレイを割り当てること、第一のオペレーティングシステム内のプロセスにおいて第一のアプリケーションを起動させること、第一のアプリケーションのためのリフレッシュ通知を仮想ディスプレイに関連付けること、第一のアプリケーションのためのアプリケーショングラフィクスを、第一のオペレーティングシステムによって、第一のアプリケーションのアプリケーショングラフィクス情報をモニタするステップと、アプリケーショングラフィクス情報が更新された時に、第二のオペレーティングシステムのコンソールアプリケーションに通知するステップとを繰り返し実行することによって維持することを含む、方法が提供される。
各種の実施形態と適合する他の態様によれば、第二のオペレーティングシステムのコンソールアプリケーションに通知するステップが、ファイル記述子をコンソールアプリケーションに送ることを含んでよく、ファイル記述子は、アプリケーショングラフィクス情報が共有メモリ位置において利用可能であることを示しており、共有メモリ位置が第一のオペレーティングシステムと第二のオペレーティングシステムとによってアクセス可能である。ファイル記述子が、プロセス間通信チャネルを通じて送られてもよく、プロセス間通信チャネルは、Unixドメインソケット、またはBinderインタフェースであってよい。アプリケーショングラフィクス情報が、第一のアプリケーションのサーフェス情報を含んでよい。代替的に、アプリケーショングラフィクス情報が、第一のアプリケーションの、レンダリングされたグラフィクス情報を含んでもよい。第二のオペレーティングシステムが、ユーザが第二のオペレーティングシステムのメニューのメニューアイテムを選択したことに応答して、第一のアプリケーションを起動させる要求を発行してもよい。
各種の実施形態と適合する他の態様によれば、アプリケーションまたはグラフィクスコンテキストの異環境間リダイレクションのための方法であって、第一のオペレーティングシステムのためにコンパイルされ、第一のオペレーティングシステムの第一の実行環境内にロードされた第一のアプリケーションを起動させる要求を、第一のオペレーティングシステムによって、第二のオペレーティングシステムのコンソールアプリケーションから受け取ることであって、第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、受け取ること、第一のオペレーティングシステム上の第一のプロセス内で第一のアプリケーションを実行することであって、第一のアプリケーションが、第一のオペレーティングシステムのサーフェスマネージャによって維持されるグラフィクス情報を含む、実行すること、第一のオペレーティングシステムによって、コンソールアプリケーションを第一のオペレーティングシステムの仮想ディスプレイ識別子に関連付けること、コンソールアプリケーションを登録して、第一のアプリケーションのグラフィクス情報に関するリフレッシュ通知を受け取ることを含む、方法が提供される。方法は、サーフェスマネージャにより、グラフィクスフレームを第一のオペレーティングシステムのフレームバッファメモリにレンダリングすること、第一のアプリケーションに関するグラフィクス情報が更新されたら、コンソールアプリケーションに通知することをさらに含み得る。
本発明の実施形態が図面の参照図に示されており、図の説明全体を通じて、同様の参照番号は同様の要素を指す。
各種の実施形態による、複数のユーザコンピューティング体験を提供するコンピューティング環境を示す図である。 各種の実施形態による、モバイルコンピューティングデバイスのための例示的なシステムアーキテクチャを示す図である。 各種の実施形態による、コンピューティング環境のためのオペレーティングシステムアーキテクチャを示す図である。 実施形態の各種の態様を利用する例示的なコンピューティング環境を示す図である。 各種の実施形態による、コンピューティング環境のためのオペレーティングシステムの態様を示す図である。 各種の実施形態による、モバイルコンピューティングデバイスのオペレーティングシステムアーキテクチャの構成に使用できる例示的なブート手順をより詳細に示す図である。 各種の実施形態による、アプリケーションの異環境間レンダリング及び/またはユーザ操作空間を提供するためのオペレーティングシステムアーキテクチャの構成を示す図である。 各種の実施形態による、複数のユーザ環境を備えるコンピューティング環境を示す図である。 各種の実施形態による異環境間リモートレンダリングの態様を示す図である。 各種の実施形態による、非拡張レンダリングコンテキストでの異環境間リモートレンダリングの例示的な方法のフロー図である。 各種の実施形態による、異環境間リモートレンダリングのための登録及び描画プロセスを示す図である。 各種の実施形態による、非拡張レンダリングコンテキストでの異環境間レンダリングの別の例示的な方法のフロー図である。 各種の実施形態による、異環境間アプリケーションのためのユーザ操作をサポートするオペレーティングシステムアーキテクチャ構成300bを示す図である。 各種の実施形態による、非拡張グラフィクスコンテキストを用いてレンダリングされる異環境間アプリケーションに関するユーザ操作をサポートする態様を示す図である。 各種の実施形態による、拡張レンダリングコンテキストを用いた複数のOS間での同時ユーザインタフェースをサポートする態様を示す図である。 各種の実施形態による、拡張レンダリングコンテキストでの異環境間リモートレンダリングの例示的な方法のフロー図である。 各種の実施形態による、拡張レンダリングコンテキストでの異環境間レンダリングの他の例示的な方法のフロー図である。 各種の実施形態による、拡張レンダリングコンテキストでの異環境間レンダリングに使用可能なユーザ環境を示す図である。 各種の実施形態による、拡張レンダリングコンテキストでの異環境間レンダリングに使用可能な拡張入力待ち行列を示す図である。 各種の実施形態による、拡張レンダリングコンテキストでの異環境間レンダリングに使用可能な入力イベントの受取方法を示す図である。 各種の実施形態による、ミラーリングされたコンテキストを提供するための異環境間レンダリングの例示的な方法のフロー図である。 各種の実施形態による、ミラーリングされたコンテキストを提供するための異環境間レンダリングの別の例示的な方法のフロー2100を示す図である。 各種の実施形態による、異環境間リダイレクトの態様を示す図である。 各種の実施形態による、異環境間リダイレクトの態様を実行するために使用可能な例示的な方法のフロー図である。 各種の実施形態による、異環境間リダイレクトの態様を実行するために使用可能な他の例示的な方法のフロー図である。
コンピューティング能力を含む携帯電話機(すなわち、スマートフォン、ハンドセット、モバイルステーション、携帯通信機器等)の人気はますます高まっている。これらのスマートフォンの多くは、モバイルプロセッサ上で動作するモバイルオペレーティングシステム(「OS」)を含む。モバイルプロセッサとモバイルOSによってこれらのデバイスの能力は増大しているが、スマートフォンがデスクトップやノートブックコンピュータのようなパーソナルコンピュータ(「PC」)環境(すなわち、Windows、Mac OS X、Linux)に取って代わる傾向は見られず、これは少なくとも提供されるユーザ体験が限られていることによる。特に、スマートフォンに見られるユーザインタフェースデバイスは一般に、モバイル環境に合わせて作られている。例えば、スマートフォンでは一般に、小さい親指式QWERTYキーボード、タッチスクリーンディスプレイ、クリックホイール、及び/またはスクロールホイールがユーザインタフェースデバイスとして使用される。モバイルOSのほか、モバイルOS用に開発されたアプリケーション(すなわち、「アプリ」)は一般に、モバイルデバイス上にあるモバイルプロセッサとユーザインタフェースデバイスを含むモバイル環境の制約に合わせて設計されている。そのため、PCオペレーティングシステム用に開発された多くのアプリケーションは、モバイルOSでは利用できない(すなわち、モバイルOS用にはコンパイルされず、その上では動作しない)。これに加えて、文書の作成や編集等、一部の作業については、フルサイズのキーボードや大型ディスプレイのほうが、スマートフォンで一般的に見られるユーザインタフェースコンポーネントより使いやすい。
従って、ユーザは一般に、コンピューティング体験ごとに別のコンピューティングデバイス、例えばスマートフォン、タブレットコンピュータ、ラップトップコンピュータ及び/またはデスクトップコンピュータを使用する。この場合、デバイスによってCPU、メモリ、ファイル記憶装置、OSが異なる。スマートフォンと他のデバイスの間の接続とファイル共有のためには、1つのデバイス(例えば、モバイルOSを実行するスマートフォン)を第二の、完全に異種のデバイス(例えば、デスクトップOSを実行するノートブック、デスクトップまたはタブレット)に、無線または有線接続を通じて連結する。情報はデバイス間で、各デバイスで別々に動作するアプリケーション間でデータを同期させることによって共有される。このプロセスは一般に「同期」と呼ばれ、面倒であり、通常、ユーザによる積極的な管理が必要となる。
図1は、各種の実施形態による、別々のユーザ操作空間(すなわち、ユーザ環境)に関連する複数のオペレーティングシステムを含む1つのモバイルデバイスで複数のユーザコンピューティング体験を提供するコンピューティング環境100を示す。コンピューティング環境100の第一のユーザ操作空間115には、モバイルコンピューティングデバイス110のディスプレイ116とI/Oデバイス118が含まれる。モバイルコンピューティングデバイス110が独立したモバイルデバイスとして操作されると、モバイルOS 130は、ユーザ操作空間115を通じて一般的なモバイルコンピューティングユーザ体験を提供する。モバイルOS 130によって提供されるモバイルコンピューティング体験には一般に、携帯電話機能や、ディスプレイ116とI/Oデバイス118とを含むユーザ操作空間115に適したグラフィカルユーザインタフェース(「GUI」)が含まれる。例えば、ティスプレイ116はタッチスクリーンディスプレイであってもよく、モバイルOS 130上で動作するアプリケーションプログラム(すなわち、「アプリ」)は主として、タッチスクリーンディスプレイ116を用いたモバイルOS 130のジェスチャ認識GUIを通じて制御されてもよい。
コンピューティング環境100の中で、モバイルコンピューティングデバイス110は、I/Oデバイス144、146及び/または148を含む第二の端末環境140とドッキングされてもよい。実施形態では、モバイルコンピューティングデバイス110は第二の端末環境140に、モバイルコンピューティングデバイス110のポート120を第二の端末環境140のポート142に接続することによってドッキングされている。この場合、第二の端末環境140はコンピューティング環境100の第二のユーザ操作空間を提供する。いくつかの例において、第二のユーザ操作空間のほうがデスクトップコンピューティング体験により適していてもよい。このような場合、デスクトップOS 160を第二の端末環境140に関連付け、第二のユーザ操作空間を通じて、ノートブック、タブレットまたはデスクトップコンピュータ環境のすべての能力を提供することができる。
実施形態では、モバイルOS 130とデスクトップOS 160は、モバイルコンピューティングデバイス110のプロセッサの共有カーネル上で同時に動作する。共有カーネルでのモバイルOSとデスクトップOSの同時動作は、2011年8月24日に出願された、“MULTI−OPERATING SYSTEM”と題する米国特許出願第13/217,108号明細書においてより詳しく説明されており、同出願を参照によって本願に援用する。このように、1つのモバイルコンピューティングデバイスは、第一のユーザ操作空間を通じたモバイルコンピューティング体験と第二のユーザ操作空間を通じたデスクトップコンピューティング体験を提供できる。別々のユーザ操作空間を通じて複数のオペレーティングシステムを同時に実行可能な1台のモバイルデバイスを携帯できることは、ユーザにとっての多くの問題を解決するが、(同時動作するモバイルOSとデスクトップOSを通じた)各ユーザ操作空間により通常提供される利用可能なアプリケーションとユーザ機能の集合は、それぞれ異なる。
本発明の実施形態は、第一のOS(例えば、モバイルOS 130)で動作するアプリケーションを、見かけ上、第二のOS(例えば、デスクトップOS 160)の中で実行しやすくすることに関し、この場合、第一と第二のOSは共有のカーネル上で同時動作中である。特に、ユーザに第一の(例えば、非互換的な)OSのためにコンパイルされ、その中で動作するアプリケーションに関する、第二のOSにおける入力(例えば、入力デバイス)と出力(例えば、ディスプレイ、オーディオ等)をサポートする中で、多くの問題がアドレスされる。同時動作中の複数のアプリケーションの表示と双方向性に対処する場合は、また別の問題も発生し得る。
例えば、第一と第二のアプリケーションがどちらも第一のOSのためにコンパイルされ、第一のOS上で同時動作中である場合を考える。しかしながら、ユーザは、一方のOSに関連する入力/出力デバイスを通じて(例えば、モバイルコンピューティング環境のタッチスクリーンディスプレイを使って)第一のアプリケーションのグラフィクス出力を見て、その第一のアプリケーションを操作し、また第二のOSに関連する入力/出力デバイスを通じて(例えば、デスクトップコンピューティング環境のディスプレイ、キーボード、マウスを使って)第二のアプリーションのグラフィクス出力を見て、その第二のアプリケーションを操作したいと望む。このようなシナリオに対処するには、複数のディスプレイ環境でのグラフィクスの同時操作と、異なるアプリケーションに関する複数の入力/出力ストリームの同時処理を、すべて別々の(例えば、非互換性の)オペレーティングシステム上で行う必要がある。
従って、実施形態は、第二のOSのユーザ操作空間内で第一のOSのアプリケーションにアクセスし、第二のOSのユーザ操作空間内で第一のOSで実行中のアプリケーションを表示し、第二のOSのユーザ操作空間を通じてこれらのアプリケーションのユーザ操作を扱うための各種の新規な方式を提供する。実施形態は、異環境間アプラケーションの各種のディスプレイとユーザ操作機能をサポートする第二のOSのコンソールアプリケーションを含む。
1つの実施形態群は、いわゆる「非拡張」レンダリングコンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。別の実施形態群は、いわゆる「拡張」レンダリングコンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。また別の実施形態群は、いわゆる「ミラーリングされた」コンテキストを使って、複数のOSによるコンピューティング環境間の同時ユーザインタフェースをサポートするための技術を提供する。さらに別の実施形態群は、第二のOSのユーザ操作空間から第一のOS上で利用可能なアプリケーションにアクセスできるようにする。これらの実施形態群の各々を、以下により詳しく説明する。
前述のように、コンピューティング環境100は、複数のオペレーティングシステムを同時に実行しているモバイルデバイスに関連する複数のユーザ操作空間を通じて、複数のユーザコンピューティング体験を提供する。具体的には、モバイルコンピューティングデバイス110が、各々特定のコンピューティング環境に適した複数のOSを含んでいるため、モバイルコンピューティングデバイス110を、1つのモバイルコンピューティングデバイスで様々なユーザ体験を提供するための外部I/Oデバイスに適合させてもよい。例えば、ユーザは、モバイルコンピューティングデバイス110と、キーボード、ディスプレイ及び/またはポインティングデバイスをラップトップ型筐体の中に有する第二の端末環境140を有し得る。モバイルコンピューティングデバイス110がこのラップトップ型の第二の端末環境にドッキングされると、デスクトップOS 160のすべての機能が第二の端末環境140を通じて利用可能となる。
図2は、各種の実施形態による、モバイルコンピューティングデバイス110のためのハードウェアシステムアーキテクチャの一例を示す。モバイルコンピューティングデバイスハードウェア112は、1つまたは複数のCPUコア204と外部ディスプレイインタフェース220を内蔵するモバイルプロセッサ114を含む。通常、モバイルコンピューティングデバイスハードウェア112はまた、I/Oデバイス118、メモリ206、記憶デバイス208、タッチスクリーンディスプレイ116に接続されたタッチスクリーンディスプレイコントローラ210、バッテリ216に接続された電源管理IC 214、セルラーモデム218、通信デバイス222及び/または、各種の通信信号やインタフェースを通じてプロセッサ114に接続されたその他のデバイス224を含む。I/Oデバイス118は通常、ボタン及び、モバイルコンピューティングデバイス110で使用可能なその他のユーザインタフェースコンポーネントを含む。例えば、I/Oデバイス118は、1組のボタン(例えば、後退、メニュー、ホーム、検索等)、オフスクリーンジェスチャエリア、クリックホイール、スクロールホイール、QWERTYキーボード等を含んでいてもよい。その他のデバイス224は、例えばGPSデバイス、LAN接続、マイクロフォン、スピーカ、カメラ、加速度計及び/またはMS/MMC/SD/SDIOカードインタフェース等であってもよい。外部ディスプレイインタフェース220は、何れの適当なディスプレイインタフェース(例えば、VGA、DVI、HDMI等)であってもよい。
プロセッサ114は、ARMベースのモバイルプロセッサであってもよい。実施形態では、モバイルプロセッサ114は、Texas Instruments OMAP3430、Marvell PXA320、Freescale iMX51、またはQualcomm QSD8650/8250等のモバイルARMベースプロセッサである。しかしながら、モバイルプロセッサ114は、他の好適なARMベースのモバイルプロセッサや、別のプロセッサアーキテクチャ、例えばx86ベースのプロセッサアーキテクチャまたはその他のRISCベースのプロセッサアーキテクチャ等に基づくプロセッサであってもよい。
図2はモバイルコンピューティングデバイス110の1つの例示的なハードウェア実装112を示しているが、これ以外のアーキテクチャも本発明の範囲内として考えられる。例えば、図2ではモバイルプロセッサ114の外部に示されている各種のコンポーネントは、モバイルプロセッサ114の中に統合してもよい。任意選択的には、図2にモバイルプロセッサ114に統合された状態で示されている外部ディスプレイインタフェース220は、モバイルプロセッサ114の外にあってもよい。これに加えて、システムバス、ディスクリートグラフィクスプロセッサ及び/またはその他のアーキテクチャ面の変化形を使用する、他のコンピュータアーキテクチャも、本発明の態様を利用するのに適している。
図3は、各種の実施形態による、モバイルコンピュータデバイス110でモバイルOS 130とデスクトップOS 160を同時に実行するために利用可能なOSアーキテクチャ300を示す。図3に示されるように、モバイルOS 130とデスクトップOS 160は、独立したオペレーティングシステムである。具体的には、モバイルOS 130とデスクトップOS 160は、相互に独立した、非互換的なユーザライブラリ、グラフィクスシステム及び/またはフレームワーク層を有していてもよい。OSアーキテクチャ300のための機能と命令は、モバイルコンピューティングデバイス110の有形のコンピュータ読取可能媒体上にコンピュータプログラムコードとして記憶されていてもよい。例えば、OSアーキテクチャ300のための命令は、モバイルコンピューティングデバイスハードウェア112の記憶デバイス208の中に記憶されていてもよい。
OSアーキテクチャ300において、モバイルOS 130とデスクトップOS 160は、共有カーネル320で同時に動作する。これは、モバイルOS 130とデスクトップOS 160が共有カーネル320上で同じ時点で動作中であることを意味する。具体的には、モバイルOS 130とデスクトップOS 160はどちらも、同じカーネルインタフェース322を通じて、例えば共有カーネル320にシステムコールを行うことによって、共有カーネル320とインタフェースする。共有カーネル320は、モバイルOS 130とデスクトップOS 160の両方のプロセスに関するタスクスケジューリングを管理する。この点で、モバイルOS 130とデスクトップOS 160は、共有カーネル320で独立して、同時に動作中である。これに加えて、共有カーネル320は、ハードウェアインタフェース312により示されているように、直接、モバイルコンピューティングデバイスハードウェア112のモバイルプロセッサ114で動作する。具体的には、共有カーネル320はモバイルコンピューティングデバイスハードウェア112のコンピューティングリソース、例えばCPUスケジューリング、メモリアクセス、I/Oを直接管理する。この点で、ハードウェアリソースは仮想化されず、すなわち、モバイルOS 130とデスクトップOS 160は、仮想化されたメモリまたはI/Oアクセスを使用せずに、カーネルインタフェース322を通じてシステムコールを行う。
図3に示されるように、モバイルOS 130は、ライブラリ層330、アプリケーションフレームワーク層340、アプリケーション層350を有する。モバイルOS 130では、アプリケーション352と354が、モバイルOS 130のアプリケーションフレームワーク層340によってサポートされるアプリケーション層350の中で動作する。アプリケーションフレームワーク層340には、モバイルOS 130上で動作するアプリケーションにより使用されるマネージャ342とサービス344が含まれる。例えば、アプリケーションフレームワーク層340には、ウィンドウマネージャ、アクティビティマネージャ、パッケージマネージャ、リソースマネージャ、電話マネージャ、ジェスチャコントローラ及び/または、モバイル環境のためのその他のマネージャとサービスが含まれていてもよい。アプリケーションフレームワーク層340には、モバイルOS 130のために開発されたアプリケーションを実行するモバイルアプリケーションランタイム環境が含まれていてもよい。モバイルアプリケーションランタイム環境は、より低い処理能力及び/または限られたメモリスペース等、モバイルコンピューティングリソースに合わせて最適化されていてもよい。モバイルアプリケーションランタイム環境では、プロセス分離、メモリ管理、スレッディングサポートがカーネルに依存して行われてもよい。ライブラリ層330には、I/Oとストリング操作等の一般的な機能、グラフィクス機能、データベース能力、通信能力及び/またはその他の機能や能力を実行するユーザライブラリ332が含まれる。
図3に示されているように、デスクトップOS 160は、ライブラリ層360、フレームワーク層370、アプリケーション層380を有する。デスクトップOS 160では、アプリケーション382と384が、デスクトップOS 160のアプリケーションフレームワーク層370によってサポートされるアプリケーション層380の中で動作する。アプリケーションフレームワーク層370には、デスクトップOS 160上で動作するアプリケーションにより使用されるマネージャ372とサービス374が含まれる。例えば、アプリケーションフレームワーク層370には、ウィンドウマネージャ、アクティビティマージャ、パッケージマネージャ、リソースマネージャ及び/または、デスクトップ環境に一般的なその他のマネージャとサービスが含まれていてもよい。ライブラリ層360には、I/Oとストリング操作等の一般的な機能、グラフィクス機能、データベース能力、通信能力及び/またはその他の機能や能力を実行するユーザライブラリ362が含まれていてもよい。
本発明の各種の実施形態において、デスクトップOS 160は、モバイルOS 130とは別の実行環境で動作する。例えば、モバイルOS 130はルート実行環境で動作してもよく、デスクトップOS 160は、ルート実行環境下で確立された第二の実行環境で動作してもよい。モバイルOS 130上で動作するプロセスとアプリケーションは、ルート実行環境の中でユーザライブラリ332、マネージャ342及びサービス344にアクセスする。デスクトップOS 160上で動作するプロセスとアプリケーションは、第二の実行環境の中で、ユーザライブラリ362、マネージャ372及びサービス374にアクセスする。
実施形態では、モバイルOS 130とデスクトップ160は、非互換性のユーザライブラリ、グラフィクスシステム及び/またはアプリケーションフレームワークを有する独立したオペレーティングシステムである。従って、モバイルOS 130のために開発されたアプリケーションは、直接、デスクトップOS 160では動作できず、デスクトップOS 160のために開発されたアプリケーションは、直接、モバイルOS 130上では動作できない。例えば、モバイルOS 130のアプリケーション層350で動作するアプリケーション352は、デスクトップOS 160と非互換的であってもよく、すなわち、アプリーション352をデスクトップOS 160で実行できない。具体的には、アプリケーション352は、デスクトップOS 160のマネージャ372、サービス374及び/またはライブラリ362では利用できない、またはこれらと互換性のないモバイルOS 130のマネージャ342、サービス344及び/またはライブラリ332に依存していてもよい。
その結果、モバイルOS 130とデスクトップOS 160で利用できるアプリケーションの集合はそれぞれ異なっていてもよい。この点で、OSアーキテクチャ300のモバイルOS 130とデスクトップOS 160は、別々のユーザ操作空間からアクセス可能な別々のアプリケーション集合を通じて、別々のユーザ体験を提供する。ユーザは、モバイルOS 130に関連する第一のユーザ操作空間を通じて、モバイルOS 130上で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションにアクセスし、デスクトップOS 160に関連する第二のユーザ操作空間を通じて、デスクトップOS 160上で利用可能なアプリケーションにアクセスしてもよい。
前述のように、モバイルオペレーティングシステムは一般に、デスクトップオペレーティングシステムと同じグラフィクス環境を使用しない。デスクトップOS用のグラフィクス環境は、フレキシビリティと高性能性のために設計された。例えば、一部のデスクトップOSで使用されるXウィンドウシステムは、処理及びシステムリソースをより多く使用することと引き換えに、プラットフォームとネットワークの独立性を提供する。これに対して、モバイルOS用のグラフィクス環境の設計は、効率性とモバイルコンピューティング環境の特定のユーザ入力デバイスのほうにより重点を置き、フレキシビリティはそれより軽視されている。モバイル及びデスクトップOSのグラフィクス環境は異なることが多いため、モバイルOS上で動作するアプリケーションは、モバイルOSのグラフィクスサーバからデスクトップOSのグラフィクスサーバにグラフィクス情報をリダイレクトすることによって、デスクトップOSのユーザ空間内で表示されるようにリダイレクトできない。
最も広く採用されているモバイルOSはGoogleのAndroidである。AndroidはLinuxに基づいているが、モバイル環境とモバイルプロセッサのために、カーネル及びその他のOS層に変更が加えられている。特に、LinuxカーネルはPC(すなわち、x86)CPUアーキテクチャ用に設計されているが、AndroidカーネルはARMベースのモバイルプロセッサに合わせて変更されている。Androidデバイスドライバはまた、タッチスクリーン、モバイル接続(GSM/EDGE、CDMA、Wi−Fi等)、バッテリ管理、GPS、加速度計及びカメラモジュール等、モバイルハードウェアアーキテクチャの中に一般的にあるデバイスやその他のデバイスに特に合わせて作られている。これに加えて、AndroidはネイティブのX Window Systemを持っていなければ、フルセットの標準GNUライブラリもサポートしておらず、これによって、既存のGNU/LinuxアプリケーションまたはライブラリをAndroidにポートすることが難しい。
AppleのiOSオペレーティングシステム(iPhoneで動作)とMicrosoftのWindows Phone 7も同様に、モバイル環境とモバイルハードウェアアーキテクチャ用に変更されている。例えば、iOSはMac OS XデスクトップOSから派生しているが、一般的なMac OS X用アプリケーションは、iOS上ではネイティブとして動作しない。具体的には、iOS用アプリケーションは、標準開発キット(「SDK」)を通じて、iOSの「Cocoa Touch」ランタイム環境で動作するように開発されており、これによってタッチベースの入力、プッシュ通知及びシステムサービス等の重要なiOS機能のための基本的なアプリケーションインフラストラクチャとサポートが提供される。そのため、Mac OS Xのために書かれたアプリケーションは、ポートしないとiOSで動作しない。これに加えて、Mac OS X用アプリケーションをiOSにポートすることは、2つのOS間のユーザライブラリ及び/またはアプリケーションフレームワークの違い、及び/またはモバイルとデスクトップハードウェアのシステムリソースの違いによって、難しいかもしれない。
OSアーキテクチャ300に適合する1つの実施形態において、AndroidモバイルOSとフルLinux OSは、変更されたAndroidカーネル上で独立して、同時に動作する。この実施形態では、Android OSは変更型Androidディストリビューションであってもよく、その一方で、Linux OS(「Hydroid」)は変更型Debian LinuxデスクトップOSであってもよい。図4〜6は、各種の実施形態による、OSアーキテクチャ300で使用可能なAndroidモバイルOS 430、Androidカーネル520、Hydroid OS 660をより詳細に示す。
図4に示されるように、Android OS 430は、ライブラリ層432の中にC/C++ライブラリの集合を含み、これらはアプリケーションフレームワーク層440を通じてアクセスされる。ライブラリ層432には、「glibc」Linux Cライブラリより小型で高速となるようにAndroidのために特に開発された「bionic」システムCライブラリ439が含まれる。ライブラリ層432にはまた、プロセス間通信(IPC)ライブラリ436が含まれ、これにはAndroid OSの「Binder」IPCメカニズムの基本クラスが含まれる。Binderは特にAndroidのために、プロセス間及びサービス間の通信を可能にするために開発された。図4のライブラリ層432に示されている他のライブラリとしては、媒体フォーマットの記録と再生をサポートするメディアライブラリ435、ディスプレイサブシステムへのアクセスを管理し、複数のアプリケーションからのグラフィクス層を合成するサーフェスマネージャ434、2D及び3Dグラフィクスエンジン438、軽量リレーショナルデータベースエンジン437がある。ライブラリ層432に含めることができるが、図4には示されていないその他のライブラリには、ビットマップ及びベクトルフォントレンダリングライブラリ、ユーティリティライブラリ、ブラウザツール(すなわち、WebKit等)及び/または秘匿通信ライブラリ(すなわち、SSL等)がある。
Android OS 430のアプリケーションフレームワーク層440は、開発者がデバイスハードウェアのコンポーネントを使用し、位置情報にアクセスし、背景サービスを実行し、アラームをセットし、ステイタスバーに通知を加えること等を可能にする開発プラットフォームを提供する。フレームワーク層440により、アプリケーションがその能力を公開し、他のアプリケーションの公開された能力を利用することも可能となる。AndoroidモバイルOS 430のアプリケーションフレームワーク層440のコンポーネントは、アクティビティマネージャ441、リソースマネージャ442、ウィンドウマネージャ443、ドックマネージャ444、ハードウェア及びシステムサービス445、デスクトップモニタサービス446、マルチディスプレイマネージャ447及びリモート通信サービス448を含む。AndroidモバイルOS 430のフレームワーク層440に含めることのできるその他のコンポーネントには、ビューシステム、電話マネージャ、パッケージマネージャ、位置マネージャ及び/または通知マネージャのほか、その他のマネージャとサービスがある。
Android OS 430で動作するアプリケーションは、Androidオブジェクト指向アプリケーションフレームワークの上のAndroidランタイム環境433のDalvik仮想マシン431の中で動作する。Dalvik仮想マシン431はレジスタベースの仮想マシンであり、メモリ使用量と処理要求を削減するために設計されたコンパクトな実行可能フォーマットを実行する。Android OS 430で動作するアプリケーションには、ホーム画面451、電子メールアプリーション452、写真アプリケーション453、ブラウザアプリケーション454、及び/またはその他のアプリケーション(「アプリ」)455がある。
Android OSグラフィクスシステムは、クライアント/サーバモデルを使用する。サーフェスマネージャ(「SurfaceFlinger」)はグラフィクスサーバであり、アプリケーションはクライアントである。SurfaceFlingerは、ディスプレイIDのリストを維持し、ディスプレイIDへのアプリケーションの割当を常に追跡する。1つの実施形態では、モバイルコンピューティングデバイス110は複数のタッチスクリーンディスプレイ116を有する。この実施形態において、ディスプレイID 0がタッチスクリーンディスプレイ116の1つに関連付けられ、ディスプレイID 1が他方のタッチスクリーンディスプレイ116に関連付けられる。ディスプレイID 2は両方のタッチスクリーンディスプレイ116に関連付けられる(すなわち、このアプリケーションが両方のディスプレイで同時に表示される)。2より大きいディスプレイIDは仮想ディスプレイであり、すなわち、これらはモバイルコンピューティングデバイスハードウェア112の上に物理的に存在するディスプレイには関連付けられない。
Androidアプリケーション用のグラフィクス情報には、ウィンドウ、ビュー、及びキャンバスがある。各ウィンドウ、ビュー及び/またはキャンバスには、基本となるサーフェスオブジェクトが含められる。サーフェスオブジェクトは、2つのバッファ(フロント及びバックバッファ)に格納され、描画のためのプロセス間で同期される。SurfaceFlingerは、すべてのサーフェスを共通のメモリプールの中に維持し、これによって、Android内のすべてのプロセスがこれらにアクセスし、その中に描画することができ、コストのかかるコピー動作が不要となり、またXウィンドウ等のサーバ側の描画プロトコルを使用する必要もない。アプリケーションは、SurfaceFlingerがフロントバッファから読み出している間は常にバックバッファの中に描画する。SurfaceFlingerは、各サーフェスオブジェクトを作成し、すべてのサーフェスオブジェクトを維持し、また、各アプリケーションに関するサーフェスオブジェクトリストを維持する。アプリケーションは、バックバッファへの描画を完了すると、SurfaceFlingerにイベントをポストし、これがバックバッファをフロントバッファにスワップして、サーフェス情報をフレームバッファにレンダリングする作業を待ち行列に入れる。
SurfaceFlingerは、すべてのウィンドウ変更イベントをモニタする。1つまたは複数のウィンドウ変更イベントが発生すると、SurfaceFlingerはサーフェス情報を1つまたは複数のディスプレイのためのフレームバッファにレンダリングする。レンダリングには、サーフェスを合成すること、すなわちサーフェスの寸法、透明度、Zオーダ、可視性に基づいて最終的な画像フレームを構成することが含まれる。レンダリングはまた、ハードウェア加速(例えば、グラフィクス処理ハードウェアのためのOpenGL 2D及び/または3Dインタフェース)を含んでいてもよい。SurfaceFlingerは、すべてのサーフェスオブジェクトをループさせて、それらのフロントバッファをそのZオーダでフレームバッファにレンダリングする。
図5は、各種の実施形態による変更型Androidカーネル520をより詳しく示す。変更型Androidカーネル520には、タッチスクリーンディスプレイドライバ521、カメラドライバ522、Bluetoothドライバ523、共有メモリアロケータ524、IPCドライバ525、USBドライバ526、WiFiドライバ527、I/Oデバイスドライバ528及び/または電源管理モジュール530が含まれる。I/Oデバイスドライバ528には、ポート120を通じてモバイルコンピューティングデバイス110に接続可能な外部I/Oデバイスのためのデバイスドライバが含まれる。変更型Androidカーネル520には、low memory killer、カーネルデバッガ、ログ機能及び/またはその他のハードウェアデバイスドライバを含むその他のドライバや機能ブロックが含まれていてもよい。
図6は、各種の実施形態によるHydroid OS 660をより詳しく示す。HydroidはフルLinux OSであり、標準的なLinuxディストリビューション用に開発されたほとんどすべてのアプリケーションを実行できる。特に、Hydroid OS 660のライブラリ層662には、ネットワーキング、グラフィクス処理、データベース管理及びその他の一般的なプログラム機能をサポートするLinuxライブラリが含まれる。例えば、ユーザライブラリ662には、「glibc」Linux Cライブラリ664、Linuxグラフィクスライブラリ662(例えば、GTK、OpenGL等)、Linuxユーティリティライブラリ661、Linuxデータベースライブラリ、及び/またはその他のLinuxユーザライブラリが含まれていてもよい。アプリケーションは、Hydroid上では、Xサーバ674、ウィンドウマネージャ673及び/またはデスクトップ環境672を用いてX Window Linuxグラフィカル環境内で動作する。図のアプリケーションには、ワードプロセッサ681、電子メールアプリケーション682、スプレッドシートアプリケーション683、ブラウザ684及びその他のアプリケーション685が含まれている。
Linux OSグラフィクスシステムは、Xウィンドウ(または「X11」)グラフィクスシステムに基づいている。Xウィンドウは、プラットフォームに依存しないネットワーク式のグラフフィクスフレームワークである。Xウィンドウはクライアント/サーバモデルを利用しており、Xサーバがグラフィクスサーバ、アプリケーションがクライアントである。Xサーバは、ディスプレイ、タッチスクリーンディスプレイ、キーボード、ポインティングデバイス等、Linux OSに関連する入力/出力ハードウェアを制御する。この点で、Xウィンドウはサーバ側の描画グラフィクスアーキテクチャを提供し、すなわち、Xサーバがウィンドウやピクセルマップを含むDrawableのためのコンテンツを維持する。XクライアントはXサーバと、通信チャネル上で描画動作を説明するデータパケットを交換することによって通信する。Xクライアントは、標準ルーチンのライブラリ(「Xlib」)を通じてX通信プロトコルにアクセスする。例えば、XクライアントはXサーバに対し、クライアントウィンドウに三角形を描画するように要求を送信してもよい。XサーバはXクライアントに入力イベント、例えばキーボードまたはポインティングデバイスの入力、及び/またはウィンドウの移動またはリサイジングを送信する。入力イベントはクライアントウィンドウに関連しており、例えば、ユーザがあるウィンドウ内にあるポインタをクリックすると、Xサーバはその入力イベントを含むパケットを、そのウィンドウに関連するXクライアントに送り、その中にはそのウィンドウに関係のあるイベントの動作と位置が含まれる。
オペレーティングシステムのフレームワーク、グラフィクスシステム及び/またはライブラリの違いによって、Android用に書かれたアプリケーションは通常、Hydroid OS 660では動作せず、標準的なLinuxディストリビューション用に書かれたアプリケーションは通常、Android OS 430では動作しない。この点に関して、Android OS 430とHydroid OS 660のためのアプリケーションにはバイトコード互換性がなく、すなわち、一方のためにコンパイルされた実行可能なプログラムは、他方では動作しない。
1つの実施形態において、Hydroid OS 660は、共有カーネル520を通じてAndroid OS 430との通信を容易にする異環境間通信フレームワークのコンポーネントを含む。これらのコンポーネントとしては、Android OSのBinder IPCメカニズムのための基本クラスと遠隔通信サービス671を含むIPCライブラリ663がある。
1つの実施形態において、Hydroid OS 660は、Androidルート環境内で作られた、chrootされた(「chroot」コマンドで作られた)第二の実行環境の中で実行される。Hydroid OS 660の中のプロセスとアプリケーションは、第二の実行環境の中で、これらのプロセスとアプリケーションから見た見かけ上のルートディレクトリが第二の実行環境のルートディレクトリとなるように実行される。このようにして、Hydroid OS 660は、標準Linuxディストリビューションのために書かれたプログラムを変更せずに実行でき、それは、chrootされた第二の実行環境においてHydroid OS 660上で実行されるプロセスにLinuxユーザライブラリ662を利用できるからである。
図3に戻ると、モバイルOS 130とデスクトップ160は、モバイルデバイスの共有カーネル320上でアクティブに同時動作中である。モバイルOS 130とデスクトップOS 160は、ユーザライブラリ、グラフィクスシステム及び/またはアプリケーションフレームワークに関して非互換的であってもよい。そのため、モバイルOS 130とデスクトップOS 160で利用可能なアプリケーションの集合はそれぞれ異なり、すなわち、モバイルOS 130上で利用可能な少なくとも一部のアプリケーションはデスクトップOS 160では利用できず、またその逆でもある。従って、OSアーキテクチャ300のモバイルOS 130とデスクトップOS 160は、別々のユーザ操作空間からアクセス可能な別々のアプリケーション集合を通じて、別々のユーザ体験を提供する。ユーザは、モバイルOS 130に関連するユーザ操作空間を通じてモバイルOS 130上で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションにアクセスし、デスクトップOS 160に関連するユーザ操作空間を通じてデスクトップOS 160上で利用可能なアプリケーションにアクセスしてもよい。
本発明の実施形態は、OSアーキテクチャ300の機能性を拡張して、複数のOSに基づくコンピューティング環境における、よりシームレスなコンピューティング体験を提供する。実施形態には、第二のオペレーティングシステムのユーザ操作空間内におけるアプリケーション及び/または第一のオペレーティングシステムのユーザ操作空間の異環境間レンダリングが含まれ、これは第一と第二のオペレーティングシステムのグラフィクス環境に互換性がなくても行われる。実施形態にはさらに、異環境間アプリケーションのためのユーザ操作のサポートと、第二のオペレーティングシステムのユーザ操作空間からの第一のオペレーティングシステムのアプリケーションへのアクセスが含まれる。この機能によって、例えば、モバイルOS 130上で動作するモバイルOS用アプリケーションを、デスクトップOS 160に関連するユーザ操作空間を通じて表示し、操作することが可能となる。例えば、ユーザがデスクトップOS 160に関連するユーザ操作空間を通じてデスクトップOS 160を操作している間に、そのユーザは、デスクトップOS 160では利用できない(すなわち、そのためにコンパイルされておらず、そこでは実行されない)モバイルOS 130の特定のアプリケーションにアクセスしたいと希望してもよい。後述の各種の実施形態を用いれば、ユーザは、デスクトップOS 160に関連するユーザ操作空間を通じて、モバイルOS 130のためにコンパイルされ、その上で実行されるアプリケーションにアクセスし、これを表示し、操作できる。特に、実施形態は、モバイルOSの何れのアプリケーションでの異環境間操作もサポートしており、すなわち、モバイルOS用アプリケーションを下記の実施形態を使用するのに、特定の異環境間サポートを含めるように変更する必要がない。
第二のOS(例えば、デスクトップOS 160)のユーザ操作空間内からアプリケーション及び/または第一のOS(例えば、モバイルOS 130)のユーザ操作空間への、シームレスな異環境間ユーザ操作をサポートするために、アプリケーション及び/またはユーザ操作空間のグラフィクスデータ(すなわち、グラフィクスコンテキストまたはアクティブディスプレイ)を、第二のOSのユーザ操作空間の中にリアルタイムで表示されるようにレンダリングすることが望ましいかもしれない。リアルタイム(または即時)レンダリングとは、この文脈において、アプリケーションのグラフィクスデータが第二のOSのユーザ操作空間に十分に素早くレンダリングされ、グラフィクス情報の伝送に伴う遅延によってアプリケーションのパフォーマンスに気付くほどの、または実質的な低下を発生させずに、ユーザがそのアプリケーションを操作できることを意味する。この点に関して、本明細書に記載されているようなリアルタイム(または即時)異環境間レンダリングの技術により、例えばグラフィクス情報が迅速に転送され、第一のOSから第二のOSにグラフィクス情報をコピーまたは転送することに伴うフレーム遅延やその他の遅延が減る。しかしながら、これはグラフィクスの転送にまったく時間がかからないことを意味するのではなく、本明細書に記載の異環境間レンダリング方式は、グラフィクス情報が第二のOSのユーザ操作空間上で表示されるまでに限定的な時間がかかったとしても、即時またはリアルタイムとみなしてよい。
アプリケーションの異環境間レンダリングを実現するために、第一のオペレーティングシステムで動作中のアプリケーションから第二のオペレーティングシステムのグラフィクスシステムに、おそらく大量のグラフィクスデータが転送されることがある。既存のメカニズムでは、必要なグラフィクスデータを転送すると、ディスプレイの更新またはフレームレートに必ず影響が及ぶ。例えば、グラフィクスデータを直接転送することは、モバイルコンピューティング環境の制約の中では現実的ではないであろう。圧縮技術を使って転送データの総量を減らすことは可能であるが、その代わりに、情報の圧縮と解凍に必要な処理が増える。リモートのデスクトップ型システムを使って、ベクトルグラフィクスやグラフィクス更新情報を送ることはできるが、この場合もまた一般に、大量のグラフィクスデータを転送する際、またはグラフィクスコンテンツの急速な変化の際に速度が低下する。
図7は各種の実施形態によるOSアーキテクチャ構成300aを示し、これは第二のOSのユーザ操作空間内でアプリケーション及び/または第一のOSのユーザ操作空間を異環境間レンダリングするために使用でき、この場合、第一と第二のOSは共有カーネル上で同時動作中であり、別々のディスプレイデバイスを含む別々のユーザ操作空間に関連付けられている。OSアーキテクチャ構成300aのコンポーネントにより、モバイルOS 130上で動作するアプリケーションとモバイルOS 130のグラフィクスコンテキストを、デスクトップOS 160のユーザ操作空間内にレンダリングすることができ、OS 130とデスクトップOS 160は共有カーネル320上で同時動作する。各種の実施形態において、アプリケーションは、デスクトップOS 160のコンソールアプリケーション782を通じて、デスクトップOS 160のユーザ操作空間内のコンソールウィンドウに表示される。1つの実施形態において、コンソールアプリケーション782は、Xウィンドウ型アプリケーションであり、これはデスクトップOS 160のXウィンドウ型グラフィクスシステムを通じてデスクトップOS 160のユーザ操作空間内に表示される。
OSアーキテクチャ構成300aにおいて、モバイルOS 130には、グラフィクスサーバ734が含まれ、これはモバイルOS 130のアプリケーション(例えば、アプリケーション752と754)に関するサーフェス情報(例えば、サーフェス726、727、728)の割当と管理を行う。1つの実施形態において、グラフィクスサーバ734は、匿名共有メモリ(すなわち、そのカーネルを解放できるプロセス間で共有される名前付きメモリブロック)を使ってグラフィクスサーフェスのメモリを割り当てる。グラフィクスサーバ734はまた、モバイルOS 130のディスプレイの割当と追跡も行い、これにはモバイルコンピューティングデバイスハードウェア112(すなわち、ローカルディスプレイ)に内蔵されるディスプレイと、モバイルOS 130が遠隔的に(すなわち、他のOSのユーザ操作空間内で)表示されるかもしない、いわゆる仮想ディスプレイが含まれる。モバイルOS 130はまた、モバイルOS 130に関連するディスプレイ画面上に同時に複数のアプリケーションを表示するためのウィンドウシステムを含んでいてもよい。1つの実施形態において、モバイルOS 130には、デスクトップOS 160からモバイルOS 130のコンポーネントにアクセスするための遠隔通信チャネルを提供するサービスが含まれる。
OSアーキテクチャ構成300aには、モバイルOS 130上で動作中であり、モバイルOS 130に関連する第一のユーザ操作空間内に表示される第一のアプリケーション752が含まれる。OSアーキテクチャ構成300aには、やはりモバイルOS 130上で動作中であるが、後述の実施形態による異環境間レンダリングを通じて、デスクトップOS 160に関連する第二のユーザ操作空間内に表示される第二のアプリケーション754が含まれる。1つの実施形態において、アプリケーション754は、デスクトップOS 160上で動作するコンソールアプリケーション782を通じて第二のユーザ操作空間のコンソールウィンドウ内に表示される。
通常、モバイルOS 130のアプリケーションは、ユーザがアプリケーションを操作する際に使用するビューのインスタンスを作成する。例えば、アプリケーションは、アプリケーションウィンドウを構成する1つのビューを有し得る。ビューの中で、アプリケーションは、アプリケーションインタフェースの特定の領域に関する描画オブジェクトのインスタンスを作る。描画オブジェクトは、キャンバスまたは描画層と呼ばれることがあり、アプリケーションがグラフィクス情報を描画する際に使用するオブジェクトである。アプリケーションがキャンバスまたは層のインスタンスを作成すると、グラフィクスサーバ734がそのキャンバスまたは層に関連するサーフェス情報にメモリを割り当て、その描画オブジェクトをアプリケーションに戻し、すると、アプリケーションがこれを使ってキャンバスまたは層のサーフェスに関するグラフィクス情報を描画する。その後、グラフィクスサーバ734はサーフェス情報をモニタし、サーフェス情報が更新されると、このサーフェス情報をフレームバッファ(例えば、フレームバッファ716)にレンダリングする。一般に、ユーザはまた、ビューオブジェクトを通じてアプリケーションを操作する。ビューンオブジェクトはイベントリスナを含み、これは、ユーザがそのビューオブジェクトに対して動作を起こした際に、モバイルOSの入力待ち行列736によりコールされる。
OSアーキテクチャ300aに示されているように、サーフェス726、727及び/または728は、グラフィクスサーバ734によって共有メモリ724に割り当てられる。共有メモリ724は、共有カーネル320によって管理され、モバイルOS 130とデスクトップOS 160上で動作中のすべてのプロセスによりアクセス可能である。前述のように、共有メモリ724は名前付き共有メモリであってもよい。名前付き共有メモリは、共有カーネル320上で動作中のすべてのプロセスによってアクセス可能であるが、それ以外のプロセスは名前によって名前付き共有メモリの領域にアクセスすることができない。従って、名前付き共有メモリの各領域に関するファイル記述子を、プロセス間通信メカニズムを通じて送り、プロセスの境界を越えて名前付き共有メモリを参照できるようにしなければならない。共有カーネル320にはまた、IPCドライバ725が含まれ、これによって、モバイルOS 130とデスクトップOS 160の中のプロセスはプロセスの境界を越えて相互に通信できる。IPCドライバ725は、例えば、Unixドメインソケットドライバ、Android Binderドライバ、及び/またはネットワークソケットドライバであってもよい。
OSアーキテクチャ構成300aのデスクトップOS 160には、コンソールアプリケーション782とウィンドウシステム774が含まれる。コンソールアプリケーション782は、デスクトップOS 160のためにコンパイルされ、その上で動作し、デスクトップOS 160に関連するユーザ操作空間のコンソールウィンドウの中に表示される。ウィンドウシステム774には、ウィンドウマネージャ、グラフィクスサーバ及び/または、グラフィクスオブジェクトを表現し、デスクトップOSフレームバッファ718を通じてこれらをディスプレイデバイスに転送するための基盤となるグラフィクスデバイスインタフェースが含まれる。例えば、ウィンドウシステム774は、デスクトップOSフレームバッファ718を通じて、デスクトップOS 160のユーザ操作空間内にコンソールアプリケーション782を表示してもよい。ウィンドウシステム774はまた、コンソールアプリケーション782に関連するデスクトップOS 160のユーザ環境からの入力イベントをコンソールアプリケーション782に提供する。例えば、ウィンドウシステム774は、デスクトップOS 160に関連するユーザ操作空間からのポインティングデバイスの位置またはジェスチャ情報をコンソールアプリケーション782に提供してもよい。
図7において、共有メモリ724、モバイルOSフレームバッファ716、デスクトップOSフレームバッファ718を含むメモリブロックが、わかりやすいように、共有カーネル320の中にあるように示されている。しかしながら、これらのメモリブロックは、モバイルコンピュータデバイス110の有形のメモリ要素の中に物理的に設置され、共有カーネル320によって管理される。例えば、これらのメモリブロックは、図2に示されるように、プロセッサ114のRAMの中、及び/またはモバイルコンピューティングデバイスハードウェア112のメモリデバイス206のRAMの中に設置されてもよい。
OSアーキテクチャ構成300aは、第二のオペレーティングシステムに関連するユーザ操作空間内に共有カーネル上で動作中の第一のオペレーティングシステムのアプリケーションを異環境間レンダリングすることをサポートし、この場合、第一と第二のオペレーティングシステムは共有カーネル上で同時動作中である。OSアーキテクチャ構成300aは、複数のユーザ操作空間を通じて複数のユーザコンピューティング体験を提供するコンピューティング環境における異環境間レンダリングをサポートするために使用してもよい。例えば、OSアーキテクチャ構成300aは、図1に示されるようなコンピューティング環境100の中で使用してもよい。
図8は、各種の実施形態によるコンピューティング環境800を示す。コンピューティング環境800は、モバイルコンピューティングデバイスハードウェア112のタッチスクリーンディスプレイ116とその他のI/Oデバイス118を含む第一のユーザ環境を有する。このユーザ環境は第一のユーザ操作空間を提供し、ユーザはここからモバイルOS 130を操作する。コンピューティング環境800の第二のユーザ環境は、ディスプレイモニタ844、キーボード846及び/またはポインティングデバイス848を含む。ユーザ環境840は、ドックコネクタ841とドックケーブル843を通じて、モバイルコンピューティングデバイス110に接続されてもよい。ドックコネクタ841とドックケーブル843は、図1に示されるように、ドックインタフェース122を通じてモバイルコンピューティングデバイス110のポート120とインタフェースするポートを含んでいてもよい。この点に関して、ユーザ環境840は、モバイルコンピューティングデバイス110に対して、ドッキングされた第二の端末環境を提供する。コンピューティング環境800において、デスクトップOS 160はドッキングされた第二の端末環境840に関連付けられてもよく、これによって、ユーザは第二の端末環境840によって提供されるユーザ操作空間を通じてデスクトップOS 160を操作できる。第二の端末環境840は、一般的なデスクトップ型コンピューティング環境として示されているが、デスクトップOS 160は、他のタイプのコンピューティング環境、例えばラップトップ、タブレット及び/またはその他のタイプのコンピューティング環境を通じて第二のユーザ操作空間を提供してもよい。
OSアーキテクチャ構成300aをコンピューティング環境800で使用して、第一のOS(すなわち、モバイルOS)上で動作し、第二のOSのユーザ環境(すなわち、デスクトップOS 160に関連するユーザ環境840)の中に表示されるアプリケーションの異環境間レンダリングを提供してもよい。例えば、モバイルOS 130上で動作中のアプリケーション754は、デスクトップOS 160のユーザ操作空間880のコンソールウィンドウ882の中に表示されてもよい。ウィンドウ884と886を含む、ユーザ操作空間880内のその他のウィンドウは、デスクトップOS 160で動作中の他のアプリケーションのウィンドウであってもよい。ユーザに対しては、コンピューティング環境800はアプリケーション754に関するシームレスなコンピューティング体験を提供し、これは、アプリケーション754がデスクトップOS 160のユーザ操作空間の中で、実際にはアプリケーション754はモバイルOS 130で動作しているが、デスクトップOS 160上で実行されているかのように使用できるからである。
図8は、デスクトップ型の第二の端末環境840を示している。この例では、ユーザは、第二の端末環境840のキーボード846とマウス848を使うことにより、コンソールウィンドウ882を通じて(すなわち、主としてポインティングデバイスに基づくGUI)、モバイルOSのアプリケーション及び/またはユーザ操作空間を操作してもよい。しかしながら、アプリケーションの異環境間レンダリング及び/またはモバイルOSユーザ操作空間のミラーリングを、他の第二の端末環境で使用してもよい。例えば、デスクトップOS 160は、タッチスクリーンディスプレイを含むタブレット型の第二の端末環境に関連付けることができる。この場合、ユーザは、ユーザが一般的にモバイルOS 130のユーザ操作空間を操作するのとほとんど同じ方法で(すなわち、主としてジェスチャベースのGUI)、モバイルOS 130の異環境間アプリケーションまたはミラーリングされたユーザ操作空間を操作してもよい。
前述のように、本発明の実施形態は、複数のOSに基づくコンピューティング環境において、異環境間アプリケーション及び/またはミラーリングされたユーザ操作空間のユーザによる同時インタフェースをサポートすることに関する。一例において、ユーザインタフェースのサポートは、異環境間アプリケーションのために提供され、それによって第一のOS上で動作中のアプリケーションを、実質的にもともと第二のオペレーティングシステム上で動作しているかのように、第二のOSのユーザ操作空間を通じて表示し、操作することができる。
非拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムのグラフィクスレンダリングコンテキストを拡張せずに、複数のOSにわたる同時ユーザインタフェースをサポートすることに関する。第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独の、アクティブなユーザ操作空間となるように構成される。このユーザ操作空間には、アクティブディスプレイ(例えば、解像度等、関連する特徴を有する)と、ユーザがアクティブディスプレイ上で表示される要素を操作できるような1つまたは複数のアクティブ入力デバイスが含まれる。従って、第一のOSは、アクティブディスプレイに表示するために実行されるアプリケーションに関するサーフェス情報をレンダリングする際に使用できるレンダリングコンテキストを作成する。
しかしながら、前述のように、本明細書には同時に使用中の複数のユーザ操作空間中に第一のOSを有効にフーリングするための新規の技術が記載される。さらに、この技術によれば、複数のユーザ操作空間を、複数のコンピューティング環境上の異なる(例えば、非互換性の)オペレーティングシステムに関連付けることが可能となる。いくつかの実施形態には、異環境間リモートレンダリングを通じてディスプレイ出力を処理するための技術が関わる。その他の実施形態は、このような場合のユーザの操作を扱うための技術に関する。
異環境間リモートレンダリングにおいて、第一のOS上で動作し、第二のOSに関連するコンピューティング環境内で表示されるアプリケーションに関するアプリケーショングラフィクスは、第二のOS内からレンダリングされる。1つの実施形態において、第二のOS上で動作中のコンソールアプリケーションは、共有メモリからのそのアプリケーションに関するサーフェス情報にアクセスし、第二のOSに関連するコンピューティング環境のコンソールウィンドウ内にこのアプリケーションをレンダリングする。
カレンダアアプリケーションとワードプロセシングアプリケーションがどちらもモバイルデバイス上の第一のOS(例えば、モバイルOS 130)用にコンパイルされ、同時動作していると仮定する。第二のOS(例えば、デスクトップOS 160のようなノンモバイルOS)が共有カーネルを使ってモバイルデバイス上で同時に動作している。ユーザは、モバイルデバイスを第二の、デスクトップコンピューティング環境にドッキングしており、このデスクトップコンピューティング環境を通じてワートプロセシングアプリケーションを操作したいと望んでいる。モバイルコンピューティング環境(すなわち、モバイルデバイス)の第二のOSを使って、デスクトップコンピューティング環境のユーザ操作空間を、ユーザにとってよくわかる方法で扱うことが望ましい。
図9は、各種の実施形態による異環境間リモートレンダリングの態様を示す。図9に示されるアプリケーションレンダリングの概略図900において、第一のアプリケーション910(例えば、カレンダアプリケーション)は第一のOS内の第一のサーフェス912に関する更新を計算する。第一のサーフェス912は、第一のオペレーティングシステムによって共有メモリ空間内の第一のメモリ位置に格納される。例えば、第一のメモリ位置は、名前付きの共有メモリの1領域であってもよい。第一のアプリケーション910は、第一のサーフェス912のバックバッファ914を更新する。同様に、第二のアプリケーション930(例えば、ワードプロセシングアプリケーション)は、第一のOSを使って、第二のサーフェス932の更新を計算する。第二のサーフェス932は、第一のOSによって共有メモリ空間の第二のメモリ位置(例えば、名前付きの共有メモリの第二の領域)に格納される。
第一のOSは、いつレンダリングシーケンスを開始するか判断する。例えば、第一のOSは、サーフェス912及び/または932に関するサーフェス情報が変更された時にレンダリングシーケンスを開始してもよい。第一のOSは、特定のアプリケーションに関連するサーフェス情報が変化したかどうかを判断し、第一のサーフェス912と第二のサーフェス932を含むすべてのサーフェスについて1ループを実行してもよい。レンダリングシーケンスの中で、サーフェス912に関するサーフェス情報が変化すると、第一のOSはフロントバッファ916とバックバッファ914をスワップして、バックバッファ914の中にあったサーフェス情報が今度はフロントバッファ916にあるようにする。第一のオペレーティングステムは、第一のサーフェス912を第三のメモリ位置920にレンダリングして、第一のOSに関連する第一のユーザ操作空間内で表示されるべき最終画像918を作る。
第二のサーフェス932に関するサーフェス情報が変化すると、第一のOSは第二のOSに対し、第二のサーフェス932に関するサーフェス情報が変化したことを通知する。具体的には、第一のOSは第二のOSのコンソールアプリケーションに対し、サーフェス932がアップデートされたことを示す描画通知を、プロセス間通信チャネルを通じて送信する。描画通知は、フロント画像936のファイル記述子及び/またはフロント画像936のための共有メモリ空間に関するその他の特徴、例えばバッファの大きさ、層の順序等を含んでいてもよい。コンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングして、第二のメモリ位置の参照を取得する。第二のメモリ位置の参照を通じて、第二のOSのコンソールアプリケーションは、フロント画像バッファ936からサーフェス情報を直接読み出し、第二のサーフェス932のフロント画像936に関するサーフェス情報を、第二のOSに関連する第二のユーザ操作空間内のコンソールウィンドウ940にレンダリングする。このようにして、コンソールアプリケーションは、第二のアプリケーション930をリアルタイムでコンソールウィンドウ940の中にレンダリングすることができ、プロセス間でグラフィクスフレームまたはサーフェス情報をコピーすることは不要となる。その代わりに、コンソールアプリケーションは、プロセス間通信を通じて送られたファイル記述子を使って、第二のサーフェス932の共有メモリをそれ自身のプロセス空間にマッピングすることにより、サーフェス情報を直接読み出す。
図10は、各種の実施形態による、非拡張レンダリングコンテキストでの異環境間リモートレンダリングの例示的方法のフロー1000を示す。実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに同時動作中の第一のアプリケーション(例えば、カレンダアプリケーション)と第二のアプリケーション(例えば、ワードプロセシングアプリケーション)のアプリケーショングラフィクスの表示が維持される。
方法1000はブロック1004で、第一のオペレーティングシステムを使って第一のアプリケーションのサーフェスの更新を計算することから始まる。サーフェスの更新の計算では、アプリケーションデータを使って、どのサーフェスがどのように変化したかが判断される。例えば、ユーザの操作により、いくつかのサーフェスが位置、順序(例えば、1つの層が部分的に他の層の前にあっても、他の層により完全に隠れていても、その他でもよい)、大きさ、色、テクスチャ等が変化した可能性がある。
ブロック1008で、第一のアプリケーションのこれらの更新後のサーフェスが、第一のオペレーティングシステムを使ってレンダリングされ、第一のメモリ位置に第一のグラフィクスフレームが生成される。例えば、第一のOSのレンダリングエンジンはそれ以前に、ディスプレイに関連するレンダリングコンテキストを作成した。すると、グラフィクスフレームは、更新されたサーフェス情報を繰り返し処理することによってレンダリングし、そのレンダリングコンテキストに関連するディスプレイの特徴(例えば、解像度)に従って、第一のアプリケーションから見えるサーフェス部分の全体または部分画像が有効に描画される。このグラフィクスフレームは第一のメモリ位置にレンダリングされる。メモリ位置は、フレームバッファメモリ、共有メモリ、またはその他の有益なメモリ位置とすることができる。
いくつかの実施形態において、ブロック1012では、レンダリングされた第一のグラフィクスフレームが、第一のメモリ位置から第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、第一のグラフィクスフレームは、モバイルデバイスのフレームバッファのバックバッファ部分にレンダリングされる。その後、フレームバッファが反転し(すなわち、バックバッファ部分がフロントバッファ部分となる)、フレームバッファの、新たにフロントになったバッファ部分がモバイルデバイスのディスプレイに表示される。
ブロック1016で、第一のオペレーティングシステムを使って、第二のアプリケーションのサーフェスの更新が計算される。これは、ブロック1004の第一のアプリケーションのサーフェスに関する計算と実質的に同じように行われてもよい。しかしながら、第一のアプリケーションの更新後のサーフェスデータと異なり、第二のアプリケーションの更新後のサーフェス情報は第一のOSではレンダリングされない。そうではなく、ブロック1020で、第二のアプリケーションの更新後のサーフェスは第二のメモリ位置に格納される。第二のメモリ位置は、モバイルデバイスの共有カーネル上で同時動作中の第一と第二のOSの両方によりアクセス可能な共有メモリ位置である。
ブロック1024で、第二のアプリケーションの更新後のサーフェスは、第二のオペレーティングシステムのコンソールアプリケーションを使ってレンダリングされ、第三のメモリ位置の中に第二のグラフィクスフレームが生成される。例えば、図7のコンソールアプリケーション782は、アプリケーション754の更新後のサーフェスを第二のOSのフレームバッファメモリ(例えば、第二のコンピューティング環境のディスプレイに関連付けられている)にレンダリングしてもよい。いくつかの実施形態において、ブロック1028で、第二のグラフィクスフレームは、第三のメモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。例えば、デスクトップコンピューティング環境のディスプレイドライバは、そのフレームバッファメモリにアクセスし、第二のグラフィクスフレームにアクセスしてこれを表示する。特定の実施例においては、コンソールアプリケーションがコンソール操作空間を有し、第二のグラフィクスフレームがコンソール操作空間の中にレンダリングされる。例えば、コンソールアプリケーションは、デスクトップディスプレイ上に1つまたは複数のウィンドウをレンダリングし、第二のアプリケーションのグラフィクスがこれらのウィンドウの1つに表示される。
いくつかの実施形態において、方法1000はブロックを繰り返し処理して、両方のアプリケーションのグラフィクス環境を同時に維持する。例えば、モバイルOSは、第一のアプリケーションのグラフィクスの更新を計算して、これらの更新をモバイルフレームバッファメモリにレンダリングする。その後、モバイルOSは第二のアプリケーションのグラフィクスの更新を計算し、これらの更新を共有メモリに格納し、そこから、デスクトップOSのコンソールアプリケーションがこれらの更新をデスクトップのフレームバッファメモリにレンダリングする。その後、方法1000が次の一連の更新について繰り返される。特にいくつかの実施例は、特定のステップを異なる順序で、及び/または並行して行う。例えば、第一と第二のアプリケーションのサーフェスの更新を実質的に同時に計算することも可能である(すなわち、ブロック1004と1016を実質的に並行して行う)が、これらの更新後のサーフェスは、一部だけがローカルでレンダリングされ(例えば、ブロック1008)、更新後のサーフェスの他の部分は、リモートレンダリングのために格納される(例えば、ブロック1020と1024)。
1つの実施形態において、AndroidモバイルOSとフルLinux OS(例えば、Hydroid)は、モバイルデバイス上の共有カーネルで同時動作中である。AndroidアプリケーションがHydroid OS 660から起動されると、コンソールアプリケーションがHydroid OS 660上で起動し、Android OS 430がAndroidアプリケーションを起動させて、Androidアプリケーションに関する描画通知をコンソールアプリケーションに送信するように要求する。Andoid OS 430はAndoroidアプリケーションを起動させ、このアプリケーションを仮想ディスプレイIDに関連付けて、コンソールアプリケーションを登録し、そのアプリケーションに関する描画通知を受け取るようにする。例えば、Androidグラフィクスサーバ(すなわち、SurfaceFlinger)は、使用されていない仮想ディスプレイIDを割り当てて、アプリケーションオブジェクトリストを通じてそのアプリケーションを仮想ディスプレイIDに関連付ける。SurfaceFlingerは、共有メモリの中でAndroidアプリケーションのサーフェス情報のためのメモリを割り当て、コンソールアプリケーションを登録して、Androidアプリケーションに関する描画通知を受け取るようにする。
SurfaceFlingerが、サーフェス情報が更新されたと判断すると、SurfaceFlingerはプロセス間通信チャネルを通じてコンソールアプリケーションに描画通知を送信する。例えば、SurfaceFlingerはunixドメインソケット、Binderインタフェース及び/またはネットワークソケットを通じて描画通知を送信してもよい。描画通知には、サーフェス情報の第一の記述子が含まれる。ファイル記述子は、SurfaceFlingerにより、そのサーフェスの名前付き共有メモリ領域に関する名前空間に基づいて生成されてもよい。描画通知にはまた、データフォーマット、バッファサイズ、サーフェス位置情報が含まれていてもよい。コンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングし、マッピングされたファイル記述子を通じて、共有メモリから読み出す。コンソールアプリケーションは次に、そのアプリケーションに関する他のグラフィクスフレームを、サーフェス情報から直接レンダリングする。すると、レンダリングされたグラフィクスフレームはデスクトップOSグラフィクスシステムによって(すなわち、Hydroid OS 660のXウィンドウグラフィクスシステムを通じて)表示される。
図11は、各種の実施形態による、異環境間リモートレンダリングのための登録及び描画プロセスフロー1100をより詳しく示している。まず、Hydroid OS 660上で動作中のコンソールアプリケーション1102は、ステップ1106で、共有カーネル520のIPCチャネル525を通じて、AndroidアプリケーションがHydroid OS 660のユーザ環境で起動され、表示されるか、Android OS 430のユーザ環境からHydroid OS 660のユーザ環境に移動されるように要求する。Androidは、ステップ1108、1110、1112で、SufaceFlinger 434にそのアプリケーションのための仮想ディスプレイIDを要求し、アプリケーションを起動させ、仮想ディスプレイのパラメータを設定する。ステップ1114で、Androidは、IPCチャネル525を通じてディスプレイIDをコンソールアプリケーションに返す。ステップ1116で、アプリケーションは新しいサーフェスを要求し、ステップ1118でこれがSurfaceFlinger 434により、サーフェスクラス1104のインスタンスを作ることによって作成される。
ステップ1120で、コンソールアプリケーション1102はレンダラオブジェクトのインスタンスを作り、これがHydroid OS 660のXウィンドウシステムを通じてAndroid サーフェス情報をレンダリングする。ステップ1122で、コンソールアプリケーション1102は、レンダラオブジェクト1124のリモート処理可能なインタフェースをSurfaceFligner 434に登録し、Androidアプリケーションに関するサーフェス情報の描画通知を受け取るようにする。1つの実施形態において、レンダラオブジェクトとリモート処理可能なインタフェースには、draw()及びclear()メソッドが含まれ、これはIPCチャネル525を通じてコールすることができる。ステップ1126と1128で、SurfaceFlingerは、IPCオブジェクトをサーフェスに貼付し、サーフェス情報が更新された時に、リモート処理可能なインタフェースを通じてコンソールアプリケーション1102に通知が行われるようにする。
ステップ1130と1132は、プロセスフロー1100のレンダリングループの一部である。レンダリングループの中で、SurfaceFlingerはコンソールアプリケーション1102に対し、サーフェス情報が更新されたことを通知し、IPCチャネル525を通じて、そのサーフェス情報のファイル記述子を送る。例えば、コンソールアプリケーションレンダラの描画メソッドがコールされ、そのサーフェスのファイル記述子が送られてもよい。コンソールアプリケーション1102は、ファイル記述子をそのプロセス空間にマッピングし、参照された共有メモリ位置にアクセスして、サーフェス情報を読み出し、Hydroid OS 660に関連する第二のコンピューティング環境のディスプレイ上に表示されるべきグラフィクスフレームをレンダリングする。
図12は、各種の実施形態による、非拡張レンダリングコンテキストでの異環境間レンダリングの他の例示的方法のフロー1200を示す。図10の方法1000と同様に、実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに同時動作中の第一のアプリケーションと第二のアプリケーションのアプリケーショングラフィクスの表示が維持される。
方法1200はブロック1204で、第一のオペレーティングシステムの第一のレンダリングコンテキストを作成することから始まる。レンダリングコンテキストは、それが関連するディスプレイに固有のものであってもよい。例えば、モバイルOSの実行は、特定の解像度を有するモバイルデバイスディスプレイに関連付けることができる。レンダリングコンテキストは、関連するディスプレイの解像度にマッチするように作成してもよく、それによってグラフィクスはその解像度に合わせて適正にレンダリングされる。ブロック1208で、方法1200は、第一のオペレーティングシステムを使って、第一のアプリケーションのサーフェスの更新を計算する。前述のように、サーフェスの更新を計算するには、アプリケーションのデータを使って、どのサーフェスがどのように変化したかが判断される。
第一のアプリケーションの更新後のサーフェスは、次にブロック1212で、第一のオペレーティングシステムを使ってレンダリングされ、第一のメモリ位置に第一のグラフィクスフレームが生成される。レンダリングでは一般に、グラフィクスプリミティブが、表示されるグラフィクスフレームを形成するビット(例えば、ビットマップ)に変換される。例えば、サーフェス情報は形状、大きさ、色、層の重なり順(すなわち、その前または後ろに、他の何れのサーフィスがあるか)、透明度等、各サーフェスの特性を数学的に定義する。OSのレンダリングエンジンは、サーフェスデータを解釈し、レンダリングコンテキストの中の各位置(例えば、「X、Y」位置)においてどのビットを表示するかを、全サーフェス情報のレンダリングに応じて(例えば、繰り返しによる合成、レイトレーシング、及び/またはその他の手法を使用して)判断できる。第一のアプリケーションの更新後のサーフェスを、第一のレンダリングコンテキストを使ってビットマップの中にレンダリングし、第一のメモリ位置(例えば、フレームバッファメモリ、共有メモリ、またはその他の有益なメモリ位置)の中に格納されるようにすることができる。
いくつかの実施形態において、ブロック1216で、第一のグラフィクスフレームが第一のメモリ位置から第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、モバイルデバイスディスプレイのためのディスプレイドライバが、関連するフレームバッファメモリにアクセスして、第一のレンダリングコンテキストで生成されたビットマップを表示する。ブロック1220において、第一のレンダリングコンテキストは解体される(例えば、破壊される)。
ブロック1224で、第一のオペレーティングシステムの第二のレンダリングコンテキストが作成される。いくつかの実施例で、第二のレンダリングコンテキストは、第一のレンダリングコンテキストと同じである。しかしながら、第二のレンダリングコンテキストはまた、第二のコンピューティング環境のディスプレイ(例えば、デスクトップディスプレイ)の特徴に応じて作成されてもよい。ブロック1228で、第二のアプリケーションのサーフェスの更新が、第一のオペレーティングシステムを使って計算される。ブロック1232で、これらの更新が次に第一のオペレーティングシステムの第二のレンダリングコンテキストでレンダリングされ、第二のメモリ位置に第二のグラフィクスフレームが生成される。特に、第二のメモリ位置は、モバイルデバイスの共有カーネル上で同時動作中の第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有メモリ位置である。
いくつかの実施形態において、ブロック1236で、第二のグラフィクスフレームが第二のメモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。特筆すべき点として、図10とは異なり、両方のアプリケーションの更新されたグラフィクスフレームは、第一のOSのレンダリングエンジンを使ってレンダリングされる。例えば、第二のOSのコンソールアプリケーションは、第二の共有メモリ位置にアクセスして、第二のコンピューティング環境のディスプレイに表示するためにレンダリングされたビットマップを直接呼び出すことができる。ブロック1240で、第二のレンダリングコンテキストが解体される。
いくつかの実施形態において、方法1200はブロックを繰り返し処理して、両方のアプリケーションのためのグラフィクス環境を同時に維持する。例えば、モバイルOSは、第一のアプリケーションに関するレンダリングコンテキストの作成、使用、破壊を繰り返し、その後、第二のアプリケーションに関するレンダリングコンテキストを作成し、使用し、破壊する。この技術を使用して、すべてのレンダリングを1つのOSによって(すなわち、第一のOSのレンダリングエンジンによって)実行することができ、もう一方のOSのレンダリング機能を提供または使用する必要がない。しかしながら、この技術では、レンダリングコンテキストを繰り返し作成し、破壊することに伴う追加の間接費が発生する。
異環境間レンダリングの上記の実施形態は、非拡張レンダリングコンテキストを使用して、第一のOS上で動作中のアプリケーションに関するグラフィクスフレームが、複数のOSに基づくコンピューティング環境の中の第二のOSのユーザ操作空間のコンソールウィンドウに表示される方法を説明している。このような異環境間アプリケーションのユーザ操作をサポートするために、実施形態では、入力イベントを第二のOSのユーザ操作空間から第一OSにリダイレクトし、異環境間アプリケーションが入力イベントを、それが第一のOSのユーザ操作空間から送られているかのように受け取るようにする(すなわち、アプリケーションは入力イベントを、それが第一のOSのユーザ操作空間内で表示された場合にユーザ入力の受け取りに使用するものと同じイベントハンドラ及び/またはビューを通じて受け取る)。
図7と8に戻ると、デスクトップOS 160は、デスクトップコンピューティング体験に適した第二の端末環境840を通じて、第二のユーザ操作空間を提供するように構成される。前述のように、上記の異環境間レンダリングの実施形態を用いれば、アプリケーション752はモバイルOS 130のユーザ操作空間に表示されてもよく、その一方で、モバイルOS 130上で動作中のアプリケーション754は、デスクトップOS 160上で動作中のコンソールアプリケーション782を通じて第二のユーザ操作空間のコンソールウィンドウ882に表示される。特に、アプリケーション752と754は、モバイルOSランタイム環境内で動作中であり、モバイルOSフレームワークを通じて入力イベントを受け取る、モバイルOS 130のためにコンパイルされたどのようなアプリケーションであってもよく、表示するため、または遠隔的に(モバイルOS 130のユーザ操作空間以外で)操作するために変更を加える必要がない。
図13は、各種の実施形態による、異環境間アプリケーションのユーザ操作をサポートするためのOSアーキテクチャ構成300bを示す。OSアーキテクチャ構成300bにおいて、共有カーネル320のデバイスドライバは、第二の端末環境840を構成するI/Oデバイス844、846及び/または848のためのハードウェアインタフェースを実装する。デバイスドライバを通じて、これらのデバイスの入力イベントが、共有カーネル320のI/Oデバイス1360のデバイス1364、1366及び/または1368に現れる。共有カーネル320のシステムリソースは、モバイルOS 130とデスクトップOS 160の両方で利用できることから、モバイルOSは、入力デバイス1364、1366及び/または1368の入力イベントがモバイルOS 130に対するものであるか否かを判断する。デスクトップOS 160が第二のユーザ操作空間を提供するように構成されている(すなわち、モバイルコンピューティングデバイス110が第二の端末環境840にドッキングされている)場合、モバイルOS 130は、第二のユーザ操作空間に関連する入力デバイスからの入力イベントを無視する。OSアーキテクチャ構成300bにおいて、モバイルOS 130は、デバイス1364、1366及び/または1368からの入力イベントを無視する。この場合、デスクトップOS 160がデバイス1364、1366及び/または1368からの入力イベントを受け入れる。
デスクトップOS 160は、デバイス1364、1366及び/または1368からの入力イベントを処理し、このイベントをデスクトップOS 160内の各種のウィンドウまたはGUI要素にどのように分配するかを判断する。例えば、デスクトップOS 160のウィンドウシステム774は、デバイス1364、1366及び/または1368からの入力イベントを受け入れてもよい。1つの実施形態において、デスクトップOS 160のグラフィクスシステムは、Xウィンドウグラフィクスシステムである。
1つの例において、ユーザは、コンソールアプリケーション782のコンソールウィンドウ882の中の画面位置でポインティングデバイスのボタンをクリックする。これに対応する入力イベントがデバイス1368に現れ、デスクトップOS 160はこの入力イベントを受け取って、処理する。ウィンドウシステム774は、入力イベントをコンソールアプリケーション782に送り、これを通じて、モバイルOS 130上で動作中のアプリケーション754が、異環境間レンダリングの実施形態を使って表示される。前述のように、アプリケーション754はモバイルアプリケーションであり、モバイルOS 130の入力待ち行列736からの入力を受け取るモバイルOS 130のライブラリを使って、ビューとその他のイベントハンドラのインスタンスを作成し、ユーザ入力を受け取る。入力イベントをアプリケーション754に、アプリケーション754がその入力イベントを適正に解釈できるような方法で提示するために、コンソールアプリケーション782は、入力イベントをモバイルOS 130のグラフィクスコンテキストにマッピングし、仮想入力デバイス1370を通じてこのイベントをモバイルOS 130の入力待ち行列736に送る。仮想入力デバイス1370はモバイルOS 130にとって、モバイルOS 130のための適正な入力イベントプロトコルを有する入力デバイスに見える。これに加えて、入力イベントは、コンソールアプリケーション782によって、モバイルOS 130のグラフィクスコンテキストに関連するようにフォーマットされる。モバイルOS 130は、仮想入力デバイス1370をアプリケーション754に関連付け、アプリケーション754がモバイルOSのイベント待ち行列から入力イベントを受け取るようにする。例えば、モバイルOS 130は、仮想入力デバイス1370をアプリケーション754の仮想ディスプレイIDに関連付けてもよい。このようにして、アプリケーション754は、アプリケーション754がモバイルOS 130のユーザ操作空間を通じて表示、操作されるかのように、入力イベントを受け取り、処理する。
図14は、各種の実施形態による、非拡張グラフィクスコンテキストを使ってレンダリングされる異環境間アプリケーションのためのユーザ操作をサポートする態様を示す。方法1400は、ブロック1402で、入力イベントをモバイルコンピューティングデバイス110に接続された入力デバイス(例えば、キーボード846、ポインティングデバイス848)から受け取ることから始まる。前述のように、入力イベントは共有カーネル内の入力デバイスに現れてもよい。ブロック1404で、モバイルOSは、モバイルコンピューティングデバイス110がドッキングされ、デスクトップOSが入力デバイスに関連付けられているか否かを判断する。例えば、モバイルコンピューティングデバイス110が第二の端末環境にドッキングされておらず、デスクトップOSが一時停止している場合、モバイルOSは、デスクトップが入力デバイスに関連付けられていないと判断することができる。デスクトップOSが一時停止しているか、入力デバイスがデスクトップOSに関連する第二の端末環境の一部ではない場合、ブロック1406で、モバイルOSが入力デバイスからの入力コマンドを受け入れる。
デスクトップOSが一時停止しておらず、入力デバイスがデスクトップOSに関連する第二の端末環境の一部である場合、ブロック1408で、モバイルOSは入力デバイスの入力イベントを無視し、デスクトップOSがその入力イベントを受け入れる。ブロック1410で、デスクトップOSは入力イベントを、デスクトップOS内の適当なウィンドウかGUI要素に分配する。入力イベントがコンソールウィンドウに送られなければ、ブロック1412で、この入力イベントは他のウィンドウまたはGUI要素に送られる。入力イベントがコンソールウィンドウに送られた場合(例えば、ユーザがポインティングデバイスをコンソールウィンドウ領域の中でクリックする)、ブロック1414で、この入力イベントが入力イベントとしてコンソールアプリケーションに送られる。
ブロック1416で、仮想入力デバイスが、コンソールアプリケーションからの入力イベントのために生成される。仮想入力デバイスは共有カーネルの中に生成されてもよく、または入力イベントがモバイルOS入力デバイスの中に直接書き込まれてもよい。ブロック1418で、コンソールアプリケーションは入力イベントをモバイルOSのグラフィクスコンテキストにマッピングする。例えば、コンソールアプリケーションは、コンソールアプリケーションのコンソールウィンドウの中の入力イベントの位置を、モバイルOSのグラフィクスコンテキストの中の位置にマッピングしてもよい。コンソールアプリケーションは、その入力イベントを、モバイルOSのための入力フォーマットまたは入力モードステートに変換してもよい。例えば、入力フォーマットは、デスクトップOSとモバイルOSの間で異なっていてもよい。共通の入力フォーマットであっても、デスクトップOSとモバイルOSは異なる入力モードステートを有していてもよい。例えば、デスクトップOSは、ノンタッチモードの入力ステートを使って入力イベントを処理していてもよく、その一方で、モバイルOSはタッチモード入力ステートである。この場合、デスクトップOSのユーザ操作空間内でポインティングデバイスにより生成された入力イベントは、仮想入力デバイスにジェスチャベースイベントとして現れるように変換されてもよい。
ブロック1420で、仮想入力デバイスは、モバイルOSの中で、コンソールウィンドウに表示されるそのアプリケーションのための仮想ディスプレイデバイスに関連付けられる。例えば、複数のアプリケーションがモバイルOS上で動作中であり、デスクトップOSのユーザ操作空間の異なるコンソールウィンドウに表示されていてもよい。デスクトップOSのユーザ操作空間の中の別々のコンソールウィンドウに表示された各アプリケーションには、モバイルOS内の仮想ディスプレイIDが割り当てられる。そのため、モバイルOSが仮想デバイスを通じてデスクトップOSのコンソールアプリケーションから入力イベントを受け取ると、モバイルOSは、仮想ディスプレイIDを通じて、その仮想デバイスを正しいアプリケーションにマッピングすることができる。ブロック1422で、入力イベントは仮想ディスプレイに関連するアプリケーションに送られ、このアプリケーションはその入力イベントを、それがモバイルOSのユーザ空間を通じて発生したかのように処理することができる。特に、上記の方法は、モバイルOS 130の何れのアプリケーションにも利用でき、アプリケーションは、デスクトップOSのコンソールアプリケーションを通じて入力イベントを受け入れるように特に設計されている必要がない。
拡張レンダリングコンテキストによる実施形態
いくつかの実施形態は、第一のオペレーティングシステムの中で拡張レタリングコンテキストを作成することによって、複数のOSにまたがる同時ユーザインタフェースのサポートを扱う。前述のように、第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独のアクティブレンダリングコンテキストで、単独のアクティブユーザ操作空間を定義するように構成される。本明細書では、多数のいわゆる「コンテキスト空間」を1つの拡張レンダリング空間にタイリングし、各コンテキスト空間を異なるディスプレイに関連付けることによって、第一のOSを、同時に扱われる複数のユーザ操作空間に有効にフーリングするための新規な技術を説明する。実施形態には、複数のユーザ操作空間へのディスプレイ出力を処理するための技術と、これらのコンテキストでユーザ操作を処理する技術が含まれる。
非拡張レンダリングコンテキストによる実施形態に関して上述した例に戻り、再び、カレンダアプリケーションとワードプロセシングアプリケーションがどちらも第一のOS(例えば、モバイルOSであるAndroid OS)のためにコンパイルされ、どちらもモバイルデバイスの第一のOS内で同時動作中であると仮定する。第二のOS(例えば、Hydroidのような非モバイルOS)は、共有カーネルを使って、モバイルデバイス上で同時に動作している。ユーザは、モバイルデバイスを第二のデスクトップコンピューティング環境にドッキングしており、デスクトップコンピューティング環境は、第二のOSのためのユーザ操作空間に関連付けられ、このユーザ操作空間を表示している。ユーザは、第二のOSのデスクトップコンピューティング環境を通じて、第一のOS上で動作中のワードプロセシングアプリケーションを操作したいと希望する。デスクトップコンピューティング環境のユーザ操作空間を、モバイルコンピューティング環境(例えば、モバイルデバイス)の第二のOSを使って、ユーザにとってわかりやすい方法で扱うことが望ましい。
図15は、各種の実施形態による、拡張レンダリングコンテキストを使って複数のOSにまたがる同時ユーザインタフェースをサポートする態様を示す。図15に示されるアプリケーションレンダリングの概略図1500において、第一のアプリケーション1510(例えば、カレンダアプリケーション)は、第一のOS内の第一のサーフェス1512の更新を計算する。第一のサーフェス1512は、第一のOSによって共有メモリ空間内の第一メモリ位置に格納される。具体的には、第一のアプリケーション1510は、第一のサーフェス1512のバックバッファ1514を更新する。同様に、第二のアプリケーション1530(例えば、ワードプロセシングアプリケーション)は、第一のオペレーティングシステムを使って第二のサーフェス1532の更新を計算する。ここでも、第二のアプリケーション1530による第二のサーフェス1532への更新がバックバッファ1534に対して行われる。第二のサーフェス1532は、第一のOSによって共有のメモリ空間の中の第二のメモリ位置に格納される。
第一のOSは、いつサーフェス情報が変化したかを判断し、レンダリングシーケンスを開始する。第一のOSは、特定のアプリケーションに関連するサーフェス情報がいつ変化したかを判断して、第一のサーフェス1512と第二のサーフェス1532を含む全サーフェスについて1ループを実行してもよい。レンダリングシーケンスの中で、第一のOSは、いつサーフェス情報が変化したかを判断し、第一のサーフェス1512のフロントバッファ1516とバックバッファ1514及び第二のサーフェス1532のフロントバッファ136とバックバッファ1534をスワップする。第一のOSは、共有メモリ空間の中の第三のメモリ位置で拡張レンダリングコンテキスト1520を作成し、第一のサーフェス1512を拡張レンダリングコンテキスト1520の第一のコンテキスト空間1522の中にレンダリングする。第一のOSは、第二のサーフェス1533を拡張レンダリングコンテキスト1520の第二のコンテキスト空間1524の中にレンダリングする。
実施形態において、拡張レンダリングコンテキスト1520は、メモリ空間の中で第一のOSのフレームバッファと重複してもよい。例えば、拡張レンダリングコンテキスト1520の第一のコンテキスト空間1522のメモリ位置は、第一のOSのフレームバッファと同じ範囲を占めていてもよい。第一のOSは、最終的な画像が第三のメモリ位置にレンダリングされたという通知を第二のOSに送る。例えば、第一のOSは、拡張コンテキスト1520の第二のコンテキスト空間1524の共有メモリ位置のファイル記述子を、プロセス間通信チャネルを通じて第二のOSのコンソールアプリケーションに送ってもよい。第二のOSは第三のメモリ位置の拡張グラフィクスコンテキストの第二の部分にアクセスして、レンダリングされたグラフィクスフレーム1538を呼び出し、第二のOSのコンソールウィンドウ1540の中に表示されるようにする。例えば、第二のOSのコンソールアプリケーションは、ファイル記述子をそのプロセス空間にマッピングし、第三のメモリ位置からレンダリングされたグラフィクスフレームを読み出し、第二のOSのユーザ操作空間内で表示されるようにする。このようにして、第二のOSは、第二のアプリケーションのレンダリングされたグラフィクスフレームを、そのユーザ操作空間内にリアルタイムで表示する。
図16は、各種の実施形態による、拡張レンダリングコンテキストを用いて異環境間レンダリングを行う例示的な方法のフロー1600を示す。実施形態では、第一のアプリケーション(例えば、カレンダアプリケーション)と第二のアプリケーション(例えば、ワードプロセシングアプリケーション)のアプリケーショングラフィクスの表示が維持される。どちらのアプリケーションも、第一のオペレーティングシステム(例えば、Android OS)のためにコンパイルされ、その中でアクティブに同時動作中であるが、ユーザは、第二のOSに関連する第二のコンピューティング環境を通じて、第二のアプリケーションを操作したいと望んでいると仮定する。特に、これらの技術は、2つのOSが非互換的である(例えば、第一のOS用にコンパイルされたアプリケーションは、直接第二のOSで実行できない)環境に利用できる。いくつかの実施例では、前述のように、2つのOSはモバイルデバイスの共有カーネル上で独立して、同時に動作している。
方法1600は、ブロック1604で、第一のOSの拡張レンダリングコンテキストを作成することから始まる。前述のように、レンダリングコンテキストは一般に、1つのアクティブディスプレイの特徴に合わせて作成される。しかしながら、拡張レンダリングコンテキストは、第一のアプリケーションに関連する第一のコンテキスト空間と第二のアプリケーションに関連する第二のコンテキスト空間を有するように作成される。第一と第二のコンテキスト空間は重複しない。
いくつかの実施形態において、拡張レンダリングコンテキストは、ローカルデバイスのアクティブディスプレイ(例えば、共有カーネルを有するモバイルデバイスのティスプレイ)と何れかの仮想ディスプレイ(すなわち、第二のOSのユーザ操作空間内で表示されるコンソールウィンドウに関連する第一のOSのディスプレイ)をタイリングして、第一のOSにとって、1つの大きなディスプレイに見えるものを形成することによって生成される。拡張レンダリングコンテキストの中の領域は、重複しないコンテキスト空間として指定され、その各々の物理的または仮想ディスプレイとの関連付けが維持される。特に、いくつかの実施形態において、異なるコンテキスト空間は、異なる解像度またはその他の特徴を有していてもよい。また、特定の実施形態において、コンテキスト空間は連続していない。例えば、拡張レンダリングコンテキストは、各コンテキスト空間の間に、どのコンテキスト空間にも割り当てられない空間が残されるような方法で作成される。
ブロック1608で、第一のオペレーティングシステムを使って、第一のアプリケーションと第二のアプリケーションのサーフェスの更新が計算される。更新後のサーフェスは次に、ブロック1612で、第一のオペレーティングシステムを使ってレンダリングされ、第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、共有カーネル上で同時動作中であってもよい)によってアクセス可能な共有メモリ位置で拡張グラフィクスフレームが生成される。拡張グラフィクスフレームの第一の部分は(第一のアプリケーションに関連する)第一のコンテキスト空間に関連付けられ、拡張グラフィクスフレームの第二の部分は(第二のアプリケーションに関連する)第二のコンテキスト空間に関連付けられる。ブロック1608でレンダリングが行われる際、第一のアプリケーションの更新後のサーフェスは、拡張グラフィクスフレームの第一の部分にレンダリングされ、第二のアプリケーションの更新後のサーフェスは、拡張グラフィクスフレームの第二の部分にレンダリングされる。特筆すべき点として、このようにして、拡張グラフィクスフレームには、その適当なコンテキスト空間の中にタイリングされた両方のアプリケーションのレンダリングされたサーフェスが有効に含まれる。
いくつかの実施形態において、ブロック1616で、拡張グラフィクスフレームのうち、第一のコンテキスト空間に関連する第一の部分が、共有メモリ位置から第一のOSに関連する第一のコンピューティング環境のディスプレイに表示される。例えば、前述のように、共有メモリ位置はモバイルデバイスのフレームバッファメモリであり(またはフレームバッファメモリにコピーされ)、モバイルデバイスのディスプレイデバイスドライバがそのフレームバッファメモリにアクセスして、拡張グラフィクスフレームの第一の部分をそのディスプレイに表示する。さらに、いくつかの実施形態において、ブロック1620で、拡張グラフィクスフレームのうち、第二のモーション空間に関連する第二の部分が、共有メモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティングデバイスのディスプレイに表示される。例えば、前述のように、共有メモリ位置は第二の(例えば、デスクトップ)コンピューティング環境に関連する第二のOSのフレームバッファメモリの中にコピーされ、ディスプレイデバイスドライバは、拡張グラフィクスフレームの第二の部分を第二のコンピューティング環境のディスプレイに表示する。
図12に関して説明した実施形態において、第二のアプリケーションの更新後のグラフィクスのレンダリングは、第二のOSによって遠隔的に行われる。図15に関して説明した実施形態において、両方のアプリケーションのレンダリングがモバイルデバイスのレンダリングエンジンによってローカルで実行されるが、レンダリングコンテキストは継続的に作成され、解体される。図16に関して説明した実施形態によれば、両方のアプリケーションのレンダリングがモバイルデバイスのレンダリングエンジンによってローカルで実行され、その一方で、拡張はされているが、単独のレンダリングコンテキストが維持される(すなわち、レンダリングコンテキストが解体されない)。
図17は、各種の実施形態による、拡張レンダリングコンテキストを使用する異環境間レンダリングの他の例示的な方法のフロー1700を示す。図16の方法1600と同様に、実施形態では、どちらも第一のオペレーティングシステムのためにコンパイルされ、アクティブに同時動作中の第一のアプリケーションと第二のアプリケーションのためのアプリケーショングラフィクスのディスプレイが維持される。方法1700は、ブロック1704で、第一のオペレーティングシステムの拡張レンダリングコンテキストを作成することから始まり、ブロック1708で、第一のオペレーティングシステムを使って、第一のアプリケーションと第二のアプリケーションのサーフェスの更新が計算される。前述のように、拡張レンダリングコンテキストは、第一のアプリケーションに関連する第一のコンテキスト空間と第二のアプリケーションに関連する第二のコンテキスト空間を有するように作成される。第一と第二のコンテキスト空間は重複しない。いくつかの実施例では、ブロック1704と1708はそれぞれ、ブロック1604と1608と実質的に同じ方法で実行される。
ブロック1712で、第一のアプリケーションの更新後のサーフェスが、第一のオペレーティングシステムを使って、第一のコンテキスト空間に従ってレンダリングされ、第一のオペレーティングシステムのフレームバッファに第一のグラフィクスフレームが生成される。たとえは、第一のコンテキスト空間は、特定の解像度、特定のタイリングオフセット(例えば、「X」位置から始まる)等に関連付けられてもよい。いくつかの実施形態において、第一のグラフィクスフレームは、図16の方法1600の拡張グラフィクスフレームのそれぞれの部分の生成と実質的に同じ方法で生成される。いくつかの実施形態において、ブロック1716で、第一のコンテキスト空間に関連する第一のグラフィクスフレームが、フレームバッファから第一のオペレーティングシステムに関連する第一のコンピューティング環境のディスプレイに表示される。
ブロック1720で、第二のアプリケーションの更新後のサーフェスが、第一のオペレーティングシステムを使ってレンダリングされ、共有メモリ位置に第二のグラフィクスフレームが生成される。前述のように、共有メモリ位置は第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、これらは共有カーネル上で同時動作中であってもよい)によってアクセス可能である。いくつかの実施形態において、ブロック1724で、第二のモーション空間に関連する第二のグラフィクスフレームが、共有メモリ位置から第二のオペレーティングシステムに関連する第二のコンピューティング環境のディスプレイに表示される。
特に、図16と17の両方の実施形態では、各アプリケーションのコンテキスト空間を有する拡張レンダリングコンテキストが作成される。しかしながら、図16の方法1600は、すべてのグラフィクスの更新を1つの拡張ビットマップにレンダリングするが、図17の方法1700は、グラフィクスの更新を別のビットマップにレンダリングする。一方または他方の技術のどちらが望ましいかは、例えばメモリの管理及び/またはアクセス方法によって異なる。
図12の実施形態と同様に、図16と17の実施形態においては、両方のアプリケーションの更新後のグラフィクスフレームが第一のOSのレンダリングエンジンを使ってレンダリングされる。第一のOSのレンダリングエンジンを使用することにより、両方のアプリケーションに第一のOSで利用可能なモバイルデバイスのハードウェア加速機能を使用できる。例えば、図12、16及び/または17の実施形態において、第一と第二のアプリケーションの何れかまたは両方を、2Dまたは3Dハードウェア支援レンダリングを使って、第一のOSによりレンダリングしてもよい。
拡張レンダリングコンテキストを使って第一のOS(すなわち、モバイルOSであるAndroid)上で動作するアプリケーションのためのグラフィクスフレームを遠隔的に表示することにより、第一のOSが1つのレンダリングコンテキストを使って、複数のユーザ操作空間内で表示するように、複数のアプリケーションのためのレンダリングを提供できる。しかしながら、拡張レンダリングコンテキストでは、拡張レンダリングコンテキストを通じて表示されるアプリケーションに関する入力イベントの取扱いに関する問題が発生する。具体的には、第一のOSの入力待ち行列は、拡張レンダリングコンテキストの別の仮想ディスプレイを通じて表示される複数のアプリケーションからの複数の入力イベントを取り扱うように構成しなければならない。
異環境間ユーザ操作のサポートの実施形態は、第一のOS上で動作し、第一のOSの拡張レンダリングコンテキストを通じて複数の別々のユーザ操作空間(すなわち、モバイルデバイスユーザ操作空間とデスクトップOSのユーザ操作空間)で表示される複数のアプリケーションに関するユーザ入力イベントを処理することに関する。実施形態には拡張入力待ち行列が含まれ、そこでは遠隔的に表示されるアプリケーションのための仮想入力デバイスからの入力イベントがその入力待ち行列の中の別々のモーション空間にマッピングされる。例えば、第一のアプリケーション(例えば、カレンダアプリケーション)が第一のOS上で動作中であり、第一のデバイスに関連する第一のディスプレイ(例えば、第一のOSが動作中のモバイルデバイスのディスプレイ)に表示されている。第二のアプリケーション(例えば、ワードプロセシングアプリケーション)も、第一のアプリケーションと同時動作中であるが、拡張レンダリングコンテキストのコンテキスト空間(例えば、仮想ディスプレイ)の中でレンダリングされ、モバイルデバイスの共有カーネル上で第一のOSと同時動作中の第二のOSの第二のユーザ操作空間に表示されている。第一のOSは、第一のコンテキスト空間(すなわち、モバイルデバイスディスプレイ)の中の第一のアプリケーションと第二のコンテキスト空間の第二のアプリケーションの両方に関するアプリケーショングラフィクスを含む拡張レンダリングコンテキストを通じて、グラフィクスフレームをレンダリングする。第二のコンテキスト空間は、第二のOS上で動作中のコンソールアプリケーションを通じて第二のOSのユーザ操作空間に表示される。
拡張レンダリングコンテキストを通じて遠隔的に表示されるアプリケーションに関する入力イベントは、非拡張グラフィクスコンテキストに関して上述したものと同じ方法で、第二のOS(すなわち、デスクトップOSであるHydroid)によって受け取られ、第二のOSのコンソールアプリケーションによって仮想入力デバイスに送られる。しかしながら、前述のように、仮想入力デバイスからモバイルOSで受け取られた入力イベントは、第二のOSのユーザ操作空間内に表示されるコンソールウィンドウに関係する。仮想入力デバイスは、拡張入力待ち行列の中の、遠隔的に表示されたアプリケーションに対応する仮想ディスプレイに関連するモーション空間にマッピングされる。拡張入力待ち行列によって、第一のOSは、1つの入力待ち行列を使って、同時動作する複数のアプリケーション用として意図された複数のローカル及び仮想入力デバイスからの入力を正しく処理することができる。
図18aと18bは、各種の実施形態による、拡張レンダリングコンテキストを用いた異環境間アプリケーションのユーザ操作サポートの態様を示す。図18aは、第一のOS上で動作中のアプリケーションを遠隔的に表示しているユーザ操作空間1810(例えば、第一のOSで動作中のアプリケーションを表示している第二のOSのGUI)を示している。例えば、第一と第二と第三のアプリケーションが第一のOS上で動作していても(すなわち、第一のOSでアクティブに同時動作中であっても)よい。第一のOSは、上述の実施形態により、第一と第二と第三のアプリケーションを、第一のOSの拡張レンダリングコンテキストの第一と第二と第三のコンテキスト空間に表示してもよい。ユーザ操作空間1810のコンソールウィンドウ1812と1814はそれぞれ、第一のOSの中で動作中の第二のアプリケーションと第三のアプリケーションを表示していてもよい。
図18bは、第一のOS上で動作中の各アプリケーションのためのユーザ操作をサポートする、第一のOSの拡張入力待ち行列1840を示す。拡張入力待ち行列1840には、第一のモーション空間1842、第二のモーション空間1844、第三のモーション空間1846が含まれる。第一のモーション空間は第一のOSの拡張レンダリングコンテキストの第一のコンテキスト空間に関連付けられ、これは一般に、第一のOSの非仮想ディスプレイ1852を表示するために使用される(すなわち、モバイルコンピューティングデバイス110のディスプレイ116に関連するコンテキスト空間)。第二と第三のモーション空間はそれぞれ、仮想ディスプレイ1854、1856に関連付けられ、これらは第二と第三のコンテキスト空間を通じてレンダリングされる。
遠隔的に表示されているアプリケーションのコンソールウィンドウに送られる入力イベントが発生すると、この入力イベントは、そのアプリケーションが表示される仮想ディスプレイに関連するモーション空間へと送られる。例えば、ユーザが、入力イベント1820によって示されるように、ユーザ操作空間1810のコンソールウィンドウ1812でポインティングデバイスをクリックすると、第二のOSのウィンドウシステムがその入力イベントを、コンソールウィンドウ1812に関連するコンソールアプリケーションに送る。前述のように、コンソールアプリケーションは入力デバイスを仮想入力デバイスにマッピングする。しかしながら、この入力イベントはコンソールウィンドウ1812に関係している。この入力イベントが第一のOSの入力待ち行列に直接供給された場合、この入力イベントは正しいアプリケーションイベントハンドラに送られないであろう。そのため、仮想入力デバイスからの入力イベント1820は第二のモーション空間1844にマッピングしなおされる。このようにして、拡張入力待ち行列はその入力イベントを第二のアプリケーションのイベントハンドラに送り、これが入力イベント1820を受け取り、処理する。
実施形態において、仮想ディスプレイはモバイルOSの入力待ち行列の中でオフセットされる。例えば、図18bにおいて、仮想ディスプレイ1854と1856は、モバイルOSの入力待ち行列1840の中の仮想ディスプレイオフセット1858の分だけオフセットされる。仮想ディスプレイオフセット1858は、仮想ディスプレイが入力待ち行列内で隣接して現れるのを防止するものであり、隣接して現れた場合、1つの仮想ディスプレイ用として意図されたある入力イベントが、別のアプリケーションに関連するモーション空間内で解釈される可能性がある。仮想ディスプレイのオフセットは、実際の仮想ディスプレイの解像度のパラメータとして使用されないように、十分に大きくするべきである。1つ実施形態において、仮想ディスプレイのオフセット1858は10000ピクセルと選択される。
図19は、各種の実施形態による、拡張レンダリングコンテキストを通じて表示される異環境間アプリケーションに関する入力イベントを受け取る方法1900を示す。例えば、方法1900は、第一のOS内で動作中の第一のアプリケーションと第二のアプリケーションに関する入力イベントを処理するために使用してもよく、第一のOSの拡張レンダリングコンテキストを通じて、第一のアプリケーションは第一のOSのユーザ操作空間にローカルで表示され、第二のアプリケーションは第二のOSのユーザ操作空間に遠隔的に表示される。
方法1900は、ブロック1902で、第一のユーザ入力が第一のOSで受け取られることから始まり、この時、第一のアプリケーションと第二のアプリケーションは第一のOS内でアクティブに同時動作中であり、第一のアプリケーションが第一のOSに関連する第一のユーザ環境内で表示され、第二のアプリケーションが第二のOSに関連する第二のユーザ環境内で表示され、第一と第二のオペレーティングシステムは共有カーネル上で同時動作中であり、第一のOSは、拡張レンダリングコンテキストの第一の仮想ディスプレイを通じて第二のアプリケーションに関するグラフィクスフレームをレンダリングすることにより、第二のアプリケーションに関するアプリケーショングラフィクスを維持する。ブロック1904で、第一のOSは第一のモーション空間と第二のモーション空間を含む拡張入力待ち行列を作成し、第二のモーション空間は第一の仮想ディスプレイに対応する。例えば、第一のオペレーティングシステムは第二のアプリケーションのための第一の仮想ディスプレイを割り当て、第一のコンテキスト空間と第二のコンテキスト空間を有する拡張レンダリングコンテキストを作成し、第一の仮想ディスプレイを第二のコンテキスト空間に関連付け、上述の方法を用いて、拡張レンダリングコンテキストの第二のコンテキスト空間を通じて、第二のアプリケーションに関するグラフィクスフレームをレンダリングする。
ブロック1906で、第一のユーザ入力イベントが、第一のOSにより、第一の仮想入力デバイスにおいて、第二のOSを通じて第二のアプリケーションに関するレンダリングされたグラフィクスフレームを表示している、第二のOSで動作中の第一のコンソールアプリケーションから受け取られる。ブロック1908で、第一の仮想入力デバイスは、第一のオペレーティングシステムの拡張入力待ち行列の第二のモーション空間にマッピングされる。第一の仮想入力デバイスを第二のモーション空間にマッピングすることによって、第一のOSの拡張入力待ち行列は、第一の仮想入力デバイスからの入力イベントを第二のアプリケーションのビューの中のイベントハンドラに正しく関連付けることができる。具体的には、入力イベントが第二のモーション空間にマッピングされると、第一のOSはこの入力イベントを、拡張入力待ち行列の中の第二のアプリケーションに関連する位置で発生したものとして扱う。ブロック1910で、第一のOSは第一のユーザ入力イベントを、マッピングされた第一の仮想入力デバイスから第二のアプリケーションに送る。拡張入力待ち行列は、拡張レンダリングコンテキストがタイリングされるという性質を利用して、入力待ち行列が複数のユーザ操作空間からの複数の入力イベントを処理し、入力イベントを所期のアプリケーションの適当なイベントハンドラに送ることができるようにする。
ミラーリングされたコンテキストによる実施形態
拡張及び非拡張レンダリングコンテキストの実施形態を、複数のオペレーティングシステム上の複数のアプリケーションにわたる同時ユーザ操作空間を維持するという内容で説明した。多くの場合、1つのユーザ操作空間のためにコンテキストをミラーリングすることが望ましい。第二のOSに関連する第二のコンピューティング環境(例えば、Hydroid OSに関連するデスクトップ環境)の中で同時に第一のOSを見て、これを操作すること(すなわち、操作空間を「ミラーリング」すること)が望ましい。ミラーリングされたユーザ操作空間を通じて、ユーザは第一のOSを、ローカルデバイスを通じて操作するかのように操作できる(すなわち、ユーザは、利用可能なアプリケーションをブラウズし、アプリケーションを開始、停止し、第一のOSの検索機能を使用すること等ができる)。
第一のOS(例えば、モバイルOSであるAndroid)は一般に、単独のアクティブなユーザ操作空間を画定するように構成される。ユーザ操作空間は、アクティブディスプレイ(例えば、解像度等、関連する特徴を有する)と、ユーザがアクティブディスプレイ上に表示された要素を操作できるようにする1つまたは複数のアクティブ入力デバイスを含む。異環境間レンダリングを使って、複数のOSにわたって1つまたは複数のミラーリングされたユーザ操作空間を提供する新規な方法を提示する。前述のように、実施形態は、複数のOSが非互換的であり、及び/または共有カーネル上で独立して、並行動作している場合も動作できる。
ミラーリングされたコンテキストにより同時ユーザ操作のサポートを維持することは、異環境間アプリケーションのための同時ユーザ操作をサポートすることに関して上述したものと同じシステム要素の多くを用いて実現できる。例えば、図7を参照すると、モバイルOS 130のためのグラフィクスコンテキストは、モバイルOS130のアプリケーション(例えば、アプリケーション752及び/または754)及び/またはホーム画面(例えば、Android OS 430のホーム画面アプリケーション451)をアクティブに表示していてもよい。アクティブに表示されるモバイルOSのアプリケーション及び/またはホーム画面に関するサーフェス情報は、共有メモリ724の中に格納されてもよい。モバイルOS 130のミラーリングされたコンテキストは、コンソールアプリケーション782を通じて、デスクトップOS 160のユーザ操作空間に表示されてもよい。
図20は、様々な実施形態による、ミラーリングされたユーザ操作空間を提供するためのグラフィクスコンテキストの異環境間レンダリングの例示的な方法のフロー2000を示す。方法2000はブロック2004で、第一のオペレーティングシステムを使って、第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中の第一のアプリケーションのサーフェス集合の更新を計算することから始まる。例えば、計算は、サーフェスの形状、大きさ、テクスチャ、レイヤリング等の変化を判断するために行われる。次に、ブロック2008で、サーフェスの更新が第一のオペレーティングシステムを使ってレンダリングされ、グラフィクスフレームが生成される。グラフィクスフレームは、そのアプリケーションに関する更新後のグラフィクス情報を反映するビットマップであってもよい。
ブロック2012で、グラフィクスフレームは、第一のオペレーティングシステムと第二のオペレーティングシステムの両方によりアクセス可能な共有メモリ位置に格納される。いくつかの実施形態において、第一と第二のOSは、共有カーネル上で同時動作中である。ブロック2016で、グラフィクスフレームは第一のオペレーティングシステムを使って、第一のコンピューティング環境の第一のディスプレイ上の第一のアプリケーションの第一のアプリケーションディスプレイに表示されてもよい。例えば、共有メモリの位置はフレームバッファメモリであってもよく、または第一のオペレーティングシステムのフレームバッファにコピーされてもよい。ローカルデバイス(例えば、共有カーネル上で動作中)のディスプレイデバイスドライバは、そのフレームバッファメモリにアクセスし、ビットマップを表示する。
ブロック2012で共有メモリ位置にグラフィクスフレームを格納した後、第二のOSに、更新されたグラフィクス情報が利用可能であると知らせることが望ましい。ブロック2020で、共有メモリ位置を特定するファイル記述子が、第二のOSのためにコンパイルされ、その中でアクティブに動作中のコンソールアプリケーションに送られる。いくつかの実施例において、ファイル記述子には、共有メモリ位置の識別が含まれる。他の実施例では、ファイル記述子には、ミラーリングされるアプリケーションに関する更新後のグラフィクス情報が利用可能であることを示すフラッグのような追加の情報が含まれる。
前述のように、コンソールアプリケーションは、Xウィンドウまたは、第二のコンピューティング環境のディスプレイのウィンドウ内に表示されるその他の種類のアプリケーションであってもよい。ブロック2024で、コンソールアプリケーションは、ファイル記述子による共有メモリ位置の更新後のグラフィクス情報(例えば、ビットマップ)にアクセスし、そのグラフィクスフレームを共有メモリ位置から第二のコンピューティング環境の第二のディスプレイ上の第一のアプリケーションの第二のアプリケーションディスプレイに表示する。いくつかの実施形態において、アプリケーションに関する更新後のグラフィクス情報は、第一と第二のコンピューティング環境の両方のディスプレイで実質的に同時に表示される。
図21は、様々な実施形態による、ミラーリングされたユーザ操作空間を提供するためのグラフィクスコンテキストの異環境間レンダリングの他の例示的な方法のフロー2100を示す。図20と同様に、方法2100はブロック2104で、第一のオペレーティングシステムを使って、第一のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中の第一のアプリケーションのサーフェス集合の更新を計算することから始まる。フロック2108で、更新後のサーフェス集合が、第一のオペレーティングシステムと第二のオペレーティングシステム(例えば、共有カーネル上で同時動作中)の両方によってアクセス可能な共有メモリ位置に格納される。
ブロック2112で、更新後のサーフェス集合は第一のオペレーティングシステムでレンダリングされ、第一のグラフィクスフレームが生成される。次に、ブロック2116で、第一のグラフィクスフレームを、第一のオペレーティングシステムを使って、第一のコンピューティング環境の第一のディスプレイ上の第一のアプリケーションの第一のアプリケーションディスプレイに表示することができる。例えば、モバイルOS 130は、更新後のアプリケーショングラフィクスをレンダリングして、更新後のグラフィクスをモバイルデバイス110のディスプレイ116に表示する。
ブロック2108で更新後のサーフェス集合を共有メモリに格納した後、何れかの時点で、第二のOSに対して、更新後のグラフィクス情報が利用可能であると通知することが望ましい。ブロック2120で、共有メモリ位置を特定するファイル記述子が、第二のオペレーティングシステムのためにコンパイルされ、その中でアクティブに動作中のコンソールアプリケーションに送られる。特に、共有メモリ内に格納された情報は、図20の方法2000のようなレンダリングされたビットではなく、レンダリングされていないサーフェス情報(例えば、幾何プリミティブ)である。
従って、ブロック2124で、更新後のサーフェス集合は、第二のオペレーティングシステムによって(例えば、ファイル記述子によるコンソールアプリケーションを介して)共有メモリ位置からレンダリングされ、第一のグラフィクスフレームと実質的に同じ第二のグラフィクスフレームが生成される。ブロック2128で、第二のグラフィクスフレームは、第二のオペレーティングシステムのコンソールアプリケーションを介して、第二のコンピューティング環境の第二のディスプレイ上の第一のアプリケーションの第二のアプリケーションディスプレイに表示され、それによって、第二のアプリケーションディスプレイは第一のアプリケーションディスプレイと実質的に同じとなる。
特筆すべき点として、第一と第二のオペレーティングシステムシステムの両方でレンダリングを複製することから、追加の間接費が発生し得る。しかしながら、このような追加の間接費には、数多くの状況において、相応の価値がある可能性がある。例えば、異なるコンピューティング環境のディスプレイの特徴が顕著に異なる場合、各々がそれぞれのディスプレイに適した別々のレンダリングコンテキストで更新後のグラフィクス情報をレンダリングすることが望ましい場合がある。
図20と21の方法は、ミラーリングされたグラフィクスコンテキストの中での、第一のOSで動作中のアプリケーションのアクティブディスプレイによるグラフィクスコンテキストの異環境間ミラーリングを説明している。しかしながら、この方法は、グラフィクスコンテキストの中でアクティブに表示されているアプリーションがない場合にも使用できる。例えば、グラフィクスコンテキストは、第一のOSのホーム画面またはその他の機能(例えば、検索画面等)を表示していてもよい。このような場合、グラフィクスコンテキストに関するサーフェス情報は第一のOSのコンポーネントによって更新され、図20と21の方法のその他のステップは、第二のアプリケーションディスプレイの中にミラーリングされたグラフィクスコンテキストを提供するために実行されてもよい。
特に、グラフィクスコンテキストの異環境間ミラーリングは、アプリケーションの異環境間レンダリングと同時に利用してもよい。例えば、図20または21による方法は、前述のアプリケーションの異環境間レンダリングの方法を使って、第一のOSで動作中のアプリケーションが第二のユーザ環境内で表示されるのと同時に、モバイルデバイスのユーザ操作空間のアクティブグラフィクスコンテキストを第二のユーザ環境にミラーリングするために使用してもよい。説明のために図8を参照すると、モバイルOS用アプリケーションがディスプレイ844の上のデスクトップOSのユーザ操作空間内の第二のコンソールウィンドウ884に表示されている間に、モバイルOSのユーザ操作空間を第一のコンソールウィンドウ882の中に表示してもよい。
ミラーリングされたグラフィクスコンテキストのためのユーザ操作のサポートは、図13、14、18及び/または19に示される異環境間アプリケーションのためのユーザインタフェースをサポートするのと実質的に同じ方法で行われてもよい。具体的には、入力イベントは、第二のOSのコンソールアプリケーションから仮想入力デバイスに提供されてもよい。第一のOSは、拡張または非拡張入力待ち行列を通じて、仮想入力デバイスからの入力イベントを受け入れてもよい。
異環境間レンダリングの実施形態
上記の方法は、第二のオペレーティングシステムのユーザ操作空間を通じた第一のオペレーティングシステムのアプリケーションとグラフィクスコンテキストのための異環境間ユーザ操作をサポートする。わかりやすい異環境間使用モデルとするために、実施形態は、第二のオペレーティングシステムのユーザ操作空間から、第一のオペレーティングシステムのアプリケーション及び/またはミラーリングされたコンテキストにアクセスできるようにすることに関する。
再び図8を参照すると、ユーザは、モバイルデバイス上の操作コンポーネント(すなわち、タッチスクリーンディスプレイ116、その他のI/Oデバイス118)を含む第一のユーザ操作空間を通じて、第一のOS(すなわち、モバイルOSであるAndroid)を操作できる。ユーザはまた、第二のOS(すなわち、デスクトップOSであるHydroid)を、第二の端末環境840のディスプレイ844を含む第二のユーザ操作空間を通じて操作できる。前述のように、デスクトップOS 160で利用可能な(すなわち、そのためにコンパイルされ、その実行環境内にロードされた)アプリケーションの集合は、モバイルOS 130で利用可能なものとは異なるかもしれない。実施形態は、デスクトップOS 160のユーザ操作空間のメニューの中にモバイルOS 130で利用可能なアプリケーションのためのメニューアイコンまたはメニューリストアイテムを設けることによって、モバイルOS 130のアプリケーションにデスクトップOS 160のユーザ操作空間内でアクセスできるようにすることに関する。
図22は、各種の実施形態による異環境間リダイレクションの態様を示す。図22に示されるコンピューティング環境2200の中で、ユーザは、デスクトップOSのユーザ操作空間2202を通じてデスクトップOS 160を操作する。デスクトップOSのユーザ操作空間2202の中で、メニューバー2220には、利用可能なアプリケーションのアイコンまたはリストが含まれる。あるアプリケーションを起動させるには、ユーザはそのアプリケーションの名前またはアイコンをメニューバーから、またはメニューバー2220のドロップダウンまたはポップアップリストから選択する。従来、メニューバー2220には、デスクトップOS 160で利用可能なアプリケーションのメニューアイテムまたはアイコンのみが含まれている。例えば、メニューアイテム2222、2224、2226及び/または2228は、デスクトップOS 160で利用可能な(すなわち、そのためにコンパイルされ、その実行環境の中にロードされた)アプリケーションであってもよい。本発明の実施形態は、デスクトップOSのユーザ操作空間2202からのモバイルOS 130のアプリケーション及び/またはグラフィクスコンテキストへの異環境間アクセスを提供することに関する。例えば、メニューアイテム2232、2234、2236、2237及び/または2238はモバイルOS 130で利用可能なアプリケーション及び/またはモバイルOS 130のグラフィクスコンテキストを示していてもよい。
デスクトップOSのユーザ操作空間2202は、デスクトップOS 160に関連するユーザ操作空間(例えば、第二の端末環境840)の中のディスプレイに表示される。デスクトップOS 160のメニューバー2220には、デスクトップOS 160のためにコンパイルされ、そこにロードされた(例えば、Hydroid/Linuxのためにコンパイルされ、Hydroid OSの実行環境内にロードされた)アプリケーションに関連するメニューアイテム2222、2224、2226及び/または2228が含まれる。メニューバー2220はまた、モバイルOS 130のためにコンパイルされ、そこにロードされた(例えば、Androidのためにコンパイルされ、Androidの実行環境内にロードされた)アプリケーションに関連するメニューアイテム2234、2236、2237及び/または2238が含まれる。ユーザがメニューアイテム2234、2236及び/または2238の1つを選択すると、関連するアプリケーションがモバイルOS 130上で起動され、デスクトップOS 160のコンソールウィンドウ内、例えばデスクトップOSのユーザ操作空間2202のウィンドウ2216の中に表示される。メニューアイテム2232は、モバイルOSグラフィクスコンテキストに関連付けられていてもよく、これによって、メニューアイテム2232が選択されると、モバイルOSのグラフィクスコンテキストがデスクトップOS 160のコンソールウィンドウ内に表示される。
図23は、デスクトップOS 160のメニューバー2220を構築するために使用できるプロセスフロー2300を示す。プロセスフロー2300のステップ2302で、デスクトップOS 160は、モバイルOS 130に利用可能なアプリケーションのリストを問い合わせる。一実施形態において、デスクトップOS 160のシステムサービスまたは起動アプリケーションは、モバイルOS 130のサービスにすべての起動可能なモバイルOS用アプリケーションのショートカットを問い合わせる。モバイルOS 130は、利用可能なアプリケーションのリスト(すなわち、利用可能なモバイルOS用アプリケーションの起動可能なショートカット)を返す。利用可能なアプリケーションのリストには、モバイルOS 130で利用可能なすべてのアプリケーション(モバイルOS 130にロードされ、実行可能なすべてのアプリケーション)または、利用可能なモバイルOS用アプリケーションのサブセットが含まれていてもよい。例えば、リストには、モバイルOS GUIのアプリケーションメニュー画面上に現れるすべてのアプリケーションが含まれていてもよい。ステップ2304で、デスクトップOS 160は、モバイルOS 130からアプリケーションのリストを受け取る。モバイルOS 130から返されたアプリケーションのリストには、リストに挙げられた各アプリケーションのアプリケーションパッケージ名が含まれ、また、リストに挙げられた各アプリケーションのアプリケーション名とアイコンが含まれていてもよい。
デスクトップOS 160は、メニューバー2220の中に、アプリケーションのリストの中の各アプリケーションのメニューアイテムを、ブロック2306、2308、2310を繰り返すことによって作成する。各アプリケーションについて、デスクトップOS 160は、ブロック2306でメニューバー2220の中にアプリケーションのアイコンのインスタンスを作成し、ブロック2308でそのアイコンをデスクトップOS 160のコンソールアプリケーションに関連付け、ブロック2310でそのアプリケーションのパッケージ名を示すパラメータをそのアイコンに関連付ける。コンソールアプリケーションはデスクトップOS 160上で動作し、上述の異環境間レンダリングの実施形態を使って、デスクトップOS 160内にそのアプリケーションに関するグラフィクス情報を表示する。このようにして、ユーザがメニューアイテムを選択すると、コンソールアプリケーションがデスクトップOS 160上で動作し、そのアプリケーションのパッケージ名がコンソールアプリケーションに送られる。
デスクトップOS 160は、多様な方法で、モバイルOS 130のアプリケーションに関連するメニューアイテムを表示してもよい。メニューアイテムは、メニューバー2220または、そのモバイルOS用アプリケーションが利用可能であることを示すメニューアイテムが選択された時に現れるドロップダウンメニューの中に表示されてもよい。メニューアイテムは、メニューバー2220またはドロップダウンメニューの中でアイコンまたはアプリケーション名のみを使って表示されてもよい。1つの実施形態において、デスクトップOS 160は、モバイルOS用アプリケーションごとに別のメニューバーを表示する。他の実施形態では、モバイルOS用アプリケーションに関連するメニューアイテムが、デスクトップOS用アプリケーションのメニューアイテムに沿って、または混ざって、デスクトップOSのメニューバー2220の中に表示される。任意選択的に、モバイルOSのメニューアイテムは、メニューバー2220の中の、デリミタ2240によって仕切られた、またはその他の方法でモバイルOSのメニューアイテムが含まれることを特定できるようにされた領域2230の中に表示されてもよい。メニューバー2220は、モバイルデバイスそのもののアクティブディスプレイ用のメニューアイテム、すなわちユーザが、図20及び/または21の方法に従ってデスクトップOSのユーザ環境内でモバイルOSのユーザ操作空間を表示するために選択できるメニューアイテムを含んでいてもよい。1つの実施形態において、モバイルOSのホーム画面のアプリケーションは、利用可能なアプリケーションのリストの中に返され、関連するメニューアイテムが提供される。
ユーザがモバイルOS用アプリケーションに関連するメニューアイテムを選択すると、デスクトップOS 160がそのニューアイテムに関連するコンソールアプリケーションを起動させ、そのアプリケーションのパッケージ名をコンソールアプリケーションに送る。コンソールアプリケーションは、デスクトップOSのユーザ操作空間2202の中にウィンドウを1つ表示する(すなわち、デスクトップOSのグラフィクスシステムの中のコンソールアプリケーションディスプレイ)。コンソールアプリケーションは、モバイルOS 130に、そのアプリケーションを起動させる要求を送り(すなわち、モバイルOS 130に対して、実行パラメータとしてコンソールアプリケーションに提供されたアプリケーションパッケージ名を起動するように要求し)、コンソールアプリケーションを通じてそのアプリケーションに関するグラフィクスフレームを表示する。アプリケーションは、その時点でモバイルOS 130で動作中であっても、そうでなくてもよい。アプリケーションがモバイルOS 130上で動作中であれば、そのアプリケーションの表示はモバイルOS 130からデスクトップOSのユーザ操作空間2202に移動されても、またはモバイルデバイスのディスプレイとユーザ操作空間2202の両方で同時に表示されてもよい。アプリケーショングラフィクスの表示とユーザ操作のサポートは、上述の異環境間レンダリングと異環境間ユーザインタフェースのサポートの方法の何れを使用したアプリケーションについても実行できる。
図24は、ユーザがデスクトップOSのGUI 880のメニューバー2220でモバイルOS用アプリケーションに関するメニューアイテムを選択したことに応答して、モバイルOS 130がアプリケーションを起動させるために実行するプロセスフロー2400を示す。プロセスフロー2400はブロック2402で、モバイルOS 130がデスクトップOS 160から、モバイルOSのためにコンパイルされ、モバイルOSの実行環境内にロードされたアプリケーションを、デスクトップOSで表示するように起動させる要求を受け取ることから始まる。ブロック2404で、モバイルOSは使用されていない仮想ディスプレイIDを割り当てる。例えば、モバイルOSのグラフィクスシステムは、仮想ディスプレイIDのリストをつけておき、使用されていない仮想ディスプレイIDを第一のアプリケーションのプロセスに割り当ててもよい。ブロック2406で、モバイルOSはモバイルOS内で第一のアプリケーションを起動させる(すなわち、モバイルOS上で動作中となる)。ブロック2408で、モバイルOS 130は、第一のアプリケーションに関するリフレッシュ通知を仮想ディスプレイに関連付ける。例えば、モバイルOSのグラフィクスサーバは、アプリケーションとそれに関連する仮想ディスプレイのリストをつけていてもよい。ブロック2410と2412で、モバイルOSは、第一のアプリケーションに関するアプリケーショングラフィクスをモニタし、第一のアプリケーションに関するアプリケーショングラフィクス情報が更新された時にデスクトップOSのコンソールアプリケーションに通知することによって、第一のアプリケーションに関するグラフィクス情報を維持する。ブロック2410と2412は、図10、12、16及び/または17の方法によって異環境間アプリケーションに関するアプリケーショングラフィクスを維持することに対応していてもよい。
上記の説明は、例示と説明を目的としている。さらに、この説明は本発明の実施形態を本明細書で開示されている形態に限定することを意図していない。多数の例示的な態様と実施形態を上で説明したが、当業者であれば、そのいくつかの変更、改良、置換、追加、サブコンビネーションに気付くであろう。
上述の方法の各種の操作は、それに対応する機能を果たすことのできる、どのような適当な手段で実行してもよい。この手段としては、各種のハードウェア及び/またはソフトウェアコンポーネント及び/またはモジュール等があり、これには回路、特定用途集積回路(ASIC)またはプロセッサが含まれるが、これらに限定されない。
前述の種々の例示的な論理ブロック、モジュール、回路は、本明細書に記載の機能を実行するように設計された、汎用プロセッサ、デジタル信号プロセッサ(DSP)、ASIC、フィールドプログラマブルゲートアレイ信号(FPGA)またはその他のプログラム可能論理デバイス(PLD)、ディスクリートゲート、またはトランジスタロジック、ディスクリートハードウェアコンポーネントまたはこれらのどのような組合せにより実装または実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよく、あるいは、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラまたはステートマシンであってもよい。プロセッサまた、コンピューティングデバイスの組合せ、例えばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと併用される1つまたは複数のマイクロプロセッサ、またはその他の同様の構成として実装されてもよい。
本明細書に関連して説明した方法またはアルゴリズムのステップは、ハードウェアで直接でも、プロセッサにより実行されるソフトウェアモジュールでも、またはこれら2つの組合せでも実施してよい。ソフトウェアモジュールは、どのような形態の有形記憶媒体の中に記憶されてもよい。使用できる記憶媒体の例としては、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フラッシュメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM等がある。記憶媒体はプロセッサに、プロセッサがその記憶媒体から情報を読み出し、そこに情報を書き込むことができるように接続されてもよい。あるいは、記憶媒体はプロセッサに内蔵されてもよい。ソフトウェアモジュールは1つの命令でも、多くの命令でもよく、いくつかの異なるコードセグメント上で、異なるプログラム間で、及び複数の記憶媒体間で分散されていてもよい。
本明細書に記載の方法は、記載された方法を実現するための1つまたは複数の動作を含む。この方法及び/または動作は、他の方法や動作と交換してもよく、特許請求の範囲から逸脱しない。換言すれば、動作の特定の順序が明示されていないかぎり、特定の動作の順序及び/または用途を変更でき、これも本特許請求の範囲から逸脱しない。
説明した機能は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せによって実施してもよい。ソフトウェアで実行される場合、その機能は1つまたは複数の命令として有形のコンピュータ読取可能媒体に記憶されてもよい。記憶媒体は、コンピュータがアクセス可能な任意の利用可能な有形の記憶媒体であってもよい。例えば、これらに限定されないが、このようなコンピュータ読取可能媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または、命令またはデータ構造の形態で所望のプログラムコードを担持または記憶するために使用可能であり、コンピュータによりアクセス可能な任意の有形の媒体であってもよい。本明細書において、ディスク(disk,disc)とは、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、Blu−ray(登録商標)ディスクを含み、diskは通常、磁気的にデータを再生するのに対し、discはレーザを使って光学的にデータを再生する。
それゆえ、コンピュータプログラム製品が本明細書に記載された動作を実行してもよい。例えば、このようなコンピュータブログラム製品はコンピュータ読取可能な有形の媒体であってもよく、そこに命令が有形の状態で格納され(及び/または暗号され)、命令は1つまたは複数のプロセッサによって実行可能で、本明細書に記載された動作が行われる。コンピュータプログラム製品には、パッケージング材料が含まれていてもよい。
ソフトウェアまたは命令はさらに、伝送媒体上で伝送されてもよい。例えば、ソフトウェアは、ウェブサイト、サーバまたは、同軸ケーブル、光ファイバケーブル、ツイストペアケーブル、デジタル加入者線(DSL)等の伝送媒体または、赤外線、無線またはマイクロ波等の無線技術を用いて他の遠隔提供源から伝送されてもよい。
さらに、本明細書に記載された方法と方式を実行するためのモジュール及び/またはその他の適当な手段は、場合に応じてユーザ端末及び/または基地局によりダウンロードし、及び/またはその他の方法で取得することが可能である。例えば、このようなデバイスをサーバにつないで、本明細書に記載された方法を実行するための手段を伝送しやすくすることができる。あるいは、本明細書に記載された各種の方法は、記憶手段(例えば、RAM、ROM、CDやフロッピーディスク等の物理的記憶媒体等)を介して提供することができ、それによってユーザ端末及び/または基地局は、記憶手段をデバイスにつなぐか提供した時に、各種の方法を取得できる。さらに、本明細書に記載された方法と方式をデバイスに提供するために、他の適当な技術を利用することができる。
その他の例及び実施例も、本明細書と付属の特許請求の範囲の範囲及び主旨の中に含まれる。例えば、ソフトウェアの性質から、上述の機能は、プロセッサ、ハードウェア、ファームウェア、ハードワイヤリングまたはそれらの組み合わせによって実行されるソフトウェアを使って実施できる。機能を実施する特徴はまた、様々な位置に物理的に配置されていてもよく、例えば、機能の各部分が異なる物理的場所で実行されるように分散される。また、特許請求の範囲を含む本明細書において、「少なくとも」に続いて羅列される項目の中で使用される「または」という用語は、離接的な一覧を示しており、例えば、「少なくともA、BまたはC」とは、AまたはBまたはCまたはABまたはACまたはBCまたはABC(すなわち、AとBとC)を意味する。さらに、「例示的」という用語は、説明された例が他の例より好ましい、またはよりよいこと意味しない。
本明細書で説明した方式について、各種の変更、代替、改良を行うことができ、これも付属の特許請求の範囲により定義される教示内容の方式から逸脱しない。さらに、明細書と特許請求の範囲の範囲は、上述の工程、機械、製品、物体の組成、手段、方法、動作の特定の態様に限定されない。本明細書で説明したものと実質的に同じ機能を果たし、あるいはそれと実質的に同じ結果を達成する、既存の、または今後開発される工程、機械、製品、物体の組成、手段、方法または動作を利用してもよい。従って、付属の特許請求の範囲は、このような工程、機械、製品、物体の組成、手段、方法または動作をその範囲内に包含する。

Claims (19)

  1. 方法であって、
    第二の実行環境を有する第二のオペレーティングシステムによって、第一のオペレーティングシステムのためにコンパイルされ、前記第一のオペレーティングシステムの第一の実行環境内にロードされたアプリケーションのリストを前記第一のオペレーティングシステムに問い合わせることであって、前記第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、前記問い合わせること、
    前記第二のオペレーティングシステムにおいて、アプリケーションオブジェクトのリストを受け取ることであって、各アプリケーションオブジェクトがアプリケーションパッケージを含む、前記受け取ること、
    前記第二のオペレーティングシステムのメニューにおいて、前記アプリケーションオブジェクトのリストの中の1つのアプリケーションオブジェクトに対応する第一のメニューアイテムのインスタンスを作成すること、
    前記第一のメニューアイテムが、選択された時に、前記第二のオペレーティングシステムのコンソールアプリケーションを実行するように、前記第一のメニューアイテムを前記第二のオペレーティングシステムの前記コンソールアプリケーションに関連付けること、
    前記アプリケーションオブジェクトに対応する前記第一のOSの中の前記アプリケーションパッケージを示すパラメータを、前記第一のメニューアイテムに関連付けること
    含む、方法。
  2. 請求項1に記載の方法であって、前記第一のオペレーティングシステムの第一のグラフィクスサーバが、前記第二のオペレーティングシステムの第二のグラフィクスサーバと非互換的である、方法。
  3. 請求項1に記載の方法であって、第一のグラフィクスサーバがAndroid用グラフィクスサーバを含み、第二のグラフィクスサーバがXウィンドウ型のグラフィクスサーバを含む、方法。
  4. 請求項1に記載の方法であって、前記第二のオペレーティングシステムのグラフィクスサーバがXウィンドウ型のグラフィクスサーバであり、前記第一のオペレーティングシステムの、前記アプリケーションオブジェクトに対応するアプリケーションが、前記第二のオペレーティングシステムの前記Xウィンドウ型のグラフィクスサーバと非互換的なグラフィクスライブラリを使用する、方法。
  5. 請求項1に記載の方法であって、前記アプリケーションオブジェクトが、アプリケーション名、アプリケーションパッケージ名、およびアプリケーションアイコンを含む、方法。
  6. 請求項1に記載の方法であって、前記第一のメニューアイテムが、選択されると、アプリケーションパッケージ名を実行パラメータとして前記コンソールアプリケーションに送る、方法。
  7. 請求項1に記載の方法であって、前記第二のオペレーティングシステムのメニューが、第二のアプリケーションに対応する第二のメニューアイテムを含み、前記第二のアプリケーションが前記第二の実行環境のためにコンパイルされ、前記第二の実行環境内にロードされている、方法。
  8. 請求項1に記載の方法であって、前記第一のオペレーティングシステムがモバイルオペレーティングシステムを含み、前記第二のオペレーティングシステムがデスクトップオペレーティングシステムを含む、方法。
  9. 方法であって、
    第一のオペレーティングシステムのためにコンパイルされ、前記第一のオペレーティングシステムの第一の実行環境内にロードされた第一のアプリケーションを、前記第一のオペレーティングシステムにおいて起動させるための要求を、前記第一のオペレーティングシステムによって、第二のオペレーティングシステムから受け取ることであって、前記第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、前記受け取ること、
    前記第一のオペレーティングシステムによって仮想ディスプレイを割り当てること、
    前記第一のオペレーティングシステム内のプロセスにおいて前記第一のアプリケーションを起動させること、
    前記第一のアプリケーションのためのリフレッシュ通知を前記仮想ディスプレイに関連付けること、
    前記第一のアプリケーションのためのアプリケーショングラフィクスを、
    前記第一のオペレーティングシステムによって、前記第一のアプリケーションのアプリケーショングラフィクス情報をモニタするステップと、
    前記アプリケーショングラフィクス情報が更新された時に、前記第二のオペレーティングシステムのコンソールアプリケーションに通知するステップと
    を繰り返し実行することによって維持すること
    を含む、方法。
  10. 請求項9に記載の方法であって、前記第二のオペレーティングシステムのコンソールアプリケーションに通知するステップが、ファイル記述子を前記コンソールアプリケーションに送ることを含み、前記ファイル記述子は、前記アプリケーショングラフィクス情報が共有メモリ位置において利用可能であることを示しており、前記共有メモリ位置が前記第一のオペレーティングシステムと前記第二のオペレーティングシステムとによってアクセス可能である、方法。
  11. 請求項10に記載の方法であって、前記ファイル記述子が、プロセス間通信チャネルを通じて送られる、方法。
  12. 請求項11に記載の方法であって、前記プロセス間通信チャネルが、ローカルソケットを含む、方法。
  13. 請求項11に記載の方法であって、前記プロセス間通信チャネルが、Unixドメインソケットを含む、方法。
  14. 請求項11に記載の方法であって、前記プロセス間通信チャネルが、Binderインタフェースを含む、方法。
  15. 請求項14に記載の方法であって、前記アプリケーショングラフィクス情報が、前記第一のアプリケーションのサーフェス情報を含む、方法。
  16. 請求項14に記載の方法であって、前記アプリケーショングラフィクス情報が、前記第一のアプリケーションの、レンダリングされたグラフィクス情報を含む、方法。
  17. 請求項14に記載の方法であって、前記第二のオペレーティングシステムが、ユーザが前記第二のオペレーティングシステムのメニューのメニューアイテムを選択したことに応答して、前記第一のアプリケーションを起動させる要求を発行する、方法。
  18. 方法であって、
    第一のオペレーティングシステムのためにコンパイルされ、前記第一のオペレーティングシステムの第一の実行環境内にロードされた第一のアプリケーションを起動させる要求を、前記第一のオペレーティングシステムによって、第二のオペレーティングシステムのコンソールアプリケーションから受け取ることであって、前記第一及び第二のオペレーティングシステムが共有カーネル上で同時動作中である、前記受け取ること、
    前記第一のオペレーティングシステム上の第一のプロセス内で前記第一のアプリケーションを実行することであって、前記第一のアプリケーションが、前記第一のオペレーティングシステムのサーフェスマネージャによって維持されるグラフィクス情報を含む、前記実行すること、
    前記第一のオペレーティングシステムによって、前記コンソールアプリケーションを前記第一のオペレーティングシステムの仮想ディスプレイ識別子に関連付けること、
    前記コンソールアプリケーションを登録して、前記第一のアプリケーションの前記グラフィクス情報に関するリフレッシュ通知を受け取ること
    を含む、方法。
  19. 請求項18に記載の方法であって、
    前記サーフェスマネージャにより、グラフィクスフレームを前記第一のオペレーティングシステムのフレームバッファメモリにレンダリングすること、
    前記第一のアプリケーションに関するグラフィクス情報が更新されたら、前記コンソールアプリケーションに通知すること
    をさらに含む、方法。
JP2013531845A 2010-10-01 2011-09-29 異環境間リダイレクション Withdrawn JP2013542515A (ja)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US38911710P 2010-10-01 2010-10-01
US61/389,117 2010-10-01
US201161507206P 2011-07-13 2011-07-13
US201161507209P 2011-07-13 2011-07-13
US201161507199P 2011-07-13 2011-07-13
US201161507201P 2011-07-13 2011-07-13
US201161507203P 2011-07-13 2011-07-13
US61/507,199 2011-07-13
US61/507,203 2011-07-13
US61/507,201 2011-07-13
US61/507,206 2011-07-13
US61/507,209 2011-07-13
US13/247,166 US8683496B2 (en) 2010-10-01 2011-09-28 Cross-environment redirection
US13/247,166 2011-09-28
PCT/US2011/053909 WO2012044784A2 (en) 2010-10-01 2011-09-29 Cross-environment redirection

Publications (1)

Publication Number Publication Date
JP2013542515A true JP2013542515A (ja) 2013-11-21

Family

ID=45889363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013531845A Withdrawn JP2013542515A (ja) 2010-10-01 2011-09-29 異環境間リダイレクション

Country Status (7)

Country Link
US (9) US8963939B2 (ja)
EP (3) EP2622462A4 (ja)
JP (1) JP2013542515A (ja)
CN (7) CN107122168A (ja)
BR (1) BR112013007809A2 (ja)
MX (1) MX2013003427A (ja)
WO (13) WO2012044546A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016035705A (ja) * 2014-08-04 2016-03-17 パナソニックIpマネジメント株式会社 表示装置、表示制御方法、及び表示制御プログラム
JP2016035706A (ja) * 2014-08-04 2016-03-17 パナソニックIpマネジメント株式会社 表示装置、表示制御方法、及び表示制御プログラム
JP2017027366A (ja) * 2015-07-22 2017-02-02 キヤノン株式会社 情報処理装置及びイベント管理方法

Families Citing this family (325)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678624B2 (en) 2011-09-27 2017-06-13 Z124 Unified desktop triad control user interface for a phone manager
US20130076592A1 (en) 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop docking behavior for visible-to-visible extension
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US9715252B2 (en) 2011-08-24 2017-07-25 Z124 Unified desktop docking behavior for window stickiness
US9529494B2 (en) 2011-09-27 2016-12-27 Z124 Unified desktop triad control user interface for a browser
US9268518B2 (en) 2011-09-27 2016-02-23 Z124 Unified desktop docking rules
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8990712B2 (en) 2011-08-24 2015-03-24 Z124 Unified desktop triad control user interface for file manager
US9405459B2 (en) 2011-08-24 2016-08-02 Z124 Unified desktop laptop dock software operation
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US8990713B2 (en) 2011-09-27 2015-03-24 Z124 Unified desktop triad control user interface for an application manager
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US20130104062A1 (en) 2011-09-27 2013-04-25 Z124 Unified desktop input segregation in an application manager
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US9026709B2 (en) 2010-10-01 2015-05-05 Z124 Auto-waking of a suspended OS in a dockable system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
KR101263217B1 (ko) * 2009-10-15 2013-05-10 한국전자통신연구원 모바일 클라우드 서비스 제공을 위한 모바일 단말 및 그의 동작 방법
US8719776B2 (en) * 2009-12-30 2014-05-06 Foneclay, Inc. System for creation and distribution of software applications usable on multiple mobile device platforms
US11410129B2 (en) * 2010-05-01 2022-08-09 Monday.com Ltd. Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
CN107122168A (zh) 2010-10-01 2017-09-01 Z124 多操作系统
US9405444B2 (en) 2010-10-01 2016-08-02 Z124 User interface with independent drawer control
JP2013539137A (ja) 2010-10-01 2013-10-17 ゼット124 ユーザインタフェースにおけるドラッグ移動ジェスチャ
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US9622278B2 (en) 2010-10-26 2017-04-11 Kingston Digital Inc. Dual-mode wireless networked device interface and automatic configuration thereof
US20120113091A1 (en) * 2010-10-29 2012-05-10 Joel Solomon Isaacson Remote Graphics
KR101027971B1 (ko) * 2010-12-10 2011-04-13 (주)헬릭스테크 애플리케이션 검사 가능한 이동통신 단말기 및 그 검사 방법
US8682962B2 (en) * 2010-12-24 2014-03-25 Levono (Singapore) Pte. Ltd. Systems and methods for communicating and switching between components in a hybrid computing environment
US20120173986A1 (en) * 2011-01-04 2012-07-05 Motorola-Mobility, Inc. Background synchronization within a multi-environment operating system
US8782258B2 (en) * 2011-01-04 2014-07-15 Motorola Mobility Llc Transferring web data between operating system environments
US8689235B2 (en) * 2011-01-18 2014-04-01 Gbc Industries System and method for enabling interaction between a cloud application and a local application
US9218217B1 (en) 2011-03-28 2015-12-22 Google Inc. Opportunistic job processing in distributed computing resources with an instantiated native client environment with limited read/write access
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US8812601B2 (en) * 2011-05-09 2014-08-19 Google Inc. Transferring application state across devices with checkpoints
US8224894B1 (en) 2011-05-09 2012-07-17 Google Inc. Zero-click sharing of application context across devices
US8924958B1 (en) 2011-05-24 2014-12-30 BlueStack Systems, Inc. Application player
US10089093B1 (en) * 2011-05-24 2018-10-02 BlueStack Systems, Inc. Apparatuses, systems and methods of switching operating systems
US8706860B2 (en) 2011-06-30 2014-04-22 Amazon Technologies, Inc. Remote browsing session management
US8577963B2 (en) 2011-06-30 2013-11-05 Amazon Technologies, Inc. Remote browsing session between client browser and network based browser
US9621406B2 (en) 2011-06-30 2017-04-11 Amazon Technologies, Inc. Remote browsing session management
US8799412B2 (en) 2011-06-30 2014-08-05 Amazon Technologies, Inc. Remote browsing session management
US10791538B1 (en) 2011-07-06 2020-09-29 BlueStack Systems, Inc. Cloud-based data synchronization
US9448825B2 (en) * 2011-08-05 2016-09-20 Vmware, Inc. Unified notification bar between virtual mobile device and physical mobile device
US9037696B2 (en) 2011-08-16 2015-05-19 Amazon Technologies, Inc. Managing information associated with network resources
US20160124698A1 (en) 2011-08-24 2016-05-05 Z124 Unified desktop triad control user interface for an application launcher
US20130104051A1 (en) 2011-09-27 2013-04-25 Z124 Unified desktop big brother application pools
WO2013028202A1 (en) 2011-08-25 2013-02-28 Intel Corporation Collaborative graphics rendering using mobile devices to support remote display
US9195768B2 (en) 2011-08-26 2015-11-24 Amazon Technologies, Inc. Remote browsing session management
US10089403B1 (en) 2011-08-31 2018-10-02 Amazon Technologies, Inc. Managing network based storage
KR101295428B1 (ko) * 2011-09-09 2013-08-23 주식회사 팬택 스마트 단말기에서 어플리케이션의 권한정보 관리 장치 및 제어 방법
US10601810B2 (en) 2011-09-09 2020-03-24 Kingston Digital, Inc. Private cloud routing server connection mechanism for use in a private communication architecture
US11863529B2 (en) 2011-09-09 2024-01-02 Kingston Digital, Inc. Private cloud routing server connection mechanism for use in a private communication architecture
US9203807B2 (en) 2011-09-09 2015-12-01 Kingston Digital, Inc. Private cloud server and client architecture without utilizing a routing server
US9781087B2 (en) 2011-09-09 2017-10-03 Kingston Digital, Inc. Private and secure communication architecture without utilizing a public cloud based routing server
US10237253B2 (en) 2011-09-09 2019-03-19 Kingston Digital, Inc. Private cloud routing server, private network service and smart device client architecture without utilizing a public cloud based routing server
US11683292B2 (en) 2011-09-09 2023-06-20 Kingston Digital, Inc. Private cloud routing server connection mechanism for use in a private communication architecture
US9935930B2 (en) 2011-09-09 2018-04-03 Kingston Digital, Inc. Private and secure communication architecture without utilizing a public cloud based routing server
US9182935B2 (en) 2011-09-27 2015-11-10 Z124 Secondary single screen mode activation through menu option
US11416131B2 (en) 2011-09-27 2022-08-16 Z124 Unified desktop input segregation in an application manager
US20130080899A1 (en) 2011-09-27 2013-03-28 Paul E. Reeves Unified desktop big brother applications
US8849802B2 (en) 2011-09-27 2014-09-30 Amazon Technologies, Inc. Historical browsing session management
US8589385B2 (en) 2011-09-27 2013-11-19 Amazon Technologies, Inc. Historical browsing session management
US9178955B1 (en) 2011-09-27 2015-11-03 Amazon Technologies, Inc. Managing network based content
US9383958B1 (en) 2011-09-27 2016-07-05 Amazon Technologies, Inc. Remote co-browsing session management
US10693991B1 (en) 2011-09-27 2020-06-23 Amazon Technologies, Inc. Remote browsing session management
US20160054757A1 (en) 2012-02-29 2016-02-25 Z124 Unified desktop docking flow
US9641637B1 (en) 2011-09-27 2017-05-02 Amazon Technologies, Inc. Network resource optimization
US9703468B2 (en) 2011-09-27 2017-07-11 Z124 Unified desktop independent focus in an application manager
US8914514B1 (en) 2011-09-27 2014-12-16 Amazon Technologies, Inc. Managing network based content
US9298843B1 (en) * 2011-09-27 2016-03-29 Amazon Technologies, Inc. User agent information management
US9152970B1 (en) 2011-09-27 2015-10-06 Amazon Technologies, Inc. Remote co-browsing session management
US8966004B2 (en) 2011-09-29 2015-02-24 Comcast Cable Communications, LLC. Multiple virtual machines in a mobile virtualization platform
US8615431B1 (en) 2011-09-29 2013-12-24 Amazon Technologies, Inc. Network content message placement management
US9804864B1 (en) 2011-10-07 2017-10-31 BlueStack Systems, Inc. Method of mapping inputs and system thereof
US9313100B1 (en) 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
US9173100B2 (en) 2011-11-16 2015-10-27 Autoconnect Holdings Llc On board vehicle network security
DE112012004781T5 (de) * 2011-11-16 2014-08-07 Flextronics Ap, Llc Versicherungsverfolgung
US9116786B2 (en) 2011-11-16 2015-08-25 Flextronics Ap, Llc On board vehicle networking module
KR101844512B1 (ko) * 2011-11-18 2018-05-21 삼성전자주식회사 어플리케이션 이용 방법, 그를 이용한 게이트웨이, 그를 이용한 단말기, 및 그를 이용한 통신 시스템
US8972477B1 (en) 2011-12-01 2015-03-03 Amazon Technologies, Inc. Offline browsing session management
JP5514794B2 (ja) * 2011-12-05 2014-06-04 パナソニック株式会社 情報処理システム
US9009334B1 (en) 2011-12-09 2015-04-14 Amazon Technologies, Inc. Remote browsing session management
US9117002B1 (en) 2011-12-09 2015-08-25 Amazon Technologies, Inc. Remote browsing session management
US9164544B2 (en) 2011-12-09 2015-10-20 Z124 Unified desktop: laptop dock, hardware configuration
US9330188B1 (en) 2011-12-22 2016-05-03 Amazon Technologies, Inc. Shared browsing sessions
GB201200080D0 (en) * 2012-01-04 2012-02-15 Talaris Ltd Automated banking machines
US9342181B2 (en) 2012-01-09 2016-05-17 Nvidia Corporation Touch-screen input/output device touch sensing techniques
US8938518B2 (en) 2012-01-16 2015-01-20 International Business Machines Corporation Transferring applications and session state to a secondary device
US8839087B1 (en) 2012-01-26 2014-09-16 Amazon Technologies, Inc. Remote browsing and searching
US9092405B1 (en) 2012-01-26 2015-07-28 Amazon Technologies, Inc. Remote browsing and searching
US9509783B1 (en) 2012-01-26 2016-11-29 Amazon Technlogogies, Inc. Customized browser images
US8627195B1 (en) 2012-01-26 2014-01-07 Amazon Technologies, Inc. Remote browsing and searching
US9336321B1 (en) 2012-01-26 2016-05-10 Amazon Technologies, Inc. Remote browsing and searching
US9087024B1 (en) 2012-01-26 2015-07-21 Amazon Technologies, Inc. Narration of network content
US9037975B1 (en) 2012-02-10 2015-05-19 Amazon Technologies, Inc. Zooming interaction tracking and popularity determination
US9183258B1 (en) 2012-02-10 2015-11-10 Amazon Technologies, Inc. Behavior based processing of content
CN103246463A (zh) * 2012-02-13 2013-08-14 联想(北京)有限公司 使用输入设备进行信息输入的方法、处理系统及电子设备
US9137210B1 (en) 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US9374244B1 (en) 2012-02-27 2016-06-21 Amazon Technologies, Inc. Remote browsing session management
US9208316B1 (en) 2012-02-27 2015-12-08 Amazon Technologies, Inc. Selective disabling of content portions
US10296558B1 (en) 2012-02-27 2019-05-21 Amazon Technologies, Inc. Remote generation of composite content pages
US20130244579A1 (en) * 2012-03-16 2013-09-19 Rapidblue Solutions Method of enabling proximity based connectivity between mobile devices using different operating systems
US9460220B1 (en) 2012-03-26 2016-10-04 Amazon Technologies, Inc. Content selection based on target device characteristics
US9307004B1 (en) 2012-03-28 2016-04-05 Amazon Technologies, Inc. Prioritized content transmission
EP2648096A1 (en) 2012-04-07 2013-10-09 Samsung Electronics Co., Ltd Method and system for controlling display device and computer-readable recording medium
US9417753B2 (en) 2012-05-02 2016-08-16 Google Technology Holdings LLC Method and apparatus for providing contextual information between operating system environments
US20130298140A1 (en) * 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Data from a Plurality of Concurrent Operating System Environments
US20130311888A1 (en) * 2012-05-17 2013-11-21 Motorola Mobility, Inc. Arranging a Set of Panels in a First Application Environment Via Arrangement of the Set of Panels in a Second Application Environment for a Multi-Modal Device
US9342325B2 (en) * 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9804740B2 (en) * 2012-06-06 2017-10-31 Apple Inc. Generating context-based options for responding to a notification
US9099031B2 (en) * 2012-06-15 2015-08-04 Apple Inc. Layout synchronization
JP2014010691A (ja) * 2012-06-29 2014-01-20 Canon Inc 情報処理装置、画面表示方法、およびプログラム
CN103544027B (zh) * 2012-07-13 2017-05-24 联想(北京)有限公司 控制应用更新的方法及电子设备
US9743017B2 (en) * 2012-07-13 2017-08-22 Lattice Semiconductor Corporation Integrated mobile desktop
US9798508B2 (en) 2012-07-16 2017-10-24 Microsoft Technology Licensing, Llc Implementing previously rendered frame buffer information in a customized GUI display
US9184800B2 (en) 2012-07-16 2015-11-10 Google Inc. Automated sharing of application data over a near field communication link
US9823935B2 (en) * 2012-07-26 2017-11-21 Nvidia Corporation Techniques for latching input events to display flips
US9772979B1 (en) 2012-08-08 2017-09-26 Amazon Technologies, Inc. Reproducing user browsing sessions
US8943197B1 (en) 2012-08-16 2015-01-27 Amazon Technologies, Inc. Automated content update notification
US20140075377A1 (en) * 2012-09-10 2014-03-13 Samsung Electronics Co. Ltd. Method for connecting mobile terminal and external display and apparatus implementing the same
US9307026B2 (en) * 2012-09-20 2016-04-05 Amazon Technologies, Inc. Fulfillment of applications to devices
US9390473B2 (en) 2012-09-21 2016-07-12 Google Inc. Displaying applications on a fixed orientation display
US9772668B1 (en) 2012-09-27 2017-09-26 Cadence Design Systems, Inc. Power shutdown with isolation logic in I/O power domain
US9389884B2 (en) * 2012-10-11 2016-07-12 Google Technology Holdings LLC Method and apparatus for providing adaptive wallpaper display for a device having multiple operating system environments
US20140115606A1 (en) * 2012-10-24 2014-04-24 OpenMobile World Wide, Inc. Multi-platform mobile and other computing devices and methods
US10942735B2 (en) * 2012-12-04 2021-03-09 Abalta Technologies, Inc. Distributed cross-platform user interface and application projection
US9513979B2 (en) * 2013-01-11 2016-12-06 Sap Se Mobile communication device providing interconnectivity between apps based on storage scope
CN103984532B (zh) * 2013-02-07 2016-06-22 腾讯科技(深圳)有限公司 一种移动终端功能设置键的位置设置方法和装置
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US9148350B1 (en) 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US9002982B2 (en) 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US9526120B2 (en) 2013-03-15 2016-12-20 Google Inc. Techniques for context-based application invocation for short-range wireless communication interactions
US9569161B2 (en) * 2013-03-21 2017-02-14 Nec Corporation Remote visualization and control for virtual mobile infrastructure
US9342842B2 (en) * 2013-04-01 2016-05-17 Apple Inc. Context-switching taxonomy for mobile advertisement
US9325581B2 (en) * 2013-04-02 2016-04-26 International Business Machines Corporation Context-aware management of applications at the edge of a network
EP2984559B1 (en) 2013-04-09 2019-06-12 Citrix Systems Inc. Providing a native desktop using cloud-synchronized data
CN103197533A (zh) * 2013-04-11 2013-07-10 华为终端有限公司 电子设备中闹钟的实现方法、装置及电子设备
US20140316841A1 (en) * 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
KR102210995B1 (ko) 2013-04-24 2021-02-02 삼성전자 주식회사 전자 장치에서 보안 정보를 통지하기 위한 장치와 방법 및 이를 위한 컴퓨터로 판독 가능한 기록 매체
CN103281186B (zh) * 2013-05-08 2016-02-03 上海众人网络安全技术有限公司 一种基于android系统的动态令牌、交易系统及方法
CN103309657A (zh) * 2013-05-17 2013-09-18 北京小米科技有限责任公司 一种更换移动设备响铃音频的方法、装置和设备
US9225799B1 (en) * 2013-05-21 2015-12-29 Trend Micro Incorporated Client-side rendering for virtual mobile infrastructure
US9300720B1 (en) * 2013-05-21 2016-03-29 Trend Micro Incorporated Systems and methods for providing user inputs to remote mobile operating systems
US20140351833A1 (en) * 2013-05-26 2014-11-27 Min-Lee Teng Multi-computing environment operating on a single native operating system
US10021180B2 (en) 2013-06-04 2018-07-10 Kingston Digital, Inc. Universal environment extender
US9578137B1 (en) 2013-06-13 2017-02-21 Amazon Technologies, Inc. System for enhancing script execution performance
US10152463B1 (en) 2013-06-13 2018-12-11 Amazon Technologies, Inc. System for profiling page browsing interactions
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
KR102112605B1 (ko) * 2013-07-01 2020-05-19 삼성전자 주식회사 모바일 단말 및 모바일 단말의 네트워크 전송 제어 방법
CN103401896B (zh) * 2013-07-15 2016-06-22 四川公用信息产业有限责任公司 一种多Android客户端服务共享方法及系统
CN103401941B (zh) * 2013-08-09 2017-02-08 广东威创视讯科技股份有限公司 一种gis场景信息处理方法、系统、节点机和服务端
KR102144553B1 (ko) * 2013-08-30 2020-08-13 삼성전자주식회사 다중 디스플레이 방법, 저장 매체 및 전자 장치
US9823728B2 (en) 2013-09-04 2017-11-21 Nvidia Corporation Method and system for reduced rate touch scanning on an electronic device
US10437903B2 (en) * 2013-09-20 2019-10-08 Jesse Lakes Redirection service profiling
CN104516703B (zh) * 2013-09-30 2018-02-16 中国电信股份有限公司 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统
US9881592B2 (en) 2013-10-08 2018-01-30 Nvidia Corporation Hardware overlay assignment
GB2520041A (en) * 2013-11-07 2015-05-13 Ibm Automated multimedia content editing
US9507470B2 (en) 2013-12-16 2016-11-29 Nvidia Corporation Method and system for reduced power touch input detection on an electronic device using reduced scanning
KR101548228B1 (ko) * 2013-12-27 2015-08-28 주식회사 케이티 사용자 상태에 기반하여 사용자 인터페이스를 동기화하는 동기화 기기 및 동기화 방법
TWI526849B (zh) * 2013-12-31 2016-03-21 Insyde Software Corp Portable electronic device, dual heterogeneity operating system sharing file, recording media and computer program products
US9658870B2 (en) 2014-02-27 2017-05-23 OpenMobile World Wide, Inc. In-process trapping for service substitution in hosted applications executing on mobile devices with multi-operating system environment
CN103902390B (zh) * 2014-03-12 2017-04-19 深圳创维-Rgb电子有限公司 基于Android的应用层的进程间通信方法及基础应用通信系统
CN104885055B (zh) * 2014-03-19 2020-12-15 华为终端有限公司 一种应用数据同步的方法及装置
US9898520B2 (en) 2014-03-25 2018-02-20 Open Text Sa Ulc Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents
US10860366B2 (en) * 2014-04-30 2020-12-08 Hewlett-Packard Development Company, L.P. Multi architecture manager
US9785309B2 (en) * 2014-05-08 2017-10-10 Socialtopias, Llc Method and apparatus for providing a layered webpage
US9189264B1 (en) * 2014-06-09 2015-11-17 Western Digital Technologies, Inc. Notification propagation in virtual computing environment
US9635041B1 (en) 2014-06-16 2017-04-25 Amazon Technologies, Inc. Distributed split browser content inspection and analysis
US20150373483A1 (en) * 2014-06-23 2015-12-24 Qualcomm Incorporated Methods, apparatus, and computer-readable medium for providing alternate visualization via wireless docking
US10303531B2 (en) * 2014-07-28 2019-05-28 Red Hat, Inc. Console application through web service
CN106462369B (zh) 2014-07-31 2020-01-03 惠普发展公司,有限责任合伙企业 用于管理多个实例的方法、系统和介质
TWI502296B (zh) * 2014-08-27 2015-10-01 Hiwin Tech Corp 機器人的教導裝置
CN105487845B (zh) * 2014-09-18 2018-08-31 联想(北京)有限公司 一种信息处理方法及电子设备
US20160088079A1 (en) * 2014-09-21 2016-03-24 Alcatel Lucent Streaming playout of media content using interleaved media players
US20160085348A1 (en) * 2014-09-23 2016-03-24 UV Networks, Inc. Application host with distributed remote input and output interfaces
US20160085738A1 (en) * 2014-09-24 2016-03-24 Microsoft Technology Licensing, Llc Cloud-Based Parallel Computation Using Actor Modules
CN104317414A (zh) * 2014-09-25 2015-01-28 北京云巢动脉科技有限公司 一种在移动端虚拟机内实现中文输入的方法和系统
JP6078515B2 (ja) * 2014-11-13 2017-02-08 京セラドキュメントソリューションズ株式会社 電子機器およびプログラム
CN104410909B (zh) * 2014-11-28 2018-01-09 江苏银河电子股份有限公司 Linux系统软件模块在TVOS系统中的使用方法
CN107360310B (zh) * 2014-12-12 2019-12-13 华为技术有限公司 移动终端及其资源管理方法
EP3240714B1 (en) * 2014-12-29 2023-08-30 Robert Bosch GmbH Systems and methods for operating autonomous vehicles using personalized driving profiles
CN104572943B (zh) * 2014-12-30 2018-05-08 北京奇虎科技有限公司 免安装程序清理方法及装置
US9928021B2 (en) 2014-12-30 2018-03-27 Qualcomm Incorporated Dynamic selection of content for display on a secondary display device
CN107111570A (zh) * 2015-01-30 2017-08-29 惠普发展公司有限责任合伙企业 在显示设备机械地连接和断开时持续维持用户会话的计算机系统
CN104731721B (zh) * 2015-02-10 2019-07-16 深圳酷派技术有限公司 一种显示用内存的共享方法及装置
CN104657213B (zh) * 2015-02-13 2018-04-10 深圳酷派技术有限公司 一种系统间应用切换的方法和终端
US20160239168A1 (en) * 2015-02-18 2016-08-18 Screenovate Technologies Ltd. Method and system of gui functionality management
US9572104B2 (en) 2015-02-25 2017-02-14 Microsoft Technology Licensing, Llc Dynamic adjustment of user experience based on system capabilities
CN104796529B (zh) * 2015-03-05 2018-05-15 宇龙计算机通信科技(深圳)有限公司 基于双系统的未处理事件的提醒方法及系统
CN104750492B (zh) * 2015-03-31 2018-01-19 广东欧珀移动通信有限公司 基于嵌入式操作系统的移动设备的开机控制方法及装置
CN105577906B (zh) * 2015-04-08 2019-06-11 宇龙计算机通信科技(深圳)有限公司 一种多系统终端通知消息的提示方法及装置
US11159603B2 (en) * 2015-04-15 2021-10-26 Hyland Switzerland Sàrl Cross-platform module for loading across a plurality of device types
US10922148B2 (en) * 2015-04-26 2021-02-16 Intel Corporation Integrated android and windows device
CN106327139A (zh) * 2015-06-17 2017-01-11 派斡信息技术(上海)有限公司 工作空间中对统一化元素进行组合工作的方法以及产品
US9920219B2 (en) 2015-06-22 2018-03-20 Awi Licensing Llc Soil and dirt repellent powder coatings
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
WO2017003007A1 (ko) * 2015-07-02 2017-01-05 엘지전자 주식회사 영상표시장치 및 이동 단말기
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
KR102403338B1 (ko) * 2015-07-02 2022-05-27 엘지전자 주식회사 이동 단말기
KR102444150B1 (ko) * 2015-07-02 2022-09-15 엘지전자 주식회사 영상표시장치
US20170010758A1 (en) * 2015-07-08 2017-01-12 Microsoft Technology Licensing, Llc Actuator module for building application
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10565026B2 (en) * 2015-07-29 2020-02-18 Microsoft Technology Licensing, Llc Containing an application in an immersive non-windowed environment
CN108367796A (zh) * 2015-08-26 2018-08-03 博洛斯股份公司 用于自行车的控制设备
CN117849979A (zh) * 2015-09-08 2024-04-09 Lg伊诺特有限公司 双相机模块及光学装置
US10083614B2 (en) 2015-10-22 2018-09-25 Drone Traffic, Llc Drone alerting and reporting system
KR102320810B1 (ko) 2015-11-11 2021-11-02 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN105426191B (zh) * 2015-11-23 2019-01-18 深圳创维-Rgb电子有限公司 用户界面显示处理方法及装置
US10326822B2 (en) 2015-12-03 2019-06-18 Google Llc Methods, systems and media for presenting a virtual operating system on a display device
CN105404558B (zh) * 2015-12-11 2019-07-09 北京元心科技有限公司 多系统中事件处理的方法及装置
CN105763453B (zh) * 2016-02-04 2019-05-07 新华三技术有限公司 一种报文处理方法和装置
CN105791567B (zh) * 2016-02-29 2019-05-14 宇龙计算机通信科技(深圳)有限公司 一种信息存储方法及多系统移动终端
CN105704341A (zh) * 2016-03-28 2016-06-22 努比亚技术有限公司 一种铃音播放方法及终端
CN107291561B (zh) * 2016-03-31 2020-11-24 阿里巴巴集团控股有限公司 一种图形合成方法、信息交互方法及系统
KR102507114B1 (ko) * 2016-06-08 2023-03-07 삼성전자주식회사 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치
CN107515790A (zh) * 2016-06-16 2017-12-26 成都鼎桥通信技术有限公司 电子设备的系统
WO2017219362A1 (zh) * 2016-06-24 2017-12-28 阿贝尔环球国际有限公司 终端装置及其终端操作系统与云端装置及其云端操作系统
US10313404B2 (en) * 2016-06-30 2019-06-04 Microsoft Technology Licensing, Llc Sharing user context and preferences
US20180046425A1 (en) * 2016-08-11 2018-02-15 International Business Machines Corporation Preserving an external display configuration
CN106445702A (zh) * 2016-09-21 2017-02-22 乐视控股(北京)有限公司 多系统通信方法及终端
WO2018065057A1 (en) * 2016-10-06 2018-04-12 Vestel Elektronik Sanayi Ve Ticaret A.S. Mobile virtualization
KR102597036B1 (ko) 2016-10-11 2023-11-02 삼성전자주식회사 듀얼 디스플레이를 가지는 전자 장치 및 이의 운용 방법
KR20180046791A (ko) * 2016-10-28 2018-05-09 삼성전자주식회사 전자 장치 및 전자 장치의 데이터 전송 방법
US10542120B2 (en) * 2016-11-10 2020-01-21 Microsoft Technology Licensing, Llc Wirelessly providing operating system specific features
CN108121607A (zh) * 2016-11-28 2018-06-05 厦门雅迅网络股份有限公司 事件的上报方法及上报系统
US11003632B2 (en) 2016-11-28 2021-05-11 Open Text Sa Ulc System and method for content synchronization
CN106547628B (zh) * 2016-11-29 2020-05-01 北京元心科技有限公司 多系统的资源释放方法及装置
US10498843B2 (en) * 2016-12-06 2019-12-03 Bank Of America Corporation Tool for providing actionable functionality on a website
US11537272B2 (en) * 2016-12-21 2022-12-27 Aon Global Operations Se, Singapore Branch Content management system extensions
KR102661703B1 (ko) * 2016-12-23 2024-04-29 삼성전자주식회사 전자 장치 및 그의 제어 방법
EP3355188B1 (en) 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
US10503237B2 (en) 2017-02-13 2019-12-10 Gbs Laboratories, Llc Mobile device virtualization solution based on bare-metal hypervisor with optimal resource usage and power consumption
CN106873932B (zh) * 2017-02-17 2020-03-03 浙江大学 一种Android系统服务端、远程桌面图像重定向方法及系统
US11327706B2 (en) 2017-02-23 2022-05-10 Autodesk, Inc. Infrastructure model collaboration via state distribution
CN106951294B (zh) * 2017-03-28 2020-07-10 北京奇虎科技有限公司 一种用于为跨系统应用提供服务的方法及设备
US10467796B2 (en) * 2017-04-17 2019-11-05 Intel Corporation Graphics system with additional context
US10567442B2 (en) 2017-05-10 2020-02-18 Microsoft Technology Licensing, Llc Automatic forwarding of incoming calls based on user interaction with devices
US11301431B2 (en) 2017-06-02 2022-04-12 Open Text Sa Ulc System and method for selective synchronization
EP3617869B1 (en) 2017-06-13 2024-02-28 Huawei Technologies Co., Ltd. Display method and apparatus
US10757748B2 (en) 2017-07-19 2020-08-25 Hewlett-Packard Development Company, L.P. Device and display device having attached mode and detached mode
CN109426571B (zh) * 2017-08-28 2022-05-13 阿里巴巴集团控股有限公司 函数调用和数据访问的方法、系统、存储介质、处理器和装置
US10664538B1 (en) 2017-09-26 2020-05-26 Amazon Technologies, Inc. Data security and data access auditing for network accessible content
US10726095B1 (en) 2017-09-26 2020-07-28 Amazon Technologies, Inc. Network content layout using an intermediary system
CN109669764B (zh) * 2017-10-13 2023-08-01 斑马智行网络(香港)有限公司 处理方法、装置、设备和机器可读介质
CN107832203B (zh) * 2017-11-08 2020-11-13 浙江大学 一种移动终端渲染性能诊断方法
CN107943606B (zh) * 2017-11-22 2023-12-15 博泰车联网科技(上海)股份有限公司 双操作系统下的故障处理方法及装置、存储器及电子设备
CN108133453A (zh) * 2017-12-13 2018-06-08 北京奇虎科技有限公司 一种基于OpenGL的图像处理器及其功能扩展方法
CN108279963B (zh) * 2018-01-05 2020-11-20 郑州信大捷安信息技术股份有限公司 一种单Linux内核多Android系统的智能终端显示虚拟化方法
CN108280020B (zh) * 2018-01-23 2021-09-14 广州视源电子科技股份有限公司 计算机设备的监控方法、装置、终端及计算机存储介质
CN108345438A (zh) * 2018-02-06 2018-07-31 深圳市恒晨电器有限公司 手机平台应用于车载平台的物理横屏显示方法
CN108304209B (zh) * 2018-02-28 2021-01-15 联想(北京)有限公司 固件升级方法及固件升级系统
EP3570164B1 (de) * 2018-05-14 2023-04-26 Schneider Electric Industries SAS Verfahren und system zum generieren einer mobilen applikation aus einer desktop-anwendung
CN108762815B (zh) * 2018-05-16 2021-01-01 北京麟卓信息科技有限公司 一种基于非虚拟化体系架构的Android运行环境实现方法
US10684871B2 (en) * 2018-06-03 2020-06-16 Apple Inc. Multi-process model for cross-platform applications
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
US11436359B2 (en) 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
KR20200014128A (ko) * 2018-07-31 2020-02-10 삼성전자주식회사 전자 장치의 디스플레이 및 외부 디스플레이 전부를 이용하여 어플리케이션을 실행하기 위한 전자 장치 및 방법
CN109254858B (zh) * 2018-08-31 2021-07-23 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质
KR102631745B1 (ko) * 2018-10-16 2024-02-01 삼성전자주식회사 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
CN109375955A (zh) * 2018-11-01 2019-02-22 无锡市同芯恒通科技有限公司 一种同种cpu适配不同操作系统的方法
CN109582453A (zh) * 2018-11-29 2019-04-05 北京元心科技有限公司 多系统间协调调度的方法、装置及电子设备
US20200174814A1 (en) * 2018-11-30 2020-06-04 Nutanix, Inc. Systems and methods for upgrading hypervisor locally
US10650776B1 (en) * 2018-12-28 2020-05-12 Lenovo (Singapore) Pte. Ltd. Information processing device and controlling method for multiple operating systems
CN109714642B (zh) * 2018-12-29 2022-03-08 深圳Tcl数字技术有限公司 Linux应用复用于智能系统的方法、智能电视及存储介质
BR102019000921A2 (pt) * 2019-01-16 2020-08-04 Samsung Eletrônica da Amazônia Ltda. Sistema para habilitar uma experiência de desktop completa com base em um dispositivo móvel
US20200233548A1 (en) * 2019-01-21 2020-07-23 Promethean Limited Connected computing device software integration systems and methods
US10852901B2 (en) 2019-01-21 2020-12-01 Promethean Limited Systems and methods for user interface adjustment, customization, and placement
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
CN110618876B (zh) * 2019-03-21 2023-05-23 麒麟软件有限公司 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法
US10986089B2 (en) 2019-04-11 2021-04-20 Kas Kasravi Virtual mobile device system and method thereof
US11372965B2 (en) * 2019-05-10 2022-06-28 Microsoft Technology Licensing, Llc Application with self-configuring accessibility settings
US11786694B2 (en) 2019-05-24 2023-10-17 NeuroLight, Inc. Device, method, and app for facilitating sleep
US11323449B2 (en) * 2019-06-27 2022-05-03 Citrix Systems, Inc. Unified accessibility settings for intelligent workspace platforms
CN110427251A (zh) * 2019-07-25 2019-11-08 吉旗(成都)科技有限公司 一种针对iOS CoreData数据库存储的优化方法
US11347756B2 (en) * 2019-08-26 2022-05-31 Microsoft Technology Licensing, Llc Deep command search within and across applications
CN110515667B (zh) * 2019-08-26 2023-04-11 武汉蓝星科技股份有限公司 一种基于linux内核的终端双系统显示切换方法及终端双系统
US11194699B2 (en) * 2019-09-17 2021-12-07 Red Hat, Inc. Compatibility testing with different environment configurations
CN110781528B (zh) * 2019-09-26 2022-03-22 深圳金澜汉源科技有限公司 协同安全操作系统和电子设备
WO2021088309A1 (zh) * 2019-11-04 2021-05-14 海信视像科技股份有限公司 一种显示设备及信息提示方法
EP4062313A1 (en) 2019-11-18 2022-09-28 Monday.com Ltd. Collaborative networking systems, methods, and devices
US11526661B2 (en) 2019-11-18 2022-12-13 Monday.com Ltd. Digital processing systems and methods for integrated communications module in tables of collaborative work systems
CN110769320B (zh) * 2019-11-19 2021-10-15 三星电子(中国)研发中心 一种智能设备分享内容的方法、系统及装置
WO2021134069A1 (en) 2019-12-27 2021-07-01 Abalta Technologies, Inc. Projection, control, and management of user device applications using a connected resource
KR20210116733A (ko) * 2020-03-12 2021-09-28 삼성전자주식회사 네트워크 연결 방법 및 이를 지원하는 전자 장치
US20240184989A1 (en) 2020-05-01 2024-06-06 Monday.com Ltd. Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems
IL297858A (en) 2020-05-01 2023-01-01 Monday Com Ltd Digital processing systems and methods for improved networking and collaborative work management systems, methods and devices
CN112346792B (zh) * 2020-06-11 2021-09-21 广州锦行网络科技有限公司 一种基于Linux系统的端口复用方法
US11520598B2 (en) * 2020-07-01 2022-12-06 Anthony Donte Ebron Multi-processor mobile computing device
KR20220017193A (ko) * 2020-08-04 2022-02-11 삼성전자주식회사 전자 장치 및 전자 장치가 외부 장치 디스플레이 상에 어플리케이션 화면을 제공하는 방법
US11900046B2 (en) 2020-08-07 2024-02-13 Microsoft Technology Licensing, Llc Intelligent feature identification and presentation
US11019106B1 (en) 2020-09-22 2021-05-25 Netskope, Inc. Remotely accessed controlled contained environment
EP3992795A1 (en) * 2020-10-29 2022-05-04 Jolla Ltd. Computer system executing multiple operating systems
CN112379941B (zh) * 2020-11-13 2023-05-09 武汉蓝星科技股份有限公司 一种基于Linux内核的双系统设置项管理系统及其管理方法
CN112416629B (zh) * 2020-12-10 2023-07-25 深圳市富途网络科技有限公司 数据互通方法、系统及存储介质
CN112631538A (zh) * 2020-12-30 2021-04-09 安徽鸿程光电有限公司 显示方法、装置、设备及计算机存储介质
US11893213B2 (en) 2021-01-14 2024-02-06 Monday.com Ltd. Digital processing systems and methods for embedded live application in-line in a word processing document in collaborative work systems
CN113220474B (zh) * 2021-04-21 2022-08-30 麒麟软件有限公司 一种基于Android-EMUGL的安卓应用共享Linux系统屏幕数据的方法
US11604657B2 (en) * 2021-04-30 2023-03-14 Ncr Corporation Containerized point-of-sale (POS) system and technique for operating
US11665638B2 (en) 2021-08-26 2023-05-30 Apple Inc. Application and service context aware cell selection
US11599235B1 (en) * 2021-09-21 2023-03-07 Salesforce, Inc. Mobile-generated desktop reminders
CN113852718B (zh) * 2021-09-26 2022-11-15 北京字节跳动网络技术有限公司 语音通道建立方法、装置、电子设备及存储介质
CN113867988A (zh) * 2021-09-29 2021-12-31 展讯通信(深圳)有限公司 通用远程通信调用架构及方法
CN113900754B (zh) * 2021-10-09 2023-10-31 深圳技德智能科技研究院有限公司 共享桌面方法、装置、计算机设备和存储介质
KR102664915B1 (ko) * 2021-12-06 2024-05-17 엘지전자 주식회사 디스플레이 장치 및 그의 동작 방법
CN114253648B (zh) * 2021-12-24 2024-02-09 武汉噢易云计算股份有限公司 一种远程应用虚拟化方法与装置
WO2023143099A1 (zh) * 2022-01-29 2023-08-03 华为技术有限公司 一种数据聚合方法及计算系统
WO2023194938A1 (en) * 2022-04-06 2023-10-12 New York University In Abu Dhabi Corporation System, method and computer-accessible medium for a zero-copy data-coherent shared-memory inter-process communication system
US20230409357A1 (en) * 2022-05-25 2023-12-21 Citrix Systems, Inc. Asymmetric workspace application notification and interaction
WO2024102208A1 (en) * 2022-11-11 2024-05-16 Microsoft Technology Licensing, Llc Interoperability between actor frameworks and asynchronous frameworks
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes

Family Cites Families (264)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4207551A (en) * 1976-03-12 1980-06-10 Hans Kautzky Pressure transducer
US5396630A (en) * 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
US5673403A (en) 1992-11-13 1997-09-30 International Business Machines Corporation Method and system for displaying applications of different operating systems on a single system using the user interface of the different operating systems
JPH06301555A (ja) * 1993-02-26 1994-10-28 Internatl Business Mach Corp <Ibm> マイクロカーネル上の複数の共存オペレーティング・システム・パーソナリティ用のシステム
US5956030A (en) 1993-06-11 1999-09-21 Apple Computer, Inc. Computer system with graphical user interface including windows having an identifier within a control region on the display
JP3437238B2 (ja) * 1994-02-04 2003-08-18 キヤノン株式会社 コンピュータ、コンピュータシステム及びその制御方法
JPH08212086A (ja) * 1994-09-30 1996-08-20 Microsoft Corp オフィスマシンのオペレーティングシステム及び方法
JPH08115144A (ja) * 1994-10-17 1996-05-07 Toshiba Corp 分離型ワークステーション装置
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
CA2173695A1 (en) 1995-04-14 1996-10-15 Panagiotis Kougiouris Method and system for providing interoperability among processes written to execute on different operating systems
US6260075B1 (en) 1995-06-19 2001-07-10 International Business Machines Corporation System and method for providing shared global offset table for common shared library in a computer system
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
JPH0926769A (ja) 1995-07-10 1997-01-28 Hitachi Ltd 画像表示装置
US6477585B1 (en) 1995-08-18 2002-11-05 International Business Machines Corporation Filter mechanism for an event management service
US5874928A (en) 1995-08-24 1999-02-23 Philips Electronics North America Corporation Method and apparatus for driving a plurality of displays simultaneously
US6091414A (en) * 1996-10-31 2000-07-18 International Business Machines Corporation System and method for cross-environment interaction in a computerized graphical interface environment
US6018340A (en) 1997-01-27 2000-01-25 Microsoft Corporation Robust display management in a multiple monitor environment
US6157959A (en) 1997-07-03 2000-12-05 Tandem Computers, Incorporated Method and apparatus for providing portable kernel-mode support for fast interprocess communication
US5846257A (en) * 1997-08-15 1998-12-08 Nexus Medical System, Inc. Llc Pressure sensor for a surgical system
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6178503B1 (en) 1998-09-11 2001-01-23 Powerquest Corporation Managing multiple operating systems on a single computer
US6507336B1 (en) 1999-02-04 2003-01-14 Palm, Inc. Keyboard for a handheld computer
US7334235B2 (en) 1999-06-16 2008-02-19 Microsoft Corporation Operating system application programming interfaces and methods of using operating systems
US6460136B1 (en) * 1999-07-12 2002-10-01 Hewlett-Packard Co., Method and apparatus for loading an operating system kernel from a shared disk memory
US7284203B1 (en) 1999-07-27 2007-10-16 Verizon Laboratories Inc. Method and apparatus for application sharing interface
US7007240B1 (en) 1999-08-03 2006-02-28 Gateway Inc. Method and system for displaying non-overlapping program and auxiliary windows
AU7357900A (en) 1999-09-20 2001-04-24 Neopoint, Inc. Automatic device synchronization apparatus and method using battery pack for data exchange
JP4395223B2 (ja) 1999-09-24 2010-01-06 株式会社日立製作所 表示装置、表示方法、および、ナビゲーション装置
US6917963B1 (en) 1999-10-05 2005-07-12 Veritas Operating Corporation Snapshot image for the application state of unshareable and shareable data
US20080062625A1 (en) 1999-10-18 2008-03-13 Jeffrey Batio Portable computer for dual, rotatable screens
KR100679809B1 (ko) 1999-12-28 2007-02-07 주식회사 케이티 분산객체간 통신장치 및 방법
JP2001209466A (ja) * 2000-01-26 2001-08-03 Internatl Business Mach Corp <Ibm> コンピュータの制御方法、コンピュータ、及び記録媒体
US20100005396A1 (en) 2000-02-18 2010-01-07 Nason D David Method and system for controlling a comlementary user interface on a display surface
JP4402797B2 (ja) 2000-03-02 2010-01-20 株式会社日立製作所 情報処理装置
AU2001253702A1 (en) 2000-04-19 2001-10-30 Broadcom Corporation Apparatus and method for persistent display interface
US20020158811A1 (en) 2000-06-02 2002-10-31 Davis Terry Glenn Dual-monitor duo-workpad TM device
US7210099B2 (en) 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
JP5081345B2 (ja) 2000-06-13 2012-11-28 富士フイルム株式会社 光電変換素子の製造方法
CN101284525A (zh) 2000-06-20 2008-10-15 株式会社日立制作所 车辆行驶控制装置
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US20030020954A1 (en) 2001-07-26 2003-01-30 Charlie Udom Versatile printing from portable electronic device
GB0028890D0 (en) 2000-11-27 2001-01-10 Isis Innovation Visual display screen arrangement
US20030017417A1 (en) 2001-07-23 2003-01-23 Goodin Jonathan William Method for obtaining a lithographic printing surface using a metal complex
US6608629B2 (en) 2001-03-16 2003-08-19 Mitsubishi Electric Research Laboratories, Inc. Distance based constraints for adaptively sampled distance fields
TW502210B (en) * 2001-04-19 2002-09-11 Asustek Comp Inc Computer system capable of switching operating system
US6961941B1 (en) 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US7173627B2 (en) 2001-06-29 2007-02-06 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a graphics context manager
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US9026709B2 (en) 2010-10-01 2015-05-05 Z124 Auto-waking of a suspended OS in a dockable system
US6970173B2 (en) 2001-09-14 2005-11-29 Ati Technologies, Inc. System for providing multiple display support and method thereof
CN1282924C (zh) 2001-10-17 2006-11-01 Bep技术公司 通过操作系统进行通信的方法
US20030079205A1 (en) 2001-10-22 2003-04-24 Takeshi Miyao System and method for managing operating systems
JP2003196096A (ja) * 2001-12-07 2003-07-11 Internatl Business Mach Corp <Ibm> コンピュータシステム、その起動制御方法及びプログラム
US20030115443A1 (en) 2001-12-18 2003-06-19 Cepulis Darren J. Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon
US7143417B2 (en) 2002-01-10 2006-11-28 International Business Machines Corporation Notification services within a unified communications service
CN1610874A (zh) 2002-03-08 2005-04-27 三菱电机株式会社 移动通信装置、移动通信装置的显示控制方法及其程序
US20030226116A1 (en) 2002-03-08 2003-12-04 Katie Kuwata Method and system for implementing a historical buffer
US20030179541A1 (en) 2002-03-21 2003-09-25 Peter Sullivan Double screen portable computer
FR2840082B1 (fr) * 2002-05-24 2006-04-07 Bull Sa Procede d'echange d'informations entre systemes d'exploitation cohabitant sur un meme ordinateur
GB2394799B (en) 2002-07-31 2006-01-25 Hewlett Packard Co Improvements relating to mobile printing
US20070022155A1 (en) 2002-08-22 2007-01-25 Owens David H Method and system for integrating enterprise software applications with desktop software applications
WO2004028010A1 (en) 2002-09-17 2004-04-01 Si Han Kim Multi display device
US7176943B2 (en) 2002-10-08 2007-02-13 Microsoft Corporation Intelligent windows bumping method and system
CN1262921C (zh) * 2002-12-27 2006-07-05 联想(北京)有限公司 一种计算机操作系统的启动方法
US8508643B2 (en) 2003-01-17 2013-08-13 Hewlett-Packard Development Company, L.P. Method and system for processing an image
US7266774B2 (en) 2003-01-23 2007-09-04 International Business Machines Corporation Implementing a second computer system as an interface for first computer system
US6990573B2 (en) * 2003-02-05 2006-01-24 Dell Products L.P. System and method for sharing storage to boot multiple servers
US7461080B1 (en) * 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US7389512B2 (en) 2003-05-09 2008-06-17 Sun Microsystems, Inc. Interprocess communication within operating system partitions
US7167974B2 (en) * 2003-05-19 2007-01-23 Hewlett-Packard Development Company, L.P. Multiple saved kernel configurations
EP1503286B1 (en) * 2003-07-30 2014-09-03 Jaluna SA Multiple operating system networking
US7152186B2 (en) 2003-08-04 2006-12-19 Arm Limited Cross-triggering of processing devices
US7808549B2 (en) 2003-08-21 2010-10-05 Alps Electric Co., Ltd. Electronic device
US7181251B2 (en) 2003-10-22 2007-02-20 Nokia Corporation Mobile communication terminal with multi orientation user interface
TW200525421A (en) 2004-01-30 2005-08-01 Intervideo Digital Technology Corp Structure of shared application program in operating system and method thereof
US7483991B2 (en) 2004-03-25 2009-01-27 Microsoft Corporation Instant messaging communications channel for transporting data between objects executing within a managed code environment
JP2005305867A (ja) 2004-04-22 2005-11-04 Seiko Epson Corp 画像処理システム、画像表示装置、プリンタおよび印刷方法
US7478204B2 (en) 2004-04-29 2009-01-13 International Business Machines Corporation Efficient sharing of memory between applications running under different operating systems on a shared hardware system
US20060031572A1 (en) 2004-05-18 2006-02-09 Microsoft Corporation Event broker
WO2005119404A1 (en) 2004-06-01 2005-12-15 Beech Technology Incorporated Portable, folding and separable multi-display computing system
JP2005346244A (ja) 2004-06-01 2005-12-15 Nec Corp 情報表示装置及びその操作方法
KR100578592B1 (ko) * 2004-06-23 2006-05-12 공정배 서버/클라이언트 기반에서 온라인 이기종 운영 체제 제공 시스템 및 방법
US7996785B2 (en) 2004-06-30 2011-08-09 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
CN100576175C (zh) * 2004-07-06 2009-12-30 茵姆拜迪欧有限公司 用于多个内核的并行执行的方法和系统
US7424601B2 (en) * 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US20060058658A1 (en) * 2004-09-13 2006-03-16 Siemens Medical Solutions Usa, Inc. Communications between co-located operating systems for medical diagnostic ultrasound and other systems
EP1860522A3 (en) 2004-09-21 2008-07-02 Nokia Corporation Foldable electronic device
US20060082581A1 (en) 2004-10-14 2006-04-20 Microsoft Corporation Encoding for remoting graphics to decoder device
EP1811750A4 (en) 2004-11-09 2009-07-08 Sharp Kk PORTABLE INFORMATION TERMINAL
US7290114B2 (en) 2004-11-17 2007-10-30 Intel Corporation Sharing data in a user virtual address range with a kernel virtual address range
US20060111921A1 (en) 2004-11-23 2006-05-25 Hung-Yang Chang Method and apparatus of on demand business activity management using business performance management loops
EP1662760A1 (en) 2004-11-30 2006-05-31 Sony Ericsson Mobile Communications AB Method for providing alerts in a mobile device and mobile device therefor
JP4738805B2 (ja) 2004-12-16 2011-08-03 株式会社リコー 画面共有システム、画面共有方法、画面共有プログラム
US20060139862A1 (en) 2004-12-23 2006-06-29 Yajun Wang Hinged electronic device with hinged screen
KR100616157B1 (ko) 2005-01-11 2006-08-28 와이더댄 주식회사 애플리케이션 연동 방법 및 그 시스템
TWI267752B (en) * 2005-01-17 2006-12-01 Lite On Technology Corp Multi-mode computer system and operating method thereof
US20060183505A1 (en) 2005-02-15 2006-08-17 Willrich Scott Consulting Group, Inc. Digital mobile planner
US7289084B2 (en) 2005-02-22 2007-10-30 John Michael Lesniak Computer display apparatus
GB0504326D0 (en) 2005-03-02 2005-04-06 Symbian Software Ltd Dual mode operating system for a computing device
US20060248471A1 (en) 2005-04-29 2006-11-02 Microsoft Corporation System and method for providing a window management mode
US7565535B2 (en) 2005-05-06 2009-07-21 Microsoft Corporation Systems and methods for demonstrating authenticity of a virtual machine using a security image
US8195624B2 (en) 2005-06-30 2012-06-05 Phoenix Technologies Ltd. Shared file system management between independent operating systems
US7950008B2 (en) 2005-07-06 2011-05-24 International Business Machines Corporation Software installation in multiple operating systems
US7870558B2 (en) 2005-07-15 2011-01-11 Microsoft Corporation Handle passing using an inter-process communication
US20070050765A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Programming language abstractions for creating and controlling virtual computers, operating systems and networks
US20070050770A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Method and apparatus for uniformly integrating operating system resources
US20070067769A1 (en) 2005-08-30 2007-03-22 Geisinger Nile J Method and apparatus for providing cross-platform hardware support for computer platforms
US20070283324A1 (en) * 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US20070074191A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
US20070050751A1 (en) 2005-08-31 2007-03-01 Microsoft Corporation Automatic interoperation with legacy POS service and control objects
US7844301B2 (en) 2005-10-14 2010-11-30 Lg Electronics Inc. Method for displaying multimedia contents and mobile communications terminal capable of implementing the same
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US20070136356A1 (en) 2005-12-12 2007-06-14 Microsoft Corporation Mechanism for drivers to create alternate namespaces
US8140997B2 (en) 2005-12-26 2012-03-20 International Business Machines Corporation Manipulating display of multiple display objects
KR20070082691A (ko) * 2006-02-17 2007-08-22 삼성전자주식회사 디지털 멀티미디어 장치
JP2007226413A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd メモリダンプ方法、メモリダンププログラム、及び、計算機システム
US7595810B2 (en) * 2006-03-22 2009-09-29 Apple Inc. Methods of manipulating a screen space of a display device
FR2899755B1 (fr) 2006-04-10 2008-10-10 Streamezzo Sa Procede de restitution adaptative d'au moins un contenu multimedia sur un dispositif de visualisation orientable d'un terminal
US20090278806A1 (en) 2008-05-06 2009-11-12 Matias Gonzalo Duarte Extended touch-sensitive control area for electronic device
US7987432B1 (en) * 2006-04-25 2011-07-26 Parallels Holdings, Ltd. Seamless integration and installation of non-native application into native operating system
US20080282181A1 (en) 2006-05-02 2008-11-13 Siemens Medical Solutions Usa, Inc. Executable Application Configuration Information Processing System
KR100772875B1 (ko) 2006-05-22 2007-11-02 삼성전자주식회사 사용자 선호도에 따른 사용자 인터페이스를 설정하는 장치및 그 방법
US9201703B2 (en) 2006-06-07 2015-12-01 International Business Machines Corporation Sharing kernel services among kernels
US7880728B2 (en) 2006-06-29 2011-02-01 Microsoft Corporation Application switching via a touch screen interface
US20080024388A1 (en) 2006-07-29 2008-01-31 Oscar Bruce Two-sided display monitor apparatus
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
KR100811794B1 (ko) 2006-10-12 2008-03-10 삼성전자주식회사 휴대단말기의 블루투스 기능을 이용하여 프린터를 제어하는방법
JP4933304B2 (ja) 2006-10-16 2012-05-16 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
CN101529364A (zh) 2006-10-27 2009-09-09 诺基亚公司 用于促进三维图形用户界面内的移动的方法和装置
KR101144423B1 (ko) 2006-11-16 2012-05-10 엘지전자 주식회사 휴대 단말기 및 휴대 단말기의 화면 표시 방법
US20080119731A1 (en) 2006-11-20 2008-05-22 North American Medical Corporation Portable ultrasound with touch screen interface
US8332866B2 (en) 2006-11-29 2012-12-11 Qualcomm Incorporated Methods, systems, and apparatus for object invocation across protection domain boundaries
US8839105B2 (en) 2006-12-01 2014-09-16 International Business Machines Corporation Multi-display system and method supporting differing accesibility feature selection
US20080155103A1 (en) 2006-12-21 2008-06-26 Kimberly Tekavec Bailey AF UNIX Socket Across Systems in the Same Computer on Computer Systems that Support Multiple Operating System Images
US20090197641A1 (en) * 2008-02-06 2009-08-06 Broadcom Corporation Computing device with handheld and extended computing units
JP5246388B2 (ja) 2007-03-08 2013-07-24 日本電気株式会社 仮想装置構成システム、及びその方法
WO2008115012A1 (en) * 2007-03-20 2008-09-25 Sanggyu Lee Movable virtual machine image
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
JP5596343B2 (ja) 2007-04-13 2014-09-24 日本電気株式会社 仮想計算機システムおよびその最適化方法
US20100049775A1 (en) 2007-04-26 2010-02-25 Hewlett-Packard Development Company, L.P. Method and System for Allocating Memory in a Computing Environment
US8285259B2 (en) 2007-05-29 2012-10-09 Microsoft Corporation Resource aggregation in an opportunistic network
US8004493B2 (en) 2007-06-08 2011-08-23 Apple Inc. Methods and systems for providing sensory information to devices and peripherals
KR101320504B1 (ko) 2007-07-10 2013-10-22 엘지전자 주식회사 휴대 단말기
US8458612B2 (en) 2007-07-29 2013-06-04 Hewlett-Packard Development Company, L.P. Application management framework for web applications
TWI362612B (en) * 2007-09-05 2012-04-21 Htc Corp System and electronic device using multiple operating systems and operating method thereof
WO2009039376A2 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system with tunneling
US9003173B2 (en) 2007-09-28 2015-04-07 Microsoft Technology Licensing, Llc Multi-OS (operating system) boot via mobile device
GB2454033A (en) 2007-10-24 2009-04-29 Plastic Logic Ltd Portable paperless electronic printer
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
KR100883208B1 (ko) 2007-12-13 2009-02-13 성균관대학교산학협력단 가상화 기술을 기반으로 하여 소프트웨어의 업데이트가가능한 이동통신 단말기 및 그 업데이트 방법
TWI358028B (en) 2007-12-25 2012-02-11 Htc Corp Electronic device capable of transferring object b
US20090176571A1 (en) 2008-01-07 2009-07-09 Ippasa, Llc System for and method of operating video game system with control actuator-equipped stylus
US7960945B1 (en) 2008-01-30 2011-06-14 Google Inc. Estimating remaining use time of a mobile device
AU2009209018B2 (en) 2008-01-30 2014-03-20 Google Llc Notification of mobile device events
US8151100B2 (en) * 2008-02-06 2012-04-03 Broadcom Corporation Operating system for a computing device with handheld and extended computing units
US20090196280A1 (en) * 2008-02-06 2009-08-06 Broadcom Corporation Extension unit and handheld computing unit
US8195860B2 (en) * 2008-02-06 2012-06-05 Broadcom Corporation Computing device with handheld and extended computing devices
US20090198798A1 (en) * 2008-02-06 2009-08-06 Broadcom Corporation Handheld computing unit back-up system
US8064952B2 (en) * 2008-02-06 2011-11-22 Broadcom Corporation A/V control for a computing device with handheld and extended computing units
US7895365B2 (en) * 2008-02-06 2011-02-22 Broadcom Corporation File storage for a computing device with handheld and extended computing units
US20090198989A1 (en) * 2008-02-06 2009-08-06 Broadcom Corporation Bios for a computing device with handheld and extended computing units
US7870321B2 (en) * 2008-02-06 2011-01-11 Broadcom Corporation Extended computing unit with stand-alone application
CN101520745B (zh) 2008-02-27 2012-03-28 联想(北京)有限公司 数据处理设备及其状态切换方法
CN101526836A (zh) 2008-03-03 2009-09-09 鸿富锦精密工业(深圳)有限公司 双屏笔记本电脑
US20100164836A1 (en) 2008-03-11 2010-07-01 Truview Digital, Inc. Digital photo album, digital book, digital reader
US7930328B2 (en) 2008-03-31 2011-04-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for file system sharing
EP2109080A1 (en) 2008-04-09 2009-10-14 IBBT vzw A method and device for processing and presenting medical images
US9286027B2 (en) 2008-04-11 2016-03-15 T-Mobile Usa, Inc. Digital picture frame having communication capabilities
US7949633B1 (en) 2008-05-12 2011-05-24 Adobe Systems Incorporated Shared edit access of electronic content
DE602008005865D1 (de) 2008-05-29 2011-05-12 Lg Electronics Inc Transparente Anzeige und Betriebsverfahren dafür
US8230180B2 (en) 2008-06-11 2012-07-24 Samsung Electronics Co., Ltd. Shared memory burst communications
WO2009152335A1 (en) 2008-06-12 2009-12-17 Estari Inc. Dual screen display system
US8359372B2 (en) 2008-06-29 2013-01-22 Microsoft Corporation Automatic transfer of information through physical docking of devices
US20090322690A1 (en) 2008-06-30 2009-12-31 Nokia Corporation Screen display
EP2309368A4 (en) 2008-06-30 2013-05-01 Nec Corp INFORMATION PROCESSING DEVICE, DISPLAY CONTROL METHOD, AND RECORDING MEDIUM
US20100007603A1 (en) 2008-07-14 2010-01-14 Sony Ericsson Mobile Communications Ab Method and apparatus for controlling display orientation
EP2309369B1 (en) 2008-07-25 2016-09-28 NEC Corporation Information processing device, information processing program, and display control method
US8191004B2 (en) 2008-08-06 2012-05-29 Microsoft Corporation User feedback correlated to specific user interface or application features
US20100046026A1 (en) 2008-08-21 2010-02-25 Samsung Electronics Co., Ltd. Image forming apparatus and image forming method
US8613394B2 (en) 2008-08-29 2013-12-24 The Invention Science Fund I, Llc Bendable electronic interface external control system and method
US8860632B2 (en) 2008-09-08 2014-10-14 Qualcomm Incorporated Multi-panel device with configurable interface
US9009984B2 (en) 2008-09-08 2015-04-21 Qualcomm Incorporated Multi-panel electronic device
US8933874B2 (en) 2008-09-08 2015-01-13 Patrik N. Lundqvist Multi-panel electronic device
US8866840B2 (en) 2008-09-08 2014-10-21 Qualcomm Incorporated Sending a parameter based on screen size or screen resolution of a multi-panel electronic device to a server
US8803816B2 (en) 2008-09-08 2014-08-12 Qualcomm Incorporated Multi-fold mobile device with configurable interface
US8165558B2 (en) * 2008-09-08 2012-04-24 Celio Technology Corporation Client device for cellular telephone as server
US8836611B2 (en) 2008-09-08 2014-09-16 Qualcomm Incorporated Multi-panel device with configurable interface
US20100060572A1 (en) * 2008-09-11 2010-03-11 Ely Tsern Display device for interfacing with a handheld computer device that dynamically generates a different user environment for the display device
US8896632B2 (en) 2008-09-12 2014-11-25 Qualcomm Incorporated Orienting displayed elements relative to a user
KR101501167B1 (ko) 2008-10-20 2015-03-10 삼성전자주식회사 다중 모뎀을 구비한 이동통신 단말기에서 다중 운용 체제를운용하기 위한 장치 및 방법
JP4935796B2 (ja) 2008-10-30 2012-05-23 富士ゼロックス株式会社 表示制御装置、画像形成装置及びプログラム
US8352967B2 (en) 2008-11-10 2013-01-08 Google Inc. Safe browser plugins using native code modules
US9075457B2 (en) 2008-12-12 2015-07-07 Maxim Integrated Products, Inc. System and method for interfacing applications processor to touchscreen display for reduced data transfer
US7864524B2 (en) 2008-12-24 2011-01-04 Research In Motion Limited Multiple-fold portable electronic device
CN101770399B (zh) * 2009-01-05 2014-04-23 联想(北京)有限公司 一种电子设备及切换其操作系统桌面的方法、装置
US8300022B2 (en) 2009-01-09 2012-10-30 International Business Machines Corporation Dynamically reconfigurable touch screen displays
KR101569776B1 (ko) 2009-01-09 2015-11-19 삼성전자주식회사 접히는 표시부를 가지는 휴대 단말기 및 이의 운용 방법
KR20100083640A (ko) 2009-01-14 2010-07-22 삼성전자주식회사 디스플레이 장치, 스캐너, 디스플레이 시스템 및 이를 이용한 디스플레이 방법
KR101608748B1 (ko) 2009-02-18 2016-04-21 삼성전자주식회사 탈부착 가능한 서브 디스플레이부를 구비하는 휴대 단말기
US20100211769A1 (en) * 2009-02-19 2010-08-19 Subramonian Shankar Concurrent Execution of a Smartphone Operating System and a Desktop Operating System
US7987309B2 (en) * 2009-02-26 2011-07-26 Broadcom Corporation Dockable handheld computing device with graphical user interface and methods for use therewith
US8090890B2 (en) * 2009-02-26 2012-01-03 Broadcom Corporation Dockable handheld computing device with video application and methods for use therewith
US20100217835A1 (en) * 2009-02-26 2010-08-26 Broadcom Corporation Dockable handheld computing device with file transfer and methods for use therewith
US8355755B2 (en) 2009-03-03 2013-01-15 Lg Electronics Inc. Mobile terminal
US8446377B2 (en) 2009-03-24 2013-05-21 Microsoft Corporation Dual screen portable touch sensitive computing system
US20100251233A1 (en) 2009-03-25 2010-09-30 Honeywell International Inc. Embedded computing system user interface emulated on a separate computing device
US8707061B2 (en) * 2009-03-27 2014-04-22 Qualcomm Incorporated System and method of providing scalable computing between a portable computing device and a portable computing device docking station
US8194001B2 (en) 2009-03-27 2012-06-05 Microsoft Corporation Mobile computer device display postures
US8630088B2 (en) * 2009-03-27 2014-01-14 Qualcomm Incorporated Portable docking station for a portable computing device
US7864517B2 (en) 2009-03-30 2011-01-04 Microsoft Corporation Mobile computer device binding feedback
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
CN102369504B (zh) 2009-03-31 2016-10-26 日本电气株式会社 便携终端装置、其控制程序以及多个显示画面的控制方法
TWI400652B (zh) 2009-06-11 2013-07-01 Insyde Software Corp Dual operating system parallel processing methods, recording media and computer program products
US20100321275A1 (en) 2009-06-18 2010-12-23 Microsoft Corporation Multiple display computing device with position-based operating modes
US8839422B2 (en) 2009-06-30 2014-09-16 George Mason Research Foundation, Inc. Virtual browsing environment
US8868899B2 (en) 2009-07-20 2014-10-21 Motorola Mobility Llc System and method for switching between environments in a multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9348633B2 (en) * 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US8847984B2 (en) 2009-07-27 2014-09-30 Disney Enterprises, Inc. System and method for forming a composite image in a portable computing device having a dual screen display
JP2011028673A (ja) 2009-07-29 2011-02-10 Kyocera Corp 携帯端末装置
US20110102314A1 (en) 2009-10-30 2011-05-05 Xerox Corporation Dual-screen electronic reader with tilt detection for page navigation
US20110113329A1 (en) 2009-11-09 2011-05-12 Michael Pusateri Multi-touch sensing device for use with radiological workstations and associated methods of use
US8797268B2 (en) 2009-11-18 2014-08-05 Qualcomm Incorporated Folding mobile device
KR20110092802A (ko) 2010-02-10 2011-08-18 삼성전자주식회사 복수개의 표시부를 가지는 단말기의 데이터 운용 방법 및 이를 지원하는 단말기
US9454304B2 (en) 2010-02-25 2016-09-27 Microsoft Technology Licensing, Llc Multi-screen dual tap gesture
US20110210922A1 (en) 2010-02-26 2011-09-01 Research In Motion Limited Dual-screen mobile device
JP5800501B2 (ja) 2010-03-12 2015-10-28 任天堂株式会社 表示制御プログラム、表示制御装置、表示制御システム、及び、表示制御方法
US20110239142A1 (en) 2010-03-25 2011-09-29 Nokia Corporation Method and apparatus for providing content over multiple displays
CN102918490B (zh) 2010-04-01 2014-07-23 思杰系统有限公司 与在平板计算装置的虚拟桌面内显示的远程应用交互
US9213480B2 (en) 2010-04-08 2015-12-15 Nokia Technologies Oy Method, apparatus and computer program product for joining the displays of multiple devices
JP4865053B2 (ja) 2010-04-22 2012-02-01 株式会社東芝 情報処理装置およびドラッグ制御方法
US8400564B2 (en) 2010-05-03 2013-03-19 Microsoft Corporation Image capture
US9851747B2 (en) 2010-05-21 2017-12-26 Peter G. Winsky Electronic book reader with closely juxtaposed display screens
US20110291964A1 (en) 2010-06-01 2011-12-01 Kno, Inc. Apparatus and Method for Gesture Control of a Dual Panel Electronic Device
US8954099B2 (en) 2010-06-16 2015-02-10 Qualcomm Incorporated Layout design of proximity sensors to enable shortcuts
US8589952B2 (en) * 2010-06-30 2013-11-19 Palm, Inc. Dual operating system operation and configuration
US20120005602A1 (en) 2010-07-02 2012-01-05 Nokia Corporation Methods and apparatuses for facilitating task switching
US8397245B2 (en) 2010-07-12 2013-03-12 International Business Machines Corporation Managing loading and unloading of shared kernel extensions in isolated virtual space
KR101688942B1 (ko) 2010-09-03 2016-12-22 엘지전자 주식회사 다중 디스플레이에 기반한 사용자 인터페이스 제공 방법 및 이를 이용하는 이동 단말기
US8700987B2 (en) 2010-09-09 2014-04-15 Sony Corporation Annotating E-books / E-magazines with application results and function calls
US20120066624A1 (en) 2010-09-13 2012-03-15 Ati Technologies Ulc Method and apparatus for controlling movement of graphical user interface objects
US8724696B2 (en) 2010-09-23 2014-05-13 Vmware, Inc. System and method for transmitting video and user interface elements
CN107122168A (zh) 2010-10-01 2017-09-01 Z124 多操作系统
JP2013539137A (ja) 2010-10-01 2013-10-17 ゼット124 ユーザインタフェースにおけるドラッグ移動ジェスチャ
US20130312106A1 (en) 2010-10-01 2013-11-21 Z124 Selective Remote Wipe
US9430122B2 (en) 2010-10-01 2016-08-30 Z124 Secondary single screen mode activation through off-screen gesture area activation
US9405444B2 (en) 2010-10-01 2016-08-02 Z124 User interface with independent drawer control
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US8369893B2 (en) 2010-12-31 2013-02-05 Motorola Mobility Llc Method and system for adapting mobile device to accommodate external display
US20120176413A1 (en) 2011-01-11 2012-07-12 Qualcomm Incorporated Methods and apparatuses for mobile device display mode selection based on motion direction
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US20120278747A1 (en) 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for user interface in a system having two operating system environments
US8810533B2 (en) 2011-07-20 2014-08-19 Z124 Systems and methods for receiving gesture inputs spanning multiple input devices
US9182935B2 (en) 2011-09-27 2015-11-10 Z124 Secondary single screen mode activation through menu option
DE112012004781T5 (de) 2011-11-16 2014-08-07 Flextronics Ap, Llc Versicherungsverfolgung

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016035705A (ja) * 2014-08-04 2016-03-17 パナソニックIpマネジメント株式会社 表示装置、表示制御方法、及び表示制御プログラム
JP2016035706A (ja) * 2014-08-04 2016-03-17 パナソニックIpマネジメント株式会社 表示装置、表示制御方法、及び表示制御プログラム
JP2017027366A (ja) * 2015-07-22 2017-02-02 キヤノン株式会社 情報処理装置及びイベント管理方法

Also Published As

Publication number Publication date
CN103262057B (zh) 2016-02-10
WO2012045073A3 (en) 2012-06-07
US20120084793A1 (en) 2012-04-05
WO2012044645A3 (en) 2012-06-21
WO2012044784A2 (en) 2012-04-05
WO2012044872A2 (en) 2012-04-05
US20120089906A1 (en) 2012-04-12
US20120081380A1 (en) 2012-04-05
WO2012044676A3 (en) 2012-07-05
US9077731B2 (en) 2015-07-07
WO2012044539A3 (en) 2012-06-21
CN103282875A (zh) 2013-09-04
BR112013007809A2 (pt) 2017-12-12
CN103493010B (zh) 2017-02-08
WO2012045074A3 (en) 2012-07-19
US8819180B2 (en) 2014-08-26
WO2012044784A3 (en) 2012-06-14
WO2012045074A2 (en) 2012-04-05
CN103329094B (zh) 2017-02-15
US8683496B2 (en) 2014-03-25
WO2012044546A3 (en) 2012-05-18
WO2012044645A2 (en) 2012-04-05
WO2012044557A2 (en) 2012-04-05
CN103282875B (zh) 2017-04-12
WO2012044558A3 (en) 2012-06-28
US20120084798A1 (en) 2012-04-05
EP2622464A2 (en) 2013-08-07
WO2012044557A3 (en) 2012-06-28
CN107122168A (zh) 2017-09-01
CN103370689B (zh) 2018-02-02
EP2622490B1 (en) 2018-12-05
US9071625B2 (en) 2015-06-30
CN103262057A (zh) 2013-08-21
CN103229156A (zh) 2013-07-31
US8963939B2 (en) 2015-02-24
US9049213B2 (en) 2015-06-02
WO2012044546A2 (en) 2012-04-05
US9060006B2 (en) 2015-06-16
WO2012044558A2 (en) 2012-04-05
CN103329094A (zh) 2013-09-25
US9160796B2 (en) 2015-10-13
US8957905B2 (en) 2015-02-17
EP2622462A2 (en) 2013-08-07
US20120081383A1 (en) 2012-04-05
WO2012045078A3 (en) 2012-06-14
WO2012044687A2 (en) 2012-04-05
WO2012045073A2 (en) 2012-04-05
WO2012044687A3 (en) 2012-07-05
US20120081396A1 (en) 2012-04-05
EP2622490A2 (en) 2013-08-07
US20120081354A1 (en) 2012-04-05
WO2012045078A2 (en) 2012-04-05
EP2622462A4 (en) 2014-01-29
CN103370689A (zh) 2013-10-23
US20120081353A1 (en) 2012-04-05
US20120143944A1 (en) 2012-06-07
WO2012044792A2 (en) 2012-04-05
CN103229156B (zh) 2016-08-10
EP2622464A4 (en) 2015-01-07
CN103493010A (zh) 2014-01-01
WO2012044792A3 (en) 2012-06-14
MX2013003427A (es) 2013-10-28
EP2622490A4 (en) 2015-04-29
WO2012044872A3 (en) 2012-07-19
WO2012044676A2 (en) 2012-04-05
WO2012044539A2 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
US8819705B2 (en) User interaction support across cross-environment applications
US8683496B2 (en) Cross-environment redirection
US9047102B2 (en) Instant remote rendering
US8933949B2 (en) User interaction across cross-environment applications through an extended graphics context
US10503344B2 (en) Dynamic cross-environment application configuration/orientation
US8966379B2 (en) Dynamic cross-environment application configuration/orientation in an active user environment

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141202