JP4123712B2 - 通信処理方法ならびに通信処理プログラムが記録される記録媒体 - Google Patents
通信処理方法ならびに通信処理プログラムが記録される記録媒体 Download PDFInfo
- Publication number
- JP4123712B2 JP4123712B2 JP2000364542A JP2000364542A JP4123712B2 JP 4123712 B2 JP4123712 B2 JP 4123712B2 JP 2000364542 A JP2000364542 A JP 2000364542A JP 2000364542 A JP2000364542 A JP 2000364542A JP 4123712 B2 JP4123712 B2 JP 4123712B2
- Authority
- JP
- Japan
- Prior art keywords
- application
- communication
- child
- client
- request
- 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
Links
- 238000004891 communication Methods 0.000 title claims description 71
- 238000003672 processing method Methods 0.000 title claims description 10
- 238000000034 method Methods 0.000 claims description 302
- 238000012546 transfer Methods 0.000 claims description 25
- 230000010365 information processing Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 description 20
- 238000012544 monitoring process Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 4
- 230000002269 spontaneous effect Effects 0.000 description 4
- 238000012857 repacking Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008033 biological extinction Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; 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 And Data Communications (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
この発明は、TCP/IPのソケット通信におけるforkをエミュレートする通信処理方法に係り、特にOSの介在なしにユーザ空間転送を行う情報処理システムにおいて、forkで生成された子プロセスが親プロセスとクライアント間のネットワーク接続を引き継ぐ通信処理方法に関する。
【0002】
【従来の技術】
サーバ・クライアントモデルの分散型情報処理システムにおいて、TCP/IPによるソケット通信はごく一般的であり、莫大なソフトウェア資産が存在する。図2にサーバ・クライアントモデルの情報処理システムの例を示す。この例ではホスト210とホスト260が通信回線30で結合しており、サーバアプリケーション211とクライアントアプリケーション261がソケット通信を行う。
【0003】
従来のソケット通信では、クライアントアプリケーション261のプロセス262からの要求をサーバアプリケーション211の親プロセス212が受けた場合、親プロセス212がUNIXのfork機能によって子プロセス213を生成し、子プロセス213がプロセス262からの要求を処理する。しかしながらソケット通信では通信データを一旦OS空間内のバッファ(バッファ231やバッファ281)でバッファリングするために、スループットの向上に限界があった。
【0004】
これに対して近年、ユーザ空間で直接データ転送を行いOS空間へのコピーを不要とするVIA(Virtual Interface Architecture)等の次世代高速IO方式が提案されている。公知の技術としては例えばSteven H. Rodrigues他による“High−Performance Local Area Communication With Fast Socket”(Proceedings of the USENIX、1997)がある。該技術によると高速ネットワークでサーバとクライアント間を接続することで性能向上を実現することが可能になり、かつソケット通信の一部の機能を該高速ネットワークのAPIでエミュレートすることでこれまでのソフトウェア資産を有効活用することが可能になる。このエミュレートに関してはUNIXのリネーム機能によって本来の関数を新しい関数で置き換えて実現できることは周知の技術である。
【0005】
【発明が解決しようとする課題】
ところで図2に示すように、ソケット通信における端点の一方はサーバ側(ホスト210)のプロセスが保持し(ソケット221)、他方はクライアント側(ホスト260)のプロセスが保持する(ソケット271)。
【0006】
またサーバ側ではforkによって子プロセス213を生成する際に、親プロセスが保持するソケットの属性も子プロセスにコピーするため、親プロセスと子プロセスで同一のソケット221を共有して利用することが可能である。すなわちforkによって生成された子プロセス213はそのままでクライアントとの通信が可能である。
【0007】
しかしながら図3に示すように、VIAではプロセス間の通信回線の端点(VIrtual Interface:以後VIと記す)はそれぞれのプロセスのローカルな資源であり、forkで子プロセス313を生成しても親プロセス312のVI331は共有できないという制限がある。
【0008】
そのためforkによって子プロセスを生成してもクライアントとのVIの接続が確立できないのでクライアントとの通信ができないという問題が生じる。したがって、VIAでソケット通信のforkをエミュレートするためには生成された子プロセス313とホスト360のクライアントアプリケーション361との間でVIの接続を確立することが課題になる。
【0009】
またアプリケーションによっては子プロセス313とプロセス362間でVIの接続が確立する前に親プロセス312とプロセス362間で通信が発生する場合もあり得る。この場合には親プロセス312とプロセス362間で発生した通信を確実に子プロセス313とプロセス362間で引き継ぐことが課題になる。
【0010】
したがって、本発明の一つの目的は、FORKをエミュレートするようにサーバの親プロセスとクライアントのプロセス間のVI接続をサーバの子プロセスとクライアントのプロセス間に張り替えて、子プロセスが親プロセスの通信を継続する方法を提供することにある。
【0011】
【課題を解決するための手段】
本発明の一つの態様によれば、第1の情報処理装置上で実行されるプロセスと第2の情報処理装置上で実行されるプロセスが互いにユーザ空間直接転送により通信を行う機能を有する情報処理システムにおいて、前記第1の情報処理装置上の第1のプロセスと前記第2の情報処理装置上の第2のプロセスとの間の第1の接続による通信を、前記第1の情報処理装置上の第3のプロセスと前記第2のプロセスとの間の第2の接続によって引き継いで通信を継続する。その特徴は、前記第1のプロセスが第2のプロセスに対してデータ転送の中断要求を発し、第2プロセスはそれに応じてデータ転送を中断すると中断完了報告を返し、第1プロセスはその報告を受けると、それまで第2プロセスから受信していた既受信データが有る場合にはそれを新たに生成した第3プロセスのコピーし、その後に第3プロセスと第2プロセスの間の第2の接続を確立するよう張替え要求を発し、もって前記第2の接続が前記第1の接続による通信を引き継いで通信を継続する通信処理方法にある。
【0014】
また本発明の別の態様は、上記に加え、前記第2の機能は前記第2の接続が確立されたことを前記第2または前記第3のいずれか、または両方のプロセスが前記第1のプロセスに報告する機能を具備することを特徴とする。
【0020】
また本発明の別の態様は、ソケット通信の機能をエミュレートするようにプログラムされたエミュレーションライブラリで実現され、前記第1の情報処理装置と前記第2の情報処理装置でそれぞれ前記エミュレーションライブラリを実行することにより、前記第1の情報処理装置と前記第2の情報処理装置のそれぞれで実行するソケット通信のためのユーザプログラムを何ら変更することなく通信が可能であることを特徴とする。
【0021】
【発明の実施の形態】
図1に本発明の実施形態のサーバ・クライアントシステムを示す。
【0022】
図1においてホスト110のメモリ(図示しない)上にはサーバアプリケーション111、TCP/IPソケットエミュレータモジュール120、VIAモジュール130が格納されている。またホスト160のメモリ(図示しない)上には同様にクライアントアプリケーション161、TCP/IPソケットエミュレータモジュール170、VIAモジュール180が格納されている。
【0023】
ホスト110とホスト160はネットワーク1で接続されており、サーバアプリケーション111とクライアントアプリケーション161は通信回線(10、20)を介してパケットの送受で通信を行う。
【0024】
TCP/IPソケットエミュレータモジュール120および170は、前記公知例と同様にVIAのAPIによってTCP/IPのソケット通信の機能をエミュレートした関数群を含み、特に図10に示した関数群に関しては、関数本来の機能に加え、本発明を実現するための機能を追加して該関数をエミュレートしている。
【0025】
VIAモジュール130および180はVIAドライバ(図示せず)を含んでいる。またVIAによる通信回線の端点であるVI(131、132、181、182)を構成する。
【0026】
サーバアプリケーション111において親プロセス112はFORK()をエミュレートした図10の参照符号F1示すEMU_FORK()F1によって子プロセス115を生成する。EMU_FORK()F1では子プロセスを生成する機能に、親プロセス112および子プロセス115がプロセス間通信を行うために共有メモリ117を生成し、共有メモリ117に張替え要求フラグP118、張替え要求フラグC119およびコピー発生フラグ140を生成する機能が追加されている。また親プロセス112内にデータ既受信フラグ113、張替え完了フラグ123および張替え要求監視スレッド114を生成する。さらに、子プロセス115内に張替え要求監視スレッド116およびコピー要求監視スレッド141を生成する。張替え要求フラグP118は親プロセス112によって書き込まれ、その書き込みを張替え要求監視スレッド116が監視する。コピー発生フラグ140は親プロセス112によって書き込まれ、その書き込みをコピー要求監視スレッド141が監視する。張替え要求フラグC119は子プロセス115によって書き込まれ、その書き込みを張替え要求監視スレッド114が監視する。
【0027】
クライアントアプリケーション161においては、プロセス162がCONNECT()をエミュレートした図10の参照符号F2に示すEMU_CONNECT()でもってサーバアプリケーション111に対して通信回線の確立を要求する。EMU_CONNECT()F2には、接続が許可されるとプロセス162内に中断要求フラグ163と中断要求監視スレッド164を生成する機能が追加してある。中断要求フラグ163はサーバアプリケーション111から送られてくるパケットによって書き込まれ、その書き込みを中断要求監視スレッド164が監視する。
【0028】
図4、図5および図6は、本実施態様における親プロセス112、子プロセス115、およびプロセス162の処理手順をそれぞれ示すフローチャートである。以降、図を用いてVIの張替え処理の詳細を説明する。
【0029】
まず、図4に示すフローチャートによって親プロセス112の処理の流れ説明する。
【0030】
親プロセス112は、ステップS2ではクライアントアプリケーション161上のプロセス162からの接続要求を聴取する。次に、ステップS3ではプロセス162からの接続要求に対して接続許可を出す。次に、ステップS4ではEMU_FORK()F1によって子プロセスを生成する。ステップS5ではVIの張替えが既に行われているかを張替え完了フラグ123を見てチェックする。張替え完了フラグ123はステップS13において書き込まれる。
【0031】
既に張替えが行われている場合(張替え完了フラグ123が1の場合)はステップS14に進む。張替えが行われていない場合(張替え完了フラグ123が0の場合)はステップS6へ進む。
【0032】
ステップS6では親プロセス112は、自プロセスでのVI張替え要求トリガの発生の有無をチェックする。子プロセスはステップS4で生成されているが、その時点(ステップS4)ではまだVIの張替えは行わない。なぜならばVIの張替えは多大なオーバヘッドを伴う高価な処理であり、また子プロセスを生成しても必ずしも該子プロセスがクライアントと通信を行うわけではないからである。そのため図7に示すように、実際に子プロセス115とプロセス162の通信を発生させるようなイベントをVI張替え処理開始のトリガとする。
【0033】
図7において、トリガT1は親プロセス112による通信回線10のCLOSEである。該トリガは自発的なトリガである。通信回線10のCLOSE後はプロセス162の通信相手は子プロセス115になる。
【0034】
トリガT2は親プロセス112の消滅である。該トリガは自発的な場合と突発的な場合がある。消滅後は子プロセス115が通信可能の状態でなければならない。
【0035】
トリガT3は子プロセス115の受信動作(RECV)の発生である。該トリガは自発的なトリガである。子プロセス115はプロセス162からの通信を期待しているので通信可能の状態でなければならない。トリガT4は子プロセス115の送信動作(SEND)の発生である。該トリガは自発的なトリガである。子プロセス115がプロセス162へデータを送信するため通信可能の状態でなければならない。
【0036】
ステップS6では、親プロセス112は該トリガの発生がなければステップS14に進んで、サーバプログラムを継続して実行する。ステップS6において該トリガの発生がある場合は親プロセス112が実行している通常の処理を一旦休止し、VI張替え処理のルーチンであるステップS7に進む。
【0037】
ステップS7では親プロセス112はプロセス162に対してデータ転送の中断を要求する。その後、ステップS8でプロセス162からのデータ転送中断完了報告を待つ。データ転送中断完了報告があると親プロセスはステップS9に進み、VI張替え前に親プロセス112とプロセス162の間で通信が発生し親プロセス112が既にデータを受け取っているか否かをチェックする。チェックはデータ既受信フラグ113を見て行う。データ既受信フラグ113はステップS16で書き込まれる。既にデータを受け取っている場合(データ既受信フラグ113が1の場合)はステップS10に進む。データを受け取っていない場合(データ既受信フラグ113が0の場合)はステップS11に進む。
【0038】
ステップS10では、親プロセス112はコピー発生フラグ140を立てて子プロセス115にデータコピーの発生を通知する。続いて親プロセス112と子プロセス115が協調して親プロセス112のアドレス空間を子プロセス115にコピーし、親プロセス112が既に受信しているデータを子プロセス115に漏れなく引き継がせる。
【0039】
ステップS11では子プロセス115およびプロセス162に対して互いにVIを張替えるよう要求する。親プロセス112と子プロセス115は共有メモリ117を介して通信し、張替え要求フラグP118を立てることで子プロセス115に対してVIの張替えを要求する。
【0040】
親プロセス112とプロセス162は通信回線10を介して通信し、親プロセス112がプロセス162に対してVI張替え要求用パケットを送信し張替え要求フラグ163を立てることでVIの張替えを要求する。ステップS12ではプロセス162からの張替え完了報告を待つ。
【0041】
ステップS13では張替え完了フラグ123を立てる。張替え完了フラグ123を立てることにより、以後張替え要求トリガを発行させるイベントが発生した場合でも、二重に張替え要求が発行されること防ぐ。ステップS14ではVI張替え処理のルーチンから復帰する場合は、休止していた親プロセス112の処理を再開し、そうでなければ通常の処理の実行する。
【0042】
ステップS15では親プロセス112の通常の処理において、プロセス162からのデータを受信したか否かをチェックする。この処理はRECV()をエミュレートした関数EMU_REDV()において実行される。ステップS15においてデータ受信が発生した場合はステップS16に進む。データ受信が発生していない場合はステップS17へ進む。
【0043】
ステップS16ではデータ既受信フラグ113を立てる。データ既受信フラグ113を立てることにより、子プロセス115にコピーすべきデータの受信が発生したことを親プロセス112は知る。
【0044】
ステップS17では親プロセス112の通常の処理において該プロセスが終了するか否かをチェックする。終了する場合はステップS18へ進み該プロセスは終了する。終了しない場合は再度ステップS5へ進み、これまでのステップを繰り返す。
【0045】
以上がVI張替えの際の親プロセス112の動作である。
【0046】
次に、図5に示すフローチャートによって子プロセス115の処理の流れを説明する。
【0047】
ステップS21ではEMU_FORK()F1によって子プロセス115が生成されて処理が開始される。
【0048】
ステップS22では子プロセス115は自身におけるVI張替え要求トリガの発生の有無をチェックする。ステップS22においてトリガT3またはトリガT4が発生していればステップS23に進む。該トリガが発生していなければステップS26に進む。
【0049】
ステップS23では子プロセス115は張替え要求フラグC119を立て、親プロセス112に対して子プロセス115において張替え要求トリガが発生したことを報告する。親プロセス112は張替え要求フラグC119をスレッド114で監視して該トリガの発生を知る。
【0050】
ステップS24では子プロセス115は親プロセス112からのデータコピー要求の有無をチェックする。該チェックはコピー要求監視スレッド141によってコピー発生フラグ140を監視することで行われる。ステップS24においてデータコピー要求がある場合(コピー発生フラグ140が1の場合)は、子プロセス115が実行している通常の処理を一旦休止し、ステップS25に進む。ステップS24においてデータコピー要求が無い場合(コピー発生フラグ140が0の場合)はステップS26に進む。
【0051】
ステップS25では子プロセス115は親プロセス112のアドレス空間が子プロセス115へコピーされる。
【0052】
ステップS26では子プロセス115は親プロセス112からのVI張替え要求の有無をチェックする。該チェックはスレッド116によって張替え要求フラグP118を監視することで行われる。ステップS26において張替え要求がある場合(張替え要求フラグP118が1の場合)は、VI張替え処理のルーチンであるステップS25に進む。ステップS26において張替え要求が無い場合(張替え要求フラグP118が0の場合)はステップS29に進む。
【0053】
ステップS27では子プロセス115はクライアントアプリケーション161上のプロセス162からの接続要求を聴取する。
【0054】
ステップS28では子プロセス115はプロセス162からの接続要求に対して接続許可を出す。
【0055】
ステップS29ではVI張替え処理のルーチンから復帰する場合は、休止していた子プロセス115の処理を再開し、そうでなければ通常の処理の実行する。
【0056】
ステップS30では子プロセス115の通常の処理において該プロセスが終了するか否かをチェックする。終了する場合はステップS31へ進み該プロセスは終了する。終了しない場合は再度ステップS22へ進み、これまでのステップを繰り返す。
【0057】
以上がVI張替えの際の子プロセス115の動作である。
【0058】
最後に、図6に示すフローチャートでプロセス162の処理の流れを説明する。
【0059】
ステップS41で開始されたプロセス162はステップS42において親プロセス112に対してVIの接続要求を行う。
【0060】
プロセス162はステップS43では接続が許可されるのを待つ。
【0061】
ステップS44では親プロセス112からのデータ転送中断要求の有無をチェックする。該チェックは中断要求監視スレッド164によって中断要求フラグ163を監視することで行われる。ステップS44において中断要求がある場合(中断要求フラグ163が1の場合)は、プロセス162が実行している通常の処理を一旦休止し、ステップS45へ進む。ステップS44において中断要求が無い場合(中断要求フラグ163が0の場合)はステップS52へ進む。
【0062】
ステップS45ではデータ転送中断のための処理を行う。
【0063】
ステップS46ではデータ転送中断が完了したか否かをチェックする。終了していなければステップS45に戻る。終了していればステップS47に進む。
【0064】
ステップS47では親プロセス112に対してパケット通信によりデータ転送中断完了の報告を行う。
【0065】
ステップS48ではプロセス162は親プロセス112からのVI張替え要求の有無をチェックする。該チェックはスレッド164によって張替え要求フラグ163を監視することで行われる。ステップS48において張替え要求がある場合(張替え要求フラグ163が1の場合)は、プロセス162が実行している通常の処理を一旦休止し、VI張替え処理のルーチンであるステップS49へ進む。ステップS48において張替え要求が無い場合(張替え要求フラグ163が0の場合)はステップS52へ進む。
【0066】
ステップS49ではプロセス162は子プロセス115に対してVIの接続要求を行う。次にステップS50では接続が許可されるのを待つ。
【0067】
接続が許可されると、プロセス162はステップS51で親プロセス112に対してVIの張替えが完了したことを報告する。該報告は親プロセス112に対して張替え完了報告用パケットを送信し張替え完了フラグ123を立てることにより行う。
【0068】
次にステップS52ではプロセス162はVI張替え処理のルーチンから復帰する場合は、休止していたプロセス162の処理を再開し、そうでなければ通常の処理の実行する。
【0069】
ステップS53ではプロセス162の通常の処理において該プロセスが終了するか否かをチェックする。終了する場合はステップS54へ進み該プロセスは終了する。終了しない場合は再度ステップS44へ進み、これまでのステップを繰り返す。
【0070】
以上がVI張替えの際のプロセス162の動作である。
【0071】
以上で説明した親プロセス112および子プロセス115およびプロセス162におけるそれぞれの処理が全体として時系列でどのように動作するかを図9に示すタイムチャートを用いて説明する。
【0072】
まず時点aにおいてクライアントからサーバ上の親プロセスに対して接続要求910を発行し、該親プロセスは時点Aでそれを受け取る。なお図中、処理名称の始めに表記した括弧内の字句は該クライアントに対する処理の対象がサーバ上の親プロセスであるか子プロセスであるかを示す。以下同様である。続いて該親プロセスは時点Bで該クライアントに対して接続許可911を発行し、該クライアントは時点bでそれを受け取る。時点Xにおいて該親プロセスはEMU_FORK()918によって子プロセスを生成する。時点Cにおいて該親プロセスは該クライアントに対してデータ転送中断要求912を発行し、該クライアントは時点cでそれを受け取る。時点c以降該クライアントはデータ転送中断処理(図示せず)を行い、中断処理が完了した時点dにおいて該親プロセスに対して中断完了報告913を発行する。該親プロセスは時点Dで該中断完了報告913を受け取り、その後時点Yにおいて該子プロセスへの既受信データのコピー922を行う。続いて時点Eにおいて該親プロセスは該クライアントに対して張替え要求914を発行し、該クライアントは時点eにおいてそれを受け取る。時点fにおいて該クライアントは該子プロセスに対して接続要求915を発行し、該子プロセスは時点Fにおいてそれを受け取る。続いて時点Gにおいて該子プロセスは該クライアントに対して接続許可916を発行し、該クライアントは時点gにおいてそれを受け取る。最後に時点hにおいて該クライアントは該親プロセスに対して張替え完了報告917を発行し、該親プロセスは時点Hでそれを受け取り、一連のVI張替え処理が完了する。
【0073】
ここで該親プロセスは時点B以降データ受信可能状態であり、該子プロセスは時点G以降データ受信可能状態である。また時点bc間および時点h以降が該クライアントがデータ送信可能時間であり、時点dg間が送信中断時間である。もし該クライアントが時点bでデータの送信を開始した場合、時点B´において該親プロセスが該データを受信可能になる。しかし該親プロセスは中断完了報告913を受け取ることにより、該親プロセスは時点D以降データの受信が無いことを知る。したがってVIの張替えの前に該親プロセスがデータを受け取る可能性のある時間は時点B´D間であり、その間にデータを受け取った場合に該データを該子プロセスにコピーする。その結果、VI張替え完了後に該子プロセスが正しく該親プロセスの通信を引き継ぐことが可能になる。
【0074】
一方図8は、データ転送の中断を行わなかった場合のタイムチャートである。図8を用いて本発明の有効性を示す。
【0075】
まず図9と同様に該親プロセスは時点B以降データ受信可能状態であり、該子プロセスは時点G以降データ受信可能状態である。また時点bc間および時点h以降が該クライアントがデータ送信可能時間であり、時点dg間が送信中断時間である。しかしながら該親プロセスは該クライアントが送信を中断し、それがサーバ側に反映される時点E´を知ることはできない。すなわち該親プロセスは該クライアントからのデータがいつまで送信されるかを知ることができない。したがって該親プロセスはどの時点で該子プロセスに対して既受信データのコピーを行えばよいかわからず、コピーが正しく行われる保証ができない。
【0076】
これに対し、本実施態様では、先に図9で説明した通り、サーバ上の親プロセスはクライアント上のプロセスにデータ転送中断要求を出し、クライアント側から中断完了が返送されることによって、それまでに受信したデータを子プロセスにコピーすれば良いことが分かる。よってVI張替えを行った場合に正しく通信を継続することを保証される。
【0077】
以上述べた実施形態においては、プロセス間の通信は共有メモリを用いて実行しているが、その他のPIPE等の手段を使用してもよい。またホスト間の通信はパケット通信によって実行しているが、その他の手段を用いても良い。さらに第1のホストと第2のホストは物理的に分離されている必要はなく、同一情報処理装置上で実行されているプロセスにおいてもこの発明が適用されることは自明である。
【0078】
【発明の効果】
上述のように、本発明によれば、ユーザ空間直接転送によりOSの介在なしに通信を行っているクライアント側のプロセスとサーバ側のプロセス(親プロセス)との間の通信回線を、自発的にサーバ側の別のプロセス(子プロセス)との間の通信回線に張替えて通信を継続させ、UNIXのFORK()と同様の機能を実現することが出来る。
【図面の簡単な説明】
【図1】本発明の一実施形態のサーバ・クライアントシステムのブロック図である。
【図2】一般的なTCP/IPにおけるソケット通信の概念を示す概念図である。
【図3】ユーザ空間直接転送で通信するサーバ・クライアントシステムシステムにける通信の状態を示すブロック図である。
【図4】上記実施態様における通信路を張替える際のサーバ側の親プロセスの処理を示すフローチャート。
【図5】上記実施態様における通信路を張替える際のサーバ側の子プロセスの処理を示すフローチャート。
【図6】上記実施態様における通信路を張替える際のクライアント側のプロセスの処理を示すフローチャート。
【図7】上記実施態様にて通信路を張替えるトリガとなるイベントを示す図。
【図8】実施態様と比較のための通信路を張替える際にサーバ側の親プロセスがクライアント側のプロセスに対してデータ転送の中断を要求しない場合の処理の進行を示すタイムチャート。
【図9】実施態様の通信路を張替える際の処理の進行を示すタイムチャート。
【符号の説明】
1…ネットワーク、10,20…通信回線、110,160…ホスト、111…サーバアプリケーション、112…親プロセス、116…子プロセス、120,170…TCP/IPソケット通信エミュレータブロック、130,180…VIAモジュール、131,132,181,182…VI、161…クライアントアプリケーション、162…プロセス。
Claims (4)
- 仮想インターフェースを生成するVIAモジュールと、TCP/IPソケットエミュレータモジュールと、サーバアプリケーションないしクライアントアプリケーションとが各々実装され、物理通信回線で接続された第1の情報処理装置および第2の情報処理装置上で実行される通信処理方法であって、
前記第1の情報処理装置で動作するサーバアプリケーションと前記第2の情報処理装置上で動作する前記クライアントアプリケーションとが互いに通信を行いながら、当該サーバアプリケーションおよびクライアントアプリケーションを動作させるためのプロセスを実行する通信処理方法において、
前記サーバアプリケーション上でFORK処理を実行することにより当該サーバアプリケーション側プロセスの子プロセスを生成する際に、
前記サーバアプリケーションは前記クライアントアプリケーションに対してデータ転送中断要求を送信し、
当該クライアントアプリケーションは前記サーバアプリケーションに対してデータ転送中断の完了報告を送信し、
前記データ転送中断要求の送信から前記完了報告の受信までに前記クライアントアプリケーションから送信されたデータを、前記FORK処理により生成された子プロセスに割り当てられたアドレス空間にコピーすることにより、前記サーバアプリケーション側プロセスの処理を前記子プロセスに引き継ぐことを特徴とする通信処理方法。 - 仮想インターフェースを生成するVIAモジュールと、TCP/IPソケットエミュレータモジュールと、第1のアプリケーションおよび第2のアプリケーションとが実装された情報処理装置上で実行されるプロセス間通信方法であって、
前記第1のアプリケーションと第2のアプリケーションとが互いに通信を行いながら、当該第1のアプリケーションまたは第2のアプリケーションを動作させるためのプロセスを実行する通信処理方法において、
前記第1のアプリケーション上でFORK処理を実行することにより当該第1のアプリケーション側のプロセスの子プロセスを生成する際に、
前記第1のアプリケーションは第2のアプリケーションに対してデータ転送中断要求を送信し、
当該第2のアプリケーションは前記第1のアプリケーションに対してデータ転送中断の完了報告を送信し、
前記データ転送中断要求の送信から前記完了報告の受信までに前記第2のアプリケーションから送信されたデータを、前記FORK処理により生成された子プロセスに割り当てられたアドレス空間にコピーすることにより、前記第1のアプリケーション側のプロセスの処理を前記子プロセスに引き継ぐことを特徴とするプロセス間通信方法。 - 請求項1に記載の通信処理方法において、
前記サーバアプリケーションは、前記クライアントアプリケーションに対し、前記コピーの完了後に前記サーバアプリケーション側のプロセスに割り当てられた仮想インターフェースの張り替え要求を送信することを特徴とする通信処理方法。 - 請求項2に記載のプロセス間通信方法において、
前記第1のアプリケーションは、前記第2のアプリケーションに対し、前記コピーの完了後に前記第1のアプリケーション側のプロセスに割り当てられた仮想インターフェースの張り替え要求を送信することを特徴とするプロセス間通信方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000364542A JP4123712B2 (ja) | 2000-11-27 | 2000-11-27 | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 |
US09/940,506 US7139832B2 (en) | 2000-11-27 | 2001-08-29 | Data transfer and intermission between parent and child process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000364542A JP4123712B2 (ja) | 2000-11-27 | 2000-11-27 | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002163122A JP2002163122A (ja) | 2002-06-07 |
JP2002163122A5 JP2002163122A5 (ja) | 2006-04-20 |
JP4123712B2 true JP4123712B2 (ja) | 2008-07-23 |
Family
ID=18835466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000364542A Expired - Fee Related JP4123712B2 (ja) | 2000-11-27 | 2000-11-27 | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7139832B2 (ja) |
JP (1) | JP4123712B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676549B2 (en) * | 2005-05-27 | 2010-03-09 | Microsoft Corporation | Techniques for providing accessibility options in remote terminal sessions |
US7856618B2 (en) * | 2005-08-04 | 2010-12-21 | International Business Machines Corporation | Adaptively generating code for a computer program |
US20070033592A1 (en) * | 2005-08-04 | 2007-02-08 | International Business Machines Corporation | Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors |
GB2507339A (en) | 2012-10-29 | 2014-04-30 | Ibm | Accessing privileged objects in a server by means of semi privileged instruction |
US11449601B2 (en) * | 2020-01-08 | 2022-09-20 | Red Hat, Inc. | Proof of code compliance and protected integrity using a trusted execution environment |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0514972B1 (en) * | 1991-05-22 | 1996-03-27 | Koninklijke Philips Electronics N.V. | Multinode distributed data processing system for use in a surface vehicle |
GB2272085A (en) * | 1992-10-30 | 1994-05-04 | Tao Systems Ltd | Data processing system and operating system. |
US5325530A (en) * | 1993-01-29 | 1994-06-28 | International Business Machines Corporation | Controller for sequential programming tools executed in a parallel computing environment |
US5444766A (en) * | 1993-10-01 | 1995-08-22 | At&T Corp. | Mobile-synchronized handoff in a wireless communications system |
US6216127B1 (en) * | 1994-02-22 | 2001-04-10 | Oracle Corporation | Method and apparatus for processing electronic mail in parallel |
US6769119B1 (en) * | 1994-03-24 | 2004-07-27 | International Business Machines Corporation | System, method, and computer program product for scoping operating system semantics in a computing environment supporting multi-enclave processes |
US5717926A (en) * | 1995-02-28 | 1998-02-10 | International Business Machines Corporation | Efficient forking of a process |
US5721876A (en) * | 1995-03-30 | 1998-02-24 | Bull Hn Information Systems Inc. | Sockets application program mechanism for proprietary based application programs running in an emulation environment |
US5870585A (en) * | 1995-10-10 | 1999-02-09 | Advanced Micro Devices, Inc. | Design for a simulation module using an object-oriented programming language |
US6170018B1 (en) * | 1995-11-27 | 2001-01-02 | Sun Microsystems, Inc. | Remote procedure calling using an existing descriptor mechanism |
US5909681A (en) * | 1996-03-25 | 1999-06-01 | Torrent Systems, Inc. | Computer system and computerized method for partitioning data for parallel processing |
US6311265B1 (en) * | 1996-03-25 | 2001-10-30 | Torrent Systems, Inc. | Apparatuses and methods for programming parallel computers |
US5867789A (en) * | 1996-12-30 | 1999-02-02 | Motorola, Inc. | Method and system for real-time channel management in a radio telecommunications system |
US6424988B2 (en) * | 1997-02-19 | 2002-07-23 | Unisys Corporation | Multicomputer system |
US6111894A (en) * | 1997-08-26 | 2000-08-29 | International Business Machines Corporation | Hardware interface between a switch adapter and a communications subsystem in a data processing system |
US6247041B1 (en) * | 1997-08-29 | 2001-06-12 | International Business Machines Corporation | Multiprocessor computer system with user specifiable process placement |
US6167430A (en) * | 1998-05-12 | 2000-12-26 | Unisys Corporation | Multicomputer with distributed directory and operating system |
JP3620010B2 (ja) * | 1998-05-22 | 2005-02-16 | 富士通株式会社 | 無線通信システムで用いられる装置とプログラム記録媒体 |
JP3037271B2 (ja) * | 1998-06-25 | 2000-04-24 | 日本電気株式会社 | 移動体電話通信システムと移動体電話端末電界測定制御方法 |
KR100336069B1 (ko) * | 1998-06-30 | 2002-10-11 | 삼성전자 주식회사 | 그래픽사용자인터페이스프로그래밍환경에서네트워크관리시스템운영방법및이를위한통신장치 |
US6314567B1 (en) * | 1998-11-13 | 2001-11-06 | Hewlett-Packard Company | Apparatus and method for transferring state data when performing on-line replacement of a running program code and data |
US6609159B1 (en) * | 1998-11-30 | 2003-08-19 | Semyon Dukach | Methods, systems, and machine readable programming for interposing front end servers between servers and clients |
US6434594B1 (en) * | 1999-03-09 | 2002-08-13 | Talk2 Technology, Inc. | Virtual processing network enabler |
US6430164B1 (en) * | 1999-06-17 | 2002-08-06 | Cellport Systems, Inc. | Communications involving disparate protocol network/bus and device subsystems |
US6801938B1 (en) * | 1999-06-18 | 2004-10-05 | Torrent Systems, Inc. | Segmentation and processing of continuous data streams using transactional semantics |
US6976258B1 (en) * | 1999-11-30 | 2005-12-13 | Ensim Corporation | Providing quality of service guarantees to virtual hosts |
-
2000
- 2000-11-27 JP JP2000364542A patent/JP4123712B2/ja not_active Expired - Fee Related
-
2001
- 2001-08-29 US US09/940,506 patent/US7139832B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7139832B2 (en) | 2006-11-21 |
US20020065934A1 (en) | 2002-05-30 |
JP2002163122A (ja) | 2002-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020077680A1 (zh) | 数据传输方法、***以及代理服务器 | |
JP4577853B2 (ja) | ネットワーク・プロトコル処理のオフロードにおいて接続確立をサポートする装置および方法 | |
JP4886685B2 (ja) | ネットワーク・プロトコル処理のオフロードにおいてメモリ管理をサポートする装置および方法 | |
US6874147B1 (en) | Apparatus and method for networking driver protocol enhancement | |
US20180210752A1 (en) | Accelerator virtualization method and apparatus, and centralized resource manager | |
CN111277616A (zh) | 一种基于rdma的数据传输方法和分布式共享内存*** | |
JPH1069449A (ja) | サーバとクライアントとの間のセッションを回復するための装置および方法 | |
US6195688B1 (en) | Computer system, program product and method of communicating internetworking data over a master-slave communication link | |
WO2022032984A1 (zh) | 一种mqtt协议仿真方法及仿真设备 | |
US5526483A (en) | Fast network file system running over a hybrid connectionless transport | |
US20050066046A1 (en) | Method and apparatus for acknowledging a request for a data transfer | |
JP2003242097A (ja) | クロスコール機能を備えるディスク制御装置 | |
EP0586129B1 (en) | Session oriented connectionless data transfer for a computer network | |
JPH11327815A (ja) | 通信制御方法及び装置及び通信システム | |
JP4123712B2 (ja) | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 | |
US6401123B1 (en) | Systems, methods and computer program products for employing presumptive negotiation in a data communications protocol | |
KR100936918B1 (ko) | 정적 파일 전송 시스템콜 처리 toe 장치 및 방법 | |
EP1122924B1 (en) | Method and apparatus for providing local path I/O in a distributed file system | |
WO2024040846A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110798366A (zh) | 任务逻辑的处理方法、装置及设备 | |
JP5128117B2 (ja) | Tcp/ipリンクおよびトラフィックを選択的に起動する方法、コンピュータ・ネットワーク・システム、およびプログラム記憶デバイス | |
JP2002244873A (ja) | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 | |
US6002864A (en) | Host addresses a client device using permanent name provided by the client device without requiring a transfer of an APPC verb | |
JP3792538B2 (ja) | ネットワークインタフェースカードを用いるピアレベル通信用システムおよび方法 | |
JPH09311843A (ja) | クライアントサーバ型通信方法及びクライアントサーバ型通信装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060303 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060303 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060418 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071102 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080111 |
|
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: 20080415 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080428 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110516 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110516 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130516 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130516 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |