JPH0926929A - 効率のよいデータ転送メカニズムに関する方法及び装置 - Google Patents

効率のよいデータ転送メカニズムに関する方法及び装置

Info

Publication number
JPH0926929A
JPH0926929A JP7289321A JP28932195A JPH0926929A JP H0926929 A JPH0926929 A JP H0926929A JP 7289321 A JP7289321 A JP 7289321A JP 28932195 A JP28932195 A JP 28932195A JP H0926929 A JPH0926929 A JP H0926929A
Authority
JP
Japan
Prior art keywords
data
memory
application
buffer
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP7289321A
Other languages
English (en)
Inventor
Yousef A Khalidi
ユーゼフ・エイ・カーリディ
Moti N Thadani
モチ・エヌ・サーデニ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH0926929A publication Critical patent/JPH0926929A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 アプリケーションが送信側装置のメモリ・オ
ブジェクトから受信側装置にデータを転送できる方法及
び装置の提供。 【解決手段】 アプリケーションは、オペレーティング
・システムが高速バッファとデータを記憶するメモリ・
オブジェクトの間のマッピングを設定するように要求す
る。次に、オペレーティング・システムが、高速バッフ
ァとメモリ・オブジェクトの間にマッピングを設定し、
これによって、アプリケーションは、メモリ・オブジェ
クトのデータを受信側装置に転送するように指示するこ
とが可能になる。従って、受信側装置は、送信側装置に
対する直接メモリ・アクセスを利用して、メモリ・オブ
ジェクトからデータを転送することが可能である。

Description

