JP2014222506A - プロテイン、プール、およびスロークス処理環境 - Google Patents

プロテイン、プール、およびスロークス処理環境 Download PDF

Info

Publication number
JP2014222506A
JP2014222506A JP2014126090A JP2014126090A JP2014222506A JP 2014222506 A JP2014222506 A JP 2014222506A JP 2014126090 A JP2014126090 A JP 2014126090A JP 2014126090 A JP2014126090 A JP 2014126090A JP 2014222506 A JP2014222506 A JP 2014222506A
Authority
JP
Japan
Prior art keywords
data
event
offset
capsule
application
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.)
Pending
Application number
JP2014126090A
Other languages
English (en)
Inventor
クレーマー,クウィンドラ・フルトマン
Hultman Kramer Kwindla
アンダーコフラー,ジョン・エス
S Underkoffler John
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.)
Oblong Industries Inc
Original Assignee
Oblong Industries Inc
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 Oblong Industries Inc filed Critical Oblong Industries Inc
Publication of JP2014222506A publication Critical patent/JP2014222506A/ja
Pending legal-status Critical Current

Links

Images

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/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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Peptides Or Proteins (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】プロセス間でまたはプロセスを跨って共有する必要があるデータをカプセル化するメカニズムを提供する。
【解決手段】メカニズムはスロー、プロテイン、およびプールを含む。スローは、プロセス間交換について最低レベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、問い合わせおよびフィルタリングのためのフックを備え、プールは高レベルの編成およびアクセス・セマンティクスを規定する。スローは、効率的なプラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スローをペイロードとして用いる、データ・カプセル化および輸送方式を規定する。プールは、1つのプロセス内部、ローカル・プロセス間、遠隔プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして長期記憶による、プロテインの構造化され柔軟な集計、順序付け、フィルタ処理、および分散を規定する。
【選択図】図1

Description

関連出願
本願は、2007年4月27日に出願した米国(US)特許出願第60/926,11
6の優先権を主張する。
本願は、2005年2月8日に出願した米国仮特許出願第60/651,290号の優
先権を主張する、2006年2月8日に出願した米国特許出願第11/350,6957
号に関連がある。
技術分野
実施形態は、計算プロセス内および計算プロセス間におけるデータの表現、操作、およ
び交換に関して説明する。
従来のプログラミング環境は、マルチ・コンピュータ演算装置(CPU)やクロス・ネ
ットワーク実行、あるいは多数の計算プロセス間におけるデータの柔軟な共有を最大限支
援していない。
例えば、従来のユーザ対面(user-facing)計算プラットフォーム(例えば、OS X、Micro
soft Windows(登録商標)、UNIX(登録商標)上のX Windows(登録商標))は、プロセ
ス間においてイベント・データを伝送する設備(facilities)を提供する。しかし、これら
既存のメカニズムの全てには欠点があり、そのためにマルチ・プロセスおよびマルチ・マ
シン・アプリケーションを構築することが困難となっており、更に複数のプログラミング
言語で作業するユーザは、苛立たしい輪を潜り抜けることを余儀なくされている。例えば
、従来のイベント・フレームワークは厳しく類型に分けられており、そのためにこれらは
柔軟性を欠き、アプリケーション・プログラマに対するシステム販売業者の専有(assumpt
ion)が特権として認められており、増々普及しつつある動的言語(例えば、Ruby、Python
、およびPerl)の設備との不一致が形成される。また、従来のフレームワークは、2点間
データ転送しかサポートしないように構成されており、数個を超える別個のプロセスの活
動(activity)を調整することが困難または不可能となる。また、従来のフレームワークは
、特定のローカル・メモリ内データ構造に強く依存するので、ディスク上の格納またはネ
ットワークを跨る送信には不向きとなっている。
引用による包含
本明細書において述べる各特許、特許出願、および/または刊行物は、本願において引
用することにより、個々の特許、特許出願、および/または刊行物の各々が具体的にそし
て個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本
願にも含まれるものとする。
本明細書では、大規模マルチ・プロセス相互動作を可能としかつ促進する新規のプログ
ラミングまたは処理環境を含む実施形態を教示する。本明細書において提供する実施形態
は、マルチ・コンピュータ演算装置(CPU)およびクロス・ネットワーク実行や、多数
の計算処理間における柔軟なデータ共有を最大限支援しない従来のプログラミング環境に
おける問題を克服する。
本明細書では、プロセス間でまたはプロセスを跨って共有しようとするデータをカプセ
ル化する方法およびシステムについて記載する。これらのメカニズムはスロークス(slawx
)(「slaw」の複数形)、プロテイン(protein)、およびプール(pool)を含む。概して、ス
ロークスは、プロセス間交換について最低レベルのデータ定義を規定し、プロテインは、
中間レベルの構造を規定し、問い合わせおよびフィルタリングのためのフック(hook)を備
えており、プールは高レベルの編成およびアクセス・セマンティクス(semantics)を規定
する。スロークスは、効率的な、プラットフォームに依存しないデータ表現およびアクセ
スのためのメカニズムを含む。プロテインは、スロークスをペイロードとして用いる、デ
ータ・カプセル化および輸送方式を規定する。プールは、1つのプロセス内部、ローカル
・プロセス間、遠隔プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして
長期(例えば、ディスク上等における)記憶による、プロテインの構造化された柔軟な集
計、順序付け、フィルタ処理、および分散を規定する。
本明細書において記載する実施形態の構成および実施態様には、数個の構造が含まれ、
これらが一緒になって多数の処理能力が可能となる。例えば、本明細書において記載する
実施形態は、多数の処理間における効率的なデータ交換に備えている。また、本明細書に
おいて記載する実施形態は、柔軟なデータ「類別」(typing)および構造も規定するので、
データの広範囲の多様な種類および使用をサポートする。更に、本明細書において記載す
る実施形態は、データ交換のための柔軟なメカニズム(例えば、ローカル・メモリ、ディ
スク、ネットワーク等)を含み、これらは全て実質的に同様のアプリケーション・プログ
ラミング・インターフェース(API)によって駆動される。更に、記載する実施形態は
、異なるプログラム言語で書かれたプロセス間におけるデータ交換も可能にする。加えて
、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動保守
も可能にする。
以下の説明では、本明細書において記載する実施形態の完全な理解が得られ、その実施
を可能にする説明を提示するために、多数の具体的な詳細を紹介する。しかしながら、こ
れらの実施形態は、その具体的詳細の1つ又は複数がなくても、または他のコンポーネン
ト、システム等を用いても実用化できることは、当業者には認められよう。一方、周知の
構造または動作は、開示する実施形態の態様が曖昧になるのを避けるために、示さないか
、または詳細には説明しないこととする。
以下の用語は、本明細書において用いられる場合、以下の一般的な意味を有することを
意図している。「プロセス」という用語は、本明細書において用いられる場合、ある時間
期間実行するコンピュータ・プログラムを意味する。この実行は、休止あるいはプロセッ
サまたはマシン間の転送によって中断される場合もあるので、プロセスを無期限に保留す
ること、「直列化」すること、あるいはディスクに、メモリ・バス間で、またはネットワ
ーク上で「整列」(marshal)させることも可能である。前述の意味は、当業者によって理
解される別の意味を含むこともできる。
「デバイス」という用語は、本明細書において用いる場合、1つ又は複数のプログラム
またはアルゴリズムを走らせるあらゆるプロセッサ主体デバイス、1つ又は複数のプログ
ラムまたはアルゴリズムの下で走るあらゆるプロセッサ主体デバイス、および/または1
つ又は複数のプログラムまたはアルゴリズムを走らせる、および/または1つ又は複数の
プログラムまたはアルゴリズムの下で走るプロセッサ主体デバイスに結合または接続され
ているあらゆるデバイスを意味する。「イベント」という用語は、本明細書において用い
る場合、走っている即ち実行中のプログラムまたはアルゴリズム、プロセッサ主体デバイ
ス、および/またはプロセッサ主体デバイスに結合または接続されているデバイスと関連
のあるあらゆるイベントを意味する(例えば、イベントは、入力、出力、制御、状態、状
態変化、処置(action)、データ(データのフォーマットや、データと関連のある処理にお
ける段階には無関係)等を含むことができるが、これらに限定されるのではない)。
図1は、一実施形態の下における、スロークス、プロテイン、およびプールを用いたデータ表現を含む処理環境のブロック図である。 図2は、一実施形態の下における、プロテインのブロック図である。 図3は、一実施形態の下における、デスクリップ(descrip)のブロック図である。 図4は、一実施形態の下における、インジェスト(ingest)のブロック図である。 図5は、一実施形態の下におけるスロー(slaw)のブロック図である。 図6Aは、一実施形態の下における、プールの中にあるプロテインのブロック図である。 図6Bは、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。 図6Cは、一実施形態の下においてプロテインを用いる際の流れ図である。 図6Dは、一実施形態の下において、プロテインを組み立てるまたは発生する際の流れ図である。 図7は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。 図8は、一実施形態の下において、多数のデバイスと、これらのデバイスの1つ又は複数で走る多数のプログラムを含み、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。 図9は、一代替実施形態の下において、多数のデバイスと、これらのデバイスの1つ又は複数で走る多数のプログラムを含み、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。 図10は、別の代替実施形態の下において、多数の入力デバイスを含み、これらが当該デバイスの1つ又は複数で走る多数のプログラム間に結合されており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。 図11は、更に別の代替実施形態の下において、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数のプログラム間に結合されており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。 図12は、更に別の代替実施形態の下において、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数のプログラム間に結合されており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする処理環境のブロック図である。 図13は、追加の代替実施形態の下において、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数のプログラム間に結合されており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる処理環境のブロック図である。
図1は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデ
ータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要
な構造には、スロークス(「スロー」(slaw)の複数形)、プロテイン、およびプールが含
まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに
依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細
書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施
形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載す
る場合、プロテインの構造化されているが柔軟な集計、順序付け、フィルタ処理、および
分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プ
ロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「
長期」(例えば、デスク上)記憶による、データへのアクセスを与える。
図2は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さ
ヘッダ、ディスクリップ(descrip)、およびインジェスト(ingest)を含む。以下で詳細に
説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含
む。
図3は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説
明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
図4は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明
するが、インジェストは、オフセット、長さ、およびスローを含む。
図5は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが
、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
図6Aは、一実施形態の下における、プールの中にあるプロテインのブロック図である
。プロテインは、長さヘッダ(「プロテイン長さ」)、ディスクリップ・オフセット、イ
ンジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップ
は、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およ
びスローを含む。
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバ
スまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプ
セル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェ
ース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための
改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベ
ントは、2006年2月8日に出願した米国特許出願第11/350,697号に記載さ
れているジェスチャ・インタフェースのそれを含む。この特許出願をここで引用したこと
により、その内容が本願にも含まれるものとする。更に別の例として、プロテインは、限
定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデ
ータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコー
ド・フォーマット、およびレコードを操作するための1組の関連方法である。本明細書に
おいて用いる場合、レコードの操作は、データを構造に入力すること、構造からデータを
取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロ
テインは、種々のコンピュータ言語で書かれたコードを通じて用いられるように構成され
ている。また、プロテインは、本明細書において記載するような、プールの基本的構築ブ
ロックとなるように構成されている。更に、プロテインは、それらが含むデータを不変の
まま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成
されている。
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない
。タイプは決められていないが、プロテインは、「タイプ状」機能性を実装することに加
えて、強力で柔軟性のあるパターン照合設備(facility)を備えている。また、本明細書に
記載するように構成されているプロテインは、本質的に多点型でもある(しかし、二点間
形態も、多点伝送の部分集合として容易に実現される)。加えて、プロテインはメモリ内
、ディスク上、およびワイヤ(ネットワーク)上フォーマット間で異なることがない「ユ
ニバーサル」レコード・フォーマットを定義する(即ち、実行する任意の最適化の種類だ
けが異なる)。
図2および図6を参照すると、一実施形態のプロテインは、バイトの線形シーケンスで
ある。これらのバイトの中には、ディスクリップ・リストと、1組のキー値対がカプセル
化されている。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elabo
rate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。イン
ジェストは、1組のキー値対を含み、これらがプロテインの実際の内容を構成する。
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(network-frien
dly)多点データ相互交換に関する中核的観念の一部は、「タプル」の概念を特別に許可す
る(priviledge)もっと簡単なシステム(例えば、Linda、Jini)と共有される。プロテイ
ンは、タプル指向システムとは様々な面で大きく異なり、その相違には、標準的、最適化
可能なパターン照合基盤を設けるためにディスクリップ・リストを用いることが含まれる
。また、プロテインがタプル指向システムと異なるのは、種々の記憶および言語構造に適
したレコード・フォーマットの厳格な仕様、そしてそのレコード・フォーマットに対する
「インターフェース」の色々な特定的な実施態様である。
プロテインの説明に戻って、プロテインの最初の4バイトまたは8バイトは、プロテイ
ンの長さを指定する。一実施形態では、長さは16バイトの倍数でなければならない。こ
の16バイトの粒度により、バイト整合およびバス整合効率が現在のハードウェアでも達
成可能であることを確保する。本来「4ワード整合」型でないプロテインには、任意のバ
イトを詰めこんで、その長さが16バイトの倍数となるようにする。
プロテインの長さ部分は、次のフォーマットを有する。ビッグ・エンディアン・フォー
マット(big-endian format)で長さを指定する32ビット。その下位4ビットはマクロ・
レベルのプロテイン構造特性を示すフラグとして機能する。プロテインの長さが2^32
バイトよりも大きい場合、その次に来る更に別の32ビット。
一実施形態における16バイト整合条件は、最初の4バイトの最下位ビットがフラグと
して利用可能であることを意味する。そして、このため、最下位の3ビット・フラグは、
プロテインの長さが最初の4バイトで表現できるのか、または8バイト必要なのかを示し
、プロテインがビッグ・エンディアンまたはリトル・エンディアンの内どちらのバイト順
序付けを用いるのかを示し、更に、プロテインが標準的構造または非標準的構造のどちら
を採用するのかをそれぞれ示すが、プロテインはこのように限定されるのではない。4番
目のフラグ・ビットは、今後の使用のために保存されている。
8バイト長フラグ・ビットがセットされている場合、プロテインの長さを計算するには
、次の4バイトを読み取り、これらをビッグ・エンディアン、8バイト整数の上位バイト
として用いる(4バイトは既に読み取られ、下位部分を供給する)。リトル・エンディア
ン・フラグがセットされている場合、プロテインの中にある全ての二進数値データをリト
ル・エンディアンとして解釈する(それ以外の場合は、ビッグ・エンディアン)。非標準
フラグ・ビットがセットされている場合、プロテインの残りの部分は、以下で説明する標
準構造に従わない。
非標準プロテイン構造については、プロテインおよびプールを用いるシステム・プログ
ラマには、非標準プロテイン・フォーマットを記述しこれに同期するための種々の方法が
利用可能であること、そしてこれらの方法は、空間または計算サイクルが制限されている
ときに有用となることができることを除いて、ここではこれ以上論じない。例えば、一実
施形態では、最短のプロテインは16バイトである。標準フォーマットのプロテインは、
実際のペイロード・データをこれらの16バイトにはめ込むことは全くできない(その一
番大きい部分は既に、プロテインのコンポーネント・パーツの位置を記述することが任さ
れている)。しかし、非標準フォーマット・プロテインは、その16バイトの内12バイ
トをデータに用いることができると考えられる。2つのアプリケーションがプロテインを
交換すると、これらが発信するいずれの16バイト長プロテインでも常に12バイトを含
み、これらは、例えば、リアル・タイム・アナログ/ディジタル変換器からの12個の8
ビット・センサ値を表すことを相互に決定することができる。
長さヘッダの直後には、プロテインの標準構造では、更に2つの可変長整数値が現れる
。これらの数値は、それぞれ、ディスクリップ・リストにおける最初のエレメント、およ
び最初のキー値対(インジェスト)に対するオフセットを指定する。これらのオフセット
は、本明細書では、それぞれディスクリップ・オフセットおよびインジェスト・オフセッ
トとも呼ぶ。これらの数値の各クアッド(quad)のバイト順序は、プロテイン・エンディア
ンネス・フラグ・ビット(protein endianness flag bit)によって指定される。各々につ
いて、最初の4バイトの最上位ビットは数値が4または8バイト幅のどちらであるかを決
定する。最上位ビット(msb)がセットされている場合、最初の4バイトは二重ワード
(8バイト)数値の最上位バイトとなる。ここでは、これを「オフセット形式」と呼ぶ。
ディスクリップおよび対を指し示す別個のオフセットを用いることにより、ディスクリッ
プおよび対を異なるコード・パスによって扱うことが可能となり、例えば、ディスクリッ
プ・パターン照合およびプロテイン・アセンブリに関する個々の最適化を行うことができ
るようになる。また、これら2つのオフセットがプロテインの先頭にあるため、様々な有
用な最適化に対処できる。
殆どのプロテインは8バイト長またはポインタを必要とする程大きくないので、一般に
長さ(とフラグ)および2つのオフセット数値は、プロテインの最初の3バイトを占める
に過ぎない。多くのハードウェアまたはシステム・アーキテクチャでは、最初のバイトを
超えるある数のバイトのフェッチ即ちリードは、「自由」である(例えば、16バイトは
、セル・プロセッサ(Cell processor)の主要バスを介して引き込むには、1バイトと全く
同じ数のクロック・サイクルを要する。)
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシ
ング(caching)またはメタデータを許容することは有用である。オフセットの使用により
、プロテインの先頭付近に、任意のサイズの「孔」を作成し、その中にこのようなメタデ
ータを割り込ませることができる。8バイトのメタデータを利用することができる実施態
様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチ
する毎に1つのプロテインに対して自由に得ることができる。
ディスクリップ・オフセットは、プロテインの先頭と最初のディスクリップ・エントリ
との間のバイト数を指定する。各ディスクリップ・エントリは、次のディスクリップ・エ
ントリまでのオフセット(勿論、オフセット形態で)を備えており、その後に可変幅の長
さフィールド(これもオフセット・フォーマットで)が続き、更にその後にスローが続く
。これ以上ディスクリップがない場合、オフセットは、規則上、0の4バイトとなる。そ
れ以外の場合、オフセットは、当該ディスクリップ・エントリの開始と次との間のバイト
数を指定する。長さフィールドは、バイト単位で、スローの長さを指定する。
殆どのプロテインでは、各ディスクリップは、スロー・ストリング様式でフォーマット
したストリングであり、4バイトの長さ/タイプヘッダを有し、最上位ビットがセットさ
れ、下位30ビットだけが長さを指定するために用いられ、その後に、ヘッダが指示する
数のデータ・バイトが続く。通常通り、長さヘッダはそのエンディアンネスをプロテイン
から取り込む。バイトは、UTF−8キャラクタをエンコードすると仮定する(したがっ
て、キャラクタ数は必ずしもバイト数と同じではないことを注記しておく)。
インジェスト・オフセットは、プロテインの先頭と最初のインジェスト・エントリとの
間のバイト数を指定する。各インジェスト・エントリは、次のインジェスト・エントリま
でのオフセット(オフセット・フォームで)を備えており、その後にこの場合も長さフィ
ールドおよびスローが続く。インジェスト・オフセットは、次のディスクリップ・エント
リの代わりに次のインジェスト・エントリを指し示すことを除いて、ディスクリップ・オ
フセットと機能的には同一である。
殆どのプロテインでは、各インジェストは、スロー・コンス・タイプ(slaw cons type)
であり、二値リストを備えている。このリストは通常キー/値対として用いられる。スロ
ー・コンス・レコードは、最上位から2番目のビットがセットされており、下位30ビッ
トだけが長さを指定するために用いられる4バイトの長さ/タイプ・ヘッダと、4バイト
の値(2番目)エレメントの先頭までのオフセットと、前述の4バイトのキー・エレメン
ト長と、キー・エレメントに対するスロー・レコードと、4バイト長の値エレメントと、
最後に前述の値エレメントに対するスロー・レコードとを備えている。
一般に、コンス・キーはスロー・ストリングである。数個のプロテインおよびスロー・
コンス長ならびにオフセット・フィールドを跨いでデータを複製することにより、工夫(r
efinement)および最適化の一層多くの機会が得られる。
前述のように、類型に分けたデータをプロテイン内部に埋め込むために一実施形態にお
いて用いられる構造(construct)は、タグ付きのバイト・シーケンス指定および抽象化(ab
straction)であり、「スロー」と呼ばれる(複数形は「slawx」となる)。スローは、類
型に分けた(恐らくは、集計)データの一片を表すバイトの線形シーケンスであり、プロ
グラミング言語特定APIと関連付けられている。APIは、スロークスを作成し、修正
し、メモリ空間、記憶媒体、およびマシンの間で移動させることができる。スロー・タイ
プ方式(slaw type scheme)は、拡張可能でできるだけ軽量であり、あらゆるプログラミン
グ言語からでも用いることができる共通基盤となることを意図している。
効率的な、大規模プロセス間通信メカニズムを構築することの要望が、スロー・コンフ
ィギュレーションの原動力(driver)である。従来のプログラミング言語は、精巧なデータ
構造およびタイプ設備を備えており、プロセス特定のメモリ・レイアウトでは申し分なく
動作するが、データをプロセッサ間で移動させたり、ディスク上に格納することが必要と
なると、これらのデータ表現はいつでも決まって分解する。スロー・アーキテクチャは、
第1に、プロセス間通信に対する、非常に効率的で、マルチ・プラットフォームに都合が
よい低レベル・データ・モデルである。
しかし、更に一層重要なのは、スロークスが、プロテインと共に、今後の計算機ハード
ウェア(マイクロプロセッサ、メモリ・コントローラ、ディスク・コントローラ)の開発
に影響を及ぼし、それを可能にするように構成されていることである。例えば、広く一般
に入手可能なマイクロプロセッサの命令セットに、多少の具体的な追加を行うことにより
、スロークスが、殆どのプログラミング言語において用いられている方式と同様に、単一
プロセス、メモリ内データ・レイアウトに対しても効率的となることが可能になる。
各スローは、可変長のタイプ・ヘッダと、その後に続くタイプ特定データ・レイアウト
とを備えている。例えば、C、C++、およびRubyにおけるスロー機能性を全てサポート
する実施形態の一例では、タイプは、各言語からアクセス可能なシステム・ヘッダ・ファ
イルにおいて定義されているユニバーサル整数(universal integer)によって示される。
更に精巧化し柔軟性を高めたタイプ解明機能性(type resolution functionality)、例え
ば、ユニバーサル・オブジェクトIDおよびネットワーク参照による間接的類型決定も可
能である。
一実施形態のスロー・コンフィギュレーションは、スロー・レコードを、例えば、Ruby
およびC++双方から言語に優しい様式でオブジェクトとして用いることを可能にする。
C++コンパイラ外部の1組のユーティリティが、スロー・バイト・レイアウトの健全性
をチェックし、個々のスロー・タイプに特定的なヘッダ・ファイルおよびマクロを作成し
、Rubyに対するバインディング(binding)を自動的に発生する。その結果、正しく構成し
たスロー・タイプは、1つのプロセスの中から用いた場合でも、非常に効率的となる。プ
ロセスのアクセス可能なメモリのいずれの場所におけるいずれのスローでも、コピーや「
非直列化」ステップがなくても、アドレスすることができる。
一実施形態のスロー機能性は、以下の内1つ又は複数を実行するAPI機能性を含む。
具体的なタイプの新たなスローを作成する。ディスク上またはメモリ内におけるバイトか
らのスローへの言語特定参照を作成または構築する。タイプに特定の様式でスロー内にデ
ータを埋め込む。スローのサイズを問い合わせる。スロー内部からデータを引き出す。ス
ローのクローンを作成する。そして、スロー内部にある全てのデータのエンディアンネス
およびその他のフォーマット属性を変換する。スローのあらゆる種(species)が以上の挙
動を実施する。
図6Bは、一実施形態の下におけるスロー・ヘッダーのフォーマットを示す。以下にス
ローの詳細な説明を行う。
各スローの内部構造(structure)は、タイプ解明、カプセル化データへのアクセス、お
よび当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態で
は、1組のスロー・タイプ全体は、設計上、最小限の全てが揃っており、スロー・ストリ
ング、スロー・コンス(即ち、ダイアッド(dyad))、スロー・リスト、およびスロー数値
オブジェクトを含む。スロー数値オブジェクト自体は、半ダース程度の基本的な属性の組
み合わせ(permutation)として理解される、広範な1組の個別数値タイプを表す。いずれ
のスローでも、その他の基本的プロパティはそのサイズである。一実施形態では、スロー
クスは、4の倍数に量子化したバイト長を有し、これらの4バイト・ワードを、ここでは
「クアッド」と呼ぶ。一般に、このようなクアッドに基づくサイズ決定により、スローク
スを最新のコンピュータ・ハードウェア・アーキテクチャのコンフィギュレーションと正
確に整合させる。
一実施形態では、各スローの最初の4バイトは、ヘッダ構造(structure)を備えている
。ヘッダ構造(structure)は、タイプ記述およびその他のメタ情報をエンコードし、特定
的なタイプの意味を特定のビット・パターンに帰属させる(ascribe)。例えば、スロー・
ヘッダの最初の(最上位)ビットは、そのスローのサイズ(クアッド・ワード単位の長さ
)が最初の4バイトのタイプ・ヘッダに従うか否か指定するために用いることができる。
このビットがセットされている場合、スローのサイズが当該スローの次の4バイト(例え
ば、バイト5から8まで)に明示的に記録されていることが分かる。スローのサイズが、
4バイトでは表現できないような場合(即ち、サイズが2の32乗以上である場合)、ス
ローの最初の4バイトの次の最上位ビットもセットする。これは、スローが8バイト(4
バイトではなく)長を有することを意味する。その場合、検査プロセスが、序数バイト(o
rdinal byte)5から12までに格納されているスローの長さを発見する。他方で、スロー
・タイプの数値が小さいことは、多くの場合、完全に指定した類型ビット・パターンが、
4バイトのスロー・ヘッダにおける多くのビットを「未使用のまま残してある」ことを意
味し、そのような場合、これらのビットは、スローの長さをエンコードするために用いて
もよく、そうしなければ必要となるはずのバイト(5から8まで)を取っておくことがで
きる。
例えば、一実施形態では、スロー・ヘッダの最上位ビット(「長さ従属」フラグ)をセ
ットしないままにしておき、次のビットをセットして、そのスローが「微小コンス」であ
ることを示し、この場合、スローの長さ(クアッド単位)を残りの30ビットにエンコー
ドする。同様に、「微小ストリング」は、ヘッダにおけるパターン001によって印され
、スロー・ストリングの長さを表すために、29ビットが残され、ヘッダにおける最初の
0001が「微小リスト」を記述する。これは、28ビットの利用可能長表現ビットのた
めに、サイズが2から28クアッドまでのスロー・リストとすることができる。「最大ス
トリング」(あるいはコンスまたはリスト)は、ヘッダに異なるビット・シグネーチャを
有し、ヘッダの最上位ビットは必ずセットされる。何故なら、スロー長はバイト5から8
(または、極端な場合には12)において別個にエンコードされるからである。尚、プラ
ズマ実施態様は、スローの組立時に、これらの構造(construct)の「微小」バージョンま
たは「最大」バージョンのどちらを採用すべきか「決定する」(決定は、最終的なサイズ
が利用可能な微小ビットに「納まるか」否かに基づく)が、最大−対−微小の詳細は、プ
ラズマ実施態様のユーザには隠されている。ユーザは、スロー・ストリング、またはスロ
ー・コンス、またはスロー・リストを用いていることしか知らないし、そのことしか気に
留めない。
一実施形態では、数値スロークスは、最初のヘッダ・パターン00001によって示さ
れる。後続のヘッダ・ビットは、任意の順列に組み合わせることができる1組の直交プロ
パティを表すために用いられる。一実施形態では、数値が(1)浮動小数点、(2)複素
数、(3)符号なし、(4)「広い」、(5)「太くて短い」(stumpy)であるか否かを示
すために、5つのこのようなキャラクタ・ビットを用いるが、これらに限定されるのでは
ない((4)「広い」および(5)「太くて短い」の順序を変えて、8、16、32、お
よび64ビット数表現を示す)。2つの追加ビット(例えば、(7)および(8))は、
カプセル化した数値データが、2−、3−、または4−エレメント・ベクトルであること
を示す(双方のビットが0の場合、数値が「1−エレメント・ベクトル」(即ち、スカラ
ー)であることを示唆する)。この実施形態では、4番目のヘッダ・バイトの8ビットを
用いて、カプセル化した数値データのサイズを(クアッド単位ではなく、バイト単位で)
エンコードする。このサイズのエンコード処理は、1から256までの間のいずれのサイ
ズでも表すことができるように、1だけずらされる。最後に、2つのキャラクタ・ビット
(例えば、(9)および(10))を用いて、数値データが個々の数値エンティティの配
列をエンコードすることを示す。数値エンティティの各々は、キャラクタ・ビット(1)
から(8)までによって記述されるタイプのものである。アレイの場合、個々の数値エン
ティティには、各々、追加のヘッダが添付されず、1つのヘッダおよび恐らくは、明示的
なスロー・サイズ情報に続く連続データとしてパックされる。
この実施形態では、単純かつ効率的なスローの複製(バイト毎のコピーとして実施する
ことができる)、および非常に単純で効率的なスローの比較が可能となる(この実施形態
では、連続と見なされる構成バイトの各々に1対1の一致がある場合に限って、2つのス
ロークスは同一となる)。後者のプロパティは、例えば、プロテイン・アーキテクチャの
効率的な実現には重要である。その重要なそして波及する(pervasive)特徴は、プロテイ
ンのディスクリップ・リスト全体を検索できること、または「リスト上で照合」できるこ
とである。
更に、本明細書における実施形態は、集計スロー形態(例えば、スロー・コンスおよび
スロー・リスト)を簡単かつ効率的に作成することを可能にする。例えば、一実施形態で
は、スロー・コンスを、いずれのタイプでもよく、これら自体集計を含む、2つの成分ス
ロークスから次のように構築する。(a)各成分スローのサイズを問い合わせ、(b)2
つの成分スロークスのサイズ、およびヘッダ・プラス・サイズ構造(structure)に必要な
1、2、または3クアッドの和に等しいサイズのメモリを割り当て、(c)最初の4、8
、または12バイトにスロー・ヘッダ(およびサイズ情報)を記録し、次いで(d)成分
スロークスのバイトを順番に、直後に続くメモリにコピーする。重要なのは、このような
組立ルーチンは、2つの成分スロークスのタイプについて何も知る必要がなく、それらの
サイズ(そして、バイトのシーケンスとしてのアクセス可能性)だけが問題であることで
ある。同じプロセスは、スロー・リストの作成にも関与する。スロー・リストは、(恐ら
くは)異質なタイプの任意の多くのサブ・スロークス(sub-slawx)の順序付けしたカプセ
ル化である。
メモリにおける連続バイトとしてのスロー・システムの基本的フォーマットの更に別の
成果が、「横断」活動(traversal activities)と関連して得られる。反復使用パターンが
、例えば、スロー・リストに格納されている個々のスロークスへの順次アクセスを用いる
。プロテイン構造(structure)内部におけるディスクリップおよびインジェストを表す個
々のスロークスも同様に横断しなければならない。このような操作は、驚く程単純かつ効
率的な方法で遂行される。つまり、スロー・リストにおける次のスローに「進み」、現在
のスローの長さをそのメモリ位置に追加し、結果的に得られたメモリ位置が、次のスロー
のヘッダと同一となる。このような簡素さが可能なのは、スローおよびプロテインの設計
が「間接」を避けるからである。つまり、ポインタがなく、データは単純にその全体が本
来の場所に存在する。
スロー比較の時点までに、プラズマ・システムの完全な実施態様は、異なるオペレーテ
ィング・システム、CPU、およびハードウェア・アーキテクチャに跨ってそしてこれら
の間において、異なり互換性のないデータ表現方式の存在を承認しなければならない。こ
のような相違の主要なものには、バイト順序付け方針(例えば、リトル−エンディアン対
ビッグ−エンディアン)および浮動小数点表現が含まれ、その他の相違も存在する。プラ
ズマ仕様では、スロークスによってカプセル化したデータが解釈可能である(interprable
)(即ち、スローを検査している元のアーキテクチャまたはプラットフォームのネーティ
ブ・フォーマットで現れなければならない)。この要件は、一方、プラズマ・システム自
体がデータ・フォーマット変換の責任を負うことを意味する。しかしながら、仕様では、
スローが、それを検査するかもしれない実行中のプロセスに対して「完全に可視」になる
前に変換を行うことしか規定していない。したがって、どの時点でこのようなフォーマッ
トc変換を実行するかを選択するのは、個々の実施態様次第となる。2つのしかるべき手
法があり、それは、(1)個々のスローがパックされていたプロテインから「引き出す」
際に、または(2)プロテインが入っていたプールからそのプロテインを抽出する際に、
当該プロテインの中にあるスロー全てについて同時に、スロー・データ・ペイロードをロ
ーカル・アーキテクチャのデータ・フォーマットに準拠させることである。尚、変換規定
は、ハードウェア補助実施態様の可能性も考慮することを注記しておく。例えば、明示的
プラズマ能力によって構築したネットワーキング・チップセットは、受信システムの既知
の特性に基づいて、インテリジェントにそして「送信の時点」にフォーマット変換を実行
することを選択することができる。あるいは、送信のプロセスがデータ・ペイロードを基
軸フォーマットに変換することもでき、受信プロセスは、対称的に基軸フォーマットから
「ローカル」フォーマットに変換する。別の実施形態では、「メタル」において(at the
metal)フォーマット変換を実行する。これが意味するのは、データは、ローカル・メモリ
の中であっても、常に基軸フォーマットで格納されており、データをメモリから引き出し
隣接するCPUのレジスタに入れるときに、メモリ・コントローラ・ハードウェア自体が
変換を実行する。
一実施形態の最小(そして読み取り専用)プロテインの実施態様は、プロテインを利用
する1つ又は複数のアプリケーションまたはプログラミング言語における動作または挙動
を含む。図6Bは、一実施形態の下でプロテインを用いるための流れ図650である。動
作を開始すると、652においてプロテインの長さをバイト単位で問い合わせる。654
において、ディスクリップ・エントリの数を問い合わせる。656において、インジェス
トの数を問い合わせる。658において、インデックス番号によってディスクリップ・エ
ントリを引き出す。660において、インデックス番号によってインジェストを引き出す
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させ
る基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法
、および最適化を遂行するためのフック(hook)も定める。図6Cは、一実施形態の下にお
いてプロテインを作成する、即ち、発生するための流れ図670である。動作は、672
における新たなプロテインの作成から開始する。674において、一連のディスクリップ
・エントリを添付する。また、676においてインジェストも添付する。678において
、一致するディスクリップの存在を問い合わせ、680において、一致するインジェスト
・キーの存在を問い合わせる。インジェスト・キーが得られたなら、682において、イ
ンジェスト値を引き出す。684において、ディスクリップ全体でパターン照合を実行す
る。686において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、
プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規
定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プ
ールは、プロテインのためのレポジトリであり、線形シーケンシング(linear sequencing
)および状態キャッシング(state caching)に備えている。また、プールは、多数のプログ
ラムまたは多数の異なる種類のアプリケーションによるマルチ・プロセス・アクセスにも
備えている。更に、プールは、1組の共通な、最適化可能なフィルタ処理およびパターン
照合挙動にも備えている。
一実施形態のプールは、数万ものプロテインを収容することができ、状態を維持するよ
うに機能することができるので、個々のプロセスはマルチ・プロセス・プログラム・コー
ドに共通する厄介なブックキーピングの多くの負担を軽減することができる。プールは、
利用可能な過去のプロテインの大きなバッファを維持または保持し、プラトニック・プー
ル(Platonic pool)は明示的に無限であるので、関与するプロセスは、プールにおいて意
のままに逆方向および順方向の双方に走査することができる。バッファのサイズは、実施
態様に左右されるが、勿論、慣例的な仕様では、プロテインをプールの中に数時間または
数日保持できることが多い。
本明細書において記載するプール使用の最も慣例的な様式では、既存のプロセス間通信
フレームワークが採用する機械論的(mechanistic)二点間手法とは対照的に、生物的比喩
に従う。プロテインという名称は、生物的発想を暗示する。生物組織における化学的蛋白
質が、多数の細胞因子(cellular agent)によるパターン照合およびフィルタ処理に利用可
能であるのと同様に、プールの中にあるデータ・プロテインは、多数の計算プロセスによ
る柔軟な問い合わせおよびパターン照合に利用可能である。
2つの付加的な抽象化が生物的比喩に同調し(lean)、「ハンドラ」の使用およびゴルジ
・フレームワーク(Golgi framework)を含む。プールに関与するプロセスは、一般に、多
数のハンドラを作成する。ハンドラは、比較的小さい1群のコードであり、照合条件をハ
ンドル挙動と関連付ける。1つ又は複数のハンドラをプールに類別することにより、プロ
セスは、状態をカプセル化し新たなプロテインに反応する、柔軟なコール・バック・トリ
ガ(call-back trigger)を設定する。
数個のプールに関与するプロセスは、一般に、抽象的ゴルジ・クラスから継承する。ゴ
ルジ・フレームワークは、多数のプールおよびハンドラを管理するための多くの有用なル
ーチンを提供する。また、ゴルジ・クラスは、親−子関係もカプセル化し、プールを用い
ないローカル・プロテイン交換のためのメカニズムを提供する。
一実施形態の下で提供するプールAPIは、種々の方法でプールを実現し、システム特
定の目標、ならびに所与のハードウェアおよびネットワーク・アーキテクチャの利用可能
な処理能力双方を考慮に入れるように構成されている。プールが依存する2つの基礎的な
システムの常設機構(provision)は、記憶設備およびプロセス間通信手段である。本明細
書において記載する、現存する(extant)システムは、共有メモリ、仮想メモリ、および記
憶設備用ディスク、ならびにプロセス間通信のためのIPCクエリおよびTCP/IPソ
ケットの柔軟な組み合わせを用いる。
一実施形態のプールの機能性には、限定ではなく、以下が含まれる。プールに関与する
。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール
内の内容(例えば、プロテイン)を逆回しまたは早送りする。加えて、プールの機能性に
は、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール
・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパター
ンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キー
の特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有
する方法として、プールに供給される。図7は、一実施形態の下において、スロークス、
プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。この
環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共
有する3つのデバイス(例えば、デバイスX、デバイスY、およびデバイスZ、ここでは
纏めて「デバイス」と呼ぶ)を含む。これらのデバイスの各々は、3つのプール(例えば
、プール1、プール2、プール3)に結合されている。プール1は、それぞれのデバイス
から当該プールに提供または転送された多数のプロテイン(例えば、プロテインX1、プ
ロテインZ2、プロテインY2、プロテインX4、プロテインY4)を含む(例えば、プ
ロテインZ2は、デバイスZによってプール1に転送または提供された等)。プール2は
、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン(例えば
、プロテインZ4、プロテインY3、プロテインZ1、プロテインX3)を含む(例えば
、プロテインY3は、デバイスYによってプール2に転送または提供された等)。プール
3は、それぞれのデバイスから当該プールに供給または転送された多数のプロテイン(例
えば、プロテインY1、プロテインZ3、プロテインX2)を含む(例えば、プロテイン
X2は、デバイスXによってプール3に転送または提供された等)。前述の例では、3つ
のプール間に結合または接続されている3つのデバイスが含まれるが、あらゆる数のデバ
イスを、あらゆる数のプール間に如何様にでもまたはいずれの組み合わせでも結合または
接続することができ、いずれのプールも、あらゆる数または組み合わせのデバイスから提
供されるあらゆる数のプロテインを含むことができる。この例のプロテインおよびプール
については、図1から図6を参照しながら先に説明した。
図8は、多数のデバイスと、これらのデバイスの1つ又は複数で走る多数のプログラム
を含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma co
nstruct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実
行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答するこ
とを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピ
ュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、
多数のデバイス(例えば、デバイスA、B等)およびこれらのデバイス上で走る多数のプ
ログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プ
ラズマ構造(construct)(例えば、プール、プロテイン、およびスロー)を用いて、実行
中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的に
これらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスA、B等)は、それぞれのデバイス上で走
っているプログラム(例えば、appsAA-AX、appsBA-BX等)が発生したまたは出力された離
散生データ(raw data)を、プラズマ・プロテインに変換し、これらのプロテインをプラズ
マ・プールに貯入する。例えば、プログラムAXはデータまたは出力を発生し、この出力
をデバイスAに供給する。一方、デバイスAはこの生データをプロテイン(例えば、プロ
テイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別
の例として、プログラムBCがデータを発生し、このデータをデバイスBに供給する。一
方、デバイスBはこのデータをプロテイン(例えば、プロテイン1B、プロテイン2B等
)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、アプリケーションが発生し、プログラム自体についての情報を特定す
るデータまたは出力を指定するディスクリップ・リストを収容する。可能な場合には、プ
ロテイン・ディスクリップは出力イベントまたは行動について一般的な意味論的意味(sem
antic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、イン
ジェスト)は、プログラム・イベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プール
に結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プー
ルにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走ってい
るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することが
できる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メ
モリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができる
だけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセ
スから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別
の結果は、イベントのソースおよびコンシューマ(consumer)を多重化し、デバイスを一人
で制御できるように、または数人(例えば、プラズマに基づく入力フレームワークは、多
くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得
られるイベント・ストリームは多数のイベント・コンシューマに見えるようになることで
ある。
一例として、デバイスCは1つ又は複数のプロテイン(例えば、プロテイン1A、2A
等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスCは、デ
ィスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出した
プロテインのデータを、プロテイン・データが対応する処理イベントにおいて用いること
ができる。別の例として、デバイスBは、プールから1つ又は複数のプロテイン(例えば
、プロテイン1C、プロテイン2A等)を抽出することができる。プロテインの抽出に続
いて、デバイスBは、プロテイン・データが対応する処理イベントにおいて、プロテイン
のデータを用いることができる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテイン
の特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともでき
る。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方
向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプロ
グラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベン
ト履歴を利用する設備は、多くの場合、状態管理コードの書き込みを不要としたり、少な
くともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図9は、多数のデバイスと、これらのデバイスの1つ又は複数で走る多数のプログラム
を含む処理環境のブロック図であり、一代替実施形態の下において、プラズマ構造(plasm
a construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数
の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答す
ることを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コ
ンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例で
は、多数のデバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバイスX
およびY)および1つ又は複数のコンピュータ(例えば、デバイスA、デバイスB等)上
で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理
システムが、プラズマ構造(construct)(例えば、プール、プロテイン、およびスロー)
を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共
有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバ
イスXおよびY)は、デバイス・ハードウェア(例えば、デバイスX、デバイスA、デバ
イスY、デバイスB等)が発生した離散生データをプラズマ・プロテインに変換し、これ
らのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバイスA
、デバイスB等)上にホストされている1つ又は複数のプログラムの下で、またはこれら
と連携して動作するように管理および/または結合されている。例えば、デバイスA上に
ホストされているアプリケーションABと連携して動作するデバイスXは、生データを発
生し、この離散生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に
変換し、これらのプロテインをプールに貯入する。別の例として、デバイスA上にホスト
されているアプリケーションATと連携して動作するデバイスXが、離散生データをプロ
テイン(例えば、プロテイン1A、プロテイン2Aなど)に変換し、これらのプロテイン
をプールに貯入する。更に別の例として、デバイスC上にホストされているアプリケーシ
ョンCDと連携して動作するデバイスZは、生データを発生し、この離散生データをプロ
テイン(例えば、プロテイン1C、プロテイン2C等)に変換し、これらのプロテインを
プールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動
を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスク
リップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めること
もできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イ
ベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プール
に結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プー
ルにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走ってい
るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することが
できる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メ
モリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができる
だけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセ
スから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別
の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御
できるように、または数人(例えば、プラズマに基づく入力フレームワークは、多くの同
時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られる
イベント・ストリームは多数のイベント・コンシューマに順に見えるようになることであ
る。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテイン
の特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともでき
る。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方
向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプロ
グラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベン
ト履歴を利用する設備は、多くの場合、状態管理コードの書き込みを不要としたり、少な
くともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図10は、多数の入力デバイスを含み、これらが当該デバイスの1つ又は複数で走る多
数のプログラム間に結合されている処理環境のブロック図であり、別の代替実施形態の下
において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロ
ー)を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生した
イベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユー
ザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過
ぎない。更に特定すれば、この例では、双方向処理システムは、多数の入力デバイス(例
えば、入力デバイスA、B、BA、およびBB等)を備えており、1つ又は複数のコンピ
ュータ(例えば、デバイスA、デバイスB等)上で走る多数のプログラム(図示せず)を
備えており、、プラズマ構造(construct)(例えば、プール、プロテイン、およびスロー
)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを
共有すること、および集合的にこれらのイベントに応答することを可能にする。
この例では、各入力デバイス(例えば、入力デバイスA、B、BA、およびBB等)は
、入力デバイス・ハードウェアが発生した離散生データをプラズマ・プロテインに変換し
、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバ
イスA、デバイスB等)上にホストしたソフトウェア・ドライバ・プログラムによって管
理される。例えば、入力デバイスAは生データを発生し、この生データをデバイスAに供
給する。一方、デバイスAは離散生データをプロテイン(例えば、プロテイン1A、プロ
テイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、入力
デバイスBBは生データを発生し、この生データをデバイスBに供給する。一方、デバイ
スBは離散生データをプロテイン(例えば、プロテイン1B、プロテイン3B等)に変換
し、これらのプロテインをプールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動
を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスク
リップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めること
もできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イ
ベントについての1組の有用な状態情報全体を搬送する。
例示のために、ここに、このようなシステムにおける2つの典型的なイベントに対する
プロテインを示す。ここでは、プロテインはテキストとして表すが、実際の実施態様では
、これらのプロテインの構成部分は、類別されたデータ・バンドル(例えば、スロー)で
ある。g-speak "one finger click" pose(「指1本によるクリック」のポーズ)(関連
出願に記載されている)を記述するプロテインは、次の通りである。
Figure 2014222506


別の例として、マウスのクリックを記述するプロテインは次の通りである。
Figure 2014222506


以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせる
ホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。こ
れらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内
最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、こ
れらは、正確なデバイス:「one-finger-engage」または正に1つの集計オブジェクト(ag
gregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求め
ている場合もある。
前述のように、プロテインは、プログラムやデバイスの種類には関係なく、プールに結
合または接続されているあらゆるプログラムまたはデバイスが用いるために、プールにお
いて利用可能である。したがって、あらゆる数のコンピュータ上で走るあらゆる数のプロ
グラムでも、入力プールからイベント・プロテインを抽出する。これらのデバイスは、プ
ロテインをプールから抽出するためには、ローカル・メモリ・バスまたはネットワーク接
続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に
得られる結果は、イベントを使用または解釈するプロセスから、入力イベントを発生する
役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよ
びコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人(例え
ば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする)で同時
に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイ
ベント・コンシューマに順に見えるようになることである。
プロテイン使用の一例として、デバイスCは1つ又は複数のプロテイン(例えば、プロ
テイン1B等)をプールから抽出することができる。プロテイン抽出に続いて、デバイス
Cは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読
み出したプロテインのデータを、当該プロテイン・データが対応する入力デバイスCAお
よびCCの入力イベントを処理する際に用いることができる。別の例として、デバイスA
は、1つ又は複数のプロテイン(例えば、プロテイン1B等)をプールから抽出すること
ができる。プロテインの抽出に続いて、デバイスAは、プロテイン・データが対応する入
力デバイスAの入力イベントを処理する際に、当該プロテインのデータを用いることがで
きる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテイン
の特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともでき
る。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方
向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプロ
グラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベン
ト履歴を利用する設備は、多くの場合、状態管理コードの書き込みを不要としたり、少な
くともこのような望ましくない符号化パターンに対する依存を著しく低減する。
本明細書において記載するシステムの実施形態に用いられる入力デバイスの例には、ジ
ェスチャ入力センサ、キーボード、マウス、消費者電子機器において用いられるような赤
外線リモコン装置、およびタスク指向有体媒体オブジェクト(task-oriented tangible me
dia object)、その他にも数多く含まれる。
図11は、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数の
プログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下
において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロ
ー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラ
フィクス・イベントを共有し、集合的に応答することを可能にする。このシステムは、多
数の実行中のプログラム(例えば、グラフィクスA〜E)および1つ又は複数のディスプ
レイ・デバイス(図示せず)を備えているシステムの一例に過ぎず、プログラムの一部ま
たは全部のグラフィック出力が、プラズマ構造(construct)(例えば、プール、プロテイ
ン、およびスロー)を用いて、調整しながら他のプログラムにも利用可能とし、実行中の
プログラムが、これらのデバイスによって発生したグラフィック・イベントを共有するこ
と、および集合的にこれらのイベントに応答することを可能にする。
コンピュータ・プログラムが、別のプログラムによって発生したグラフィクスを表示す
ることが有用な場合は多い。広く知れ渡った様々な例には、テレビ会議アプリケーション
、ネットワークを用いたスライドショーおよびデモ・プログラム、ならびにウィンドウ・
マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケ
ーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施
するためにプラズマ・ライブラリとして用いられ、プログラマは、このようなプログラム
の現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
プラズマ合成環境において走るプログラム(例えば、グラフィクスA〜E)は、プール
への結合および/または接続を通じて、調整プールに関与する。各プログラムは、種々の
種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する
。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能
力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク
位置を示すために、プロテインを貯入する。
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プロ
グラムに、他の種類(例えば、RTSPストリーム)のネットワーク・リソースを指し示
させることもできる。「グラフィクス・データ」という用語は、本明細書において用いる
場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し
、グラフィクス・データの例には、文字で表現される例(例えば、「画像」、または画素
のブロック)、手順的例(例えば、典型的なopenGLパイプラインを下って行くような一連
の「描画」指令)、および記述的例(例えば、幾何学的変形、クリッピング、および合成
動作によって他のグラフィック構造(construct)を組み合わせる命令)が含まれるが、こ
れらに限定されるのではない。
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドラ
イバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場
合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内
部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグ
ラフィクス(fall-back graphics)を表示することもできる。
本明細書において記載するシステムの利点の1つは、殆どのメッセージ伝達フレームワ
ークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維
持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび
使用パターン(調整プールの場合)を見たり、以前のグラフィクス・フレーム(グラフィ
クス・プールの場合)を抽出することができる。
図12は、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数の
プログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下
において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロ
ー)を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理
を可能にする。このシステムは、多数のデバイス(例えば、デバイスA、デバイスB等)
上に多数の実行プログラム(例えば、プログラムP−A、プログラムP−B等)を備えて
おり、一部のプログラムがプールを用いてまたはプールを通じて他のプログラムの内部状
態にアクセスするシステムの一例に過ぎない。
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これら
は、1台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方
向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マ
ルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明
細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造(const
ruct)は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にする
ので、他のプログラムがそれらの状態を検査することができる。このフレームワークによ
って、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、
および1つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析さ
せるように構成された可視化ハーネスを可能にする。
図12を参照すると、このフレームワークにおいて走るプログラム(例えば、プログラ
ムP−A、プログラムP−B等)は、プログラムの起動時にプロセス・プールを発生また
は作成する。このプールは、システム・アルマナックに登録され、セキュリティおよびア
クセス制御が適用される。更に特定すると、各デバイス(例えば、デバイスA、B等)が
、それぞれのデバイス上で走るプログラム(例えば、プログラムP−A、プログラムP−
B等)が発生または出力した離散生データをプラズマ・プロテインに変換し、これらのプ
ロテインをプラズマ・プールの中に貯入する。例えば、プログラムP−Aは、データまた
は出力を発生し、この出力をデバイスAに供給する。一方、デバイスAは、この生データ
をプロテイン(例えば、プロテイン1A、プロテイン2A、プロテイン3A等)に変換し
、これらのプロテインをプールの中に貯入する。別の例として、プログラムP−Bはデー
タを発生し、このデータをデバイスBに供給する。一方、デバイスBは、データをプロテ
イン(例えば、プロテイン1B〜4B等)に変換し、これらのプロテインをプールの中に
貯入する。
プログラムの寿命の期間中、十分なアクセス許可を有する別のプログラムがプールに接
続し(attach)、プログラムが貯入したプロテインを読み取ることもできる。これは、基本
的な検査様式を表し、概念的に「一方向」即ち「読み取り専用」の提案(proposition)で
ある。プログラムP−Aに関与するエンティティが、そのプロセス・プールの中にP−A
によって貯入されたステータス情報の流れを検査する。例えば、デバイスCの下で走る検
査プログラムまたはアプリケーションが1つ又は複数のプロテイン(例えば、プロテイン
1A、プロテイン2A等)をプールから抽出することができる。プロテインの抽出に続い
て、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出
した即ち読み出したプロテインのデータを用いて、プログラムP−Aの内部状態にアクセ
スし、これを解釈し、検査することができる。
しかし、プラズマ・システムは単に効率的なステートフル(stateful)伝送方式であるだ
けでなく、全方向メッセージング環境であることを思い起こすと、様々な追加モードがプ
ログラム対プログラムの状態検査をサポートする。許可された検査プログラムは、それ自
体でプロテインをプログラムPのプロセス・プールに貯入して、生成してそのプロセス・
プールの中に入れた状態情報の特性に影響を及ぼし、これらの特性を制御することができ
る(結局、プログラムPはプロセス・プールに書き込むだけでなく、そこから読み取りも
行う)。
図13は、多数のデバイスを含み、これらが当該デバイスの1つ又は複数で走る多数の
プログラム間に結合されている処理環境のブロック図であり、追加の代替実施形態の下に
おいて、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー
)を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性
に影響を及ぼすまたは制御することができる。このシステム例では、デバイスCの検査プ
ログラムは、例えば、プログラム(例えば、プログラムP−A、プログラムP−B等)が
、1回だけまたは特定の期間にわたって、通常よりも多い状態をプールにダンプすること
を要求することができる。または、デバッグ通信の次の「レベル」を予示しておくと、関
与するプログラムは、プログラム(例えば、プログラムP−A、プログラムP−B等)が
、デバッグ・プールを通じた双方向処理が個々に可能でありそのために利用可能な、その
実行時間環境において残存するオブジェクトを一覧に纏めたプロテインを放出(emit)する
ことを要求することができる。このように通知すると、関与するプログラムはプログラム
の実行時においてオブジェクトの中の個々に「アドレス」し、特定のオブジェクトだけが
専有し応答するプロセス・プールにプロテインを入れることができる。関与するプログラ
ムは、例えば、オブジェクトが、その成分変数全ての瞬時値を記述した報告プロテインを
放出することを要求することもあり得る。それよりも更に重要なのは、関与するプログラ
ムが、他のプロテインを通じて、オブジェクトにその挙動またはその変数の値を変更する
ように指令できることである。
更に具体的には、この例では、デバイスCの検査アプリケーションが、プールの中に、
オブジェクト・リスト(例えば、「要求−オブジェクト・リスト」)の要求を(プロテイ
ンの形態で)入れて、次いでこのプールに結合されている各デバイス(例えば、デバイス
A、デバイスB等)が抽出する。要求に応答して、各デバイス(例えば、デバイスA、デ
バイスB等)がプールの中に、その実行時環境において残存する、デバッグ・プールを通
じて個々に検査することができそのために利用可能なオブジェクトを一覧に纏めたプロテ
イン(例えば、プロテイン1A、プロテイン1B等)を入れる。
このようにデバイスからのリストを通じて通知され、オブジェクトのリストに応答して
、デバイスCの検査アプリケーションは、プログラム実行中におけるオブジェクトの中の
個々にアドレスし、特定のオブジェクトのみが専有し応答するプロセス・プールにプロテ
インを入れる。デバイスCの検査アプリケーションは、例えば、要求プロテイン(例えば
、プロテイン「要求報告P−A−O」、「要求報告P−B−O」)を、オブジェクト(例
えば、それぞれ、オブジェクトP−A−O、オブジェクトP−B−O)が、その成分変数
の全ての瞬時値を記述する報告プロテイン(例えば、プロテイン2A、プロテイン2B等
)を放出するプールに入れる。各オブジェクト(例えば、オブジェクトP−A−O、オブ
ジェクトP−B−O)は、その要求(例えば、それぞれ、プロテイン「要求報告P−A−
O」、「要求報告P−B−O」)を抽出し、それに応答して、要求された報告(例えば、
それぞれ、プロテイン2A、プロテイン2B)を含むプールにプロテインを入れる。次い
で、デバイスCは種々の報告プロテイン(例えば、プロテイン2A、プロテイン2B等)
を抽出し、適宜報告の内容に合わせて続く処理行為を実行する。
このように、プラズマを相互交換媒体として用いると、デバッグ処理、プロセス制御、
ならびにプログラム対プログラムの通信および調整の間にある区別を究極的に解消し易く
なる。
このため、一般化したプラズマ・フレームワークは、疎結合の様式で可視化および分析
プログラムを設計することを可能にする。例えば、メモリ・アクセス・パターンを表示す
る可視化ツールは、基本的なメモリ・リードおよびライトをプールに出力するいずれのプ
ログラムとでも合わせて用いることができる。分析を受けるプログラムは、可視化ツール
の存在や設計を知る必要がなく、その逆も成り立つ。
以上のようにプールを用いると、システム性能に不当に影響を及ぼすことはない。例え
ば、実施形態は、毎秒数十万個のプロテインをプールに貯入することを考慮しているので
、比較的冗漫なデータ出力を可能にしても、殆どのプログラムの応答性や双方向処理特性
を著しく阻害することはない。
以上に記載したシステムおよび方法の例には、ソース・デバイスのイベントを検出する
ステップと、イベントを指定するデバイス・イベント・データと、当該イベントの状態情
報とを備えている少なくとも1つのデータ・シーケンスを発生するステップであって、デ
バイス・イベント・データおよび状態情報は、ソース・デバイスのアプリケーションに対
応するタイプを有するタイプ特定データである、ステップと、少なくとも1つのデータ・
シーケンスを含むようにデータ・カプセルを形成するステップであって、データ・カプセ
ルが、少なくとも1つのデータ・シーケンスのアプリケーション特定表現を備えているデ
ータ構造を有する、ステップとを備えている、方法が含まれる。
一実施形態の少なくとも1つのデータ・シーケンスを発生するステップは、第1個別デ
バイス・イベント・データを含む第1個別データ集合を発生するステップと、第2個別状
態情報を含む第2個別データ集合を発生するステップと、第1個別データ集合および第2
個別データ集合を含むように第1データ・シーケンスを形成するステップとを備えている
一実施形態の第1個別データ集合を発生するステップは、ソース・デバイスの識別デー
タを含むように第1個別データ集合を形成するステップを含み、識別データは、ソース・
デバイスを識別するデータを含む。
一実施形態の少なくとも1つのデータ・シーケンスを発生するステップは、第1個別デ
バイス・イベント・データを含む第1個別データ集合を発生するステップと、第2個別状
態情報を含む第2個別データ集合を発生するステップと、第1個別データ集合および第2
個別データ集合を含むように、第2データ・シーケンスを形成するステップとを備えてい
る。
一実施形態の第1個別データ集合を発生するステップは、第1個別データ集合オフセッ
トを発生するステップを含み、第1個別データ集合オフセットは、第2データ・シーケン
スの第1個別データ集合を指し示す。
一実施形態の第2個別データ集合を発生するステップは、第2個別データ集合オフセッ
トを発生するステップを含み、第2個別データ集合オフセットは、第2データ・シーケン
スの第2個別データ集合を指し示す。
一実施形態の第1個別データ集合は、記述リストであり、この記述リストはデータの記
述を含む。
一実施形態のデバイス・イベント・データは、類別したデータを表す、タグ付きのバイ
ト・シーケンスである。
一実施形態のデバイス・イベント・データは、タイプ・ヘッダと、タイプ特定データ・
レイアウトとを含む。
一実施形態の状態情報は、類別したデータを表す、タグ付きのバイト・シーケンスであ
る。
一実施形態の状態情報は、タイプ・ヘッダと、タイプ特定データ・レイアウトとを含む

