JP3037924B2 - マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法 - Google Patents

マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法

Info

Publication number
JP3037924B2
JP3037924B2 JP9321009A JP32100997A JP3037924B2 JP 3037924 B2 JP3037924 B2 JP 3037924B2 JP 9321009 A JP9321009 A JP 9321009A JP 32100997 A JP32100997 A JP 32100997A JP 3037924 B2 JP3037924 B2 JP 3037924B2
Authority
JP
Japan
Prior art keywords
file
data
buffer
module
data stream
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.)
Expired - Fee Related
Application number
JP9321009A
Other languages
English (en)
Other versions
JPH10224767A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10224767A publication Critical patent/JPH10224767A/ja
Application granted granted Critical
Publication of JP3037924B2 publication Critical patent/JP3037924B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Communication Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ化さ
れたマルチメディア・サーバに関し、具体的には、ディ
スク記憶サブシステムからネットワークまたはビデオ・
カードへなど、そのようなシステム内の装置間でデータ
ストリームを効率的に転送する技法に関する。
【0002】
【従来の技術】マルチメディア・システムでは、通常
は、システムを介して極端に効率的に転送されなければ
ならない高密度マルチメディア・データを表す多数のデ
ータストリームが使用される。代表的な例が、「ビデオ
・オン・デマンド」サーバ・システムである。これらの
システムを介してデータを効率的に移動することを試み
る、さまざまな方法が考案されてきた。これらのシステ
ムの多くでは、そのオペレーティング・システムとし
て、有名なUNIXオペレーティング・システムまたは
その派生システムが、通常は、マルチメディア・コンテ
ンツ配布システムを実施するものなどのクライアント・
サーバ環境で使用される。このようなUNIXベース・
システムの固有で深刻な欠陥の態様が、データを移動す
るために使用される機構が、非常に複雑なマルチメディ
ア・データストリームを用いるシステムで必要になるほ
どには効率を最適化されていないことである。
【0003】以下で詳細に説明する本発明のビデオ・カ
ップリング・システム(VCS)は、そのようなUNI
XまたはUNIX派生システムのカーネル環境内で極度
に効率的な形でプロデューサ(製作者)装置とコンシュ
ーマ(消費者)装置の間でデータを転送するためのプロ
デューサ/コンシューマ・フレームワークを提供する。
従来の方法では、カーネル空間からユーザ空間へのその
ようなデータのコピーと、カーネル空間へのコピー・バ
ックが使用されてきた。さらに、このようなシステムで
は、コンテキスト切替に関連する大量のCPUオーバー
ヘッドが伴う。ゼロ・コピー・フレームワーク(データ
のコピーが回避され、CPUオーバーヘッドが減るの
で、効率のために使用される)内のプロデューサとして
働くためにマルチメディア・データが常駐するマルチメ
ディア・ファイル・システム(MMFS)の場合、この
ようなMMFSは、割込みコンテキスト内で転送される
データのバッファを割込みレベルで供給しなければなら
ない。しかし、これによって、ファイル・システム動作
(UNIXベース・システムに関連する動作など)が、
通常は割込みコンテキストではなくプロセス・コンテキ
ストで動作しなければならないという深刻な問題が提示
される。
【0004】マルチメディア・データストリーム情報の
効率的な転送をもたらすための従来のサブシステムによ
って提示される追加の問題から、本発明の革新が生じ
た。これには、割込みレベルでのバッファの発見とロッ
ク、割込みレベルで必要になる時の前にファイル・デー
タのバッファを事前取出しするのに使用されるデーモン
・プロセスへの事前取出し情報の通信、ファイルへ同時
に書き込むタスク/スレッドの直列化の処理、および、
より一般的に、VCSフレームワークでのゼロ・コピー
をサポートする汎用ファイル・システム・インターフェ
ースの考案が含まれる。
【0005】本発明の貢献とニュアンスを完全に理解す
るために、まず、図1に示されたシステムなどのマルチ
メディア・システムの基本的な構成要素およびモジュー
ルの全般的な説明を提供すれば役立つであろう。
【0006】本発明によれば、「ゼロ・コピー」または
ビデオ・カップリング・サブシステム(VCS)148
が、カーネル空間からユーザ空間へデータをコピーする
必要なしにファイル・システム122とネットワークま
たはビデオ・デコーダ・カードの間でデータを移動する
ために設けられる。このVCSは、従来のシステムの図
1に示されており、その結果、これがそのようなシステ
ムに適合することが明瞭にわかるが、このVCSは、実
際には本発明の新規の貢献の態様である。したがって、
これを、「発明の実施の形態」に関して詳細に説明す
る。したがって、ファイル・システム、データ・エクス
ポータ、VCSおよびNARを含むさまざまなサブシス
テムの組合せを、以下では全般的にデータ・ポンプ・サ
ブシステム114と呼称する。
【0007】前に説明した問題に対処する努力の中で、
大容量記憶装置からコンシューマ装置にデータを転送す
るバッファを管理するために、別のサブシステムを開発
することによって、ゼロ・コピー機構を実現する試みが
既知である。しかし、このような手法は、極度に問題が
多く、たとえばデータのコピーとそれに関連するCPU
オーバーヘッドを回避しつつデータを転送するための効
率的な機構を提供するためのタイムリーなデータの管理
を実行するなどのため、最初に共用メモリにデータを移
動する理由に関連する。
【0008】これらのシステムでは、通常、これらの機
能(共用データの管理)を効果的にエクスポートして、
データの正しい共用を実行するという問題をそれ自体で
解決しなければならないカスタム設計の新規モジュール
が分離されてきた。したがって、必要な制御とバッファ
リングの知識を元のファイル・システムに残すことがで
きる機構が、強く要求されてきた。この形で、既存のフ
ァイル・システムですでに実施されているデータの制御
およびバッファリングに関連する現在のポリシーを、有
利に維持できる。
【0009】
【発明が解決しようとする課題】本発明の目的は、デー
タストリーム・スループットを改良するため、マルチメ
ディア・サーバのファイル・システムに、汎用インター
フェースを提供することである。
【0010】
【課題を解決するための手段】ファイル・システムに
は、ゼロ・コピー・インターフェースの定義済みの組の
ファイル・システムの実装を指す関数ポインタを提供す
るエクスポート登録サービスが含まれる。これらのイン
ターフェースには、必要なデータ構造をセット・アップ
し、オブジェクトに関する使用カウントを置いて、ゼロ
・コピー動作の進行中にオブジェクトが除去されないよ
うにする初期設定サービスが含まれる。さらに、ゼロ・
コピー・インターフェースには、データ構造のクリーン
・アップと使用カウントの除去を行う終了サービスも含
まれる。さらに、指定されたファイルがゼロ・コピー動
作での使用に適することを検証するためのサービスも設
けられる。さらに、後に割込みレベルでバッファを獲得
するのに必要なファイル属性を見つけ、記録するための
サービスを設ける。後続の呼出しのためにこれらの属性
を保持するためのデータ構造を定義する。割込みレベル
でバッファをロックし、存在するデータの量を返し、別
のアドレス空間コンテキストでのバッファへのアドレス
可能度を提供するためのサービスを設ける。後続の呼出
しのためにこれらのバッファ属性を保持するためのデー
タ構造を定義する。さらに、割込みレベルでバッファの
ロックを解除するサービスを設ける。最後に、VCR機
能のサポートに必要となるものなど、ファイルのアクセ
ス・パターンに対する変更に関する情報を提供するサー
ビスを設ける。
【0011】アトミックに更新される単リンク・リスト
を使用するハッシュ・チェーンを使用して、バッファの
索引動作を割込みレベルで安全に実行できるようにす
る。比較交換形式のロックをバッファに使用して、この
動作を割込みレベルで実行できるようにする。割込みレ
ベルでの使用に適したメールボックス・インターフェー
スを実装して、情報の事前取出しとデーモンへの情報の
解放を実現する。このインターフェースは、割込みレベ
ルから使用できないメッセージ待ち行列などの標準的な
IPC方法と置換される。ファイルをテープまたは他の
外部装置からインポートすると同時に出力装置に配布す
る「ロード・アンド・プレイ(load-and-play)」動作
を処理するために、ロックは、ファイルとバッファの両
方ではなく、バッファだけに対して実行される。読取側
が書込側に追い付いた場合を検出するために、バッファ
に供給されたバイト数を、ファイルの終り(EOF)の
表示として使用する。
【0012】前述の技法を使用すると、通常の場合、デ
ータのコピーもコンテキスト切替もなしに、バッファを
出力装置に供給できる。しかし、ロック衝突やバッファ
が使用不能(たとえば横取りされた)の場合には、本明
細書に記載のシステムおよび方法は、プロセス・コンテ
キストでバッファを獲得することもできる。ビデオ・カ
ップリング・サブシステム(VCS)フレームワークで
は、kprocプロシージャを設けて、割込みレベルで
走行中に動作に失敗した場合にその動作を再試行する。
いくつかの動作は、複数のステップを必要とし、これら
のうちのいくつかは、失敗の前に割込みレベルで完了す
る可能性があるので、追加の状態情報を記録し、その結
果、再試行で、完了しなければならない残りの作業だけ
が実行されるようにする。
【0013】
【発明の実施の形態】図1を参照すると、ゼロ・コピー
・サブシステムまたはVCS148が、従来のシステム
のさまざまな構成要素にこの機能をはめ込む方法を示す
ために含まれていることが想起される。前に説明したデ
ータ・エクスポータ118は、本質的に、ディスク駆動
装置126と、ファイル・システム122と、ADEC
アダプタ・カード140などのビデオ・デコーダ・カー
ドの間の結合を確立する。一般的に言うと、データ・エ
クスポータ118は、効率的なデータストリーム伝送の
ためにパイプラインの形でプロデューサ装置とコンシュ
ーマ装置を相互接続する方法を提供する。接続が確立さ
れた後に、データ・エクスポータ118は、VCS14
8への制御150によって、ファイル・システム122
と通信装置138の間のVCSを介するデータ・フロー
を直接に制御するために接続を提供する。
【0014】図2に移ると、VCS224(図1ではV
CS148として図示)の一般的な機能は、マルチメデ
ィア・ファイル・システム(MMFS)、プロデューサ
・モジュール222およびコンシューマ・モジュール2
26の間のデータ・フローを最適な形で制御することで
ある。コンシューマ・モジュールの例は、たとえば、本
質的にパイプの出力側になるネットワーク・アクセス・
ルーチン(NAR)130のADEC NARと、対応
するADECアダプタ・カード140である。このプロ
デューサ・モジュール222の例は、図1を参照する
と、ディスク駆動装置126と、たとえば複数の通常の
ディスク駆動装置またはRAIDアレイ内で部分的に実
施できるファイル・システム122などの記憶サブシス
テムである。プロデューサ・モジュール222は、ファ
イル・システム122などの既存の従来の設計とするこ
とができる別のファイル・システムとVCS224の間
の媒介物として働く。VCS自体は、データ・フローの
管理のためのインターフェースの組を提供し、プロデュ
ーサ・モジュール222は、本質的に、VCS224か
らの要求をさばき、ファイル・システム122への適当
な呼出しを行って要求されたデータを取得する、媒介物
として働く。図2では、大容量記憶装置210が、図1
に示されたディスク駆動装置126に対応する。MMF
Sカーネル拡張216とMMFSデーモン218は、図
1のファイル・システム122内で実施される。
【0015】図2の参照を続けると、MMFSカーネル
拡張216は、明らかに、図1のシステム上で実行され
るオペレーティング・システムのカーネルの中にある
が、MMFSデーモン218は、アプリケーション空間
で実行される。これによって、制御がVCS224から
プロデューサ・モジュール222、MMFSカーネル拡
張216、MMFSデーモン218へ流れる理由が説明
される。すなわち、VCS、プロデューサ・モジュール
およびカーネル拡張は、カーネル内にあり、アプリケー
ション空間内のMMFSデーモン218によって表され
るユーザ・レベルと通信するのである。
【0016】本発明の基本的な態様は、マルチメディア
・データをコピーするオーバーヘッドをこうむらずに、
マルチメディア・データの必要な転送を達成することで
ある。データをメモリに移さずに装置の間でデータを転
送できることが既知である。関連技法の例が、「ゼロ・
コピー」技法である。この手法では、バス上で使用され
る装置の間で、システムのプロセッサを用いる必要がな
く、データをメモリに移す必要もなしに装置の間で実際
にデータを簡単に転送できるようにするプロトコルが使
用可能である。
【0017】ビデオ・サーバ環境では、たとえば2人の
ユーザが同一タイトルの再生を望む場合に、これらの複
数の要求をメモリ内の単一のコピーから満足できるの
で、データをメモリに移動することが重要になる可能性
がある(これに対して、この同一データが装置間で単純
に移動される場合、そのデータを物理的に2回移動しな
ければならない)。したがって、2人のユーザが同一デ
ータのアクセスを所望する可能性がある場合、ビデオ・
サーバ環境でのメモリのバッファリング特性を使用でき
ることが重要である。本発明のモデルは、データがメモ
リに移動され、データの単一のコピーが所望されるとい
う前提に基づき、選択は、基本的に、ファイル・システ
ム122にその単一のコピーを提供させることである。
【0018】ファイル・システムは、従来は、プロセス
・コンテキストで走行する。このコンテキストで、ファ
イル・システム内でデータを移動する従来の方法では、
ユーザ・レベル・プログラムからカーネルへの「read
(読取)」システム・コールを行って、ディスクから読
み取られるファイルからのデータの特定の範囲をカーネ
ルのバッファに取得し、その後、これをユーザ・バッフ
ァにコピーする。その一方で、データをネットワークに
書き込むことが所望された場合、「write(書込)」シ
ステム・コールが発行され、データは、ユーザ・メモリ
からカーネルに転送され、カーネルのバッファからネッ
トワーク装置に転送される。
【0019】本発明が対処する問題の1つは、VCS1
48がサポートできるモデルに関する。具体的に言う
と、CPUオーバーヘッドとデータのコピーに関連する
オーバーヘッドを制限できる形でUNIX環境またはU
NIX派生環境(IBM Corporation社の
AIX(商標)オペレーティング・システムなど)内で
動作できるシステムが必要であった。プロデューサ・モ
ジュール222とコンシューマ・モジュール226の間
でVCSによって行われる制御フローのほとんどは、割
込みコンテキスト内で行われる。しかし、UNIXおよ
びUNIX派生オペレーティング・システムの環境で
は、ファイル・システムが通常走行するプロセス・コン
テキストとは異なって、割込み環境で実行できる動作に
は大きな制約がある。本発明のVCS224では、基本
的に、従来の書込モデルが、完全にカーネル内でデータ
転送を実行するモデルに置き換えられる。
【0020】ここで、本発明によるゼロ・コピー法での
データ転送方法を示すのに役立つ例を示す。VCS22
4が、プロデューサ・モジュールとコンシューマ・モジ
ュール226の間のパイプラインを確立し、データ・フ
ローが開始された後に、VCSは、プロデューサ・モジ
ュール222に、データのバッファを取得するように指
示する要求を行う。プロデューサ・モジュール222
は、ファイル・システム122にアクセスして、データ
のバッファを突き止めるために参照を行い、コンシュー
マ・モジュール226に、カーネル・コンテキスト内で
のそのバッファへのアドレス可能度を提供する。したが
って、実際にデータをコピーするのではなく、これによ
ってデータへの参照が提供される。したがって、コンシ
ューマ・モジュール226は、図1のADECアダプタ
・カード140などの出力装置にデータを渡す必要が生
じた時に、実際に、ファイル・システム122がすでに
有するデータのコピーを参照している。
【0021】図2の説明を続けると、大容量記憶装置2
10、共用メモリ212およびコンシューマ装置214
は、制御の流れ、たとえばファイル・システムが用いら
れる時に、データが、大容量記憶装置210(または図
1のディスク駆動装置126)から共用メモリ212に
転送され、共用メモリ212が、MMFSデーモン21
8によって管理されることを示すために、図2の最上部
にまとめて示されている。VCS224は、共用メモリ
212内のそのデータへの参照をコンシューマ装置21
4に供給する。したがって、共用メモリ212内には1
つのコピーが残され、データは、大容量記憶装置210
からコンシューマ装置214に転送される。コンシュー
マ装置214は、ネットワークやビデオ・デコーダな
ど、サーバ上の局所装置にマッピングされ、これらの装
置は、コンシューマにディジタル・データを配布する
か、高帯域幅ATMスイッチなどを介してケーブルにア
ナログ・データを配布する。
【0022】図3に移ると、本発明を実施するために図
2のシステム上で実行されるプログラム・コードで実施
されることが好ましい流れ図が示されている。具体的に
言うと、このコードは、主にプロデューサ・モジュール
222内で実行される。図3の説明の枠組みを設定する
ために、VCS224とそれに関連する構成要素は、動
的にロードされる、図2のシステムのオペレーティング
・システムのカーネル拡張とする。したがって、図3の
最初のステップは、プロデューサ・モジュール222が
オペレーティング・システムのカーネルにロードされる
時点で行われ、これは、ビデオ・サブシステムが起動さ
れる時に行われる。プロデューサ・モジュール222
は、ロードされる時に、基本的に登録サービスであるM
MFSカーネル拡張216によって提供されるエクスポ
ート・サービスを呼び出す。プロデューサ・モジュール
222は、MMFSカーネル拡張がゼロ・コピー機能を
サポートするために提供する諸機能のアドレスを示すM
MFSカーネル拡張216サービスの要求を行う。ステ
ップ336に示されるように、この処理が開始され、プ
ロデューサ・モジュール222がロードされた後に、上
で説明したステップがステップ338で行われ、たとえ
ば、MMFSカーネル拡張216によってサポートされ
るファイル・システム・ゼロ・コピー・サポート・イン
ターフェースが登録される。
【0023】これによって、このゼロ・コピー機能のサ
ポートのために汎用インターフェースが提供されること
が、本発明の重要な特徴であることに留意することが重
要である。代替案では、これより望ましくないが、特に
特定の既存のマルチメディア・ファイル・システムに制
限された専用インターフェースを提供することもでき
る。しかし、本発明によれば、より汎用化されたカーネ
ル・サービスの組を提供することによって、これらのサ
ービスを、広範囲の異なるファイル・システムによっ
て、ゼロ・コピー・フレームワークで使用できる。これ
らのファイル・システムは、プロデューサ・モジュール
222を用いて登録される。具体的に言うと、プロデュ
ーサ・モジュール222からのこの呼出しに応答して、
MMFSカーネル拡張216は、プロデューサ・モジュ
ール222に1組の関数記述子を返し、その結果、プロ
デューサ・モジュールが後にMMFSカーネル拡張21
6への関数呼出しを行えるようになる。前述のステップ
は、プロデューサ・モジュール222の構成の一部とし
て行われる。
【0024】ビデオ・カップリング・サブシステム機能
性の動作の次の局面は、図3によれば、なんらかの初期
設定と、VCSがそこからデータを取得することを所望
するパラメータ(たとえば、既存のマルチメディア・フ
ァイル・システム内のファイル)を提供するために、プ
ロデューサ・モジュール222が実際にVCS224に
よって呼び出される時に発生する。したがって、プロデ
ューサ・モジュール222は、そのデータ構造のなんら
かの初期設定を実行し、渡されたファイルのパラメータ
検査を行って、それが実際にマルチメディア・ファイル
・システムからのマルチメディア・ファイルであって、
ジャーナルド・ファイル・システム(journaled file s
ystem、JFS)などの他のファイル・システムのファ
イルではないことを確認する。この初期設定と検査の段
階すなわち図3のステップ340は、プロデューサ・モ
ジュール222に渡されたファイルが、ファイルがゼロ
・コピー動作に関与することを許可されるのに必要な他
の判断基準を満足することを確認するための別の検査を
プロデューサ・モジュール222が実行したことも表
す。ゼロ・コピー動作を実行するために渡されるパラメ
ータの一部には、コピーの開始が所望されるファイル内
のオフセット、所望のデータの長さなどが含まれる。し
たがって、ステップ340のパラメータ検査は、ファイ
ルが、データの取得が所望される開始オフセットおよび
終了オフセットに対応することなどを確認するためのも
のである。
【0025】図3の説明を続けると、データ転送が実際
に開始される前に、プロデューサ・モジュール222
は、既存のマルチメディア・ファイル・システム(具体
的にはMMFSカーネル拡張216)を呼び出して、こ
の割込みコンテキスト内で後程そのファイルからデータ
を取り出せるようにする、そのファイルに関する情報を
抽出する。
【0026】前に述べたように、UNIXまたはUNI
X派生環境では、通常、読取や書込など、ファイル・シ
ステムとの間のデータのファイル・システム動作のほと
んどが、プロセス・コンテキストで行われる。ファイル
・システム内でデータ転送を可能にするために必要にな
るものは、たとえば、ファイルに関する情報、割込みコ
ンテキストからのデータ転送をサポートするバッファな
ど、転送を実行するのに必要な情報のすべてを獲得でき
ることである。iノードや間接ブロックなどの関連デー
タ構造は、従来から一般的にプロセス・コンテキストで
はアクセス可能だが、割込みコンテキストではアクセス
不能である。図3を参照すると、ステップ342の一部
は、データ転送を実行するのに必要なこれらのファイル
に関する属性が、このステップで記録され、ファイル・
ハンドル内または他の適当に設計されたデータ構造に保
存され、たとえば、属性が保存され、システムが実際の
データ転送を行う際に、割込みコンテキストからその属
性データを突き止められるようになることを目的として
いる。
【0027】ステップ342では、事前取出し開始と称
するもう1つの機能が発生する。プロデューサ・モジュ
ール222からMMFSカーネル拡張216への通信に
よって、ファイル・システムに、転送されるファイルの
データを用意する必要があることが示される。マルチメ
ディア・データの連続配布をサポートするマルチメディ
ア・ファイル・システムにすでに存在する特徴および設
計点を有利に利用して、割込み環境でのゼロ・コピー機
構の実現における本発明の特徴をサポートできる。具体
的に言うと、このようなファイル・システムには、コン
シューマ装置214が実際にデータを要求する時の前
に、データを大容量記憶装置210から検索し、共用メ
モリ212に配布する能力が含まれることが好ましい。
【0028】前述を念頭におくと、ステップ342の
「事前取出し開始」部分の意味を、よりよく理解でき
る。この最初の事前取出しでは、本質的に、コンシュー
マ装置214へのデータのフローが実際に開始される前
に、ファイルのデータの最初の部分を共用メモリ212
に「呼び水として注入」する。この事前取出しに関する
制御の流れは、プロデューサ・モジュール222からM
MFSカーネル拡張216を経てMMFSデーモン21
8に進む。大容量記憶装置に入出力要求を発行し、共用
メモリ212に置かれた事前取出しされたデータをもた
らすのは、このデーモンである。その後、データの転送
が実際に開始される時には、転送は、事前取出しされた
データが共用メモリ212内ですでに使用可能である位
置から開始される。
【0029】図3の説明を続けると、ステップ344
で、ファイル・システムの次のバッファを獲得する。次
のステップでは、この処理は、本質的にループに進入
し、これによって、転送されるファイルに関連するデー
タのバッファのすべてについて、要求された所望の量の
データが転送されるまで、連続する上記バッファが、プ
ロデューサからコンシューマへ転送される。
【0030】したがって、VCS224が、システムが
入出力の準備ができている(たとえば、プロデューサか
らコンシューマへのデータの転送が発生しようとしてい
る)ことを示す時には、VCS224は、プロデューサ
・モジュール222への関数呼出しを発行し、プロデュ
ーサ・モジュール222は、特定のファイル・オフセッ
トについてMMFSカーネル拡張216を呼び出して、
共用メモリ212内のどこにそのファイル・システムに
対応するデータのバッファがあるかを判定する。たとえ
ばAIXオペレーティング・システムなどの本明細書に
記載の好ましい実施例で使用される特定のUNIX派生
オペレーティング・システムでは、コードの異なる部分
によって、たとえばプロセス・コンテキストまたは割込
みコンテキストのいずれかなど、異なるコンテキストで
ある可能性があるメモリ内の同一部分へのアドレス可能
性を取得できるようにする、「クロス・メモリ記述子」
が設けられている。ファイルの記述とファイル・オフセ
ットの記述を渡されるMMFSカーネル拡張216は、
今までと同じくマルチメディア・ファイル・システムの
データ構造を検査して、実際にその特定のファイルとフ
ァイル・オフセットに対応する共用メモリ212内のバ
ッファを判定しなければならない。カーネル拡張は、こ
れを判定した後に、前述のクロス・メモリ記述子(たと
えば正しいバッファへの参照)を提供し、この記述子
は、プロデューサ・モジュール222に返され、VCS
224に返され、最終的にコンシューマ・モジュール2
26に渡される。
【0031】したがって、この時点でコンシューマ・モ
ジュール226は、共用メモリ212内の正しいバッフ
ァへの参照を有し、この参照を標準装置ドライバに渡す
ことができる。この装置ドライバは、符号220に示さ
れる装置ドライバなど、ネットワークまたはビデオ・デ
コーダのいずれかに関連する装置ドライバである。コン
シューマ・モジュール226から装置ドライバ220に
渡された適当なバッファまたは共用メモリ212の一部
分への参照を用いて、装置ドライバは、当技術分野で周
知のAIXのDMAまたは他の動作などの標準動作を実
行して、データを共用メモリ212からコンシューマ装
置214に移動できる。
【0032】図3の説明を続けると、ブロック344
で、ファイル・システムの次のバッファが獲得され、プ
ロデューサ・モジュール222は、MMFSカーネル拡
張216を呼び出し、カーネル拡張がこれに応答して割
込みコンテキストで実行する動作は、注意深く行われな
ければならない。以下に、これを実行するための本発明
の特定の実施例を詳細に示す。アトミックに更新される
単リンク・リストを使用するハッシュ・チェーンを使用
して、バッファの索引動作を割込みレベルで安全に実行
できるようにする。共用メモリによってデータのバッフ
ァが獲得される時には、そのバッファは、比較交換形式
のロックを使用してロックされて、発生する可能性があ
る他のファイル・システム動作と直列化される。割込み
コンテキストでは、使用されるロックの具体的な形式に
関して注意を払う必要がある。ここで説明する実施例で
選択された比較交換形式のロックは、当技術分野で周知
のこの形式のロックが、MMFSカーネル拡張216が
動作している割込みコンテキスト内の機能であるという
点で重要である。
【0033】ここで説明する実施例のもう1つの重要な
態様は、さらに説明が必要である。ファイル空間自体が
MMFSカーネル拡張216とユーザ空間のMMFSデ
ーモン218の間で分割されるので、これらの構成要素
すなわちMMFSカーネル拡張216とMMFSデーモ
ン218の間の、割込みコンテキスト内でも動作する通
信方法が必要である。System 5共用メモリなど
の通常のプロセス間通信(IPC)方法またはメッセー
ジ待ち行列などの他の標準的なIPC機構は、プロセス
・コンテキストまたはプロセス・レベルでのみ動作す
る。したがって、本発明は、MMFSカーネル拡張21
6とMMFSデーモン218の間のメールボックス・イ
ンターフェース形式の、割込みレベルで使用できる通信
を提供して、前述の事前取出しおよびMMFSデーモン
218への情報の解放をもたらすために、ゼロ・コピー
をサポートするための割込み環境でのカーネル拡張とデ
ーモンの間の相互通信を可能にする。
【0034】ステップ344で、バッファが獲得された
後に、この処理がファイル・データのバッファを獲得す
るために進んだ割込みコンテキストで、なんらかの理由
でバッファが存在しない、バッファに対する衝突ロック
が存在する、または、他の理由の組が存在して、バッフ
ァ獲得動作が割込みコンテキスト内で成功しないという
望ましくない状態が存在する。このような場合には、こ
の処理は、プロセス・コンテキストでの通常のバッファ
獲得に後退する。したがって、ブロック346で行われ
るテスト(ブロック344でのファイル・システムの次
のバッファの獲得が失敗したことが示される可能性があ
る)が、ブロック348への流れをもたらすはずであ
る。ブロック348のステップは、同一の動作(ファイ
ル・システムの次のバッファの獲得)が、どのバッファ
を用いるかの判定、そのバッファへのアドレス可能性の
取得などに通常のプロセス・コンテキストに関連するス
テップを利用して行われることを表す。したがって、V
CS224内には、どのような理由であれ割込みコンテ
キストで実行できない動作を処理するのに使用される別
のカーネル・プロセスが設けられる。
【0035】次のバッファの取得に成功した(ステップ
344の割込みコンテキスト内か、ステップ348で通
常のプロセス・コンテキストを使用したかのいずれか)
後に、処理の流れはブロック350に進む。この時点
で、バッファが獲得され、ファイル・システムから共用
メモリ212内のバッファへのアドレス可能性が獲得さ
れている。ブロック350は、これが発生した後に、こ
の特定のバッファ・データが、コンシューマ装置214
に供給されることを表す。これには、実際には、VCS
224からコンシューマ・モジュール226に制御を戻
すサブステップが含まれる。コンシューマ・モジュール
226は、共用メモリ212から転送されるデータのク
ロス・メモリ記述子または参照を有することを想起され
たい。標準AIX装置ドライバまたは他のUNIXシス
テムの場合には他の標準装置ドライバを使用して、共用
メモリ212からコンシューマ装置214へのデータの
転送を行うことができる。
【0036】コンシューマ装置214は、現バッファ内
のデータのすべてをコンシューマ装置214に転送した
後に、(割込みまたは他の適当な機構によって)現バッ
ファをコンシューマ装置214に転送するという動作が
完了したことを装置ドライバ220に示す。装置ドライ
バ220は、このデータ移動が完了したことをコンシュ
ーマ・モジュール226に伝える。コンシューマ・モジ
ュール226は、これに応答して制御をVCS224に
返す。VCSは、入出力(たとえば、共用メモリ212
からコンシューマ装置214への現バッファ内のデータ
の転送)が完了したことと、システムが追加のバッファ
転送の準備ができていることをプロデューサ・モジュー
ル222に知らせる。
【0037】したがって、図3のステップ352は、コ
ンシューマ装置214が、共用メモリ212内の現バッ
ファの転送を実際に完了したことを表す。この転送の通
知が行われた後には、バッファが使用中であることを示
すロックまたは他の情報を更新し、たとえば、このブロ
ックの解放などを行う必要がある。しかし、次の事前取
出しメッセージが、プロデューサ・モジュール222か
らMMFSカーネル拡張216への経路を介してMMF
Sデーモン218に送られて、コンシューマ装置214
の位置の前(すなわち、解放されたばかりのバッファで
前に転送されたばかりのデータに論理的に隣接する、転
送されるファイル内の位置)の次バッファの取出が行わ
れる。この形で、このシステムは、コンシューマ装置2
14がデータを必要とする時までに必ずそのデータが共
用メモリ212内で使用可能になっている状態を保つ。
この事前取出しは、たとえばフレーム脱落の防止が達成
されるサービス品質要件に貢献する。
【0038】図3の説明を続けると、ブロック354
で、検査を行って、転送されるファイルに関連するデー
タの追加バッファが残っているかどうかを判定する。実
際にデータの終りに達していない場合、この処理は、ブ
ロック344にループ・バックして、ブロック346な
いし354に関して前に説明したステップを繰り返す。
すべてのデータが転送済みとブロック354で判定され
る時には、この処理はブロック356で終了し、データ
転送が完了したことを示すリターンが発行される。
【0039】本発明の特定の実施例に関して本発明を図
示し、説明してきたが、当業者であれば、本発明の趣旨
および範囲から逸脱することなく、形態と詳細において
前述および他の変更を行えることを理解するであろう。
【0040】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0041】(1)それぞれがゼロ・コピー機能インタ
ーフェースの組をサポートする複数の異なる既存ファイ
ル・システムのうちの1つと、プロデューサ・モジュー
ルおよびコンシューマ・モジュールを相互接続するVC
Sと、共用メモリに相互接続された大容量記憶装置と、
コンシューマ装置と、マルチメディア・ファイル・シス
テム・デーモンと、前記コンシューマ装置および前記コ
ンシューマ・モジュールの間に配置された装置ドライバ
とを有するマルチメディア・データストリーミング・シ
ステムで使用するための方法において、前記複数の異な
る既存ファイル・システムへの汎用ファイル・システム
・インターフェースを確立するステップと、前記プロデ
ューサ・モジュールから前記コンシューマ・モジュール
への前記データストリームのゼロ・コピー転送を実行す
るため前記汎用ファイル・システム・インターフェース
を呼び出すステップとを含む、前記既存ファイル・シス
テムを用いて前記データストリーム・ファイルの前記ゼ
ロ・コピー機能をサポートするための方法。 (2)前記インターフェースを確立するステップが、前
記プロデューサ・モジュールを用いて登録され、これに
よって呼び出すことのできるエクスポート登録サービス
を前記既存ファイル・システムを用いて確立するステッ
プを含むことを特徴とする、上記(1)に記載の方法。 (3)前記エクスポート登録サービスが、マルチメディ
ア・ファイル・サービス・カーネル・サービス拡張であ
ることを特徴とする、上記(2)に記載の方法。 (4)前記エクスポート登録サービスが、前記エクスポ
ート登録サービスおよび前記既存ファイル・システムへ
の関数記述子と前記ゼロ・コピー機能インターフェース
への関数記述子とを作ることを特徴とする、上記(3)
に記載の方法。 (5)さらに、前記カーネル拡張を呼び出すために前記
プロデューサ・モジュールによって呼出し可能な前記関
数記述子を取得するため、前記プロデューサ・モジュー
ルから前記エクスポート登録サービスへの関数呼出しを
発行するステップを含む、上記(4)に記載の方法。 (6)さらに、前記プロデューサ・モジュールに、前記
データストリーム・ファイルが前記ゼロ・コピー機能の
対象であることを検証させるために、前記VCSを用い
て前記プロデューサ・モジュールを呼び出すステップを
含むことを特徴とする、上記(5)に記載の方法。 (7)前記検証のステップが、データ構造を初期設定す
るステップと、前記データストリーム・ファイルに関連
するパラメータを検査するステップとを含むことを特徴
とする、上記(6)に記載の方法。 (8)前記検証のステップが、前記データストリーム・
ファイルがマルチメディア・ファイルであることを確認
するステップを含むことを特徴とする、上記(7)に記
載の方法。 (9)前記パラメータが、前記データストリーム・ファ
イルの開始オフセット、終了オフセットおよび長さを含
むことを特徴とする、上記(8)に記載の方法。 (10)さらに、割込みコンテキストからのデータ転送
をサポートするバッファの識別を取得し、これによっ
て、割込みコンテキスト内で前記データストリームを前
記大容量記憶装置内で突き止め、取出可能にするため、
前記プロデューサ・モジュールから前記カーネル・サー
ビス拡張を呼び出すステップを含む、上記(9)に記載
の方法。 (11)さらに、前記プロデューサ・モジュールからの
前記カーネル・サービス拡張の前記呼出しに応答して、
前記データストリーム・ファイルのファイル属性を記録
するステップを含む、上記(10)に記載の方法。 (12)さらに、前記システムが、前記大容量記憶装置
から前記共用メモリ内のバッファに転送するために前記
データストリーム・ファイルに関連するデータを用意す
る準備ができていることを示す標識を、前記プロデュー
サ・モジュールから前記カーネル・サービス拡張に転送
するステップを含む、上記(11)に記載の方法。 (13)さらに、前記データストリーム・ファイルに関
連するデータの最初の取出を開始するステップを含む、
上記(12)に記載の方法。 (14)前記最初の取出が、前記デーモンから発行され
る入出力コマンドに応答し、割込みコンテキストでの前
記大容量記憶装置から共用メモリ内のバッファへの取出
であることを特徴とする、上記(13)に記載の方法。 (15)さらに、前記システムが、前記共用メモリ内の
前記バッファから前記コンシューマ装置への入出力の準
備ができていることを示す、前記VCSから前記プロデ
ューサ・モジュールへの関数呼出しを生成するステップ
を含む、上記(14)に記載の方法。 (16)さらに、前記大容量記憶装置内の前記データの
次のバッファのファイル記述子およびオフセットを求め
る、前記プロデューサ・モジュールから前記カーネル・
サービス拡張への関数呼出しを生成するステップを含
む、上記(15)に記載の方法。 (17)さらに、前記入出力呼出しに応答して前記コン
シューマ装置に出力される、前記共用メモリ内の正しい
バッファを判定するため、前記カーネル・サービス拡張
によって前記マルチメディア・ファイル・システムを検
査するステップを含む、上記(16)に記載の方法。 (18)さらに、前記カーネル・サービス拡張を用い
て、前記正しいバッファに対応するクロス・メモリ記述
子を生成するステップを含む、上記(17)に記載の方
法。 (19)さらに、前記カーネル・サービス拡張から前記
プロデューサ・モジュール、前記VCSおよび前記コン
シューマ・モジュールへ、前記クロス・メモリ記述子を
順次配布するステップを含む、上記(18)に記載の方
法。 (20)前記ドライバによって前記クロス・メモリ記述
子を受け取るステップと、前記受け取られたクロス・メ
モリ記述子に応答して、前記ドライバによって共用メモ
リ内の前記正しいバッファの前記データを前記コンシュ
ーマ装置に転送するステップとをさらに含む、上記(1
9)に記載の方法。 (21)前記データストリーム・ファイルが、割込みコ
ンテキストでの転送に適合されていないかどうかを判定
するために検査するステップと、前記検査に応答して、
プロセス・コンテキストで前記ファイルからのデータの
バッファを獲得するステップとをさらに含む、上記(2
0)に記載の方法。 (22)さらに、割込みコンテキストで前記カーネル拡
張と前記デーモンとの間のメールボックス・インターフ
ェースを確立するステップを含む、上記(21)に記載
の方法。 (23)それぞれがゼロ・コピー機能インターフェース
の組をサポートする複数の異なる既存ファイル・システ
ムのうちの1つと、プロデューサ・モジュールおよびコ
ンシューマ・モジュールを相互接続するVCSと、共用
メモリに相互接続された大容量記憶装置と、コンシュー
マ装置と、マルチメディア・ファイル・システム・デー
モンと、前記コンシューマ装置および前記コンシューマ
・モジュールの間に配置された装置ドライバとを有する
マルチメディア・データストリーミング・システムで使
用するための装置において、前記複数の異なる既存ファ
イル・システムへの汎用ファイル・システム・インター
フェースを確立する手段と、前記プロデューサ・モジュ
ールから前記コンシューマ・モジュールへの前記データ
ストリームのゼロ・コピー転送を実行するため前記汎用
ファイル・システム・インターフェースを呼び出す手段
とを含む、前記既存ファイル・システムを用いて前記デ
ータストリーム・ファイルの前記ゼロ・コピー機能をサ
ポートするための装置。 (24)前記インターフェースを確立する手段が、前記
プロデューサ・モジュールを用いて登録され、これによ
って呼び出すことのできるエクスポート登録サービスを
前記既存ファイル・システムを用いて確立する手段を含
むことを特徴とする、上記(23)に記載の装置。 (25)前記エクスポート登録サービスが、マルチメデ
ィア・ファイル・サービス・カーネル・サービス拡張で
あることを特徴とする、上記(24)に記載の装置。 (26)前記エクスポート登録サービスが、前記エクス
ポート登録サービスおよび前記既存ファイル・システム
への関数記述子と前記ゼロ・コピー機能インターフェー
スへの関数記述子とを作ることを特徴とする、上記(2
5)に記載の装置。 (27)さらに、前記カーネル拡張を呼び出すために前
記プロデューサ・モジュールによって呼出し可能な前記
関数記述子を取得するため、前記プロデューサ・モジュ
ールから前記エクスポート登録サービスへの関数呼出し
を発行する手段を含む、上記(26)に記載の装置。 (28)さらに、前記プロデューサ・モジュールに、前
記データストリーム・ファイルが前記ゼロ・コピー機能
の対象であることを検証させるために、前記VCSを用
いて前記プロデューサ・モジュールを呼び出す手段を含
むことを特徴とする、上記(27)に記載の装置。 (29)前記検証する手段が、データ構造を初期設定
し、前記データストリーム・ファイルに関連するパラメ
ータを検査する手段を含むことを特徴とする、上記(2
8)に記載の装置。 (30)前記検証する手段が、前記データストリーム・
ファイルがマルチメディア・ファイルであることを確認
する手段を含むことを特徴とする、上記(29)に記載
の装置。 (31)前記パラメータが、前記データストリーム・フ
ァイルの開始オフセット、終了オフセットおよび長さを
含むことを特徴とする、上記(30)に記載の装置。 (32)さらに、割込みコンテキストからのデータ転送
をサポートするバッファの識別を取得し、これによっ
て、割込みコンテキスト内で前記データストリーム・フ
ァイルを前記大容量記憶装置内で突き止め、取出可能に
するため、前記プロデューサ・モジュールから前記カー
ネル・サービス拡張を呼び出す手段を含む、上記(3
1)に記載の装置。 (33)さらに、前記プロデューサ・モジュールからの
前記カーネル・サービス拡張の前記呼出しに応答して、
前記データストリーム・ファイルのファイル属性を記録
する手段を含む、上記(32)に記載の装置。 (34)さらに、前記システムが、前記大容量記憶装置
から前記共用メモリ内のバッファに転送するために前記
データストリーム・ファイルに関連するデータを用意す
る準備ができていることを示す標識を、前記プロデュー
サ・モジュールから前記カーネル・サービス拡張に転送
する手段を含む、上記(33)に記載の装置。 (35)さらに、前記データストリーム・ファイルに関
連するデータの最初の取出を開始する手段を含む、上記
(34)に記載の装置。 (36)前記最初の取出が、前記デーモンから発行され
る入出力コマンドに応答し、割込みコンテキストでの前
記大容量記憶装置から共用メモリ内のバッファへの取出
であることを特徴とする、上記(35)に記載の装置。 (37)さらに、前記システムが、前記共用メモリ内の
前記バッファから前記コンシューマ装置への入出力の準
備ができていることを示す、前記VCSから前記プロデ
ューサ・モジュールへの関数呼出しを生成する手段を含
む、上記(36)に記載の装置。 (38)さらに、前記大容量記憶装置内の前記データの
次のバッファのファイル記述子およびオフセットを求め
る、前記プロデューサ・モジュールから前記カーネル・
サービス拡張への関数呼出しを生成する手段を含む、上
記(37)に記載の装置。 (39)さらに、前記入出力呼出しに応答して前記コン
シューマ装置に出力される、前記共用メモリ内の正しい
バッファを判定するため、前記カーネル・サービス拡張
によって前記マルチメディア・ファイル・システムを検
査する手段を含む、上記(38)に記載の装置。 (40)さらに、前記カーネル・サービス拡張を用い
て、前記正しいバッファに対応するクロス・メモリ記述
子を生成する手段を含む、上記(39)に記載の装置。 (41)さらに、前記カーネル・サービス拡張から前記
プロデューサ・モジュール、前記VCSおよび前記コン
シューマ・モジュールへ、前記クロス・メモリ記述子を
順次配布する手段を含む、上記(40)に記載の装置。 (42)前記ドライバによって前記クロス・メモリ記述
子を受け取る手段と、前記受け取られたクロス・メモリ
記述子に応答して、前記ドライバによって共用メモリ内
の前記正しいバッファの前記データを前記コンシューマ
装置に転送する手段とをさらに含む、上記(41)に記
載の装置。 (43)前記データストリーム・ファイルが、割込みコ
ンテキストでの転送に適合されていないかどうかを判定
するために検査する手段と、前記検査に応答して、プロ
セス・コンテキストで前記ファイルからのデータのバッ
ファを獲得する手段とをさらに含む、上記(42)に記
載の装置。 (44)さらに、割込みコンテキストで前記カーネル拡
張と前記デーモンとの間のメールボックス・インターフ
ェースを確立する手段を含む、上記(43)に記載の装
置。
【図面の簡単な説明】
【図1】従来のマルチメディア・データストリーム・シ
ステムの機能ブロック図である。
【図2】図1の構成要素の一部のより詳細な図と、本発
明を構成する追加構成要素を含む、本発明のマルチメデ
ィア・データストリーム・サーバ・システムのブロック
図である。
【図3】本発明を実施するために図2のシステムで実行
されるプログラム・コードで実施できる流れ図である。
【符号の説明】
114 データ・ポンプ・サブシステム 118 データ・エクスポータ 122 ファイル・システム 126 ディスク駆動装置 130 ネットワーク・アクセス・ルーチン(NAR) 138 通信装置 140 ADECアダプタ・カード 148 ビデオ・カップリング・サブシステム(VC
S) 150 制御 210 大容量記憶装置 212 共用メモリ 214 コンシューマ装置 216 MMFSカーネル拡張 218 MMFSデーモン 220 装置ドライバ 222 プロデューサ・モジュール 224 VCS 226 コンシューマ・モジュール
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット・リン・ポーター アメリカ合衆国78750 テキサス州オー スチン ノッティー・パイン・コーブ 9800 (72)発明者 ジェームズ・クリストファー・ウィリー アメリカ合衆国95030 カリフォルニア 州モンテ・セレノ チャドボーン・レー ン 18392 (58)調査した分野(Int.Cl.7,DB名) H04N 7/10 H04N 7/14 - 7/173 H04N 7/20 - 7/22