【発明の詳細な説明】
【0001】
【発明の技術分野】本発明は、コンピュータ・システム
の分野に関するものである。とりわけ、本発明は、コン
ピュータ・システム内の装置間におけるデータ転送に関
するものである。
【0002】
【従来の技術】入力/出力(I/O)サブシステムは、
オペレーティング・システム(カーネル)の一領域であ
る。この領域は、伝統的に、速度及び効率の向上に関し
て、他の領域よりも注目されなかった。従来、I/O装
置は、中央演算処理装置(CPU)及びメモリの速度に
比べると低速であり、I/Oシステムに対するソフトウ
ェアの要求はひかえめであり、大部分の機械はユニプロ
セッサである。
【0003】今日、大部分のオペレーティング・システ
ムのI/Oサブシステムは、そのI/Oシステム構築の
基本的仮定の多くがもはや有効ではなくても、旧システ
ムからのパラダイム転換が期待できない。例えば、アプ
リケーションが、ディスク・ファイルからデータを読み
取り、読み取ったデータをネットワーク装置に送る場
合、データは、ネットワーク装置に送信する前に、アプ
リケーションによる修正を受けるものと仮定される。こ
の仮定は、アプリケーションが入力としてデータを受信
し、次に、データに修正を施してから、出力として、そ
の修正済みのデータを送り出すという、データ処理のパ
ラダイムに基づくものである。従って、データが修正を
受けることを予測して、転送すべきデータは、ディスク
・ファイルから、その修正が可能なバッファにコピーさ
れる。ビデオ・サーバの場合、例えば、ビデオ・サーバ
・アプリケーションが、記憶されているビデオ・データ
に修正を加えず、代わりに、データを修正せずに、記憶
されているビデオ・データをネットワーク装置に送るこ
とだけしか指示しなければ、このデータ処理パラダイム
は適用されない。
【0004】100baseT Ethernet及び
ATMのような、高速ネットワーク媒体の出現は、既存
のI/O及びバッファ管理フレームワークの非効率性に
スポット・ライトを集めるのに役立った。アプリケーシ
ョンとオペレーティング・システム(カーネル)の間に
おけるデータのコピーは、この問題空間における主たる
オーバヘッドを表している。
【0005】アプリケーションが周辺装置からデータを
検索するための通常のインターフェイスは、データを読
み取るためのシステム・コールを送り出す。この読み取
りインターフェイスは、一般に、read(descr
iptor,buf,length)のように表すこと
が可能であり、ここで、アプリケーションは、記述子に
よって表される装置/ファイルから充填するサイズ「l
ength」バイトのバッファ「buf」をシステムに
供給する。同様に、アプリケーションによって周辺装置
にデータを送るために利用される通常のインターフェイ
スは、データを書き込むためのシステム・コールを送り
出す。この書込みインターフェイスは、一般に、wri
te(descriptor,but,length)
のように表すことが可能であり、ここで、アプリケーシ
ョンは、書き込まれるサイズ「length」バイトの
バッファ「buf」をシステムに与える。次に、アプリ
ケーションは、書込みコールが復帰するや否や、このバ
ッファを再利用することができる。ファイルまたはフレ
ーム・バッファのようなメモリ・オブジェクトの場合、
アプリケーションは、読み取られる/書き込まれるオブ
ジェクトをメモリに対してマッピングすることも可能で
ある。上記インターフェイスは、一般に、書込み時に
は、ユーザ・バッファからカーネル/装置バッファへの
コピーを必要とし、読み取り時には、カーネル/装置バ
ッファからユーザ・バッファへのコピーを必要とする。
【0006】通常の読み取り/書込みインターフェイス
に対する改良点は、高速バッファ(fbuf)・インタ
ーフェイスを実施することである。fbufインターフ
ェイスのキーとなる点は、データを取り扱う各種ドメイ
ン(アドレス空間)間におけるバッファの明示的交換で
ある。バッファのキャッシングは、プロセス間通信にお
ける局所性を利用するために実施される。1組のドメイ
ン間におけるデータ交換が済むと、利用されたバッファ
は、同じ組をなすドメイン内における他のデータ交換の
ためにセーブされる。
【0007】tbuf読み取りインターフェイスは、一
般に、read2(descriptor,buf,l
ength)のように表すことが可能であり、ここで、
アプリケーションは、データの読み取りを要求するが、
バッファを用意しない。従って、バッファは、システム
によって代わりに割り当てられる。同様に、fbuf書
込みインターフェイスは、一般に、writ2(des
criptor,buf,length)のように表す
ことが可能であり、ここで、アプリケーションによって
提供されるバッファは、コールが復帰する前に、システ
ムに引き渡される。fbufメカニズムの一例が、19
93年の14th ACM Symposium on
Operating Systems Princi
plesにおける、Peter Druschel及び
Larry L.PetersonによるFbufs:
A High−Bandwidth Cross Do
main Transfer Facilityに示さ
れている。
【0008】fbufインターフェイスの利点は、文字
ストリーム装置(任意の文字ストリングの入力及び出力
を可能にする装置であり、その例としては、ネットワー
ク・インターフェイス及び直列ライン装置がある)との
読み取りまたは書き込み時に、ゼロ・コピー・データ転
送メカニズムを使用可能にすることである。
【0009】一方、fbufインターフェイスの重大な
欠点は、fbufインターフェイスは、ディスク・ファ
イルとの読み取りまたは書き込み時に、やはり、コピー
が必要になるということである。このコピー要件は、例
えば、アプリケーションがディスク・ファイルからデー
タを読み取り、読み取ったデータをネットワーク装置に
送る場合に適用される。こうしたアプリケーションを利
用するシステムの一例としてビデオ・サーバがある。高
速バッファを利用して、ファイルからネットワークにデ
ータを転送するには、やはり、カーネル・ファイル・バ
ッファ(または、ディスク・ファイルに対してマッピン
グされたユーザ・バッファ)から高速バッファにデータ
をコピーし、読み取り操作の意味を維持することが必要
になる。従って、先行技術では、ディスクからネットワ
ークへの読み取りの最適化に関連した問題は取り扱って
いない。
【0010】
【発明が解決しようとする課題】本発明の目的は、アプ
リケーションが、ディスク、テープ、または、ネットワ
ークのような送信側装置のメモリ・オブジェクトから、
ディスク、テープ、または、ネットワークのような受信
側装置へのデータ転送を制御できるようにするための方
法及び装置を提供することにある。
【0011】
【課題を解決するための手段】アプリケーションは、オ
ペレーティング・システムが高速バッファとデータを記
憶するメモリ・オブジェクトの間にマッピングを実施す
るように要求することが可能である。次に、オペレーテ
ィング・システムは、高速バッファとメモリ・オブジェ
クトの間にマッピングを実施し、これによって、アプリ
ケーションが、メモリ・オブジェクトのデータを受信側
装置に転送するように指示することができる。受信側装
置は、送信側装置に対する直接メモリ・アクセスを利用
して、メモリ・オブジェクトからデータを転送する。さ
らに、アプリケーションが、転送の指示に先立って、メ
モリ・オブジェクトのデータの一部に修正を加えると、
受信側への転送前にデータの修正部分だけがメイン・メ
モリにコピーされる。
【0012】本書に解説のメカニズムによれば、汎用計
算環境において、メイン・メモリへのコピーをせずに、
送信側から受信側にデータを転送することが可能にな
る。このメカニズムは、汎用オペレーティング・システ
ム内において動作し、異なる装置、ファイル・システ
ム、及び、ユーザ・アプリケーションとうまく相互に機
能する一般的なメカニズムを提供することが可能であ
る。転送は、所定の送信元と宛先にとって、最も効率の
よいシステム部分において実施することが可能である。
例えば、送信側のメモリ・オブジェクトが、ファイルに
相当し、宛先が、ネットワーク・アダプタとディスク・
アダプタの両方が、同じI/Oバスに結合されたネット
ワークである場合、メモリ帯域幅を消費せずに、ディス
ク・アダプタからネットワーク・アダプタに、直接メモ
リ・アクセス(DMA)を直接開始することが可能であ
る。以前は、この操作は、ディスクからカーネルのメイ
ン・メモリへの転送、これに続く、カーネル・メモリか
らユーザ・バッファへの転送、さらに、ユーザ・バッフ
ァからネットワーク装置バッファへのデータ転送、そし
て、最後に、ネットワークへのデータ転送を必要とし
た。
【0013】
【実施例】以下の説明においては、解説を目的とし、本
発明の完全な理解が得られるように、特定の数、材料、
及び、構成が示される。当該技術の熟練者には明らかな
ように、本発明は、この特定の細部にこだわらずに実施
することが可能である。他の場合には、本発明を不必要
に不明瞭にならないようにするため、周知のシステム
は、線図またはブロック図の形式で示されている。
【0014】次に、図1を参照すると、本発明の実施例
を利用して、メモリ・オブジェクトとメイン・メモリ内
の高速バッファとの間におけるマッピングを設定するこ
とによって、データ転送を実施するコンピュータ・シス
テムが例示されている。コンピュータ・システム100
では、プロセッサ160によって、メイン・メモリ11
0に記憶されているオペレーティング・システム命令1
70及びアプリケーション命令180を実行することが
可能である。代替案として、オペレーティング・システ
ム命令170は、メイン・メモリ110から独立したメ
モリ(不図示)に記憶することも可能である。こうした
場合、独立メモリは、ランダム・アクセス・メモリ(R
AM)及び読み取り専用メモリ(ROM)のいずれか任
意のほうとすることが可能である。同様に、アプリケー
ション命令180も、メイン・メモリ110から独立し
たRAMまたはROMに記憶することが可能である。
【0015】コンピュータ・システム100において、
バッファ・マッピング140は、送信側装置120のメ
モリ・オブジェクト125とメイン・メモリ110の高
速バッファ115の間で設定される。従って、データ転
送150は、送信側装置120から受信側装置130に
直接実施することが可能になる。
【0016】送信側装置120は、マッピングの設定が
可能なメモリ・オブジェクトを備える任意の装置とする
ことが可能である。実施例の1つでは、送信側装置12
0はディスク・ドライブである。代替案では、送信側装
置120はテープ・ドライブである。さらにもう1つの
実施例では、送信側装置120は文字ストリーム装置
(例えば、ネットワーク・インターフェイス)である。
【0017】同様に、受信側装置130は、データを送
り届けることが可能な任意の装置とすることが可能であ
る。実施例の1つでは、受信側装置130はストリーム
状の装置である(例えば、ネットワーク・インターフェ
イス)。代替案として、受信側装置130をディスク・
ドライブまたはテープ・ドライブとすることも可能であ
る。
【0018】文字ストリーム送信側装置120からマッ
ピングを施したファイル受信側装置130への転送が実
施される特殊ケースの場合には、マッピングを施したフ
ァイルから高速バッファが生じるので、注意しなければ
ならない。送信側装置120と受信側装置130の間に
おいて、データ順を維持しなければならない。例えば、
この順序は、送信側、ネットワーク媒体、及び、受信側
でデータ順を維持するネットワーク・プロトコルを用い
ることによって、確保することができる。
【0019】本発明には、汎用計算環境において、コピ
ーを行わずに、ディスクからネットワークへデータを転
送できるようにするインターフェイスが含まれている。
このインターフェイスは、汎用オペレーティング・シス
テム内において動作し、異なる装置及びユーザ・アプリ
ケーションとうまく相互に機能する一般的なインターフ
ェイスを形成することが可能である。
【0020】readであれ、あるいは、read2で
あれ、読み取りコールの意味は、バッファにデータを戻
す必要があるということである。ディスクからデータを
読み取って、(通常)そのデータに操作を加えずに、ネ
ットワークに対して送り出そうとする場合、最初にデー
タに対するマッピングを設定すると、より効率のよい転
送メカニズムを得ることができる。この特殊マッピング
は、メモリ・オブジェクト(例えば、ファイル)からマ
ッピングされた(しかし、充填されていない)バッファ
を復帰させる。write2操作によって使用される前
に、データが必要になる場合には、アプリケーションが
メモリ・マッピングを施したバッファに接触する際、通
常通りコピーが行われる。しかし、write2操作を
利用して、バッファの書込みが行われる場合にはコピー
は行われない。さらに、実際のビットが、ハードウェア
I/Oメモリ階層の最も効率のよい部分を利用して、デ
ィスクからネットワークに転送されるように(例えば、
ある装置から別の装置への直接メモリ・アクセス(DM
A)のように)、最適化が可能である。
【0021】ただ単に標準的なマップ・コール(例え
ば、UNIXにおけるmmapコール)を利用するだけ
では、この転送は実施できないという点に留意された
い。これは、標準的なマップ・コールによって、メモリ
・オブジェクトとアプリケーション・バッファの間にマ
ッピングが設定されるためである。しかし、write
2コールは、特殊バッファを必要とする。従って、標準
的なマップ・コールは、メモリ・オブジェクトとwri
te2コールによって必要とされる高速バッファとの間
にマッピングを設定しない。
【0022】実施例の1つでは、下記のシステム・コー
ルが定義される:mmap2(descriptor,offsett,addr,leng
th,protections,flags)
【0023】mmap2コールは、そのコールにおいて
指示された保護を利用し、指定されたメモリ・オブジェ
クトの先頭からのオフセットで指定された長さに関し
て、記述子によって表されるメモリ・オブジェクトにマ
ッピングを施す。そのコールは、アドレスaddrにお
いてマッピングされたバッファを復帰させる。
【0024】アプリケーションが、メモリ・マッピング
を施されたバッファ(の一部)に接触すると、システム
は、メモリ・オブジェクトから物理的メモリにデータを
コピーする。接触したページだけしかコピーされないと
いう点に留意されたい。
【0025】図2には、転送前にアプリケーションによ
るデータ修正のため、カーネル・バッファに対するコピ
ーが要求されるデータ転送例が示されている。図2にお
いて、メモリ・オブジェクト125の修正を受ける部分
は、高速バッファ115に転送される(240)。その
後、修正済みのデータ250は受信側装置130に転送
される。非修正データ270は、送信側装置120のメ
モリ・オブジェクト125から受信側装置130に直接
転送することが可能である。
【0026】mmap2から復帰したバッファは、re
ad2から復帰したバッファと同じように取り扱うこと
ができる。従って、このバッファは前述のwrite2
コールを利用して書込みが可能である。write2に
与えられたバッファと同様、write2コールが復帰
すると、そのバッファはシステムに引き渡される。
【0027】write2の実施例の1つに対して、そ
のバッファがmmap2コールを利用して得られたもの
か否かを判定するチェックを行う。もしそうであれば、
データは、送信側メモリ・オブジェクトから着信側装置
(ここで、着信側装置は、write2コールに指定さ
れた記述子によって表示される)に転送される。
【0028】特定の送信側及び着信側が指示されると、
この転送は、ハードウェア・メモリ・システム/バスの
最も効率のよい部分において実施される。従って、例え
ば、送信側メモリ・オブジェクトがファイルに相当し、
着信側がネットワークであって、かつネットワーク・ア
ダプタとディスク・アダプタが両方とも同じI/Oバス
で接続される場合、メモリ帯域幅を消費せずに、ディス
ク・アダプタからネットワーク・アダプタへの直接メモ
リ・アクセス(DMA)を開始することが可能である。
この機能は、より高度なハードウェア編成において活用
することが可能である。以前は、ディスクからメイン・
メモリへの転送と、これに続く、メイン・メモリからネ
ットワークへの転送とが必要とされた。
【0029】代替実施例に関して、mapping_t
o_buf操作が定義される。この実施例の場合、ma
pping_to_bufコールが、通常のシステムm
mapコールによって復帰したメモリ・マッピングを施
した領域に適用される。こうした操作は、一般に有効で
はあるが、バッファを得るのに2つのコールが必要にな
るので(単一のmmap2コールの代わりに、mmap
コールにmapping_to_bufコールが後続す
る)、この代替実施例は、前述の実施例に比べてコスト
がかかる。さらに、単一mmap2コールが利用される
と、そのコールによって伝達される意味情報がバッファ
を得るマッピングの最適化の実現を可能にするが、2つ
のコールを利用すると、この情報の伝達が第2のコール
まで遅れることになる。
【0030】従って、本書に提示のメカニズムによれ
ば、ディスクからネットワークへの、ゼロ・コピーの効
率のよいデータ転送を実施し、同時に、汎用オペレーテ
ィング・システムのフレキシビリティを保持することが
可能になる。用いられる全てのコールは、I/Oシステ
ムの他の部分に適用可能であり、任意のユーザ・アプリ
ケーションによって利用可能である。この解決策は、カ
ーネルに限定されるものではなく、特殊化アプリケーシ
ョンまたは装置に限定されるものでもない。
【0031】ディスクとネットワークの間における転送
は、コンピュータ・システムの最も効率のよい部分を利
用して、実施することが可能である。これは、mmap
2にwrite2が後続する組み合わせによって、2つ
のこと、すなわち、ファイルに対する高速バッファのマ
ッピング、及び、これに続くコピーを必要としない書込
みが可能になる。従って、最も適切な瞬間まで、送信側
ディスクから着信側ネットワークへのデータ転送が行わ
れる時点を遅延させることが可能である。
【0032】転送メカニズムは、特定のオペレーティン
グ・システムから独立しているが、下記の実施例では、
アプリケーション・プログラムとUNIXカーネルの間
におけるバッファ管理及び交換に関する効率のよいゼロ
・コピー・フレームワークが解説される。基礎となるバ
ッファ管理フレームワーク、及び、それと高速ネットワ
ーク化ソフトウェアの統合に関する論述と共に、アプリ
ケーション・プログラミング・インターフェイスが提示
される。提示の仮想高速バッファ・メカニズムは、ファ
イル・システムとネットワークI/Oの組み合わせを取
り扱うため、ネットワークのスループットを気にせずに
動作する。フレームワークは、Solarisのよう
な、汎用の、市販されている、UNIXベースのオペレ
ーティング・システムによって実施することにより、典
型的なUNIX I/O動作(例えば、レイヤ処理、チ
ェック・サムの計算、データ移動)のデータ接触オーバ
ヘッドを減少させることが可能である。この改良は、ネ
ットワーク化/分散マルチメディア・システムのよう
に、超高速の大量データ転送を必要とするアプリケーシ
ョンにおいて極めて明らかになる。
【0033】名前仮想高速バッファ(virtual
fbuf)を利用して、本書に解説の転送メカニズムと
伝統的な高速バッファ・メカニズムが区別される。新し
いアプリケーション・プログラミング・インターフェイ
スについては、基礎となるバッファ管理フレームワー
ク、及び、それとUNIXによるネットワーク化の実施
との統合と共に論じられる。さらに、基本fbufメカ
ニズムが、ファイル(ディスク)I/Oを含むように拡
張される。
【0034】伝統的なUNIX read/write
システム・コールの意味は、暗黙的に、バッファの転送
ではなく、データ・コピーを必要とするということであ
る。伝統的なUNIX readインターフェイスの構
文では、アプリケーション・プログラムがバッファのア
ドレスを供給する必要があるので、カーネルからアプリ
ケーションへのバッファの転送にとって不十分である。
仮想fbufメカニズムは、これらの欠点を取り扱う新
しいアプリケーション・プログラミング・インターフェ
イスを定義することによって、その概念をUNIX環境
に適応させる。
【0035】仮想fbufの以下の特性に留意された
い。各仮想fbufは、アプリケーション・プログラム
またはカーネルによって所有されるか、または、仮想f
bufバッファ・プール内に含まれる。出力時に、仮想
fbuf(任意のバッファではなく)をカーネルに送る
ことによって、アプリケーションは、伝統的な書込みシ
ステム・コールの定義に潜在するデータ・コピー・オー
バヘッドの節約が保証される。
【0036】同様に、入力時に、カーネルから仮想fb
uf(任意のバッファではなく)にデータを受信するこ
とによって、アプリケーションは、伝統的な読み取りシ
ステム・コールのデータ・コピー・オーバヘッドの節約
が保証される。
【0037】I/Oサブシステム(装置ドライバ、ST
REAMSモジュール/ドライバ(1990年の、AT
&Tによる、「AT&T Streams Refer
ence」参照のこと)、ファイル・システム )は、
仮想fbufを割り当てることが可能である。最適な利
用に関して、I/Oサブシステムは、ディスクまたはテ
ープI/Oの場合のように、入力を開始する前に、ある
いは、ネットワークまたは直列ラインI/Oの場合のよ
うに、受信したデータのある部分を調べることによっ
て、利用するのに適したバッファ・プールを判定するこ
とができる。
【0038】各種装置ドライバのカーネル・アドレスと
I/Oアドレス間における翻訳のキャッシングは、各ア
プリケーション・アドレス空間における任意のバッファ
と比較すると、小さいプール・サイズと、結果生じるf
bufの再使用によって容易である。こうしたキャッシ
ングによって、オーバヘッドがさらに節約される。
【0039】仮想fbufメカニズムによれば、メモリ
参照を利用する代わりに、高速バッファを5つの組<コ
ンテキスト、ユーザ・アドレス、装置、オフセット、長
さ>として実施することによって、fbufの概念が強
化される。必ずしも、バッファが割り当てられる場合で
もなく、あるいは、バッファが、アドレス空間(ドメイ
ン)間で受け渡される場合でもなく、内容がアクセスさ
れた場合に限って、バッファの内容を保持するためのメ
モリが割り当てられる。この区別によって、その表現を
I/Oの遅延評価の基礎とすることが可能になるので、
fbufフレームワークにより大きいパワーとフレキシ
ビリティが与えられることになる。一例として、I/O
装置間における動的結合を構築する可能性がある。こう
したシナリオによれば、これらのバッファを高性能ハー
ドウェア構成に関連して利用することによって、UNI
Xファイル・システムを介したアプリケーション制御に
よる装置間データ転送が可能になる。
【0040】もとのfbufの概念は、<コンテキス
ト、ユーザ・アドレス、装置、オフセット、長さ>とい
う5組のfbuf表現を利用して、UNIXファイルに
マッピングされるアプリケーション・アドレス空間の部
分から仮想fbufを自動的に生成するインターフェイ
スを設けることによって、メモリ・マッピングを施した
ファイルに拡張される。
【0041】仮想fbufアプリケーション・プログラ
ミング・インターフェイスは、ファイル(装置)記述子
から読み取られるデータ、及び、ファイル(装置)記述
子に書き込まれるデータをバッファに割り当てるため、
システム・コール及びライブラリ・ルーチンを可能にす
る。下記のインターフェイスは、標準的なANSIC言
語構文を利用して定義されている。vf_read、v
f_write、及び、vf_mapは、それぞれ、r
ead2、write2、及びmmap2に対応する。
【0042】 ssize_t vf_read (int fd,void **bufpp,size_t nbytes) ssize_t vf_write (int fd,const void *bufp,size_t nbytes) caddr_t vf_mmap (caddr_t addr,size_t len,int prot,int flags, int filedes,off_t off) void *vf_allocate (size_t size) void *vf_deallocate (voidptr,size_t size)
【0043】データを読み取り、そのデータを処理する
か、または、廃棄するアプリケーションは、vf_re
adインターフェイスを利用することができる。データ
を読み取り、オプションでそのデータにフィルタリング
を施し、その(フィルタリングを施された)データを書
き込むアプリケーションは、vf_readインターフ
ェイスを利用するか、あるいは、vf_writeイン
ターフェイスが後続するvf_mmapインターフェイ
スを利用することが可能である。データを発生し、次
に、その発生したデータを書き込むアプリケーション
は、vf_writeインターフェイス及びvf_de
allocateインターフェイスが後続するvf_a
llocateインターフェイスを利用することが可能
である。
【0044】vf_readインターフェイスは、やは
り、カーネルによって割り当てられるアドレス *buf
ppにカーネルによって割り当てられる新しいバッファ
へデータを読み取る点を除けば、標準的なUNIX r
eadインターフェイスと同様である。
【0045】vf_writeインターフェイスは、下
記の顕著な点を除けば、標準的なUNIX write
インターフェイスと同様である。
【0046】1.アドレスbufpのバッファは、コー
ルが復帰するとオペレーティング・システムに転送され
る。アプリケーションの観点からすると、コールが復帰
すると、あたかも暗黙的vf_deallocateが
生じるかのように見える。コールの復帰後、バッファ *
bufpにアクセスし、あるいは、これを修正しようと
する試みの結果は、不明確である。
【0047】2.アドレスbufpのバッファは、 (a)bufp=vf_allocate(size) に対するコールによって明示的にあるいは、 (b)size=vf_read(fd,&bufp,
nbytes) をコールすることによって暗黙的に、あるいは、 (c)bufp=vf_mmap(addr,len,
prot,flags,filedes,off)+o
ffset (ここで、offsetは、len未満)のvf_mm
apコールを利用して、他の何らかのファイルfile
desにマッピングされたユーザ・アドレス空間の範囲
内において、バッファを参照することによって、割り当
てられなければならなかった。
【0048】vf_mmapインターフェイスは標準的
なUNIX mmapと似ている。ただし、それには、
ファイルにマッピングされたユーザ・アドレス範囲のど
の部分でも、vf_writeコールにおいて利用可能
であり、仮想fbufとして取り扱われるという追加特
性が備わっている。vf_allocateインターフ
ェイスは仮想fbufアロケータである。vf_dea
llocateインターフェイスはvf_alloca
teの相補機能である。これは、仮想fbuf割り当て
解除する。
【0049】バッファ割り当てメカニズムvf_all
ocateは、プロセス仮想アドレス空間に十分な空間
が存在する場合でも、エラー・コードENOMEMのた
めに失敗する可能性がある。アプリケーションは、成功
する(または、異なる理由で失敗する)まで、失敗した
コールを再試行することで、こうした失敗に対処するよ
うに書くことが可能である。代替案として、失敗が生じ
ると、標準的なread/writeインターフェイス
に戻り、これによって、失敗の取り扱いをアプリケーシ
ョン・ライタにとって透過性にするライブラリに、上述
のコールを封じ込めることも可能である。
【0050】また、仮想fbufメカニズムによって、
I/Oサブシステムが仮想fbufの割り当て及び解除
を行うための、下記のカーネル・フックも得られる。
【0051】 void *vf_pid2handle (pid_t pid,caddr_t) mblk_t *vf_allocb (void*handle,int size)
【0052】vf_pid2handleインターフェ
イスは、pidパラメータによって識別されるプロセス
の代わりに、I/OのためのI/Oサブシステムによる
仮想fvuf割り当てに用いられる不透過性ハンドルを
復帰させる。仮想fbufバッファ・プールがpidに
よって識別されるプロセスのために存在しない場合に
は、NULL値のハンドルを復帰させる。
【0053】vf_allocbインターフェイスは、
mblk_tに基づく仮想fbufにポインタを割り当
てかつ戻す。このインターフェイスは、どの仮想fbu
fバッファ・プールから、mblk_tを割り当てるべ
きかを指定するハンドル・パラメータを除けば、STR
EAMS routine allocbに似ている。
仮想fbufバッファ・プールからmblk_tを割り
当てることができない場合、mblk_tの割り当ては
allocbを利用して行われる。NULLの復帰は、
mblk_tを割り当てることができないということを
表している。仮想fbufをベースにしたmblk_t
は、割り当て解除するか、あるいは、STREAMS
routine freebを利用して、バッファ・プ
ールに戻すことが可能である。
【0054】この実施は、論理的に、バッファ・プール
・マネージャ(図3)及びシステム・コール・コンポー
ネント(図4)に分割される。
【0055】図3には、転送メカニズムの実施例の1つ
に関するバッファ・プール・マネージャが示されてい
る。仮想fbufバッファを利用する各アプリケーショ
ン・プログラムは、バッファ・プール・マネージャ31
0の異なる例に関連している。バッファ・マネージャ3
10は、メモリの割り当て、独立した各仮想fbufの
割り当て/割り当て解除の追跡、ユーザ・アドレスとカ
ーネル・アドレスの間におけるマッピングの管理、及
び、fbufと既存のI/Oフレームワークの間におい
て変換を行うためのメカニズム(例えば、STREAM
Sフレームワークによって利用されるmblk)の提供
に責任を負う。これらの機能は、それぞれ、メモリ・ア
ロケータ320、トラッカ330、アドレス・トランス
レータ340、及び、バッファ・コンバータ350によ
って実施される。
【0056】各バッファ・プールは、いくつかのセグメ
ントから構成される。セグメントは、標準的なmmap
インターフェイスを支援することが可能なファイル・シ
ステム・オブジェクト360によってバック・アップさ
れる、連続した範囲のユーザ・アドレスを表している。
バッファ・プール・マネージャ310は、それ自体、こ
うしたファイル・システム・オブジェクトの特殊例であ
り、匿名のメモリの供給者である。物理的メモリの割り
当ては、可能性のある最遅の瞬間まで、すなわち、アプ
リケーション・プログラムが、fbufにアクセスする
(ページ・フォールトを生じさせる)か、あるいは、ア
プリケーションが、fbufをカーネルに転送するか、
あるいは、I/Oサブシステムが、プールからfbuf
を割り当てるまで、据え置かれる。この割り当ては、ブ
ロック単位で実施され、ブロック・サイズは、同調可能
なパラメータである。
【0057】カーネル及びアプリケーション・プログラ
ムからのfbufの同時割り当て及び割り当て解除が支
援される。これを可能にするため、バッファ・マネージ
ャ310のトラッカ330は、カーネル・アロケータ/
デアロケータ・コンポーネント333と、ユーザ・ライ
ブラリ・アロケータ/デアロケータ・コンポーネント3
37を備えている。両方のドメインにおいて、アロケー
タ/デアロケータ・コンポーネント333は、フリーな
fbufのリスト370にアクセスし、操作を加える。
フリー・リスト370は、これによって、一貫した状態
に保たれ、操作は、2つのドメインに対して自動に保た
れる。
【0058】実施例の1つでは、フリー・リスト370
は、1がフリー・ページを表し、0が割り当て済みのペ
ージを表す、ビット・ストリングとして実施される。そ
のストリングは、それぞれ、ページ・ビットを含んでい
るワード単位でアクセスされる(アーキテクチャのネイ
ティブ・ワード・サイズを利用して)。スピン・ロック
によって、同時アクセスを管理するため、各ワードへの
アクセスが保護される。各ワード毎のロックは、少数の
命令(割り当て要求を満たすか、あるいは、ページがフ
リーであることを表すビットをセットするのに十分なフ
リー・ページが存在することを判定するのに十分な)に
関して保持されるだけであり、従って、ロックが保持さ
れている間に、スピニングが実施される。
【0059】この実施例に関して、ロックを保持してい
る間、アプリケーション・プログラムを優先使用するこ
とによって、潜在的な性能問題を生じることになる可能
性がある点に留意されたい。従って、ビットマップ・ス
トリングに対する同調可能な数の反復が済むと、カーネ
ル割り当ては失敗する。同様に、カーネル・デアロケー
タは、同調可能な数の反復内において、適合するロック
を獲得するのに失敗し、それより後の時点において割り
当て解除を実施しようとする場合、内部待ち行列におい
て割り当て解除を待機させる。
【0060】一般的なケースでは、バッファのユーザ・
アドレス及びカーネル・アドレスは異なることになる。
バッファ・マネージャのアドレス・トランスレータ34
0は、マッピングを維持し、1つのマッピングをもう1
つのマッピングから決定することができるようにする。
【0061】アドレス翻訳以外に、バッファ・マネージ
ャ310は、fbufと既存のI/Oフレームワークの
バッファの間で変換を行うメカニズム350(例えば、
STREAMSフレームワークによって利用されるmb
lk)も提供する。この変換機能によって、各fbuf
と、既存のI/Oドライバ、ネットワーク・プロトコル
・スタック等との統合が容易になる。
【0062】バッファ・マネージャ310は、動的にロ
ードされた装置ドライバとして実施される。システム・
コール・コンポーネントは動的にロードされる。Sol
arisシステムにfbuf能力を付与するのに必要な
ものは、これら2つのコンポーネントだけである。図4
には、転送メカニズムの実施例の1つに関するシステム
・コール・コンポーネント400内におけるマッピング
・インターフェイス410、読み取りインターフェイス
420、及び、書き込みインターフェイス430が示さ
れている。
【0063】実施のシステム・コールには、いくつかの
制限があるので、コールの復帰後、アプリケーションに
よってバッファに修正を加えなければならない。一般
に、I/Oサブシステム及びオペレーティング・システ
ムは、この規律を強制しない。バッファに対する制限条
件が満たされない場合、vf_writeの実施は、v
f_deallocateが後続する標準的なwrit
eコールに変わる。
【0064】実施例の1つでは、共用が、個々のアプリ
ケーションとカーネルの間だけにおいて生じ、任意のア
プリケーション間では生じないことを保証するため、仮
想fbufプールは、プロセスidによって区分化され
る。
【0065】現在のところ望ましい実施例及び代替実施
例に関連して、本発明の方法及び装置について解説して
きたが、当該技術の熟練者には明らかなように、本発明
は、付属の請求項の精神及び範囲内において、修正及び
変更を加えて実施することが可能である。従って、明細
書及び図面は、制限を意味するものではなく、例示を意
味するものであるとみなすべきである。
【図面の簡単な説明】
【図1】 本発明の実施例を利用し、メイン・メモリ内
のメモリ・オブジェクトと高速バッファの間にマッピン
グを設定することによって、データ転送を実施するコン
ピュータ・システムを示す図である。
【図2】 転送前におけるアプリケーションによるデー
タ修正のために、カーネル・バッファへのコピーが必要
になるデータ転送例を示す図である。
【図3】 転送メカニズムの実施例の1つに関するバッ
ファ・プール・マネージャを示す図である。
【図4】 転送メカニズムの実施例の1つに関するシス
テム・コール・コンポーネント内のマッピングインター
フェイス、読み取りインターフェイス、及び、書き込み
インターフェイスを示す図である。
【符号の説明】
100 コンピュータ・システム 110 メイン・メモリ 115 高速バッファ 120 送信側装置 125 メモリ・オブジェクト 130 受信側装置 140 バッファ・マッピング 150 データ転送 160 プロセッサ 170 オペレーティング・システム命令 180 アプリケーション命令 310 バッファ・プール・マネージャ 320 メモリ・アロケータ 330 トラッカ 340 アドレス・トランスレータ 350 バッファ・コンバータ 370 フリー・リスト 400 システム・コール・コンポーネント 410 マッピング・インターフェイス 420 読み取りインターフェイス 430 書き込みインターフェイス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 モチ・エヌ・サーデニ アメリカ合衆国 95054・カリフォルニア 州・サンタ クララ・ビスタ クラブ サ ークル・ナンバ203・1540

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 (A)オペレーティング・システムが、
    高速バッファと、送信側装置のデータを記憶しているメ
    モリ・オブジェクトとの間のマッピングを設定すること
    をアプリケーションが要求するステップと、 (B)オペレーティング・システムが、高速バッファと
    メモリ・オブジェクトの間のマッピングを実行するステ
    ップと、 (C)アプリケーションが、高速バッファにマッピング
    されたメモリ・オブジェクトのデータを受信側装置に転
    送するように指示するステップとから構成されるデータ
    転送を制御する方法。
  2. 【請求項2】 さらに、受信側装置が、送信側装置に対
    する直接メモリ・アクセスを利用して、メモリ・オブジ
    ェクトからデータを転送するステップが含まれることを
    特徴とする請求項1に記載の方法。
  3. 【請求項3】 アプリケーションが、メモリ・オブジェ
    クトのデータにステップ(C)の前に修正を加える場
    合、受信側装置に対する転送に先立って、メイン・メモ
    リにデータをコピーするステップが含まれることを特徴
    とする請求項1に記載の方法。
  4. 【請求項4】 アプリケーションが、メモリ・オブジェ
    クトのデータにステップ(C)の前に修正を加える場
    合、受信側装置に対する転送に先立って、メイン・メモ
    リにデータの修正部分だけをコピーするステップが含ま
    れることを特徴とする請求項1に記載の方法。
  5. 【請求項5】 高速バッファと、送信側装置のデータを
    記憶しているメモリ・オブジェクトとの間のマッピング
    をオペレーティング・システムが行うことをアプリケー
    ションに要求させるマッピング要求手段と、 オペレーティング・システムが、メモリ・オブジェクト
    と高速バッファの間におけるマッピングを実行するマッ
    ピング手段と、 高速バッファにマッピングされたメモリ・オブジェクト
    のデータを受信側装置に転送するようにアプリケーショ
    ンに指示させる書込み手段とから構成されるデータ転送
    を制御する装置。
  6. 【請求項6】 さらに、受信側装置が、送信側装置に対
    する直接メモリ・アクセスを利用して、メモリ・オブジ
    ェクトからのデータ転送を行える直接メモリ・アクセス
    手段が含まれていることを特徴とする請求項5に記載の
    装置。
  7. 【請求項7】 さらに、アプリケーションが、メモリ・
    オブジェクトのデータを受信側装置に転送するように指
    示する前に、メモリ・オブジェクトのデータに修正を加
    えると、これを検出し、また、アプリケーションがデー
    タに修正を加えると、受信側装置に転送する前に、メイ
    ン・メモリにデータをコピーするコピー手段が含まれて
    いることを特徴とする請求項5に記載の装置。
  8. 【請求項8】 さらに、アプリケーションが、メモリ・
    オブジェクトのデータを受信側装置に転送するように指
    示する前に、メモリ・オブジェクトのデータの一部に修
    正を加えると、これを検出し、また、アプリケーション
    がデータに修正を加えると、受信側装置に転送する前
    に、メイン・メモリにデータの修正部分だけをコピーす
    るために用いられるコピー手段が含まれていることを特
    徴とする請求項5に記載の装置。
  9. 【請求項9】 システム・コール・コンポーネントが、
    高速バッファが送信側装置のデータを記憶しているメモ
    リオブジェクトにマッピングされるようにアプリケーシ
    ョンに指定させ、また、メモリのデータが受信側装置に
    転送されるようにアプリケーションに指定させるステッ
    プと、 バッファ・プール・マネージャが、システム・コール・
    コンポーネントの指令を受けて、高速バッファに対する
    メモリ・オブジェクトのマッピングを実施するステップ
    から構成される、 データ転送を制御するための装置を設ける方法。
  10. 【請求項10】 メイン・メモリにアプリケーション及
    びオペレーティング・システム命令が記憶されているコ
    ンピュータ・システムで、データを記憶しているメモリ
    ・オブジェクトを備えた送信側装置から受信側装置への
    データ転送を制御する方法において、 高速バッファとメモリ・オブジェクトとの間のマッピン
    グをオペレーティング・システムによって実施すること
    をアプリケーションが要求するステップと、 オペレーティング・システムが、高速バッファとメモリ
    ・オブジェクトとの間のマッピングを実施するステップ
    と、 アプリケーションが、高速バッファに対してマッピング
    されたメモリ・オブジェクトのデータを受信側装置に転
    送するように指示するステップとから構成される方法。
  11. 【請求項11】 メイン・メモリにアプリケーション及
    びオペレーティング・システム命令が記憶されているコ
    ンピュータ・システムにおける、データを記憶している
    メモリ・オブジェクトを備えた送信側装置から受信側装
    置へのデータ転送を制御するための装置において、 オペレーティング・システムが高速バッファとメモリ・
    オブジェクトとの間のマッピングを実施することをアプ
    リケーションに要求させるマッピング要求手段と、 オペレーティング・システムに高速バッファとメモリ・
    オブジェクトとの間のマッピングを実施させるマッピン
    グ手段と、 高速バッファに対してマッピングされたメモリ・オブジ
    ェクトのデータを受信側装置に転送するようにアプリケ
    ーションに指示する書込み手段とから構成される装置。