一実施形態では、前述の方法は、少なくとも1つのオフセットを発生するステップと、
少なくとも1つのオフセットを含むように、データ・カプセルを形成するステップとを備
えている。
一実施形態では、前述の方法は、第1変数長を有する第1オフセットを発生するステッ
プを備えており、第1オフセットは、少なくとも1つのデータ・シーケンスの第1データ
・シーケンスのデバイス・イベント・データを指し示す。
一実施形態では、前述の方法は、第2可変長を有する第2オフセットを発生するステッ
プを備えており、第2オフセットは、少なくとも1つのデータ・シーケンスの第1データ
・シーケンスの状態情報を指し示す。
一実施形態では、前述の方法は、少なくとも1つのオフセットの第1オフセットを用い
て、データ・カプセルを通る第1コード・パスを形成するステップと、少なくとも1つの
オフセットの第2オフセットを用いて、データ・カプセルを通る第2コード・パスを形成
するステップとを備えており、第1コード・パスおよび第2コード・パスは異なるパスで
ある。
一実施形態の第1オフセットおよび第2オフセットの内少なくとも1つは、メタデータ
を含み、このメタデータは、アプリケーションのコンテキストに対応する、コンテキスト
特定メタデータを備えている。
一実施形態では、前述の方法は、データ・カプセルの長さを含むヘッダを発生するステ
ップと、ヘッダを含むようにデータ・カプセルを形成するステップとを備えている。
一実施形態では、前述の方法は、データ・カプセルをレポジトリに転送するステップを
備えている。
一実施形態では、前述の方法は、第2ソース・デバイスの第2イベントを検出するステ
ップと、第2イベントに対応するデータ・カプセルを求めて、レポジトリを検索するステ
ップとを備えている。
一実施形態では、前述の方法は、データ・カプセルと第2イベントとの間にある対応を
特定するステップと、特定に応答して、レポジトリからデータ・カプセルを抽出するステ
ップと、データ・カプセルの内容に応答して、第2ソース・デバイスの代わりに第2イベ
ントに対応する処理動作を、第2ソース・デバイスの代わりに実行するステップであって
、ソース・デバイスは第1タイプのアプリケーションに対応し、第2ソース・デバイスは
第2タイプの第アプリケーションに対応する、ステップとを備えている。
一実施形態のレポジトリは、複数のアプリケーションに結合されており、レポジトリは
、複数のアプリケーションに対応する複数のデータ・カプセルを含み、レポジトリは、複
数のアプリケーションによる複数のデータ・カプセルへのアクセスを与え、複数のアプリ
ケーションの内少なくとも2つが異なるアプリケーションである。
一実施形態のレポジトリは、複数のデータ・カプセルの状態をキャッシュする処理に備
える。
一実施形態のレポジトリは、複数のデータ・カプセルを線形に整列する処理に備える。
一実施形態のデータ構造は、類別されていない。
一実施形態のデータ・カプセルのデータ構造は、デバイス・イベント・データおよび状
態情報のプラットフォーム独立表現を規定する。
一実施形態のデータ・カプセルのデータ構造は、デバイスイベント・データおよび状態
情報へのプラットフォーム独立アクセスを与える。
一実施形態では、前述の方法は、データ・カプセルを、第1アプリケーション・タイプ
を有する第1アプリケーションから、少なくとも1つの第2アプリケーション・タイプを
有する少なくとも1つの第2アプリケーションに転送するステップを備えており、第1ア
プリケーション・タイプは第2アプリケーション・タイプとは異なり、少なくとも1つの
データ・シーケンスを発生するステップを、第1アプリケーションによって実行するステ
ップと、転送の間、データ・カプセルの少なくとも1つのデータ・シーケンスを不変のま
ま維持するステップとを備えている。
一実施形態では、前述の方法は、第2アプリケーションの動作中、少なくとも1つのデ
ータ・シーケンスを用いるステップを備えている。
一実施形態のイベントは、ユーザ・インターフェース・イベントを備えている。
一実施形態のイベントは、グラフィクス・イベントを備えている。
一実施形態のイベントは、状態情報の貯入を備えている。
前述のシステムおよび方法の例は、デバイス・イベント・データとソース・デバイスの
識別データとを含む第1データ集合を発生するステップであって、デバイス・イベント・
データは、ソース・デバイスが登録したイベントを指定するデータを含み、識別データは
、ソース・デバイスを識別するデータを含む、ステップと、イベントの状態情報集合全体
を含む第2データ集合を発生するステップと、第1データ集合および第2データ集合の各
々は、タイプ特定データ・レイアウトとした類型データ・バンドルを備えており、第1デ
ータ集合および第2データ集合を含むようにデータ・カプセルを形成することにより、第
1データ集合および第2データ集合をカプセル化するステップであって、データ・カプセ
ルが、少なくとも1つのデータ・シーケンスのアプリケーション独立表現を備えているデ
ータ構造を有する、ステップとを備えている、方法を含む。
前述のシステムおよび方法の例は、第1タイプのアプリケーションの下で走るデバイス
のイベントを検出するステップと、イベントを指定するデバイス・イベント・データと、
イベントの状態情報とを備えているデータ・シーケンスを発生するステップであって、デ
バイス・イベント・データおよび状態情報が、アプリケーションに対応するタイプを有す
るタイプ特定データである、ステップと、データ・シーケンスを含むようにデータ・カプ
セルを形成するステップであって、データ・カプセルが、データ・シーケンスのアプリケ
ーション独立表現を備えているデータ構造を有する、ステップと、少なくとも1つの第2
タイプを有する少なくとも1つの第2アプリケーションの下で走る少なくとも1つの第2
ソース・デバイスの第2イベントを検出するステップであって、第2タイプが第1タイプ
とは異なる、ステップと、データ・カプセルと第2イベントとの間にある対応を特定する
ステップと、第2イベントに応答して、データ・カプセルのデータ・シーケンスの内容を
用いて、動作を実行するステップとを備えている、方法を含む。
一実施形態のデータ・シーケンスを発生するステップは、デバイス・イベント・データ
を含む第1データ集合を発生するステップと、状態情報を含む第2データ集合を発生する
ステップと、第1データ集合および第2データ集合を含むように、第1データ・シーケン
スを形成するステップとを備えている。
一実施形態のデバイス・イベント・データは、類別したデータを表す、タグ付きのバイ
ト・シーケンスである。
一実施形態のデバイス・イベント・データは、タイプ・ヘッダと、タイプ特定データ・
レイアウトとを含む。
一実施形態の状態情報は、類別したデータを表す、タグ付きのバイト・シーケンスであ
る。
一実施形態の状態情報は、タイプ・ヘッダと、タイプ特定データ・レイアウトとを含む
一実施形態では、前述の方法は、少なくとも1つのオフセットを発生するステップと、
少なくとも1つのオフセットを含むように、データ・カプセルを形成するステップとを備
えている。
一実施形態では、前述の方法は、第1変数長を有する第1オフセットを発生するステッ
プであって、第1オフセットは、少なくとも1つのデータ・シーケンスの第1データ・シ
ーケンスのデバイス・イベント・データを指し示す、ステップと、第2可変長を有する第
2オフセットを発生するステップであって、第2オフセットは、少なくとも1つのデータ
・シーケンスの第1データ・シーケンスの状態情報を指し示す、ステップとを備えている
一実施形態では、前述の方法は、少なくとも1つのオフセットの第1オフセットを用い
て、データ・カプセルを通る第1コード・パスを形成するステップと、少なくとも1つの
オフセットの第2オフセットを用いて、データ・カプセルを通る第2コード・パスを形成
するステップとを備えており、第1コード・パスおよび第2コード・パスは異なるパスで
ある。
一実施形態の第1オフセットおよび第2オフセットの内少なくとも1つは、メタデータ
を含み、このメタデータは、アプリケーションのコンテキストに対応する、コンテキスト
特定メタデータを備えている。
一実施形態では、前述の方法は、データ・カプセルをレポジトリに転送するステップを
備えている。
一実施形態では、前述の方法は、第2イベントに対応するデータ・カプセルを求めて、
レポジトリを検索するステップと、対応の特定に応答して、レポジトリからデータ・カプ
セルを抽出するステップとを備えている。
一実施形態のレポジトリは、アプリケーションおよび少なくとも1つの第2アプリケー
ションに結合されており、レポジトリは、アプリケーションおよび少なくとも1つの第2
アプリケーションに対応する複数のデータ・カプセルを含み、レポジトリは、アプリケー
ションおよび少なくとも1つの第2アプリケーションによる複数のデータ・カプセルへの
アクセスを与える。
一実施形態のレポジトリは、複数のデータ・カプセルの状態をキャッシュする処理に備
える。
一実施形態のレポジトリは、複数のデータ・カプセルを線形に整列する処理に備える。
一実施形態のデータ構造は、類別されていない。
一実施形態のデータ・カプセルのデータ構造は、デバイス・イベント・データおよび状
態情報のプラットフォーム独立表現を規定する。
一実施形態のデータ・カプセルのデータ構造は、デバイスイベント・データおよび状態
情報へのプラットフォーム独立アクセスを与える、方法。
前述のシステムおよび方法の例は、第1タイプのアプリケーションの下で走る第1ソー
ス・デバイスのイベントを検出するステップと、イベントを指定するデバイス・イベント
・データと、イベントの状態情報とを備えているデータ・シーケンスを発生するステップ
であって、デバイス・イベント・データおよび状態情報は、アプリケーションに対応する
タイプを有するタイプ特定データである、ステップと、データ・シーケンスを含むように
データ・カプセルを形成するステップであって、データ・カプセルが、データ・シーケン
スのアプリケーション独立表現を備えているデータ構造を有する、ステップと、データ・
カプセルをレポジトリに入れるステップと、少なくとも1つの第2タイプを有する少なく
とも1つの第2アプリケーションの下で走る少なくとも1つの第2ソース・デバイスの第
2イベントを検出するステップと、レポジトリを検索し、データ・カプセルと第2イベン
トとの間にある対応を特定するステップと、データ・カプセルのデータ・シーケンスの内
容を用いて、第2イベントに対応する動作を、第2ソース・デバイスの代わりに実行する
ステップとを備えている、方法を含む。
本明細書において記載したシステムおよび方法は、スロークス、プロテイン、および方
法の使用を通じてデータをカプセル化し、カプセル化したデータを転送および使用するシ
ステムおよび方法を含み、処理システムを含み、および/または処理システムの下でおよ
び/または処理システムと連携して実行する。処理システムは、当技術分野では周知のよ
うに、互いに動作するプロセッサ主体デバイスまたは計算デバイスのあらゆる集合体、あ
るいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、
携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および/
またはネットワーク・サーバの1つ又は複数を含むことができる。携帯用コンピュータは
、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、
携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび
/またはデバイスの組み合わせのいずれとすることもできるが、そのように限定されるの
ではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポ
ーネントを含むことができる。
一実施形態の処理システムは、少なくとも1つのプロセッサと、少なくとも1つのメモ
リ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも1つのデ
ータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は
、本明細書において一般に用いる場合、1つ又は複数の中央演算装置(CPU)、ディジ
タル信号プロセッサ(DSP)、特定用途集積回路(ASIC)等のような、あらゆる論
理演算装置を指す。プロセッサおよびメモリは、1つのチップ上にモノリシックに集積す
ることができ、多数のチップまたはホスト・コンピュータのコンポーネント間で分散する
ことができ、および/またはアルゴリズムの何らかの組み合わせによって提供することが
できる。本明細書において記載した方法は、ソフトウェア・アルゴリズム(群)、プログ
ラム、ファームウェア、ハードウェア、コンポーネント、回路の1つ又は複数で、いずれ
の組み合わせでも実現することができる。
本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネント
は、一緒に配置すること、または別個の位置に配置することができる。したがって、本明
細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単
一のシステム、多数のシステム、および/または地理的に離れたシステムのコンポーネン
トとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシス
テム、および/または地理的に離れたサブシステムのサブコンポーネントまたはサブシス
テムとすることもできる。これらのコンポーネントは、ホストシステムの1つ又は複数の
その他のコンポーネント、またはホスト・システムに結合されているシステムに結合する
ことができる。
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイル
を伝達または転送する媒体であればいずれでも含む。通信経路は、無線接続、有線接続、
混成無線/有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク(LA
N)、都市エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)
、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインター
ネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・デ
ィスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、リムーバ
ブル固定媒体、ならびにフラッシュRAM、ユニバーサル・シリアル・バス(USB)接
続、RS−232接続、電話回線、バス、および電子メール・メッセージを含む。
文脈が特に明確に要求しない限り、説明全体を通じて、「備える」(comprise)、「備え
ている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解
釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数
または複数を用いる単語は、それぞれ、複数または単数も含むこととする。加えて、「こ
こでは」、「以下では」、「以上」、「以下」および同様の趣旨の単語は、本願のいずれ
かの特定部分ではなく、本願全体を指すこととする。「または」という単語が2つ以上の
項目のリストに関して用いられる場合、その単語は以下の単語の解釈全てに及ぶこととす
る。リストにおける項目のいずれか、リストにおける項目全て、およびリストにおける項
目のあらゆる組み合わせ。
以上におけるプログラミング環境の実施形態の説明は、網羅的であることも、記載した
システムおよび方法を、開示した形態そのものに限定することも意図していない。プログ
ラミング環境の具体的な実施形態およびその例は、本明細書では例示の目的で記載したが
、その他のシステムおよび方法の範囲内において、種々の同等な修正も可能であることは
、当業者であれば認められよう。本明細書において提案したプログラミング環境の教示は
、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用すること
ができる。
以上で説明した種々の実施形態の要素および行為(act)を組み合わせて、更に別の実施
形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明
を参照すれば、プログラミング環境に対して行うことができる。