Claims (44)

    (57)【特許請求の範囲】
  1. 【請求項1】それぞれがゼロ・コピー機能インターフェ
    ースの組をサポートする複数の異なる既存ファイル・シ
    ステムのうちの1つと、プロデューサ・モジュールおよ
    びコンシューマ・モジュールを相互接続するVCSと、
    共用メモリに相互接続された大容量記憶装置と、コンシ
    ューマ装置と、マルチメディア・ファイル・システム・
    デーモンと、前記コンシューマ装置および前記コンシュ
    ーマ・モジュールの間に配置された装置ドライバとを有
    するマルチメディア・データストリーミング・システム
    で使用するための方法において、 前記複数の異なる既存ファイル・システムへの汎用ファ
    イル・システム・インターフェースを確立するステップ
    と、 前記プロデューサ・モジュールから前記コンシューマ・
    モジュールへの前記データストリームのゼロ・コピー転
    送を実行するため前記汎用ファイル・システム・インタ
    ーフェースを呼び出すステップとを含む、前記既存ファ
    イル・システムを用いて前記データストリーム・ファイ
    ルの前記ゼロ・コピー機能をサポートするための方法。
  2. 【請求項2】前記インターフェースを確立するステップ
    が、前記プロデューサ・モジュールを用いて登録され、
    これによって呼び出すことのできるエクスポート登録サ
    ービスを前記既存ファイル・システムを用いて確立する
    ステップを含むことを特徴とする、請求項1に記載の方
    法。
  3. 【請求項3】前記エクスポート登録サービスが、マルチ
    メディア・ファイル・サービス・カーネル・サービス拡
    張であることを特徴とする、請求項2に記載の方法。
  4. 【請求項4】前記エクスポート登録サービスが、前記エ
    クスポート登録サービスおよび前記既存ファイル・シス
    テムへの関数記述子と前記ゼロ・コピー機能インターフ
    ェースへの関数記述子とを作ることを特徴とする、請求
    項3に記載の方法。
  5. 【請求項5】さらに、前記カーネル拡張を呼び出すため
    に前記プロデューサ・モジュールによって呼出し可能な
    前記関数記述子を取得するため、前記プロデューサ・モ
    ジュールから前記エクスポート登録サービスへの関数呼
    出しを発行するステップを含む、請求項4に記載の方
    法。
  6. 【請求項6】さらに、前記プロデューサ・モジュール
    に、前記データストリーム・ファイルが前記ゼロ・コピ
    ー機能の対象であることを検証させるために、前記VC
    Sを用いて前記プロデューサ・モジュールを呼び出すス
    テップを含むことを特徴とする、請求項5に記載の方
    法。
  7. 【請求項7】前記検証のステップが、データ構造を初期
    設定するステップと、前記データストリーム・ファイル
    に関連するパラメータを検査するステップとを含むこと
    を特徴とする、請求項6に記載の方法。
  8. 【請求項8】前記検証のステップが、前記データストリ
    ーム・ファイルがマルチメディア・ファイルであること
    を確認するステップを含むことを特徴とする、請求項7
    に記載の方法。
  9. 【請求項9】前記パラメータが、前記データストリーム
    ・ファイルの開始オフセット、終了オフセットおよび長
    さを含むことを特徴とする、請求項8に記載の方法。
  10. 【請求項10】さらに、割込みコンテキストからのデー
    タ転送をサポートするバッファの識別を取得し、これに
    よって、割込みコンテキスト内で前記データストリーム
    を前記大容量記憶装置内で突き止め、取出可能にするた
    め、前記プロデューサ・モジュールから前記カーネル・
    サービス拡張を呼び出すステップを含む、請求項9に記
    載の方法。
  11. 【請求項11】さらに、前記プロデューサ・モジュール
    からの前記カーネル・サービス拡張の前記呼出しに応答
    して、前記データストリーム・ファイルのファイル属性
    を記録するステップを含む、請求項10に記載の方法。
  12. 【請求項12】さらに、前記システムが、前記大容量記
    憶装置から前記共用メモリ内のバッファに転送するため
    に前記データストリーム・ファイルに関連するデータを
    用意する準備ができていることを示す標識を、前記プロ
    デューサ・モジュールから前記カーネル・サービス拡張
    に転送するステップを含む、請求項11に記載の方法。
  13. 【請求項13】さらに、前記データストリーム・ファイ
    ルに関連するデータの最初の取出を開始するステップを
    含む、請求項12に記載の方法。
  14. 【請求項14】前記最初の取出が、前記デーモンから発
    行される入出力コマンドに応答し、割込みコンテキスト
    での前記大容量記憶装置から共用メモリ内のバッファへ
    の取出であることを特徴とする、請求項13に記載の方
    法。
  15. 【請求項15】さらに、前記システムが、前記共用メモ
    リ内の前記バッファから前記コンシューマ装置への入出
    力の準備ができていることを示す、前記VCSから前記
    プロデューサ・モジュールへの関数呼出しを生成するス
    テップを含む、請求項14に記載の方法。
  16. 【請求項16】さらに、前記大容量記憶装置内の前記デ
    ータの次のバッファのファイル記述子およびオフセット
    を求める、前記プロデューサ・モジュールから前記カー
    ネル・サービス拡張への関数呼出しを生成するステップ
    を含む、請求項15に記載の方法。
  17. 【請求項17】さらに、前記入出力呼出しに応答して前
    記コンシューマ装置に出力される、前記共用メモリ内の
    正しいバッファを判定するため、前記カーネル・サービ
    ス拡張によって前記マルチメディア・ファイル・システ
    ムを検査するステップを含む、請求項16に記載の方
    法。
  18. 【請求項18】さらに、前記カーネル・サービス拡張を
    用いて、前記正しいバッファに対応するクロス・メモリ
    記述子を生成するステップを含む、請求項17に記載の
    方法。
  19. 【請求項19】さらに、前記カーネル・サービス拡張か
    ら前記プロデューサ・モジュール、前記VCSおよび前
    記コンシューマ・モジュールへ、前記クロス・メモリ記
    述子を順次配布するステップを含む、請求項18に記載
    の方法。
  20. 【請求項20】前記ドライバによって前記クロス・メモ
    リ記述子を受け取るステップと、 前記受け取られたクロス・メモリ記述子に応答して、前
    記ドライバによって共用メモリ内の前記正しいバッファ
    の前記データを前記コンシューマ装置に転送するステッ
    プとをさらに含む、請求項19に記載の方法。
  21. 【請求項21】前記データストリーム・ファイルが、割
    込みコンテキストでの転送に適合されていないかどうか
    を判定するために検査するステップと、 前記検査に応答して、プロセス・コンテキストで前記フ
    ァイルからのデータのバッファを獲得するステップとを
    さらに含む、請求項20に記載の方法。
  22. 【請求項22】さらに、割込みコンテキストで前記カー
    ネル拡張と前記デーモンとの間のメールボックス・イン
    ターフェースを確立するステップを含む、請求項21に
    記載の方法。
  23. 【請求項23】それぞれがゼロ・コピー機能インターフ
    ェースの組をサポートする複数の異なる既存ファイル・
    システムのうちの1つと、プロデューサ・モジュールお
    よびコンシューマ・モジュールを相互接続するVCS
    と、共用メモリに相互接続された大容量記憶装置と、コ
    ンシューマ装置と、マルチメディア・ファイル・システ
    ム・デーモンと、前記コンシューマ装置および前記コン
    シューマ・モジュールの間に配置された装置ドライバと
    を有するマルチメディア・データストリーミング・シス
    テムで使用するための装置において、 前記複数の異なる既存ファイル・システムへの汎用ファ
    イル・システム・インターフェースを確立する手段と、 前記プロデューサ・モジュールから前記コンシューマ・
    モジュールへの前記データストリームのゼロ・コピー転
    送を実行するため前記汎用ファイル・システム・インタ
    ーフェースを呼び出す手段とを含む、前記既存ファイル
    ・システムを用いて前記データストリーム・ファイルの
    前記ゼロ・コピー機能をサポートするための装置。
  24. 【請求項24】前記インターフェースを確立する手段
    が、前記プロデューサ・モジュールを用いて登録され、
    これによって呼び出すことのできるエクスポート登録サ
    ービスを前記既存ファイル・システムを用いて確立する
    手段を含むことを特徴とする、請求項23に記載の装
    置。
  25. 【請求項25】前記エクスポート登録サービスが、マル
    チメディア・ファイル・サービス・カーネル・サービス
    拡張であることを特徴とする、請求項24に記載の装
    置。
  26. 【請求項26】前記エクスポート登録サービスが、前記
    エクスポート登録サービスおよび前記既存ファイル・シ
    ステムへの関数記述子と前記ゼロ・コピー機能インター
    フェースへの関数記述子とを作ることを特徴とする、請
    求項25に記載の装置。
  27. 【請求項27】さらに、前記カーネル拡張を呼び出すた
    めに前記プロデューサ・モジュールによって呼出し可能
    な前記関数記述子を取得するため、前記プロデューサ・
    モジュールから前記エクスポート登録サービスへの関数
    呼出しを発行する手段を含む、請求項26に記載の装
    置。
  28. 【請求項28】さらに、前記プロデューサ・モジュール
    に、前記データストリーム・ファイルが前記ゼロ・コピ
    ー機能の対象であることを検証させるために、前記VC
    Sを用いて前記プロデューサ・モジュールを呼び出す手
    段を含むことを特徴とする、請求項27に記載の装置。
  29. 【請求項29】前記検証する手段が、データ構造を初期
    設定し、前記データストリーム・ファイルに関連するパ
    ラメータを検査する手段を含むことを特徴とする、請求
    項28に記載の装置。
  30. 【請求項30】前記検証する手段が、前記データストリ
    ーム・ファイルがマルチメディア・ファイルであること
    を確認する手段を含むことを特徴とする、請求項29に
    記載の装置。
  31. 【請求項31】前記パラメータが、前記データストリー
    ム・ファイルの開始オフセット、終了オフセットおよび
    長さを含むことを特徴とする、請求項30に記載の装
    置。
  32. 【請求項32】さらに、割込みコンテキストからのデー
    タ転送をサポートするバッファの識別を取得し、これに
    よって、割込みコンテキスト内で前記データストリーム
    ・ファイルを前記大容量記憶装置内で突き止め、取出可
    能にするため、前記プロデューサ・モジュールから前記
    カーネル・サービス拡張を呼び出す手段を含む、請求項
    31に記載の装置。
  33. 【請求項33】さらに、前記プロデューサ・モジュール
    からの前記カーネル・サービス拡張の前記呼出しに応答
    して、前記データストリーム・ファイルのファイル属性
    を記録する手段を含む、請求項32に記載の装置。
  34. 【請求項34】さらに、前記システムが、前記大容量記
    憶装置から前記共用メモリ内のバッファに転送するため
    に前記データストリーム・ファイルに関連するデータを
    用意する準備ができていることを示す標識を、前記プロ
    デューサ・モジュールから前記カーネル・サービス拡張
    に転送する手段を含む、請求項33に記載の装置。
  35. 【請求項35】さらに、前記データストリーム・ファイ
    ルに関連するデータの最初の取出を開始する手段を含
    む、請求項34に記載の装置。
  36. 【請求項36】前記最初の取出が、前記デーモンから発
    行される入出力コマンドに応答し、割込みコンテキスト
    での前記大容量記憶装置から共用メモリ内のバッファへ
    の取出であることを特徴とする、請求項35に記載の装
    置。
  37. 【請求項37】さらに、前記システムが、前記共用メモ
    リ内の前記バッファから前記コンシューマ装置への入出
    力の準備ができていることを示す、前記VCSから前記
    プロデューサ・モジュールへの関数呼出しを生成する手
    段を含む、請求項36に記載の装置。
  38. 【請求項38】さらに、前記大容量記憶装置内の前記デ
    ータの次のバッファのファイル記述子およびオフセット
    を求める、前記プロデューサ・モジュールから前記カー
    ネル・サービス拡張への関数呼出しを生成する手段を含
    む、請求項37に記載の装置。
  39. 【請求項39】さらに、前記入出力呼出しに応答して前
    記コンシューマ装置に出力される、前記共用メモリ内の
    正しいバッファを判定するため、前記カーネル・サービ
    ス拡張によって前記マルチメディア・ファイル・システ
    ムを検査する手段を含む、請求項38に記載の装置。
  40. 【請求項40】さらに、前記カーネル・サービス拡張を
    用いて、前記正しいバッファに対応するクロス・メモリ
    記述子を生成する手段を含む、請求項39に記載の装
    置。
  41. 【請求項41】さらに、前記カーネル・サービス拡張か
    ら前記プロデューサ・モジュール、前記VCSおよび前
    記コンシューマ・モジュールへ、前記クロス・メモリ記
    述子を順次配布する手段を含む、請求項40に記載の装
    置。
  42. 【請求項42】前記ドライバによって前記クロス・メモ
    リ記述子を受け取る手段と、 前記受け取られたクロス・メモリ記述子に応答して、前
    記ドライバによって共用メモリ内の前記正しいバッファ
    の前記データを前記コンシューマ装置に転送する手段と
    をさらに含む、請求項41に記載の装置。
  43. 【請求項43】前記データストリーム・ファイルが、割
    込みコンテキストでの転送に適合されていないかどうか
    を判定するために検査する手段と、 前記検査に応答して、プロセス・コンテキストで前記フ
    ァイルからのデータのバッファを獲得する手段とをさら
    に含む、請求項42に記載の装置。
  44. 【請求項44】さらに、割込みコンテキストで前記カー
    ネル拡張と前記デーモンとの間のメールボックス・イン
    ターフェースを確立する手段を含む、請求項43に記載
    の装置。