JP7289321A 1994-10-11 1995-10-11 効率のよいデータ転送メカニズムに関する方法及び装置 Withdrawn JPH0926929A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32113394A 1994-10-11 1994-10-11
US08/321133 1994-10-11

Publications (1)

Publication Number Publication Date
JPH0926929A true JPH0926929A (ja) 1997-01-28

Family

ID=23249318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7289321A Withdrawn JPH0926929A (ja) 1994-10-11 1995-10-11 効率のよいデータ転送メカニズムに関する方法及び装置

Country Status (4)

Country Link
US (1) US6405237B1 (ja)
EP (1) EP0707266B1 (ja)
JP (1) JPH0926929A (ja)
DE (1) DE69524916T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4886685B2 (ja) * 2004-07-14 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・プロトコル処理のオフロードにおいてメモリ管理をサポートする装置および方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931925A (en) * 1996-12-02 1999-08-03 International Business Machines Corporation System and method for efficiently transferring datastreams in a multimedia system
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
WO1999026377A2 (en) * 1997-11-17 1999-05-27 Mcmz Technology Innovations Llc A high performance interoperable network communications architecture (inca)
US7007096B1 (en) * 1999-05-12 2006-02-28 Microsoft Corporation Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6795854B1 (en) * 2000-04-21 2004-09-21 Polarlake Limited Operating system for structured information processing
US7095750B2 (en) * 2001-08-16 2006-08-22 International Business Machines Corporation Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts
US7532644B1 (en) * 2002-06-12 2009-05-12 Sun Microsystems, Inc. Method and system for associating multiple payload buffers with multidata message
US7447801B2 (en) * 2002-11-18 2008-11-04 Microsoft Corporation Composable data streams for managing flows
US8935353B1 (en) 2005-01-20 2015-01-13 Oracle America, Inc. System and method for atomic file transfer operations over connectionless network protocols
US7748009B2 (en) * 2005-05-16 2010-06-29 Microsoft Corporation Use of a precursor to select cached buffer
US9454368B2 (en) 2009-01-21 2016-09-27 Vmware, Inc. Data mover permitting data transfer without transferring data between application and operating system
US9134922B2 (en) 2009-03-12 2015-09-15 Vmware, Inc. System and method for allocating datastores for virtual machines
CN101621405B (zh) * 2009-07-07 2012-02-29 中兴通讯股份有限公司 分布式管理监控***及其监控方法、创建方法
JP5269213B2 (ja) * 2010-02-02 2013-08-21 株式会社東芝 ストレージ機能を持つ通信装置
JP5062499B2 (ja) * 2010-05-07 2012-10-31 横河電機株式会社 フィールド機器管理装置
US9933978B2 (en) 2010-12-16 2018-04-03 International Business Machines Corporation Method and system for processing data
US8595460B2 (en) 2011-08-26 2013-11-26 Vmware, Inc. Configuring object storage system for input/output operations
US10380012B2 (en) 2016-04-22 2019-08-13 Samsung Electronics Co., Ltd. Buffer mapping scheme involving pre-allocation of memory
CN111143418B (zh) * 2019-12-28 2023-09-08 浪潮商用机器有限公司 一种数据库读取数据方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823259A (en) * 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US5093912A (en) * 1989-06-26 1992-03-03 International Business Machines Corporation Dynamic resource pool expansion and contraction in multiprocessing environments
US5381538A (en) * 1991-10-15 1995-01-10 International Business Machines Corp. DMA controller including a FIFO register and a residual register for data buffering and having different operating modes

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4886685B2 (ja) * 2004-07-14 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク・プロトコル処理のオフロードにおいてメモリ管理をサポートする装置および方法
US8316109B2 (en) 2004-07-14 2012-11-20 International Business Machines Corporation Supporting memory management in an offload of network protocol processing
US8332531B2 (en) 2004-07-14 2012-12-11 International Business Machines Corporation Supporting memory management in an offload of network protocol processing

Also Published As

Publication number Publication date
DE69524916D1 (de) 2002-02-14
DE69524916T2 (de) 2002-11-14
EP0707266B1 (en) 2002-01-09
EP0707266A1 (en) 1996-04-17
US6405237B1 (en) 2002-06-11

Similar Documents

Publication Publication Date Title
JPH0926929A (ja) 効率のよいデータ転送メカニズムに関する方法及び装置
Welch et al. Pseudo devices: User-level extensions to the Sprite file system
EP0889623B1 (en) System and method for efficient remote disk I/O
Pai et al. IO-Lite: A unified I/O buffering and caching system
US5961606A (en) System and method for remote buffer allocation in exported memory segments and message passing between network nodes
Druschel et al. Network subsystem design
Pai et al. IO-Lite: a unified I/O buffering and caching system
US6421769B1 (en) Efficient memory management for channel drivers in next generation I/O system
US5768618A (en) Method for performing sequence of actions in device connected to computer in response to specified values being written into snooped sub portions of address space
Thadani et al. An efficient zero-copy I/O framework for UNIX
TW544589B (en) Loosely coupled-multi processor server
US20040015622A1 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US20020152331A1 (en) User mode device driver interface
US20040057380A1 (en) Controlling flow of data between data processing systems via a memory
US20030145230A1 (en) System for exchanging data utilizing remote direct memory access
KR19980070053A (ko) 통신 시스템내에서 상대적으로 대규모인 데이터 객체의 전송을 제어하기 위한 시스템 및 그 방법
US20040054837A1 (en) Controlling flow of data between data processing systems via a memory
JP2000020490A (ja) 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
US5893926A (en) Data buffering technique in computer system
Khalidi et al. An efficient zero-copy I/O framework for UNIX
US6516344B1 (en) Reducing network traffic for remote file system accesses by keeping track of unallocated regions in files
US6434592B1 (en) Method for accessing a network using programmed I/O in a paged, multi-tasking computer
JP2003316589A (ja) 実記憶利用方法
JP2664827B2 (ja) 実時間情報転送制御方法
KR20000065846A (ko) 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20040901