Claims (51)

  1. ソース・デバイスのイベントを検出するステップと、
    前記イベントを指定するデバイス・イベント・データと、当該イベントの状態情報とを
    備えている少なくとも1つのデータ・シーケンスを発生するステップであって、前記デバ
    イス・イベント・データおよび状態情報は、前記ソース・デバイスのアプリケーションに
    対応するタイプを有するタイプ特定データである、ステップと、
    前記少なくとも1つのデータ・シーケンスを含むようにデータ・カプセルを形成するス
    テップであって、該データ・カプセルが、前記少なくとも1つのデータ・シーケンスのア
    プリケーション特定表現を備えているデータ構造を有する、ステップと、
    を備えている、方法。
  2. 請求項1記載の方法において、前記少なくとも1つのデータ・シーケンスを発生するス
    テップは、
    第1個別デバイス・イベント・データを含む第1個別データ集合を発生するステップと

    第2個別状態情報を含む第2個別データ集合を発生するステップと、
    前記第1個別データ集合および前記第2個別データ集合を含むように第1データ・シー
    ケンスを形成するステップと、
    を備えている、方法。
  3. 請求項2記載の方法において、前記第1個別データ集合を発生するステップは、前記ソ
    ース・デバイスの識別データを含むように前記第1個別データ集合を形成するステップを
    含み、前記識別データは、前記ソース・デバイスを識別するデータを含む、方法。
  4. 請求項2記載の方法において、前記少なくとも1つのデータ・シーケンスを発生するス
    テップは、
    第1個別デバイス・イベント・データを含む第1個別データ集合を発生するステップと

    第2個別状態情報を含む第2個別データ集合を発生するステップと、
    前記第1個別データ集合および前記第2個別データ集合を含むように、第2データ・シ
    ーケンスを形成するステップと、
    を備えている、方法。
  5. 請求項4記載の方法において、前記第1個別データ集合を発生するステップは、第1個
    別データ集合オフセットを発生するステップを含み、前記第1個別データ集合オフセット
    は、前記第2データ・シーケンスの第1個別データ集合を指し示す、方法。
  6. 請求項4記載の方法において、前記第2個別データ集合を発生するステップは、第2個
    別データ集合オフセットを発生するステップを含み、前記第2個別データ集合オフセット
    は、前記第2データ・シーケンスの第2個別データ集合を指し示す、方法。
  7. 請求項2記載の方法において、前記第1個別データ集合は、記述リストであり、該記述
    リストは前記データの記述を含む、方法。
  8. 請求項1記載の方法において、前記デバイス・イベント・データは、類別したデータを
    表す、タグ付きのバイト・シーケンスである、方法。
  9. 請求項8記載の方法において、前記デバイス・イベント・データは、タイプ・ヘッダと
    、タイプ特定データ・レイアウトとを含む、方法。
  10. 請求項1記載の方法において、前記状態情報は、類別したデータを表す、タグ付きのバ
    イト・シーケンスである、方法。
  11. 請求項10記載の方法において、前記状態情報は、タイプ・ヘッダと、タイプ特定デー
    タ・レイアウトとを含む、方法。
  12. 請求項1記載の方法であって、
    少なくとも1つのオフセットを発生するステップと、
    前記少なくとも1つのオフセットを含むように、前記データ・カプセルを形成するステ
    ップと、
    を備えている、方法。
  13. 請求項12記載の方法であって、
    第1変数長を有する第1オフセットを発生するステップを備えており、
    前記第1オフセットは、前記少なくとも1つのデータ・シーケンスの第1データ・シー
    ケンスの前記デバイス・イベント・データを指し示す、方法。
  14. 請求項12記載の方法であって、
    第2可変長を有する第2オフセットを発生するステップを備えており、
    前記第2オフセットは、前記少なくとも1つのデータ・シーケンスの第1データ・シー
    ケンスの前記状態情報を指し示す、方法。
  15. 請求項12記載の方法であって、
    前記少なくとも1つのオフセットの第1オフセットを用いて、前記データ・カプセルを
    通る第1コード・パスを形成するステップと、
    前記少なくとも1つのオフセットの第2オフセットを用いて、前記データ・カプセルを
    通る第2コード・パスを形成するステップと、
    を備えており、前記第1コード・パスおよび前記第2コード・パスは異なるパスである、
    方法。
  16. 請求項12記載の方法において、前記第1オフセットおよび前記第2オフセットの内少
    なくとも1つは、メタデータを含み、該メタデータは、前記アプリケーションのコンテキ
    ストに対応する、コンテキスト特定メタデータを備えている、方法。
  17. 請求項1記載の方法であって、
    前記データ・カプセルの長さを含むヘッダを発生するステップと、
    前記ヘッダを含むように前記データ・カプセルを形成するステップと、
    を備えている、方法。
  18. 請求項1記載の方法であって、前記データ・カプセルをレポジトリに転送するステップ
    を備えている、方法。
  19. 請求項18記載の方法であって、
    第2ソース・デバイスの第2イベントを検出するステップと、
    前記第2イベントに対応するデータ・カプセルを求めて、前記レポジトリを検索するス
    テップと、
    を備えている、方法。
  20. 請求項19記載の方法であって、
    前記データ・カプセルと前記第2イベントとの間にある対応を特定するステップと、
    前記特定に応答して、前記レポジトリから前記データ・カプセルを抽出するステップと

    前記データ・カプセルの内容に応答して、前記第2ソース・デバイスの代わりに前記第
    2イベントに対応する処理動作を、前記第2ソース・デバイスの代わりに実行するステッ
    プであって、前記ソース・デバイスは第1タイプのアプリケーションに対応し、前記第2
    ソース・デバイスは第2タイプの第2アプリケーションに対応する、ステップと、
    を備えている、方法。
  21. 請求項18記載の方法において、前記レポジトリは、複数のアプリケーションに結合さ
    れており、前記レポジトリは、前記複数のアプリケーションに対応する複数のデータ・カ
    プセルを含み、前記レポジトリは、前記複数のアプリケーションによる前記複数のデータ
    ・カプセルへのアクセスを与え、前記複数のアプリケーションの内少なくとも2つが異な
    るアプリケーションである、方法。
  22. 請求項18記載の方法において、前記レポジトリは、複数のデータ・カプセルの状態を
    キャッシュする処理に備える、方法。
  23. 請求項18記載の方法において、前記レポジトリは、複数のデータ・カプセルを線形に
    整列する処理に備える、方法。
  24. 請求項1記載の方法において、前記データ構造は、類別されていない、方法。
  25. 請求項1記載の方法において、前記データ・カプセルのデータ構造は、前記デバイス・
    イベント・データおよび前記状態情報のプラットフォーム独立表現を規定する、方法。
  26. 請求項1記載の方法において、前記データ・カプセルのデータ構造は、前記デバイスイ
    ベント・データおよび前記状態情報へのプラットフォーム独立アクセスを与える、方法。
  27. 請求項1記載の方法であって、
    前記データ・カプセルを、第1アプリケーション・タイプを有する第1アプリケーショ
    ンから、少なくとも1つの第2アプリケーション・タイプを有する少なくとも1つの第2
    アプリケーションに転送するステップを備えており、前記第1アプリケーション・タイプ
    は前記第2アプリケーション・タイプとは異なり、前記少なくとも1つのデータ・シーケ
    ンスを発生するステップを、前記第1アプリケーションによって実行するステップと、
    前記転送の間、前記データ・カプセルの少なくとも1つのデータ・シーケンスを不変の
    まま維持するステップと、
    を備えている、方法。
  28. 請求項27記載の方法であって、前記第2アプリケーションの動作中、前記少なくとも
    1つのデータ・シーケンスを用いるステップを備えている、方法。
  29. 請求項1記載の方法において、前記イベントは、ユーザ・インターフェース・イベント
    を備えている、方法。
  30. 請求項1記載の方法において、前記イベントは、グラフィクス・イベントを備えている
    、方法。
  31. 請求項1記載の方法において、前記イベントは、状態情報の貯入を備えている、方法。
  32. データをカプセル化する方法であって、
    デバイス・イベント・データとソース・デバイスの識別データとを含む第1データ集合
    を発生するステップであって、前記デバイス・イベント・データは、前記ソース・デバイ
    スが登録したイベントを指定するデータを含み、前記識別データは、前記ソース・デバイ
    スを識別するデータを含む、ステップと、
    前記イベントの状態情報集合全体を含む第2データ集合を発生するステップと、
    前記第1データ集合および前記第2データ集合の各々は、タイプ特定データ・レイアウ
    トとした類型データ・バンドルを備えており、
    前記第1データ集合および前記第2データ集合を含むようにデータ・カプセルを形成す
    ることにより、前記第1データ集合および前記第2データ集合をカプセル化するステップ
    であって、前記データ・カプセルが、前記少なくとも1つのデータ・シーケンスのアプリ
    ケーション独立表現を備えているデータ構造を有する、ステップと、
    を備えている、方法。
  33. 第1タイプのアプリケーションの下で走るデバイスのイベントを検出するステップと、
    前記イベントを指定するデバイス・イベント・データと、前記イベントの状態情報とを
    備えているデータ・シーケンスを発生するステップであって、前記デバイス・イベント・
    データおよび状態情報は、前記アプリケーションに対応するタイプを有するタイプ特定デ
    ータである、ステップと、
    前記データ・シーケンスを含むようにデータ・カプセルを形成するステップであって、
    前記データ・カプセルが、前記データ・シーケンスのアプリケーション独立表現を備えて
    いるデータ構造を有する、ステップと、
    少なくとも1つの第2タイプを有する少なくとも1つの第2アプリケーションの下で走
    る少なくとも1つの第2ソース・デバイスの第2イベントを検出するステップであって、
    前記第2タイプが前記第1タイプとは異なる、ステップと、
    前記データ・カプセルと前記第2イベントとの間にある対応を特定するステップと、
    前記第2イベントに応答して、前記データ・カプセルのデータ・シーケンスの内容を用
    いて、動作を実行するステップと、
    を備えている、方法。
  34. 請求項33記載の方法において、前記データ・シーケンスを発生するステップは、
    前記デバイス・イベント・データを含む第1データ集合を発生するステップと、
    前記状態情報を含む第2データ集合を発生するステップと、
    前記第1データ集合および前記第2データ集合を含むように、第1データ・シーケンス
    を形成するステップと、
    を備えている、方法。
  35. 請求項33記載の方法において、前記デバイス・イベント・データは、類別したデータ
    を表す、タグ付きのバイト・シーケンスである、方法。
  36. 請求項35記載の方法において、前記デバイス・イベント・データは、タイプ・ヘッダ
    と、タイプ特定データ・レイアウトとを含む、方法。
  37. 請求項33記載の方法において、前記状態情報は、類別したデータを表す、タグ付きの
    バイト・シーケンスである、方法。
  38. 請求項37記載の方法において、前記状態情報は、タイプ・ヘッダと、タイプ特定デー
    タ・レイアウトとを含む、方法。
  39. 請求項33記載の方法であって、
    少なくとも1つのオフセットを発生するステップと、
    前記少なくとも1つのオフセットを含むように、前記データ・カプセルを形成するステ
    ップと、
    を備えている、方法。
  40. 請求項39記載の方法であって、
    第1変数長を有する第1オフセットを発生するステップであって、前記第1オフセット
    は、前記少なくとも1つのデータ・シーケンスの第1データ・シーケンスの前記デバイス
    ・イベント・データを指し示す、ステップと、
    第2可変長を有する第2オフセットを発生するステップであって、前記第2オフセット
    は、前記少なくとも1つのデータ・シーケンスの第1データ・シーケンスの前記状態情報
    を指し示す、ステップと、
    を備えている、方法。
  41. 請求項39記載の方法であって、
    前記少なくとも1つのオフセットの第1オフセットを用いて、前記データ・カプセルを
    通る第1コード・パスを形成するステップと、
    前記少なくとも1つのオフセットの第2オフセットを用いて、前記データ・カプセルを
    通る第2コード・パスを形成するステップと、
    を備えており、前記第1コード・パスおよび前記第2コード・パスは異なるパスである、
    方法。
  42. 請求項39記載の方法において、前記第1オフセットおよび前記第2オフセットの内少
    なくとも1つは、メタデータを含み、該メタデータは、前記アプリケーションのコンテキ
    ストに対応する、コンテキスト特定メタデータを備えている、方法。
  43. 請求項33記載の方法であって、前記データ・カプセルをレポジトリに転送するステッ
    プを備えている、方法。
  44. 請求項43記載の方法であって、
    前記第2イベントに対応するデータ・カプセルを求めて、前記レポジトリを検索するス
    テップと、
    前記対応の特定に応答して、前記レポジトリから前記データ・カプセルを抽出するステ
    ップと、
    を備えている、方法。
  45. 請求項43記載の方法において、前記レポジトリは、前記アプリケーションおよび前記
    少なくとも1つの第2アプリケーションに結合されており、前記レポジトリは、前記アプ
    リケーションおよび前記少なくとも1つの第2アプリケーションに対応する複数のデータ
    ・カプセルを含み、前記レポジトリは、前記アプリケーションおよび前記少なくとも1つ
    の第2アプリケーションによる前記複数のデータ・カプセルへのアクセスを与える、方法
  46. 請求項43記載の方法において、前記レポジトリは、複数のデータ・カプセルの状態を
    キャッシュする処理に備える、方法。
  47. 請求項43記載の方法において、前記レポジトリは、複数のデータ・カプセルを線形に
    整列する処理に備える、方法。
  48. 請求項33記載の方法において、前記データ構造は、類別されていない、方法。
  49. 請求項33記載の方法において、前記データ・カプセルのデータ構造は、前記デバイス
    ・イベント・データおよび前記状態情報のプラットフォーム独立表現を規定する、方法。
  50. 請求項33記載の方法において、前記データ・カプセルのデータ構造は、前記デバイス
    イベント・データおよび前記状態情報へのプラットフォーム独立アクセスを与える、方法
  51. 第1タイプのアプリケーションの下で走る第1ソース・デバイスのイベントを検出する
    ステップと、
    前記イベントを指定するデバイス・イベント・データと、前記イベントの状態情報とを
    備えているデータ・シーケンスを発生するステップであって、前記デバイス・イベント・
    データおよび状態情報は、前記アプリケーションに対応するタイプを有するタイプ特定デ
    ータである、ステップと、
    前記データ・シーケンスを含むようにデータ・カプセルを形成するステップであって、
    前記データ・カプセルが、前記データ・シーケンスのアプリケーション独立表現を備えて
    いるデータ構造を有する、ステップと、
    前記データ・カプセルをレポジトリに入れるステップと、
    少なくとも1つの第2タイプを有する少なくとも1つの第2アプリケーションの下で走
    る少なくとも1つの第2ソース・デバイスの第2イベントを検出するステップと、
    前記レポジトリを検索し、前記データ・カプセルと前記第2イベントとの間にある対応
    を特定するステップと、
    前記データ・カプセルのデータ・シーケンスの内容を用いて、前記第2イベントに対応
    する動作を、前記第2ソース・デバイスの代わりに実行するステップと、
    を備えている、方法。