JP9321009A 1996-12-02 1997-11-21 マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法 Expired - Fee Related JP3037924B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/755866 1996-12-02
US08/755,866 US5931925A (en) 1996-12-02 1996-12-02 System and method for efficiently transferring datastreams in a multimedia system

Publications (2)

Publication Number Publication Date
JPH10224767A JPH10224767A (ja) 1998-08-21
JP3037924B2 true JP3037924B2 (ja) 2000-05-08

Family

ID=25040992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9321009A Expired - Fee Related JP3037924B2 (ja) 1996-12-02 1997-11-21 マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法

Country Status (9)

Country Link
US (1) US5931925A (ja)
EP (1) EP0853412B1 (ja)
JP (1) JP3037924B2 (ja)
KR (1) KR100259332B1 (ja)
CN (1) CN1093660C (ja)
AT (1) ATE296011T1 (ja)
CA (1) CA2222347C (ja)
DE (1) DE69733305T2 (ja)
TW (1) TW387074B (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141693A (en) * 1996-06-03 2000-10-31 Webtv Networks, Inc. Method and apparatus for extracting digital data from a video stream and using the digital data to configure the video stream for display on a television set
KR100231707B1 (ko) * 1997-08-04 2000-01-15 정선종 통신 장비의 디엠에이 처리 방법 및 그 장치
US6519686B2 (en) * 1998-01-05 2003-02-11 Intel Corporation Information streaming in a multi-process system using shared memory
KR20000065846A (ko) * 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR20010003383A (ko) * 1999-06-23 2001-01-15 정선종 멀티미디어 파일 시스템 및 이를 이용한 멀티미디어 데이터 처리 방법
US6747784B2 (en) 2000-03-20 2004-06-08 Np Photonics, Inc. Compliant mechanism and method of forming same
US6735620B1 (en) * 2000-07-18 2004-05-11 International Business Machines Corporation Efficient protocol for retransmit logic in reliable zero copy message transport
TW559702B (en) * 2000-08-31 2003-11-01 Nippon Telegraph & Telephone File transfer system, apparatus, method and computer readable medium storing file transfer program
US7424201B2 (en) * 2001-03-30 2008-09-09 Sandisk 3D Llc Method for field-programming a solid-state memory device with a digital media file
WO2002087235A1 (en) * 2001-04-19 2002-10-31 Vividon, Inc. System for applying metric to multimedia files over network
US8682939B2 (en) * 2002-05-22 2014-03-25 Teac Aerospace Technologies, Inc. Video and audio recording using file segmentation to preserve the integrity of critical data
US6938054B2 (en) * 2002-11-25 2005-08-30 International Business Machines Corporation Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system
JP4227931B2 (ja) 2004-04-15 2009-02-18 株式会社日立製作所 情報記憶装置、情報格納方法及び情報記憶処理プログラム
US7249208B2 (en) * 2004-05-27 2007-07-24 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory
KR100553348B1 (ko) * 2004-05-31 2006-02-20 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
GB2420639A (en) * 2004-11-24 2006-05-31 Hewlett Packard Development Co Monitoring Copy on write (COW) faults to control zero-copy data transfer
US9275157B2 (en) * 2005-12-21 2016-03-01 Digimarc Corporation Content metadata directory services
CN100464304C (zh) * 2006-08-29 2009-02-25 飞塔信息科技(北京)有限公司 一种基于Linux操作系统实现零拷贝的装置和方法
CN100502572C (zh) 2006-11-30 2009-06-17 华为技术有限公司 增大多媒体消息业务系统容量的方法及系统
KR100938470B1 (ko) * 2007-12-17 2010-01-25 한국전자통신연구원 스트리밍 데이터 공유를 위한 fc 기반의 네트워크스토리지 스트리밍 가속 장치 및 방법
CN102375789B (zh) * 2010-08-09 2014-05-28 中标软件有限公司 一种通用网卡非缓存的零拷贝方法及零拷贝系统
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
CN104918058A (zh) * 2015-05-26 2015-09-16 江苏高科物流科技股份有限公司 一种高效传送数据流的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341479A (en) * 1989-01-31 1994-08-23 Storage Technology Corporation Address mark triggered read/write head buffer
US5291608A (en) * 1990-02-13 1994-03-01 International Business Machines Corporation Display adapter event handler with rendering context manager
US5517652A (en) * 1990-05-30 1996-05-14 Hitachi, Ltd. Multi-media server for treating multi-media information and communication system empolying the multi-media server
US5161226A (en) * 1991-05-10 1992-11-03 Jmi Software Consultants Inc. Microprocessor inverse processor state usage
US5241669A (en) * 1992-04-20 1993-08-31 International Business Machines Corporation Method and system for sidefile status polling in a time zero backup copy process
US5404536A (en) * 1992-09-15 1995-04-04 Digital Equipment Corp. Scheduling mechanism for network adapter to minimize latency and guarantee background processing time
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
EP0707266B1 (en) * 1994-10-11 2002-01-09 Sun Microsystems, Inc. Methods and apparatus for a data transfer mechanism in the field of computer systems
US5802288A (en) * 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers

Also Published As

Publication number Publication date
ATE296011T1 (de) 2005-06-15
JPH10224767A (ja) 1998-08-21
EP0853412A3 (en) 2004-01-07
EP0853412A2 (en) 1998-07-15
DE69733305D1 (de) 2005-06-23
CA2222347A1 (en) 1998-06-02
CN1093660C (zh) 2002-10-30
KR19980063413A (ko) 1998-10-07
EP0853412B1 (en) 2005-05-18
CA2222347C (en) 2002-07-02
CN1184285A (zh) 1998-06-10
US5931925A (en) 1999-08-03
TW387074B (en) 2000-04-11
DE69733305T2 (de) 2006-01-19
KR100259332B1 (ko) 2000-06-15

Similar Documents

Publication Publication Date Title
JP3037924B2 (ja) マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法
JP4613023B2 (ja) プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
US5787300A (en) Method and apparatus for interprocess communications in a database environment
US5991823A (en) Low overhead object adaptor
US6298386B1 (en) Network file server having a message collector queue for connection and connectionless oriented protocols
US6385701B1 (en) Method, system and program products for sharing data between varied clients using token management
US7584222B1 (en) Methods and apparatus facilitating access to shared storage among multiple computers
US6119118A (en) Method and system for extending file system metadata
US6910082B1 (en) Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US5778384A (en) System and method for automounting and accessing remote file systems in Microsoft Windows in a networking environment
US5574903A (en) Method and apparatus for handling request regarding information stored in a file system
US6192398B1 (en) Remote/shared browser cache
US6687831B1 (en) Method and apparatus for multiple security service enablement in a data processing system
US6952736B1 (en) Object-based locking mechanism
US6971090B1 (en) Common Information Model (CIM) translation to and from Windows Management Interface (WMI) in client server environment
JP2001516097A (ja) 計測データの同期化した収集、処理、共用及びクライアントサーバーネットワークの同期化した制御の方法とシステム
JPH1021089A (ja) 対応する厳密例外機構を有するディジタル・コンピュータ上での遅延例外のエミュレート
US5968138A (en) Method and apparatus for peripheral system management, using multiple object interfaces
JP2002007182A (ja) 外部記憶装置の共有ファイル管理方式
US6633919B1 (en) Method, system and program product for managing the flow of data between senders and receivers of a computing environment
US7827194B2 (en) Access to shared disk device on storage area network
US20010011335A1 (en) Data processing system having a network and method for managing memory by storing discardable pages in a local paging device
JP4265728B2 (ja) データ・サーバ・システム内のデータの連続更新方法
US6044377A (en) User-defined object type and method of making the object type wherein a file associated with a rule is invoked by accessing the file which generates code at run time
JPH10333938A (ja) 計算機システムにおける実行ログの記録、表示方法、ならびに同方法を用いた計算機システム、及び同方法がプログラムされ記録される記録媒体

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080225

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090225

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees