JP6316694B2 - クラウドスケールの異種データセンタ管理インフラストラクチャ - Google Patents

クラウドスケールの異種データセンタ管理インフラストラクチャ Download PDF

Info

Publication number
JP6316694B2
JP6316694B2 JP2014152967A JP2014152967A JP6316694B2 JP 6316694 B2 JP6316694 B2 JP 6316694B2 JP 2014152967 A JP2014152967 A JP 2014152967A JP 2014152967 A JP2014152967 A JP 2014152967A JP 6316694 B2 JP6316694 B2 JP 6316694B2
Authority
JP
Japan
Prior art keywords
kernel
user space
transport
descriptor
callback
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.)
Active
Application number
JP2014152967A
Other languages
English (en)
Other versions
JP2015043202A5 (ja
JP2015043202A (ja
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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2015043202A publication Critical patent/JP2015043202A/ja
Publication of JP2015043202A5 publication Critical patent/JP2015043202A5/ja
Application granted granted Critical
Publication of JP6316694B2 publication Critical patent/JP6316694B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • 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/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Description

本発明は、概してコンピュータおよびコンピュータ装置の分野に関するものであり、特に、データセンタにおけるコンピュータの管理およびコンピュータ装置内での通信の提供の分野に関するものである。
オペレーティング・システムのユーザスペースおよびカーネルスペースにおけるコンポーネント間通信は、データセンタ管理における既知の問題である。この問題は特に、スケーラブルなコンピューティングプラットフォーム向けの管理ソフトウェア、ドライバ、モジュール、ネットワークインターフェイスなどを開発するサードパーティのソフトウェアベンダにとっての課題である。
例えば、クラウド・コンピューティングの分野では、クラウド展開のスケーラビリティが高まるにつれて、ホスト管理施設が重要なアーキテクチャコンポーネントになりつつある。そのため、ホスト管理施設もスケーラブルでなければならない。ホスト−インベントリサービスと統合された共通情報モデル(CIM : Common Information Model)アーキテクチャを用いて、管理者は、単一ステーションからホストに管理処理を発行し、その処理を、各ホストでベンダ固有のCIMプロバイダソフトウェアにサービスさせることができる。ただしCIMアーキテクチャは、CIMプロバイダがサポートするホスト−クライアント間インターフェイスをサードパーティの開発者が正式に規定することを許可してはいるものの、プロバイダ処理をサービスするのに必要なプロバイダ−カーネル間インターフェイスを規定するための案内を提供していない。
さらに、仮想化プラットフォームでは、サードパーティの開発者がユーザスペース−カーネルスペース間通信を実装するため主たる方法が、キャラクタ装置(character devices)を使用するものである。キャラクタ装置は、ファイルシステムにファイルノードとして表示され、従来のファイル操作(例えば、open、read、write、poll、ioctl、closeなど)をサポートする。キャラクタ装置インターフェイスをエクスポートするカーネルモジュールが、一連のファイル操作ハンドラを登録する。こうして、ファイルシステム内のノードに対応するファイルに対するファイル操作を実行するユーザスペースアプリケーションが、キャラクタ装置インターフェイスをトリガする。
キャラクタ装置を直接操作する際に生じる1つの問題が、低次のセマンティクス(semantics)を処理する際に生じる構造および一貫性の欠如である。つまり、多くの開発者は、自身専用の(そして機能的に同等または同様であることの多い)インターフェイスを即興で記述し、共通の低次トランスポート処理およびプロトコル(例えば、リクエストの復号、パラメータの整理、イベントの送出)を実装して、カーネルスペース内の関数を簡潔に呼び出す(あるいは逆に、カーネルスペースからユーザスペース内の関数を簡潔に呼び出す)。一般に、かかるインターフェイスは、低次のビット操作を必要とし、カーネルスペースとユーザスペースとの間での非常に限られた通信方法しか提供しない。加えて、低次の処理をプログラムすることが困難であることから、でき上がったアプリケーションは、エラーを起こしやすい場合がある。ファイルインターフェイスおよびソケットインターフェイスを通じて通信を実装することは可能だが、両手法とも、構造化された意味データおよび処理を、ユーザとカーネルの境界を超えて送ることができないという根本的な制約を有する。キャラクタ装置の場合と同様、ファイルインターフェイスとソケットインターフェイスとを使用するには、両側のソフトウェアがデータをパックおよびアンパックする必要がある。
さらに、仮想化環境では、カーネルへのアクセスがホストコンピュータのファイルシステムを経由し得るため、開発者がカーネルと対話するために記述するアプリケーションがファイルシステムに晒される。これにより、すでに制約の多い仮想化環境の外部への管理アプリケーションの移植性が制限され、リッチなユーザアプリケーション(rich user applications)をほとんどサポートしない可能性がある。また、複雑なアプリケーションがリソースを使用するので、ホストコンピュータが仮想マシンを効率良く実行および管理できなくなり得る。
加えて、サードパーティの開発者がキャラクタ装置を構築する際の基盤とするアプリケーション・プログラミング・インターフェイス(API : application programming interfaces)(またはファイルインターフェイスおよびソケットインターフェイス)は、バージョニング(versioning)を生来的にサポートしていないため、時間が経過して後継のAPIバージョンが実装されたときに、ユーザコンポーネントとカーネルコンポーネントとの間で互換性の問題が生じる。例えば、特定のサードパーティベンダによるCIMプロバイダであれば、複数のドライバをサポートする必要があり得るが、ドライバ自体が、ファームウェアのアップグレード後など、時間の経過とともに進化して新機能を追加し得る。このような場合に、そのCIMプロバイダには、低次のインターフェイスに基づいて構築されたどの高次の処理がサポートされているかを検出する方法がない。データ構造の定義が少しでも変わると、現行のソリューションが扱いにくくなり、破損につながる。現在は、破損を防ぎ、互換性を維持するのに、カーネルスペースアプリケーションとユーザスペースアプリケーションが厳格に統合および一致している必要がある。
本明細書に提示された一実施形態は、オペレーティング・システム・カーネルがユーザスペース・ゲスト・アプリケーションと通信するための方法を含んでいる。この方法は、登録ハンドルをAPI署名にマッピングするためのデータを含むデータストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させることを概して含み得る。データストアは、カーネルスペースに存在する第1のトランスポートに存在する。この方法は、API署名内の少なくとも1つのコールバックのうちの1つに対応する記述子をカーネルから取得すること、第1のトランスポートに記述子を記憶することも含み得る。この方法は、ユーザスペースに存在する第2のトランスポートに記述子を送ることを含み得る。この方法は、ゲストアプリケーションに対する記述子を第2のトランスポートを介して処理することを含み得る。
別の実施形態は、第1のホストコンピュータのオペレーティング・システム・カーネル内のアプリケーションとユーザスペース・ゲスト・アプリケーションとの間での抽象通信の方法を含んでいる。この方法は、ユーザスペースに存在する第1のトランスポート内のライブラリで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させることを概して含み得る。この方法は、API署名内の少なくとも1つのコールバックのうちの1つに対応する記述子をゲストアプリケーションから取得することも含み得る。この方法は、第1のトランスポートに記述子を記憶すること、第2のトランスポートに記述子を送ることも含み得る。第2のトランスポートは、カーネルスペースに存在する。この方法は、記述子と、カーネルに対するパラメータとを、第2のトランスポートを介して処理することも含み得る。
一実施例では、オペレーティング・システム・カーネルがユーザスペース・ゲスト・アプリケーションと通信するための方法が提供されており、この方法は、登録ハンドルをAPI署名にマッピングするためのデータを含むデータストアであって、カーネルスペースにある第1のトランスポートに存在する前記データストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させること、API署名内の少なくとも1つのコールバックのうちの1つに対応する記述子をカーネルから取得すること、第1のトランスポートに記述子を記憶すること、ユーザスペースに存在する第2のトランスポートに記述子を送ること、ゲストアプリケーションに対する記述子を第2のトランスポートを介して処理することを含む。
一実施例では、プロセッサによって実行されるコードを記憶している非一時的なコンピュータ可読記憶媒体が存在し、このコードは、プロセッサによって実行されると、オペレーティング・システム・カーネルがユーザスペース・ゲスト・アプリケーションと通信するための処理であって、登録ハンドルをAPI署名にマッピングするためのデータを含むデータストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させることであって、データストアがカーネルスペースにある第1のトランスポートに存在すること、API署名内の少なくとも1つのコールバックのうちの1つに対応する記述子をカーネルから取得すること、記述子に第1のトランスポートを記憶すること、ユーザスペースに存在する第2のトランスポートに記述子を送ること、ゲストアプリケーションに対する記述子を第2のトランスポートを介して処理することを含む処理を実行する。
一実施例では、プロセッサと、プロセッサによって実行されると、オペレーティング・システム・カーネルがユーザスペース・ゲスト・アプリケーションと通信するための処理であって、登録ハンドルをAPI署名にマッピングするためのデータを含むデータストアであって、カーネルスペースにある第1のトランスポートに存在する前記データストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させること、API署名内の少なくとも1つのコールバックのうちの1つに対応する記述子をカーネルから取得すること、第1のトランスポートに記述子を記憶すること、ユーザスペースに存在する第2のトランスポートに記述子を送ること、ゲストアプリケーションに対する記述子を第2のトランスポートを介して処理することを含む処理を実行するアプリケーションをホストしているメモリとを備えるシステムが提供される。
一実施例では、ゲストアプリケーションが少なくとも1つのコールバックのうちの1つを呼び出す。
一実施例では、API署名が、名前と、バージョンと、少なくとも1つのコールバックの各々に対応するコールバックパラメータのリストと、パラメータセマンティクスと、を含む。
一実施例では、オペレーティング・システム・カーネルおよびゲストアプリケーションが仮想マシン上で動作する。
一実施例では、第1および第2のトランスポートがキャラクタ装置で実行される。
一実施例では、記述子を第2のトランスポートに送ることが、API署名と関連付けられている対応するキャラクタ装置でファイルを開くためにスリープ解除リクエストを送ること、キャラクタ装置のポーリング状態を調べること、第2のトランスポートを介して記述子を取得することをさらに含む。
一実施例では、ホストコンピュータのオペレーティング・システム・カーネルに存在するアプリケーションとユーザスペース・ゲスト・アプリケーションとの間での抽象通信の方法が提供され、この方法は、ユーザスペースに存在する第1のトランスポート内のライブラリで、少なくとも1つのコールバックを有する関連付けられたAPI署名に所与の登録ハンドルを一致させること、API署名内の少なくとも1つのコールバックの1つに対応する記述子をゲストアプリケーションから取得すること、第1のトランスポートに記述子を記憶すること、カーネルスペースに存在する第2のトランスポートに記述子を送ること、記述子と、カーネルに対するパラメータとを第2のトランスポートを介して処理することを含む。
一実施例では、カーネルアプリケーションが少なくとも1つのコールバックの1つを呼び出す。
一実施例では、第1および第2のトランスポートがキャラクタ装置で実行される。
一実施形態にかかる、カーネル−ユーザ間通信メカニズムを用いて構成された仮想化環境におけるホスト・コンピュータ・システムのブロック図例を表す。 一実施形態にかかる、ホスト計算システムのユーザスペースおよびカーネルスペースにおける通信メカニズムのレイアウト例を表す。 一実施形態にかかる、通信メカニズムを使用してカーネルスペースからユーザスペース内のコールバックを呼び出すための方法図を表す。 一実施形態にかかる、通信メカニズムを使用してユーザスペースからカーネルスペース内のコールバックを呼び出すための方法図を表す。
本明細書に開示された実施形態は、カーネルモジュールとユーザスペースアプリケーション(user-space applications)との間で通信を行うための高次のプリミティブ(high-level primitives)を提供する。一実施形態では、通信メカニズムが、コールバックパラメータをコピーし、非同期配信処理(handles asynchronous delivery)して、ユーザスペースおよびカーネルスペースコンポーネントが、互換性のあるアプリケーション・プログラミング・インターフェイス(API)のバージョンを確実に使用するようにする。ユーザスペースおよびカーネルスペースに通信メカニズムのトランスポートコンポーネントが存在し、(例えばコールバックを呼び出す際に)ユーザスペースアプリケーションおよびカーネルスペースモジュールが表示され、互いに直接通信できるようにする。さらに、各種実施形態は、開発者がイベントを送信し、コールバックをディスパッチするためのヘッダーファイルとマクロとを自動的に発する目的で使用する定義基準(definition standard)を提供する。
例えば、仮想マシンを起動および実行するホスト・コンピュータ・ノードのクラスタネットワークを含む仮想化されたコンピューティング環境では、サードパーティの開発者が、ハイパーバイザカーネルと通信する必要のあるアプリケーションを記述する。概して、これらのアプリケーションを実装するには、開発者が、カーネルから情報を取得し、カーネルに情報を提供するための共通トランスポート処理を実装する必要がある(例えば、デバッグまたはパラメータ化を実行する多くのユーザスペースアプリケーションは、カーネルと通信する必要がある)。
提供された通信メカニズムは、ユーザスペースアプリケーションとオペレーティング・システム・カーネルとの間での通信を簡便化する。このメカニズムを使用して、開発者は、低次のビット演算を必要とする共通トランスポート処理をプログラミングすることなく、(カーネルまたはアプリケーションのどちらでも)実行時に実行できる管理処理を定義し得る。さらに、このメカニズムは複数のAPIバージョンをサポートできるため、サードパーティのユーザスペースアプリケーションの開発者およびカーネルモジュールの開発者は、要件を結合することによって制約を減らし、将来の実装形態を一方向的に追求することができる。
一実施形態では、互換性を持つユーザスペースコンポーネントと通信するカーネルが、トランスポートモジュールに管理APIを登録する。ユーザスペースコールバックを呼び出すために、カーネルモジュール内のコードがトランスポートAPIを呼び出し、登録されたAPIハンドルと、呼び出されるコールバック識別子と、コールバックに対するパラメータとを、パラメータとして渡す。モジュールは、アンロードされると、各々の登録済みハンドルを用いてトランスポートAPIを呼び出し、トランスポートからAPIインスタンスの登録を解除する。同様に、カーネルモジュールと通信するユーザスペースアプリケーションが、ユーザスペーストランスポートにAPI署名を登録する。成功すると、不透過ハンドル(opaque handle)が戻される。アプリケーションは、カーネルスペースでコールバックを呼び出す際にこのハンドルを使用する。アプリケーションが終了すると、カーネルスペーストランスポートは終了を検出し、カーネル内の残りの状態をクリーンアップする。
一実施形態では、通信メカニズムが、複数のAPIバージョンに対するサポートも提供する。つまり、提供されたフレームワークにより、アプリケーションがバージョンを特定のAPI署名と関連付けることができる。例えば、カーネルドライバからネットワークに関する統計情報を定期的に取得するゲストアプリケーションの場合を検討する。開発者がドライバまたはアプリケーションを更新すると、ドライバとアプリケーションは時間とともに進化し得る。例えば、ドライバの新しい繰り返しにより、サポートされる処理が増加したり、さまざまな処理セマンティクスが必要となったりし得る。これらの新機能により、新バージョンのアプリケーションのリリース前に旧バージョンのユーザスペースアプリケーションが陳腐化する(その逆もあり得る)が、新バージョンのアプリケーションのリリースは、時間がかかる場合や、アプリケーションとドライバとの間での密な結合が必要となる場合がある。しかし、通信メカニズムは、かかる懸念を軽減する。
引き続き先述の例に関し、バージョン1.0およびバージョン2.0という2つのバージョンのカーネルドライバが存在するものと仮定する。新バージョンである2.0は、追加処理に対するサポートを提供する。一般に、このドライバと通信するユーザスペースアプリケーションの開発者は、ドライバのバージョン2.0と通信できるようにするために、アプリケーションを更新する必要がある。ただし、開発者がバージョン1.0と通信するソフトウェアを引き続きサポートしたい状況が存在し得る。一実施形態では、カーネルモジュールが、バージョン1.0のハンドルを有するバリアント(variant)と、バージョン2.0のバンドルを有する別のバリアントというAPI署名の2つのバリアントを同時に登録することができる。その後、実行時に、どのハンドルおよびセマンティクスがどのソフトウェアで関連付けたられたかを、システムが自動的に解決する。この手法の下では、ユーザスペースアプリケーションの異なるバージョンのセマンティクスをサポートするカーネルにおいて異なる機能をもたらす。実行時には、カーネルスペーストランスポートが、特定バージョンに対する問い合わせに関係なくリクエストを処理する。
次に、いくつかの実施形態を詳しく参照する。これらの実施形態の具体例が添付の図に表されている。なお、該当する場合には、類似または同様の参照符号が図内で使用され、類似または同様の機能を表し得る。これらの図は、各種実施形態を説明目的で表しているに過ぎない。当業者であれば、以降の説明から、本明細書に例示された構造および方法の代替実施形態が、本明細書に記載された原則から逸脱しない範囲で用いられ得るということを容易に認識するであろう。
以下、仮想化環境で実施されている実施形態について言及する。かかる言及は、本明細書に記載された実施形態に対する理解を徹底するために提供されるものである。しかし、当業者にとっては、これらの実施形態が他のコンピューティング環境で適用可能であることが明らかであろう。同様に、これらの実施形態に対する理解を徹底するために、多数の具体的な詳細情報が提供されている。当業者であれば、これらの具体的な詳細情報の一部がなくてもこれらの実施形態が実施され得ることを認めるであろう。他の事例では、新規性のある本開示の態様を無用にわかりにくくするのを避けるために、周知の処理および実施に関する詳細については説明していない。
図1は、一実施形態にかかる、カーネル−ユーザ間通信メカニズムで構成されている仮想化環境におけるホスト・コンピュータ・システム100のブロック図例を表す。ホスト・コンピュータ・システム100は、デスクトップ、ラップトップ、またはx86アーキテクチャプラットフォームなどサーバグレードのハードウェアプラットフォーム102に構築され得る。ハードウェアプラットフォーム102は、1つ以上の中央演算処理装置(CPU)103と、ホスト物理メモリ104と、ホスト・コンピュータ・システム100をネットワークに接続するネットワーク・インターフェイス・コントローラおよびホスト・コンピュータ・システム100を永続的記憶装置に接続する1つ以上のホスト・バス・アダプタなど他の標準的なハードウェアコンポーネントと、を備える。一実施形態では、ホスト・コンピュータ・システム100がVMWare ESXiホストである。
ハードウェアプラットフォーム102は、ハイパーバイザ114を備える。ハイパーバイザ114は、複数の仮想マシン実行スペース116をサポートしており、VMプロセスが、対応するVM120のインスタンスを生成するように実行され得る。各VM120について、ハイパーバイザ114が、仮想CPUとゲスト物理メモリなどエミュレートされたハードウェアを含む対応仮想ハードウェアプラットフォーム(すなわち仮想ハードウェアプラットフォーム122)を管理する。各仮想ハードウェアプラットフォーム122は、ゲスト・オペレーティング・システム(OS)(例えばゲストOS132)のインストールをサポートする。各インスタンスで、ゲストOS132は、例えば、仮想マシンの仮想ハードウェアプラットフォームに対するインターフェイスであるアプリ113など、仮想マシンで稼働するユーザレベルアプリケーションを提供する。
図1で仮想化コンポーネントについて説明する目的で使用されている各種用語、層、および分類は、それらの機能から逸脱しない範囲で別の言葉で言及され得るものと認識すべきである。例えば、仮想ハードウェアプラットフォーム122は、ハイパーバイザ114とそれぞれのVMとの間での処理を調整するのに必要な仮想システムサポートを実装する仮想マシンモニタ(VMM:virtual machine monitors)140の一部とみなされ得る。あるいは、仮想ハードウェアプラットフォーム122は、VMM140とは別であると(例えば、かかるプラットフォームが仮想マシンのハードウェア・エミュレーション・コンポーネントを備えることから、対応する仮想マシンのコンポーネントと)もみなされ得る。そしてVMM140はハイパーバイザ114とは別であるとみなされ得る。使用され得るハイパーバイザ114の一例が、VMwareのvSphere製品のコンポーネントとして含まれている。このコンポーネントは、カリフォルニア州パロアルトにあるVMware社より市販されている。さらには、ホストされた仮想マシンシステムなど、他の仮想化されたコンピュータシステムが想定され、ハイパーバイザはホスト・オペレーティング・システムとともに実装されるということも認識すべきである。
図示のとおり、ゲストOS132は、通信メカニズム118も備える。通信メカニズム118は、コールバック呼び出しなどでユーザスペースアプリケーションがカーネルと通信できるように、そして逆にカーネルがユーザスペースアプリケーションと通信できるようにする高次のインフラストラクチャである。メカニズム118は、ユーザスペースアプリケーションとカーネルとの間で送受信されるデータをインターセプトし、コールバックを実行するため、あるいはユーザスペースまたはカーネルをまたがってイベントを送信するために必要な低次キャラクタ装置処理を実行する。
別の実施形態では、通信メカニズム118がハイパーバイザ114(例えばVMM140内)に位置し得る。この場合には、通信メカニズムによって提供される抽象化により、ユーザスペースアプリケーション(例えば管理ソフトウェア)が、ハイパーバイザ114内にある仮想マシンのゲストOS132で、管理プラットフォームの一部としてリモートで稼働することができる。それでも、通信メカニズム118は、場所に関係なく、まるでアプリケーションがカーネルモジュールでホストと通信しているかのように同じセマンティクスを提供する。この手法により、データセンタ用のスケーラブル管理アプリケーションを記述することに対する障壁が下がる。加えて、ハイパーバイザ114内にメカニズム118を設けるのではなく、ゲストOS132で実装することにより、カーネルへのアクセスを必要とする管理アプリケーションが、そのためにホスト・コンピュータ・システム100のファイルシステムにアクセスする必要が一切なくなる。さらに、この手法により、ホスト・コンピュータ・サーバ114がVM112を管理するためのリソースが解放される。
図2は、一実施形態にかかる、ホスト計算システム200のユーザスペース225およびカーネルスペース230における通信メカニズムのレイアウト例を表す。図示のとおり、アプリケーション205はユーザスペース225に存在し、カーネルモジュール220はカーネルスペース230に存在する。通信メカニズムは、ユーザスペース225内のアプリケーション205とカーネルスペース230内のカーネルモジュール220との間での通信を簡便化するためのユーザスペーストランスポート210とカーネルスペーストランスポート215とを含み得る。この通信メカニズムを使用して、ユーザスペースアプリケーション205およびカーネルモジュール220が、まるでコールバックを直接呼び出しているかのように通信することができる。具体的には、トランスポート210およびトランスポート215が、パラメータをコピーし、非同期イベントの配信を処理し、ユーザスペース225およびカーネルスペース230内のコンポーネントが使用するAPIバージョンの互換性を維持し得る。
通信メカニズムを使用するアプリケーションを記述するサードパーティの開発者が、トランスポートコンポーネント210,215にとって認識可能なAPI署名を最初に定義する。このAPI署名により、ユーザスペースまたはカーネルスペースアプリケーションがこのメカニズムを使うことができる。一実施形態では、このAPI署名が、名前、バージョン、呼び出し可能なコールバックのリスト、コールバックがユーザスペースに存在するか、あるいはカーネルスペースに存在するか、各コールバックが同期型か非同期型か、コールバックごとのパラメータの量、パラメータが入力パラメータか、出力パラメータか、あるいは入力/出力パラメータか、そして各々のパラメータのサイズ、を含み得る。加えて、このAPIは、互換性のあるユーザスペースAPIのバージョンをカーネルモジュールが指定できるようにするバージョン適合カーネルコールバックも含み得る。
初期化時に、カーネルモジュール220がカーネルスペーストランスポート215に管理APIを登録する。一実施形態では、通信メカニズムが、異なるタイプの複数のAPIを同時にサポートし得る。例えば、カーネルモジュール220は、ベンダ固有のAPIに加え、構成およびレポートAPIの登録およびサービス提供もし得る。別例として、1つのドライバが、(例えば、新バージョンのAPIの使用する後発バージョンのユーザスペースアプリケーションに対するサポートを追加するために)2つのバージョンの同一APIをサポートし得る。同様に、ユーザスペースアプリケーション205がユーザスペーストランスポート210にAPIを登録する。どちらの場合でも、アプリケーション205またはカーネルモジュール220がAPI署名を登録すると、トランスポート210またはトランスポート215がそれぞれ不透過登録ハンドル(opaque registration handle)を返す。通信メカニズムを使用するために、アプリケーションは、コールバック呼び出し中にハンドルをパラメータとして渡す。
一実施形態では、通信メカニズムが、MユーザスペースアプリケーションとNカーネルモジュールとの間でのM−N間通信をサポートする。例えば、特定のカーネルモジュールにリクエストを送信する際に、アプリケーションが、API署名のパラメータとしてコールバック識別子を渡す。M−N間通信により、(例えば、ドライバがイベントをブロードキャストする必要がある状況で)カーネルからの非同期イベントの配信が簡便化される。
一実施形態では、通信メカニズムが、ホストコンピュータのファイルシステムで、キャラクタ装置ノードを使用して実装され得る。そのために、カーネルスペーストランスポート215は、インスタンスごとにキャラクタ装置ノードを登録する。例えば、3つのAPIを登録する1つのドライバであれば、3つの装置ノードを登録し得る。それを受けて、ユーザスペーストランスポート210が、そのAPIの名前および主要バージョンに一致するファイルシステムでキャラクタ装置ノードを特定する。一実施形態では、ユーザスペーストランスポート210が、カーネルスペーストランスポート215に位置しかつ利用可能なAPI名、ベンダ、バージョン、および対応ファイルを提供する辞書(dictionary)212に問い合わせることにより、部分一致を判断し得る。所与のファイルが開かれると、そのバージョン情報がリクエストされたものであることをユーザスペース内のライブラリ208がカーネルに確認(すなわちハンドシェイク)する。一致を判断すると、ユーザスペーストランスポート210は、対応するキャラクタ装置に対するファイル記述子(file descriptor)を開いた状態に保ち、スレッドを作成してカーネルからの入来イベント(incoming event)を監視し、そのファイル記述子について説明するハンドルを返す。代替実施形態では、通信メカニズムが、カーネルおよびユーザソケットなど他のカーネル−ユーザ間プロトコルを使用して実装され得る。
一実施形態では、ユーザスペーストランスポート210がライブラリ208を備える。アプリケーション205がライブラリ208と通信し、それを受けてライブラリ208がカーネルスペース230と通信する。ライブラリ208は、アプリケーション205によって開かれたキャラクタ装置ノードのリスナ(listeners for character device nodes)を維持する。ライブラリ208は、ユーザスペースアプリケーション205向けのデータをカーネルスペーストランスポート215から検出すると、そのデータの読み出しおよび検証を司り、適切な形態であることを確認した上で、ユーザスペースアプリケーション205向けのデータをアンロードする。加えて、ライブラリ208は、キャラクタ装置ノードに対する登録ハンドルのマッピングを維持する。別の実施形態では、登録ハンドルが、カーネルマッピングやVMwareのVMKernelシステム情報(VSI : VMKernel System Information)ノードなど、他の手段によってカーネルにマッピングし得る。
カーネルスペース230にアクセスするために、ユーザスペースアプリケーション205は、ライブラリ208にリンクし、カーネルスペーストランスポート215に存在する辞書212を通じて通信する。一実施形態では、辞書212が、APIにより提供される処理を指定する登録済みAPI定義のリストを維持するデータストアである。このリストを維持するために、辞書212は、登録ハンドルを対応するAPI署名にマッピングする。ユーザスペーストランスポート210は、ライブラリ208を辞書212にリンクすることによって辞書212と通信して、サポートしているAPI署名を特定する。同様に、カーネルスペースアプリケーションも、辞書212によって内部的に提供されるハンドルを使用して、ハンドルと関連付けられたアプリケーションを特定し得る。
図3は、一実施形態にかかる、ホスト計算システムのカーネルスペースからユーザスペース内のコールバックを呼び出すための方法図を表す。コールバック構造は、コールバック情報記述子およびパラメータを含んでいる。コールバック情報記述子は、パラメータのセマンティクスと、コールバックによって動作する機能と、について記述し得る。このセマンティクスは、パラメータの数と、各パラメータのサイズと、パラメータを渡す目的で使用されるメモリの割り当て方を表すインジケータと、を含み得る。このセマンティクスは、これらのパラメータが入力パラメータか、入力/出力パラメータか、あるいは出力パラメータか、という情報も含み得る。例えば、セマンティクスがパラメータを入力パラメータと説明していれば、呼ばれた側(すなわちユーザスペースアプリケーション)は、コールバックが呼び出された後にデータを受信すべきである。別例として、セマンティクスが入力/出力パラメータと説明していれば、呼ばれた側は、データを受信した後にデータを修正し、その後そのデータを呼び出し側に返送する。あるいは、セマンティクスが出力パラメータと説明していれば、呼ばれた側は、データを生成し、そのデータを呼び出し側に出力する必要がある。
この方法はステップ305から始まる。ステップ305では、カーネルスペーストランスポートが、コールバック情報記述子およびパラメータ用の一時記憶域を割り当てる。カーネルスペースモジュールは、そのコールバック情報記述子およびパラメータを一時記憶域にコピーし、これらのパラメータをポインタとして呼ばれた側に提示する。ステップ310で、記述子およびパラメータがカーネルスペーストランスポートにコピーされた後、トランスポートは、APIインスタンスのカーネル側用として使用されているキャラクタ装置と関連付けられたすべてのオープンファイルに関するスリープ解除リクエストを送信する。これにより、イベントを待機しているユーザ側トランスポートでスリープ状態にあるすべてのスレッドがスリープ状態から復帰する。代替実施形態では、コールバックパラメータが可変長であることがあり、パラメータを呼び出すことにより、各パラメータ内の要素の数が符号化される。この場合、カーネルスペースモジュールは、データにポインタを渡すのではなく、要素の数を表すインジケータを含む記述子およびデータの始点にポインタを渡す。
ステップ315で、ユーザスペーストランスポートは、キャラクタ装置のポーリング状態を調べて、キャラクタ装置が読み出し可能か(すなわちイベントが利用可能か)どうかを判断する。ステップ320で、ユーザスペーストランスポートは、コールバックリクエストを読み出し、そのリクエストを処理して、コールバックに対応するパラメータを読み出す。その後ステップ325で、ユーザスペーストランスポートは、コールバックをディスパッチして、監視スレッド内のイベントを効果的に配信し、コールバックを呼び出す。
図4は、一実施形態にかかる、ホスト計算システムのユーザスペースからカーネルスペース内のコールバックを呼び出すための方法図を表す。既述のとおり、ユーザスペースアプリケーションがAPI署名を登録すると、カーネルスペーストランスポートは、API定義および処理を維持している辞書を使用して、ユーザスペースおよびカーネルスペースでAPI署名にマッピングされている不透過ハンドルを返す。このライブラリによってカーネルへの接続が保証されるとともに、リクエストされたドライバまたはモジュールが存在することが確認される。ステップ405で、ユーザスペーストランスポートは、パラメータの妥当性を検証すると、一時記憶域をコールバック情報記述子とパラメータとに割り当てる。一実施形態では、トランスポートが、対応するAPI署名の定義に従い、パラメータの指定サイズに基づいて記憶装置を割り当てる。
ステップ410で、ユーザスペーストランスポートは、一時記憶域を割り当てた後、基底のキャラクタ装置(underlying character device)でシステム呼び出しを実行する。システム呼び出しの種類は、コールバック呼び出しが非同期型か同期型かに依存し得る。一実施形態では、非同期型のコールバック呼び出しの場合、ユーザスペーストランスポートは、キャラクタ装置で書き込みコマンドを実行し得る。この場合、ユーザスペーストランスポートは、書き込みコマンドを実行する前に、コールバック・記述子・ヘッダを作成する。一実施形態では、このヘッダが、呼び出されるコールバック識別子とパラメータセマンティクス(例えば、ヘッダに続くパラメータカウントおよびサイズ)とを符号化する。同期型コールバック呼び出しの場合、ユーザスペーストランスポートは、キャラクタ装置でioctlコマンドを実行し得る(この場合、コールバック記述子はioctlリクエストで符号化される)。これにより、カーネルがコールバックをディスパッチし、実行すると、ユーザスペーストランスポートが出力パラメータおよび入力/出力パラメータをカーネルからコピーできるようになる。ステップ415で、カーネルスペーストランスポートは、基底のキャラクタ装置がプロセスコールバック記述子を受信し、処理するためのシステム・コール・ハンドラを実装する。ステップ420で、カーネルスペーストランスポートは、データをアンパックし、コールバックを呼び出す。
先述のとおり、本明細書に開示された実施形態は、カーネルスペースまたはユーザスペースで実行時に実行される所望の管理処理をサードパーティの開発者が定義できるようにするインフラストラクチャを提供する。通信メカニズムは、カーネルスペースおよびユーザスペースに存在するトランスポートコンポーネントを実行時に接続し、処理を実行するための高次のコールバックスタイルセマンティクスを提供する。この手法は、関数コールのように関数を呼び出すという見た目および抽象化(appearance and abstraction of invoking)を提供する。さらには、インターフェイス定義の徹底により、関数コールの抽象化のどちら側でも、コンポーネントソフトウェア(例えば、アプリケーションおよびカーネルモジュール)がビットまたはデータ型を操作する必要性が低減される。加えて、インフラストラクチャのバージョニング機能により、互換性確保のためにユーザスペースアプリケーションとカーネルスペースアプリケーションとを密に結合する必要性が低減される。
概して言えば、本明細書に記載された各種実施形態では、コンピュータシステムに記憶されたデータを伴う各種コンピュータ実装された処理が用いられ得る。例えば、これらの処理は、必ずというわけではないものの、通常は物理的な量の物理的操作を必要とし得る。その量は、電気信号または磁気信号という形を取り得る。これらの信号あるいは信号表示は、記憶、移送、結合、比較、あるいは別の形での操作が可能である。さらに、かかる操作は、作成、識別、判断、比較などの言葉で言及されることが多い。本明細書に記載された1つ以上の実施形態の一部を成す処理は、有用な機械処理であり得る。加えて、1つ以上の実施形態は、これらの処理を実行するための装置または機器に関するものである。その機器は、特定の必須目的で特別に作られたものであり得るか、あるいはコンピュータに記憶されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータであり得る。特に、本明細書の教示に従って記述されたコンピュータプログラムと共に各種汎用機械が使用され得るか、あるいは必須の処理を実行するために、より専門的な機器を作成した方が便利であり得る。
本明細書に記載された各種実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラミング可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成で実施され得る。
1つ以上の実施形態が、1つ以上のコンピュータプログラムとして、あるいは1つ以上のコンピュータ可読媒体に組み込まれた1つ以上のコンピュータ・プログラム・モジュールとして実装され得る。コンピュータ可読媒体という用語は、後でコンピュータシステムに入力可能なデータを記憶できる任意のデータ記憶装置を表し、コンピュータ可読媒体は、コンピュータによって読み出せるようにコンピュータプログラムを具現化するための任意の既存技術あるいはその後開発された技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続型記憶装置(NAS : network attached storage)、読み出し専用メモリ、ランダムアクセスメモリ(例えばフラッシュメモリ装置)、CD(コンパクトディスク)、CD−ROM、CD−R、またはCD−RW、DVD(デジタル多用途ディスク)、磁気テープ、ならびに他の光学および非光学データ記憶装置などがある。コンピュータ可読媒体は、コンピュータ可読コードが分散して記憶および実行されるように、ネットワークに連結されたコンピュータシステムを介して配信することもできる。
1つ以上の実施形態について、明確に理解してもらえるよう、ある程度詳しく説明してきたが、請求項の範囲内で一定の変更および改変が可能であることは明らかであろう。したがって、記載された実施形態は例示的なものとみなすべきであり、制限的なものとみなすべきでない。そして、請求項の範囲は本明細書に記載された詳細に制限されるべきでなく、請求項の範囲および均等物内で修正され得る。請求項では、明示的に述べられていない限り、要素および/またはステップが任意の特定の処理順を示唆することはない。
加えて、上記仮想化方法では、仮想マシンが特定のハードウェアシステムに整合するインターフェイスを提示すると概して想定してきたが、上記方法は、任意の特定ハードウェアシステムに直接対応しない仮想化と併用され得る。ホスト側の実施形態として、非ホスト側の実施形態として、あるいはその両者の区別を曖昧にする傾向がある実施形態として実装された各種実施形態にかかるすべての仮想化システムが想定される。さらに、各種仮想化処理は、全体または一部がハードウェアで実装され得る。例えば、あるハードウェア実装形態では、非ディスクデータのセキュリティを確保するための記憶装置アクセスリクエストを修正するのにルックアップテーブルが使用され得る。
仮想化の度合いに関係なく、多くの変形例、修正例、追加例、および改善例が存在し得る。そのため、仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、またはゲスト・オペレーティング・システムのコンポーネントを含むことができる。本明細書に記載されたコンポーネント、処理、または構造について複数の事例が提供され得る。最後に、各種コンポーネント、処理、およびデータストア間の境界はやや恣意的なのものであり、特定の処理は具体的な構成例という文脈の中で例示されるものである。他の機能割り当ても想定され、1つ以上の実施形態の範囲内に属し得る。概して、構成例の中で別々のコンポーネントとして表された構造および機能が組み合わさった構造またはコンポーネントとして実装されても良く、同様に、単一のコンポーネントとして表された構造および機能が別々のコンポーネントとして実装されても良い。これらの、そして他の変形例、修正例、追加例、および改善例は、添付の請求項の範囲内に属し得る。
100 ホスト・コンピュータ・システム
205 アプリケーション
210 トランスポート
208 ライブラリ
220 カーネルモジュール
225 ユーザスペース
230 カーネルスペース

Claims (16)

  1. コンピュータシステムにおいて、オペレーティング・システム・カーネルがユーザスペース・ゲスト・アプリケーションと通信するための方法であって、
    複数の登録ハンドルを複数のAPI署名にマッピングするためのデータを含むデータストアを提供することであって、前記複数のAPI署名の各々は、少なくとも1つのコールバックを有し、前記データストアは、前記コンピュータシステムのカーネルスペース内のカーネルスペーストランスポートに存在する、前記データストアを提供すること、
    前記データストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に任意の登録ハンドルを対応させて、前記データストアから前記任意の登録ハンドルに対応させた前記関連付けられたAPI署名を取得すること、
    前記データストアから取得されたAPI署名内の前記コールバックに対応する記述子を前記オペレーティング・システム・カーネルから取得すること、
    前記記述子を前記カーネルスペーストランスポートに記憶すること、
    前記コンピュータシステムのユーザスペースに存在するユーザスペーストランスポートに前記記述子を送ること、
    前記ユーザスペース・ゲスト・アプリケーションに対する前記記述子を、前記ユーザスペーストランスポートを介して処理することを備える、方法。
  2. 前記ユーザスペース・ゲスト・アプリケーションが前記コールバックを呼び出す、請求項1に記載の方法。
  3. 前記API署名が、名前と、バージョンと、前記少なくとも1つのコールバックの各々に対応するコールバックパラメータのリストと、パラメータセマンティクスとを含む、請求項1に記載の方法。
  4. 前記オペレーティング・システム・カーネルおよび前記ユーザスペース・ゲスト・アプリケーションが仮想マシン上で動作する、請求項1に記載の方法。
  5. 前記カーネルスペーストランスポートおよび前記ユーザスペーストランスポートがキャラクタ装置ノードで実行される、請求項1に記載の方法。
  6. 前記記述子を前記ユーザスペーストランスポートに送ること、
    前記API署名と関連付けられている対応するキャラクタ装置ノードでファイルを開くためにスリープ解除リクエストを送ること、
    前記キャラクタ装置ノードのポーリング状態を調べること、
    前記ユーザスペーストランスポートを介して前記記述子を取得すること、
    をさらに備える、請求項5に記載の方法。
  7. ホストコンピュータのオペレーティング・システム・カーネルにあるカーネルモジュールとユーザスペース・ゲスト・アプリケーションとの間での通信方法であって、
    ユーザスペースに存在するユーザスペーストランスポート内のライブラリで、少なくとも1つのコールバックを有する関連付けられたAPI署名に任意の登録ハンドルを対応させること、
    前記API署名内の前記コールバックに対応する記述子を前記ユーザスペース・ゲスト・アプリケーションから取得すること、
    前記ユーザスペーストランスポートに前記記述子を記憶すること、
    カーネルスペースに存在するカーネルスペーストランスポートに前記記述子を送ること、
    前記記述子と、前記カーネルモジュールに対するパラメータとを、前記カーネルスペーストランスポートを介して処理することを備える、方法。
  8. 前記カーネルモジュールが前記コールバックを呼び出す、請求項7に記載の方法。
  9. 前記ユーザスペーストランスポートおよび前記カーネルスペーストランスポートがキャラクタ装置ノードで実行される、請求項7に記載の方法。
  10. コンピュータシステムであって、
    プロセッサと、
    メモリと、
    カーネルスペースにオペレーティング・システム・カーネルを有するオペレーティング・システムと、
    前記カーネルスペースに存在するカーネルスペーストランスポートと、
    前記カーネルスペーストランスポートに存在するデータストアであって、登録ハンドルをAPI署名にマッピングするためのデータを含む前記データストアと、
    ユーザスペース内のゲストアプリケーションと、
    前記ユーザスペースに存在するユーザスペーストランスポートと、
    前記プロセッサで実行された場合に、前記オペレーティング・システム・カーネルが前記ゲストアプリケーションと通信するための処理を実行する前記メモリ内のアプリケーションとを備える前記コンピュータシステムにおいて、前記処理は、
    前記データストアで、少なくとも1つのコールバックを有する関連付けられたAPI署名に任意の登録ハンドルを対応させること、
    前記API署名内の前記コールバックに対応する記述子を前記オペレーティング・システム・カーネルから取得すること、
    前記記述子を前記カーネルスペーストランスポートに記憶すること、
    前記ユーザスペースに存在する前記ユーザスペーストランスポートに前記記述子を送ること、
    前記ゲストアプリケーションに対する前記記述子を、前記ユーザスペーストランスポートを介して処理することを備える、コンピュータシステム。
  11. 前記ゲストアプリケーションが前記コールバックを呼び出す、請求項10に記載のコンピュータシステム。
  12. 前記API署名が、名前と、バージョンと、前記少なくとも1つのコールバックの各々に対応するコールバックパラメータのリストと、パラメータセマンティクスとを含む、請求項10に記載のコンピュータシステム。
  13. 前記オペレーティング・システム・カーネルおよび前記ユーザスペースのゲストアプリケーションが仮想マシンで動作する、請求項10に記載のコンピュータシステム。
  14. 前記カーネルスペーストランスポートおよび前記ユーザスペーストランスポートがキャラクタ装置ノードで実行される、請求項10に記載のコンピュータシステム。
  15. 前記記述子を前記ユーザスペーストランスポートに送ることは、
    前記API署名と関連付けられている対応するキャラクタ装置ノードでファイルを開くためにスリープ解除リクエストを送ること、
    前記キャラクタ装置ノードのポーリング状態を調べること、
    前記ユーザスペーストランスポートを介して前記記述子を取得することをさらに含む、請求項14に記載のコンピュータシステム。
  16. プロセッサによって実行された場合に、請求項1〜9のいずれか一項に記載の方法を実行するコードを記憶している非一時的なコンピュータ可読記憶媒体。
JP2014152967A 2013-08-26 2014-07-28 クラウドスケールの異種データセンタ管理インフラストラクチャ Active JP6316694B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/010,070 2013-08-26
US14/010,070 US10187479B2 (en) 2013-08-26 2013-08-26 Cloud-scale heterogeneous datacenter management infrastructure

Publications (3)

Publication Number Publication Date
JP2015043202A JP2015043202A (ja) 2015-03-05
JP2015043202A5 JP2015043202A5 (ja) 2017-08-24
JP6316694B2 true JP6316694B2 (ja) 2018-04-25

Family

ID=51032922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014152967A Active JP6316694B2 (ja) 2013-08-26 2014-07-28 クラウドスケールの異種データセンタ管理インフラストラクチャ

Country Status (4)

Country Link
US (2) US10187479B2 (ja)
EP (1) EP2843552B1 (ja)
JP (1) JP6316694B2 (ja)
AU (1) AU2014203518B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
US10250452B2 (en) 2015-12-14 2019-04-02 Microsoft Technology Licensing, Llc Packaging tool for first and third party component deployment
US10666517B2 (en) 2015-12-15 2020-05-26 Microsoft Technology Licensing, Llc End-to-end automated servicing model for cloud computing platforms
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
CN108564304B (zh) * 2018-05-04 2022-06-24 西北工业大学 一种面向飞机装配的操作描述参数化生成方法
JP7191442B2 (ja) * 2019-02-16 2022-12-19 サムスン エレクトロニクス カンパニー リミテッド Carifコア機能エンティティにapiプロバイダドメイン機能エンティティらを登録するための方法及び装置
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
EP3863272A1 (en) * 2020-02-04 2021-08-11 Nokia Technologies Oy Notifications sent with indirect communication in sba
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11785065B2 (en) * 2021-04-15 2023-10-10 Nec Corporation Dynamic microservice intercommunication configuration
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
CN114462388A (zh) * 2022-02-11 2022-05-10 阿里巴巴(中国)有限公司 句柄管理或通信方法、电子设备、存储介质及程序产品

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289396B1 (en) 1995-11-21 2001-09-11 Diamond Multimedia Systems, Inc. Dynamic programmable mode switching device driver architecture
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
JP4365148B2 (ja) * 2002-07-19 2009-11-18 株式会社リコー 画像形成装置及びラッピング処理方法並びにプログラム
US7448049B1 (en) 2002-10-18 2008-11-04 Crossroads Systems, Inc. System and method of supporting kernel functionality
US7337447B2 (en) 2003-01-23 2008-02-26 Dell Products L.P. Information handling system featuring a single pipe string driven architecture for bridging data of heterogeneous object source in native subsystems to java using native invocation interfaces
US7290114B2 (en) * 2004-11-17 2007-10-30 Intel Corporation Sharing data in a user virtual address range with a kernel virtual address range
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7549144B2 (en) * 2005-02-22 2009-06-16 Microsoft Corporation Custom API modeling for source code static analysis simulator
US7895309B2 (en) * 2006-01-11 2011-02-22 Microsoft Corporation Network event notification and delivery
US8272048B2 (en) * 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
US8209704B1 (en) * 2008-03-28 2012-06-26 Emc Corporation Techniques for user space and kernel space communication
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US8555297B1 (en) * 2008-09-29 2013-10-08 Emc Corporation Techniques for performing a remote procedure call using remote procedure call configuration information
US8464252B2 (en) * 2009-02-27 2013-06-11 Red Hat, Inc. Per process virtual machines
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
WO2012019114A1 (en) * 2010-08-06 2012-02-09 Citrix Systems, Inc. Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device
US20120179874A1 (en) * 2011-01-07 2012-07-12 International Business Machines Corporation Scalable cloud storage architecture
CN102314391B (zh) * 2011-05-27 2013-11-20 运软网络科技(上海)有限公司 一种基于硬件基础工具监视虚拟化系统性能的架构及方法
US10516607B2 (en) * 2012-04-12 2019-12-24 Telefonaktiebolaget Lm Ericsson (Publ) Layer 3 service implementation in cloud servers and method
EP3364297B1 (en) * 2012-06-26 2022-05-04 Lynx Software Technologies Inc. Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection prevention, and/or other features
US9612877B1 (en) * 2012-07-12 2017-04-04 Cisco Technology, Inc. High performance computing in a virtualized environment
US9720627B2 (en) * 2013-01-17 2017-08-01 Western Digital Technologies, Inc. Data management for a data storage device

Also Published As

Publication number Publication date
AU2014203518A1 (en) 2015-03-12
EP2843552A1 (en) 2015-03-04
EP2843552B1 (en) 2021-11-17
US10862982B2 (en) 2020-12-08
US20150058444A1 (en) 2015-02-26
JP2015043202A (ja) 2015-03-05
US20190141145A1 (en) 2019-05-09
US10187479B2 (en) 2019-01-22
AU2014203518B2 (en) 2016-04-21

Similar Documents

Publication Publication Date Title
JP6316694B2 (ja) クラウドスケールの異種データセンタ管理インフラストラクチャ
US10013275B2 (en) Executing code referenced from a microservice registry
US9934064B2 (en) Storing and resuming application runtime state
US9823851B2 (en) Secure migratable architecture having security features
US9760408B2 (en) Distributed I/O operations performed in a continuous computing fabric environment
US10353725B2 (en) Request processing techniques
US11093270B2 (en) Fast-booting application image
US20190332368A1 (en) Per request computer system instances
EP2941696A1 (en) Software interface for a hardware device
EP2941694B1 (en) Capability based device driver framework
US9727390B1 (en) Invoking a firmware function
US20210326150A1 (en) Integrated network boot operating system installation leveraging hyperconverged storage
EP2941695A1 (en) High throughput low latency user mode drivers implemented in managed code
US11663072B2 (en) Avoid system restart after applying fixes
US20230032967A1 (en) Establishing process connections utilizing an intermediary broker
US20240184612A1 (en) Virtual machine live migration with direct-attached non-volatile memory express device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170713

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170713

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170713

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180328

R150 Certificate of patent or registration of utility model

Ref document number: 6316694

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350