JP2014126090A 2007-04-24 2014-06-19 プロテイン、プール、およびスロークス処理環境 Pending JP2014222506A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92611607P 2007-04-24 2007-04-24
US60/926,116 2007-04-24

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010506501A Division JP5905662B2 (ja) 2007-04-24 2008-04-24 プロテイン、プール、およびスロークス処理環境

Publications (1)

Publication Number Publication Date
JP2014222506A true JP2014222506A (ja) 2014-11-27

Family

ID=39888612

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010506501A Active JP5905662B2 (ja) 2007-04-24 2008-04-24 プロテイン、プール、およびスロークス処理環境
JP2014126090A Pending JP2014222506A (ja) 2007-04-24 2014-06-19 プロテイン、プール、およびスロークス処理環境

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2010506501A Active JP5905662B2 (ja) 2007-04-24 2008-04-24 プロテイン、プール、およびスロークス処理環境

Country Status (7)

Country Link
US (4) US8407725B2 (ja)
EP (2) EP2163987A3 (ja)
JP (2) JP5905662B2 (ja)
KR (1) KR101545360B1 (ja)
CN (1) CN101689152B (ja)
NO (1) NO20093236L (ja)
WO (1) WO2008134452A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006086508A2 (en) 2005-02-08 2006-08-17 Oblong Industries, Inc. System and method for genture based control system
US9910497B2 (en) 2006-02-08 2018-03-06 Oblong Industries, Inc. Gestural control of autonomous and semi-autonomous systems
US8537111B2 (en) 2006-02-08 2013-09-17 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
US8531396B2 (en) 2006-02-08 2013-09-10 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
US9075441B2 (en) 2006-02-08 2015-07-07 Oblong Industries, Inc. Gesture based control using three-dimensional information extracted over an extended depth of field
US8370383B2 (en) 2006-02-08 2013-02-05 Oblong Industries, Inc. Multi-process interactive systems and methods
US9823747B2 (en) 2006-02-08 2017-11-21 Oblong Industries, Inc. Spatial, multi-modal control device for use with spatial operating system
US8941588B2 (en) * 2008-04-24 2015-01-27 Oblong Industries, Inc. Fast fingertip detection for initializing a vision-based hand tracker
EP2163987A3 (en) 2007-04-24 2013-01-23 Oblong Industries, Inc. Processing of events in data processing environments
US9740922B2 (en) 2008-04-24 2017-08-22 Oblong Industries, Inc. Adaptive tracking system for spatial input devices
US10642364B2 (en) 2009-04-02 2020-05-05 Oblong Industries, Inc. Processing tracking and recognition data in gestural recognition systems
US9684380B2 (en) 2009-04-02 2017-06-20 Oblong Industries, Inc. Operating environment with gestural control and multiple client devices, displays, and users
US9740293B2 (en) 2009-04-02 2017-08-22 Oblong Industries, Inc. Operating environment with gestural control and multiple client devices, displays, and users
US8723795B2 (en) 2008-04-24 2014-05-13 Oblong Industries, Inc. Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
US9952673B2 (en) 2009-04-02 2018-04-24 Oblong Industries, Inc. Operating environment comprising multiple client devices, multiple displays, multiple users, and gestural control
US9495013B2 (en) 2008-04-24 2016-11-15 Oblong Industries, Inc. Multi-modal gestural interface
EP2350774A4 (en) * 2008-10-14 2014-11-05 Oblong Ind Inc MULTI-PROCESS INTERACTIVE SYSTEMS AND METHODS
US10824238B2 (en) 2009-04-02 2020-11-03 Oblong Industries, Inc. Operating environment with gestural control and multiple client devices, displays, and users
US9317128B2 (en) 2009-04-02 2016-04-19 Oblong Industries, Inc. Remote devices used in a markerless installation of a spatial operating environment incorporating gestural control
US9971807B2 (en) 2009-10-14 2018-05-15 Oblong Industries, Inc. Multi-process interactive systems and methods
US9933852B2 (en) 2009-10-14 2018-04-03 Oblong Industries, Inc. Multi-process interactive systems and methods
WO2012031036A2 (en) 2010-08-31 2012-03-08 Lawrence Ganeshalingam Method and systems for processing polymeric sequence data and related information
WO2012122547A2 (en) 2011-03-09 2012-09-13 Lawrence Ganeshalingam Biological data networks and methods therefor
DE102011017305A1 (de) * 2011-04-15 2012-10-18 Abb Technology Ag Bedien- und Beobachtungssystem für technische Anlagen
US9350802B2 (en) 2012-06-22 2016-05-24 Annia Systems Inc. System and method for secure, high-speed transfer of very large files
EP2953878B1 (en) 2013-02-07 2017-11-22 KONE Corporation Personalization of an elevator service
US9990046B2 (en) 2014-03-17 2018-06-05 Oblong Industries, Inc. Visual collaboration interface
US8886622B1 (en) 2014-06-03 2014-11-11 Conduce Inc. Interactive visualization of multiple data sources across multiple computers
US10529302B2 (en) 2016-07-07 2020-01-07 Oblong Industries, Inc. Spatially mediated augmentations of and interactions among distinct devices and applications via extended pixel manifold
CN109254858B (zh) * 2018-08-31 2021-07-23 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质
CN111310658B (zh) * 2020-02-14 2023-06-27 京东科技信息技术有限公司 一种动作模式识别模型的更新方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172454A (ja) * 2004-12-10 2006-06-29 Microsoft Corp キューに入れられたアプリケーションメッセージを確実に転送すること

Family Cites Families (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1843568A (en) * 1923-03-15 1932-02-02 James C Ledbetter Electric steam iron
US7164117B2 (en) 1992-05-05 2007-01-16 Automotive Technologies International, Inc. Vehicular restraint system control system and method using multiple optical imagers
US4843568A (en) 1986-04-11 1989-06-27 Krueger Myron W Real time perception of and response to the actions of an unencumbered participant/user
US5664177A (en) * 1988-04-13 1997-09-02 Digital Equipment Corporation Data processing system having a data structure with a single, simple primitive
JPH0816877B2 (ja) 1991-06-10 1996-02-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム
JP3244798B2 (ja) 1992-09-08 2002-01-07 株式会社東芝 動画像処理装置
US5982352A (en) 1992-09-18 1999-11-09 Pryor; Timothy R. Method for providing human input to a computer
EP0605945B1 (en) 1992-12-15 1997-12-29 Sun Microsystems, Inc. Method and apparatus for presenting information in a display system using transparent windows
US5454043A (en) 1993-07-30 1995-09-26 Mitsubishi Electric Research Laboratories, Inc. Dynamic and static hand gesture recognition through low-level image analysis
US7218448B1 (en) 1997-03-17 2007-05-15 The Regents Of The University Of Colorado Extended depth of field optical systems
US5594469A (en) 1995-02-21 1997-01-14 Mitsubishi Electric Information Technology Center America Inc. Hand gesture machine control system
US6191773B1 (en) 1995-04-28 2001-02-20 Matsushita Electric Industrial Co., Ltd. Interface apparatus
US6002808A (en) 1996-07-26 1999-12-14 Mitsubishi Electric Information Technology Center America, Inc. Hand gesture control system
JP3749369B2 (ja) 1997-03-21 2006-02-22 株式会社竹中工務店 ハンドポインティング装置
US6075895A (en) 1997-06-20 2000-06-13 Holoplex Methods and apparatus for gesture recognition based on templates
US6720949B1 (en) 1997-08-22 2004-04-13 Timothy R. Pryor Man machine interfaces and applications
US6340957B1 (en) 1997-08-29 2002-01-22 Xerox Corporation Dynamically relocatable tileable displays
US6807583B2 (en) * 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
EP0905644A3 (en) 1997-09-26 2004-02-25 Matsushita Electric Industrial Co., Ltd. Hand gesture recognizing device
US6072494A (en) 1997-10-15 2000-06-06 Electric Planet, Inc. Method and apparatus for real-time gesture recognition
AU2211799A (en) 1998-01-06 1999-07-26 Video Mouse Group, The Human motion following computer mouse and game controller
US9292111B2 (en) * 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
JP3660492B2 (ja) 1998-01-27 2005-06-15 株式会社東芝 物体検知装置
US6043805A (en) 1998-03-24 2000-03-28 Hsieh; Kuan-Hong Controlling method for inputting messages to a computer
JPH11316693A (ja) * 1998-05-01 1999-11-16 Nec Software Chugoku Ltd プログラム間データ連携システム及び方法
US6198485B1 (en) 1998-07-29 2001-03-06 Intel Corporation Method and apparatus for three-dimensional input entry
US6950534B2 (en) 1998-08-10 2005-09-27 Cybernet Systems Corporation Gesture-controlled interfaces for self-service machines and other applications
US6501515B1 (en) 1998-10-13 2002-12-31 Sony Corporation Remote control system
JP2000132305A (ja) 1998-10-23 2000-05-12 Olympus Optical Co Ltd 操作入力装置
US6222465B1 (en) 1998-12-09 2001-04-24 Lucent Technologies Inc. Gesture-based computer interface
US7145551B1 (en) 1999-02-17 2006-12-05 Microsoft Corporation Two-handed computer input device with orientation sensor
US6351744B1 (en) 1999-05-28 2002-02-26 Unisys Corporation Multi-processor system for database management
JP4332649B2 (ja) 1999-06-08 2009-09-16 独立行政法人情報通信研究機構 手の形状と姿勢の認識装置および手の形状と姿勢の認識方法並びに当該方法を実施するプログラムを記録した記録媒体
US7050606B2 (en) 1999-08-10 2006-05-23 Cybernet Systems Corporation Tracking and gesture recognition system particularly suited to vehicular control applications
US7229017B2 (en) 1999-11-23 2007-06-12 Xerox Corporation Laser locating and tracking system for externally activated tags
JP3762173B2 (ja) * 1999-11-26 2006-04-05 株式会社東芝 計算機システム及びネットワークシステム並びに記録媒体
DE10007891C2 (de) 2000-02-21 2002-11-21 Siemens Ag Verfahren und Anordnung zur Interaktion mit einer in einem Schaufenster sichtbaren Darstellung
SE0000850D0 (sv) 2000-03-13 2000-03-13 Pink Solution Ab Recognition arrangement
US7109970B1 (en) 2000-07-01 2006-09-19 Miller Stephen S Apparatus for remotely controlling computers and other electronic appliances/devices using a combination of voice commands and finger movements
US7227526B2 (en) 2000-07-24 2007-06-05 Gesturetek, Inc. Video-based image control system
US20020065950A1 (en) * 2000-09-26 2002-05-30 Katz James S. Device event handler
US7058204B2 (en) 2000-10-03 2006-06-06 Gesturetek, Inc. Multiple camera control system
AU2002243335A1 (en) * 2000-10-20 2002-06-18 Polexis, Inc. Extensible information system (xis)
US6703999B1 (en) 2000-11-13 2004-03-09 Toyota Jidosha Kabushiki Kaisha System for computer user interface
US20020085030A1 (en) 2000-12-29 2002-07-04 Jamal Ghani Graphical user interface for an interactive collaboration system
US7259747B2 (en) 2001-06-05 2007-08-21 Reactrix Systems, Inc. Interactive video display system
US8300042B2 (en) 2001-06-05 2012-10-30 Microsoft Corporation Interactive video display system using strobed light
US20040125076A1 (en) 2001-06-08 2004-07-01 David Green Method and apparatus for human interface with a computer
US20020186200A1 (en) 2001-06-08 2002-12-12 David Green Method and apparatus for human interface with a computer
US7151246B2 (en) 2001-07-06 2006-12-19 Palantyr Research, Llc Imaging system and methodology
US20030048280A1 (en) 2001-09-12 2003-03-13 Russell Ryan S. Interactive environment using computer vision and touchscreens
US7159194B2 (en) 2001-11-30 2007-01-02 Palm, Inc. Orientation dependent functionality of an electronic device
AU2003210795A1 (en) * 2002-02-01 2003-09-02 John Fairweather System and method for analyzing data
WO2003071410A2 (en) 2002-02-15 2003-08-28 Canesta, Inc. Gesture recognition system using depth perceptive sensors
DE60317472T2 (de) 2002-02-27 2008-09-04 CDM Optics, Inc., Boulder Optimierte bildverarbeitung für wellenfrontkodierte abbildungssysteme
US7170492B2 (en) 2002-05-28 2007-01-30 Reactrix Systems, Inc. Interactive video display system
US7348963B2 (en) 2002-05-28 2008-03-25 Reactrix Systems, Inc. Interactive video display system
US7854655B2 (en) 2002-07-27 2010-12-21 Sony Computer Entertainment America Inc. Obtaining input for controlling execution of a game program
US7850526B2 (en) 2002-07-27 2010-12-14 Sony Computer Entertainment America Inc. System for tracking user manipulations within an environment
US7576727B2 (en) 2002-12-13 2009-08-18 Matthew Bell Interactive directed light/sound system
US7991920B2 (en) 2002-12-18 2011-08-02 Xerox Corporation System and method for controlling information output devices
US8745541B2 (en) 2003-03-25 2014-06-03 Microsoft Corporation Architecture for controlling a computer using hand gestures
US7665041B2 (en) 2003-03-25 2010-02-16 Microsoft Corporation Architecture for controlling a computer using hand gestures
GB0308943D0 (en) 2003-04-17 2003-05-28 Univ Dundee A system for determining the body pose of a person from images
WO2004107266A1 (en) 2003-05-29 2004-12-09 Honda Motor Co., Ltd. Visual tracking using depth data
US7694314B2 (en) * 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7280346B2 (en) 2003-09-29 2007-10-09 Danger, Inc. Adjustable display for a data processing apparatus
US7436535B2 (en) 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US20050212753A1 (en) 2004-03-23 2005-09-29 Marvit David L Motion controlled remote controller
CN100573548C (zh) 2004-04-15 2009-12-23 格斯图尔泰克股份有限公司 跟踪双手运动的方法和设备
US7555613B2 (en) * 2004-05-11 2009-06-30 Broadcom Corporation Storage access prioritization using a data storage device
US20050283752A1 (en) * 2004-05-17 2005-12-22 Renate Fruchter DiVAS-a cross-media system for ubiquitous gesture-discourse-sketch knowledge capture and reuse
US8059089B2 (en) 2004-05-25 2011-11-15 Sony Computer Entertainment Inc. Input device and method, and character input method
US7366368B2 (en) 2004-06-15 2008-04-29 Intel Corporation Optical add/drop interconnect bus for multiprocessor architecture
US7466308B2 (en) 2004-06-28 2008-12-16 Microsoft Corporation Disposing identifying codes on a user's hand to provide input to an interactive display application
US7519223B2 (en) 2004-06-28 2009-04-14 Microsoft Corporation Recognizing gestures and using gestures for interacting with software applications
US7559053B2 (en) * 2004-08-24 2009-07-07 Microsoft Corporation Program and system performance data correlation
US7761814B2 (en) 2004-09-13 2010-07-20 Microsoft Corporation Flick gesture
HUE049974T2 (hu) 2005-01-07 2020-11-30 Qualcomm Inc Képeken lévõ objektumok észlelése és követése
CN101137996A (zh) 2005-01-07 2008-03-05 格斯图尔泰克股份有限公司 基于光流的倾斜传感器
CN101198964A (zh) 2005-01-07 2008-06-11 格斯图尔泰克股份有限公司 使用红外图案照射创建对象的三维图像
US7966353B2 (en) 2005-01-31 2011-06-21 Broadcom Corporation Method and system for flexibly providing shared access to non-data pool file systems
WO2006086508A2 (en) 2005-02-08 2006-08-17 Oblong Industries, Inc. System and method for genture based control system
US7389591B2 (en) 2005-05-17 2008-06-24 Gesturetek, Inc. Orientation-sensitive signal output
US7428542B1 (en) 2005-05-31 2008-09-23 Reactrix Systems, Inc. Method and system for combining nodes into a mega-node
US20070078966A1 (en) * 2005-09-30 2007-04-05 Rockwell Automation Technologies, Inc. Presentation of automation data
US8669939B2 (en) 2006-02-08 2014-03-11 Oblong Industries, Inc. Spatial, multi-modal control device for use with spatial operating system
US8531396B2 (en) 2006-02-08 2013-09-10 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
US8681098B2 (en) 2008-04-24 2014-03-25 Oblong Industries, Inc. Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
US8537111B2 (en) 2006-02-08 2013-09-17 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
US8537112B2 (en) 2006-02-08 2013-09-17 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
US8370383B2 (en) 2006-02-08 2013-02-05 Oblong Industries, Inc. Multi-process interactive systems and methods
US9063801B2 (en) 2008-04-24 2015-06-23 Oblong Industries, Inc. Multi-process interactive systems and methods
US8769127B2 (en) 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
JP4781897B2 (ja) * 2006-04-26 2011-09-28 富士通株式会社 センサイベント制御装置
US20070288467A1 (en) * 2006-06-07 2007-12-13 Motorola, Inc. Method and apparatus for harmonizing the gathering of data and issuing of commands in an autonomic computing system using model-based translation
JP4148281B2 (ja) 2006-06-19 2008-09-10 ソニー株式会社 モーションキャプチャ装置及びモーションキャプチャ方法、並びにモーションキャプチャプログラム
US20080040692A1 (en) * 2006-06-29 2008-02-14 Microsoft Corporation Gesture input
US8234578B2 (en) 2006-07-25 2012-07-31 Northrop Grumman Systems Corporatiom Networked gesture collaboration system
US7725547B2 (en) 2006-09-06 2010-05-25 International Business Machines Corporation Informing a user of gestures made by others out of the user's line of sight
US7979850B2 (en) * 2006-09-29 2011-07-12 Sap Ag Method and system for generating a common trace data format
US8356254B2 (en) * 2006-10-25 2013-01-15 International Business Machines Corporation System and method for interacting with a display
US7984452B2 (en) * 2006-11-10 2011-07-19 Cptn Holdings Llc Event source management using a metadata-driven framework
TWI330802B (en) 2006-12-13 2010-09-21 Ind Tech Res Inst Inertial sensing method and system
EP2104905A4 (en) 2006-12-29 2010-12-29 Gesturetek Inc MANIPULATION OF VIRTUAL OBJECTS USING AN EXTENDED INTERACTIVE SYSTEM
US20090262074A1 (en) 2007-01-05 2009-10-22 Invensense Inc. Controlling and accessing content using motion processing on mobile devices
CN104932690B (zh) 2007-02-15 2018-07-13 高通股份有限公司 使用闪烁电磁辐射的增强输入
US20080208517A1 (en) 2007-02-23 2008-08-28 Gesturetek, Inc. Enhanced Single-Sensor Position Detection
US20080222660A1 (en) * 2007-03-06 2008-09-11 Jari Tavi Processing of data of a plurality of applications with a single client application
EP2163987A3 (en) 2007-04-24 2013-01-23 Oblong Industries, Inc. Processing of events in data processing environments
WO2008134745A1 (en) 2007-04-30 2008-11-06 Gesturetek, Inc. Mobile video-based therapy
EP2153377A4 (en) 2007-05-04 2017-05-31 Qualcomm Incorporated Camera-based user input for compact devices
US8726194B2 (en) 2007-07-27 2014-05-13 Qualcomm Incorporated Item selection using enhanced control
US7949157B2 (en) 2007-08-10 2011-05-24 Nitin Afzulpurkar Interpreting sign language gestures
US9261979B2 (en) 2007-08-20 2016-02-16 Qualcomm Incorporated Gesture-based mobile interaction
CN101836207B (zh) 2007-08-20 2017-03-01 高通股份有限公司 超出词汇的词的增强的拒绝
US8325214B2 (en) 2007-09-24 2012-12-04 Qualcomm Incorporated Enhanced interface for voice and video communications
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8280732B2 (en) 2008-03-27 2012-10-02 Wolfgang Richter System and method for multidimensional gesture analysis
US9740293B2 (en) 2009-04-02 2017-08-22 Oblong Industries, Inc. Operating environment with gestural control and multiple client devices, displays, and users
US8723795B2 (en) 2008-04-24 2014-05-13 Oblong Industries, Inc. Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
US9684380B2 (en) 2009-04-02 2017-06-20 Oblong Industries, Inc. Operating environment with gestural control and multiple client devices, displays, and users
US8269817B2 (en) 2008-07-16 2012-09-18 Cisco Technology, Inc. Floor control in multi-point conference systems
US20100060568A1 (en) 2008-09-05 2010-03-11 Apple Inc. Curved surface input device with normalized capacitive sensing
WO2010030822A1 (en) 2008-09-10 2010-03-18 Oblong Industries, Inc. Gestural control of autonomous and semi-autonomous systems
US8363098B2 (en) 2008-09-16 2013-01-29 Plantronics, Inc. Infrared derived user presence and associated remote control
US8788977B2 (en) 2008-11-20 2014-07-22 Amazon Technologies, Inc. Movement recognition as input mechanism
US8704767B2 (en) 2009-01-29 2014-04-22 Microsoft Corporation Environmental gesture recognition
JP5358834B2 (ja) 2009-02-17 2013-12-04 株式会社ワコム 位置指示器及び入力装置
US8856691B2 (en) 2009-05-29 2014-10-07 Microsoft Corporation Gesture tool
US20100315439A1 (en) 2009-06-15 2010-12-16 International Business Machines Corporation Using motion detection to process pan and zoom functions on mobile computing devices
GB2474536B (en) 2009-10-13 2011-11-02 Pointgrab Ltd Computer vision gesture based control of a device
WO2011085813A1 (en) 2010-01-14 2011-07-21 Brainlab Ag Gesture support for controlling and/or operating a medical device
US9465457B2 (en) 2010-08-30 2016-10-11 Vmware, Inc. Multi-touch interface gestures for keyboard and/or mouse inputs
US9213890B2 (en) 2010-09-17 2015-12-15 Sony Corporation Gesture recognition system for TV control
US20120239396A1 (en) 2011-03-15 2012-09-20 At&T Intellectual Property I, L.P. Multimodal remote control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172454A (ja) * 2004-12-10 2006-06-29 Microsoft Corp キューに入れられたアプリケーションメッセージを確実に転送すること

Also Published As

Publication number Publication date
JP2010525494A (ja) 2010-07-22
EP2163987A2 (en) 2010-03-17
US20180004583A1 (en) 2018-01-04
KR20100017321A (ko) 2010-02-16
US10664327B2 (en) 2020-05-26
CN101689152A (zh) 2010-03-31
JP5905662B2 (ja) 2016-04-20
US20080271053A1 (en) 2008-10-30
EP2163987A3 (en) 2013-01-23
KR101545360B1 (ko) 2015-08-19
WO2008134452A2 (en) 2008-11-06
US8407725B2 (en) 2013-03-26
CN101689152B (zh) 2016-10-05
WO2008134452A3 (en) 2009-12-30
US20200250018A1 (en) 2020-08-06
NO20093236L (no) 2010-01-15
EP2150893A2 (en) 2010-02-10
US20130347006A1 (en) 2013-12-26
US9804902B2 (en) 2017-10-31
EP2150893A4 (en) 2012-08-22

Similar Documents

Publication Publication Date Title
JP5905662B2 (ja) プロテイン、プール、およびスロークス処理環境
US10565030B2 (en) Multi-process interactive systems and methods
JP5805537B2 (ja) マルチプロセス・インタラクティブ・システムおよび方法
Dinan et al. An implementation and evaluation of the MPI 3.0 one‐sided communication interface
JP5026415B2 (ja) データセントリックワークフロー
US10990454B2 (en) Multi-process interactive systems and methods
US9933852B2 (en) Multi-process interactive systems and methods
US20100128062A1 (en) Multi-process interactive systems and methods
JPH0756643B2 (ja) オブジェクト指向インタフェース標準を与えるシステムおよび方法
KR20120034637A (ko) 데이터의 표현, 조작 및 교환을 포함하는 제스처-기반 시스템
JPH10283252A (ja) セパレート・プロセッシング・コンポーネント間のバッファ間データ転送を減らす方法およびコンピュータ・プログラム・プロダクト
JPH10283195A (ja) カーネル・モードにおけるソフトウェア・ドライバを相互接続する方法,コンピュータ・プログラム・プロダクト、システムおよび記録媒体
US11531574B2 (en) System and method for creating and managing an interactive network of applications
US9052970B2 (en) Multi-process interactive systems and methods
WO2023185401A1 (zh) 一种数据处理方法、编解码加速器和相关设备
Chung HSA Runtime
Osawa 2B: an operating system based on BTRON2 specification

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160615