(57)【要約】【課題】  １つのプログラム単位から他の複数のプログラム単位に対して効率良くデータを同報通信することのできるコンピュータシステムを提供する。【解決手段】  送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって保存データの読み出しが行われる同報送信データ保存手段を設けておき、送信側のプログラム単位が満杯の同報送信データ保存手段にデータを書き込むとき、満杯の要因となっている受信側のプログラム単位に応じて、同報送信データ保存手段に空き領域ができるまで書き込みを待つか、上書きにより書き込みを続けるかを切り替える。【選択図】図１
2005293017.tif 000002
【特許請求の範囲】
【請求項１】
送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって前記保存データの読み出しが行われる同報送信データ保存手段と、
前記送信側のプログラム単位が満杯の前記同報送信データ保存手段にデータを書き込むとき、満杯の要因となっている前記受信側のプログラム単位に応じて、前記同報送信データ保存手段に空き領域ができるまで書き込みを待つか、上書きにより書き込みを続けるかを切り替える手段と
を具備することを特徴とするコンピュータシステム。
【請求項２】
前記受信側のプログラム単位ごとに、前記同報送信データ保存手段からデータの読み出しが完了した位置を示す複数の送信読み出しポインタを管理し、前記同報送信データ保存手段へのデータの書き込み位置を示す送信書き込みポインタが、前記管理された複数の前記送信読み出しポインタのいずれかに達したら前記同報送信データ保存手段が満杯であることを判断する
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって前記保存データの読み出しが行われる同報送信データ保存手段と、
前記送信側のプログラム単位が送信した同報データを保存し、前記受信側の個々のプログラム単位によって前記保存データの読み出しが個別に行われる複数の個別同報受信データ保存手段と、
送信側のプログラム単位が満杯の前記同報送信データ保存手段にデータを書き込むとき、上書きでデータを書き込むとともに、満杯の要因となっている前記受信側のプログラム単位に対応する前記個別同報受信データ保存手段に、前記同報送信データ保存手段の上書き領域の更新前のデータを書き込むように管理する手段と
を具備することを特徴とするコンピュータシステム。
【請求項４】
前記受信側のプログラム単位が前記個別同報受信データ保存手段から優先してデータを読み出すように管理する手段を
さらに具備することを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記受信側のプログラム単位ごとに、前記同報送信データ保存手段からデータの読み出しを完了した位置を示す複数の送信読み出しポインタを管理し、前記同報送信データ保存手段へのデータの書き込み位置を示す送信書き込みポインタが、前記管理された複数の前記送信読み出しポインタのいずれかに達したら前記同報送信データ保存手段が満杯であることを判断する
ことを特徴とする請求項３または４に記載のコンピュータシステム。
【請求項６】
送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって前記保存データの読み出しが行われる同報送信データ保存手段を設けておき、満杯の前記同報送信データ保存手段にデータを書き込むとき、満杯の要因となっている前記受信側のプログラム単位に応じて、前記同報送信データ保存手段に空き領域ができるまで書き込みを待つか、上書きにより書き込みを続けるかを切り替える
ことを特徴とするデータ同報通信方法。
【請求項７】
送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって前記保存データの読み出しが行われる同報送信データ保存手段と、前記送信側のプログラム単位が送信した同報データを保存し、前記受信側の個々のプログラム単位によって前記保存データの読み出しが個別に行われる複数の個別同報受信データ保存手段とを設けておき、前記送信側のプログラム単位が満杯の前記同報送信データ保存手段にデータを書き込むとき、上書きでデータを書き込むとともに、満杯の要因となっている前記受信側のプログラム単位に対応する前記個別同報受信データ保存手段に、前記同報送信データ保存手段の上書き領域の更新前のデータを書き込む
ことを特徴とするデータ同報通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つのコンピュータ上で複数のプログラム単位がスケジューリングによるコンテキストスイッチを繰り返しながら動作し、１つのプログラム単位から複数の他のプログラム単位に対して同報データの転送が行われるコンピュータシステムおよびデータ同報通信方法に関するものである。
【背景技術】
【０００２】
ＯＳ（Operating System）などの１つのプログラム単位から複数のプログラム単位へのデータの同報通信は、以下のように、プログラム単位間での一対一通信の拡張により実現される。
【０００３】
一対一通信では、例えばＬｉｎｕｘなどにおいて用いられるプロセス間通信の技術であるパイプのように、送信側のプログラム単位から受信側のプログラム単位に対して通知するデータを保存するためのバッファが存在する。送信側のプログラム単位は、バッファにデータを書き込んだ後、受信側のプログラム単位に対してそのことを通知する。受信側のプログラム単位は通知を受け取ると、バッファの中身を読み出すことによりデータを受信する。
【０００４】
１つのプログラム単位から複数のプログラム単位に対する同報通信では、図７に示すように、送信側のプログラム単位１と受信側の各プログラム単位２，３，４の間にデータを保存するためのバッファ３１，３２，３３が個々に存在する。送信側のプログラム単位１は受信側の各プログラム単位２，３，４のバッファ３１，３２，３３に対して、同報通信するためのデータを書き込む。全てのバッファ３１，３２，３３に対してデータ書き込んだ後、送信側のプログラム単位１は、受信側の全てのプログラム単位２，３，４に対してそのことを通知する。受信側の各プログラム単位２，３，４は通知を受け取ると、対応するバッファ３１，３２，３３の中身を読み出すことによりデータを受信する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、同一コンピュータ上で、あるプログラム単位が別のプログラム単位に対して一定時間ごとに画像データを送信し、受信側のプログラム単位が受信した画像データに対して特定の処理を加えた後、そのデータを表示するようなシステムにおいて、受信側のプログラム単位のスループットよりも送信側のプログラム単位のスループットの方が高い場合、受信側のプログラム単位が画像データを受信する速度が、送信側のプログラム単位が画像データを送信する速度に追いつかず、画像データを保存するためのバッファが満杯になることがある。
【０００６】
この場合、送信側のプログラム単位は、受信側のプログラム単位がバッファ内の画像データを全て読み出すのを待つのではなく、バッファ内の画像データを新しい画像データで上書きして送信処理を続行する。受信側のプログラム単位は、上書きによって失われた分の画像データ情報の表示を諦め、その後に受信した新しい画像データを表示する。
【０００７】
このように一定の時間内に特定の量のデータを受信し、処理する必要がある場合、既定時間内に受け取れなかったデータの受信を諦め、その後に来る最新のデータを受信するように処理を行うことがある。
【０００８】
従来のデータ同報通信方式では、同報対象のプログラム単位の数が増加すると、それに比例して、同報データをバッファに書き込む回数も増加する。そのため同報対象のプログラム単位が多数存在し、これらのプログラム単位に対する大量のデータストリーミングが頻繁に発生するシステムでは、送信側のプログラム単位が全ての受信側のプログラム単位のバッファに対してデータを書き込んで通知を行った後、スケジューリングによるコンテキストスイッチが発生し、受信側の各プログラム単位がバッファからデータを読み出す処理を行った場合、データ処理に時間のかかるプログラム単位や、スケジューリング優先度の低いプログラム単位は、データを受信するための処理を行っている間に処理に許された時間を使いきってしまう。このため、受信せずに捨てるデータ量が多くなり、送信側のプログラム単位がこれらのプログラム単位のバッファにデータを書き込むコストが無駄に費やされることが頻繁に発生するという問題がある。
【０００９】
本発明は、かかる実情に鑑み、同一のコンピュータ上で複数のプログラム単位がスケジューリングによるコンテキストスイッチを繰り返しながら動作し、プログラム単位間で大量のデータストリーミングが頻繁に発生する場合において、１つのプログラム単位から他の複数のプログラム単位に対して効率良くデータを同報通信することのできるコンピュータシステムおよびデータ同報通信方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のコンピュータシステムは、送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって保存データの読み出しが行われる同報送信データ保存手段と、送信側のプログラム単位が満杯の同報送信データ保存手段にデータを書き込むとき、満杯の要因となっている受信側のプログラム単位に応じて、同報送信データ保存手段に空き領域ができるまで書き込みを待つか、上書きにより書き込みを続けるかを切り替える手段とを具備する。
【００１１】
また、本発明のコンピュータシステムは、受信側のプログラム単位ごとに、同報送信データ保存手段からデータの読み出しが完了した位置を示す複数の送信読み出しポインタを管理し、同報送信データ保存手段へのデータの書き込み位置を示す送信書き込みポインタが、管理された複数の送信読み出しポインタのいずれかに達したら同報送信データ保存手段が満杯であることを判断することを特徴とするものである。
【００１２】
この発明では、１つの同報送信データ保存手段を、同報対象である受信側の複数のプログラム単位への同報データの送信に利用するとともに、同報送信データ保存手段の満杯となったとき、この満杯の要因となった受信側のプログラム単位に応じて、同報送信データ保存手段に空き領域ができるまで待機してからデータを書き込むか、あるいは、既存のデータに対して上書きで書き込むかを判断する。これにより、送信側のプログラム単位による同報データの無駄な書き込みが発生しなくなり、プログラム単位間のデータ転送効率が向上する。この効果は、特に、受信側のプログラム単位の数が多い場合や、送信するデータサイズが大きい場合などに顕著である。また、複数のプログラム単位が同時に実行可能なマルチプロセッサシステムでは、効率の良いデータ転送を行うことが可能であるため、特に有効である。
【００１３】
また、本発明の別の観点に基づくコンピュータシステムは、送信側のプログラム単位が送信した同報データを保存し、受信側の複数のプログラム単位によって保存データの読み出しが行われる同報送信データ保存手段と、送信側のプログラム単位が送信した同報データを保存し、受信側の個々のプログラム単位によって保存データの読み出しが個別に行われる複数の個別同報受信データ保存手段と、送信側のプログラム単位が満杯の同報送信データ保存手段にデータを書き込むとき、上書きでデータを書き込むとともに、満杯の要因となっている受信側のプログラム単位に対応する個別同報受信データ保存手段に、同報送信データ保存手段の上書き領域の更新前のデータを書き込むように管理する手段とを具備するものである。
【００１４】
また、本発明のコンピュータシステムは、受信側のプログラム単位が個別同報受信データ保存手段から優先してデータを読み出すように管理する手段をさらに具備する。
【００１５】
この発明は、受信側のプログラム単位の中に、送信側のプログラム単位から送信されたデータを全て受信する必要があるものが存在しない場合に有効である。送信側のプログラム単位が同報送信データ保存手段が満杯の状態でデータを書き込むときに、同報送信データ保存手段に上書きでデータを書き込むとともに、満杯の要因となっている受信側のプログラム単位に対応する個別同報受信データ保存手段に、同報送信データ保存手段にて上書きが行われた領域の更新前のデータを書き込むことで、同報送信データ保存手段が満杯になってから以後のデータの書き込みが続行可能になるとともに、満杯の要因をつくった受信側のプログラム単位は、個別同報受信データ保存手段からデータを取得する機会が与えられる。これによりプログラム単位間のデータ転送効率が向上する。
【発明の効果】
【００１６】
本発明のコンピュータシステムおよびデータ同報通信方法によれば、１つのプログラム単位から他の複数のプログラム単位に対して効率良くデータを同報通信することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１８】
図１は本発明の第１の実施形態であるコンピュータシステム１００におけるプログラム単位間でのデータ同報通信方式の構成を示す図である。
【００１９】
同図に示すように、この同報通信方式には、同報データを送信するプログラム単位１と、同報データを受信するプログラム単位２，３，４と、送信した同報データを保存し、受信側の複数のプログラム単位２，３，４によって保存データの読み出しが行われる同報送信データ保存手段５と、同報送信データ保存手段５が満杯になった時に満杯の要因となっている受信側のプログラム単位に応じて、同報送信データ保存手段５に空き領域ができるまで書き込みを待つか、既存のデータに対して上書きで書き込みを続けるかを判断する続行識別手段６と、プログラム単位１がプログラム単位２，３，４に対して同報データを送信したことを通知する同報通知手段７，８，９と、同報送信データ保存手段５のプログラム単位１による書き込み位置を指す送信書き込みポインタ１０と、プログラム単位２，３，４が同報送信データ保存手段５から読み出す位置を指す送信読み出しポインタ１１，１２，１３とが含まれる。
【００２０】
プログラム単位とは、ＯＳ上で動作するプロセスや、ソフトウェアで実現された仮想的なマシン環境であるＶＭ（Virtual Machine ）上で動作するＯＳなどである。また、コンピュータシステム１００は、プログラム単位や上記各手段を実現するためのＣＰＵ（Central Processing Unit)と、ＲＡＭ（Random Access Memory）などのメインメモリとを有している。さらに、コンピュータシステム１００は、プログラム単位やデータを記憶する記憶装置、データやユーザからの命令などを入力する入力装置、データを出力する出力装置などを備えている。
【００２１】
以下に、この実施形態のデータ同報通信方式の動作を説明する。
【００２２】
初期状態では送信書き込みポインタ１０、送信読み出しポインタ１１，１２，１３は同報送信データ保存手段５の先頭の位置をポイントする。同報送信データ保存手段５は送信書き込みポインタ１０と送信読み出しポインタ１１，１２，１３によってサイクリックに使用される。続行識別手段６は、受信側のプログラム単位２，３，４各々が同報データを全て受信する必要があるものであるか否かを示す情報を管理しており、同報送信データ保存手段５が満杯になったとき、満杯の要因となっている受信側のプログラム単位が全ての同報データを受信する必要がある場合には、その受信側のプログラム単位がデータを読み出して同報送信データ保存手段５に空き領域ができるまで書き込みを待ち、そうでない時は、同報送信データ保存手段５の既存のデータを上書きして書き込み処理を続行するようにプログラム単位１を制御する。
【００２３】
この前提を踏まえ、プログラム単位１が同報データを送信する際の処理を説明する。
【００２４】
送信側のプログラム単位１は、受信側のプログラム単位２，３，４に同報するデータを同報送信データ保存手段５に書き込み、送信書き込みポインタ１０を、書き込んだデータのサイズ分移動させる。送信側のプログラム単位１が同報送信データ保存手段５に書き込みを続け、送信書き込みポインタ１０が同報送信データ保存手段５の底辺に達したら、送信書き込みポインタ１０を同報送信データ保存手段５の先頭に移動させる。
【００２５】
書き込み処理中に送信書き込みポインタ１０が、送信読み出しポインタ１１，１２，１３のいずれかの位置に達したら、同報送信データ保存手段５が満杯であることが判断される。この場合、送信側のプログラム単位１は、続行識別手段６の情報に従って書き込みを続行するか否かを決定する。
【００２６】
送信書き込みポインタ１０が、全ての同報データを受信する必要があるプログラム単位の送信読み出しポインタと一致した場合は、そのプログラム単位が同報送信データ保存手段５からデータを読み出して、その送信読み出しポインタが移動するのを待つ。
【００２７】
全ての同報データを受信する必要がない受信側のプログラム単位の送信読み出しポインタと一致した場合は、既存の同報データを上書きして書き込みを続行し、その送信読み出しポインタを書き込みサイズ分移動する。
【００２８】
送信側のプログラム単位１は同報データの書き込みを完了すると、同報通知手段７，８，９を用いて、受信側のプログラム単位２，３，４に対して同報データを送信したことを通知する。
【００２９】
受信側のプログラム単位２，３，４は同報通知手段７，８，９を通じて通知を受け取ると、送信読み出しポインタ１１，１２，１３の指す位置から同報送信データ保存手段５に保存されているデータを読み出し、送信読み出しポインタ１１，１２，１３を読み出したサイズ分移動させる。この読み出し処理を、送信読み出しポインタ１１，１２，１３が送信書き込みポインタ１０と一致するまで続ける。送信書き込みポインタ１０と一致する前に同報送信データ保存手段５の底辺に達したら、送信読み出しポインタ１１，１２，１３を同報送信データ保存手段５の先頭に移動させ、処理を続行する。
【００３０】
次に、図２のフローチャートを用いて、上記の同報データ送信時の処理手順を詳細に説明する。
【００３１】
まず、プログラム単位を示す変数ｉの初期値として２を設定し、プログラム単位ごとの送信読み出しポインタを示す変数ｊの初期値として１１を設定する（ステップＳ２０１）。ここで、ｉは２から４の値を取る変数であり、ｊは１１から１３の値を取る変数である。変数ｉと変数ｊはｊ＝ｉ＋９の関係を満たす。
【００３２】
送信側のプログラム単位１が、これから書き込みしたいデータを書き込める容量の空き領域が同報送信データ保存手段５にあるか否かをチェックする（ステップＳ２０２）。送信側のプログラム単位１は、送信書き込みポインタ１０と受信側のプログラム単位ｉの送信読み出しポインタとの差により同報送信データ保存手段５の空き領域の容量を求めることができる。
【００３３】
同報送信データ保存手段５に、データを書き込めるだけの容量の空き領域がある場合（ステップＳ２０３のＹＥＳの場合）はステップＳ２０９へ移行し、ない場合（ステップＳ２０３のＮＯの場合）、送信側のプログラム単位１は続行識別手段６の内容をチェックして（ステップＳ２０４）、同報送信データ保存手段５の既存データ（受信側のプログラム単位ｉがこれから読み出すべきデータ）が上書き可能なものであるか否かを判定する（ステップＳ２０５）。
【００３４】
同報送信データ保存手段５の既存データが上書き可能ではない場合（ステップＳ２０５のＮＯの場合）は、送信側のプログラム単位１は、受信側のプログラム単位ｉが同報送信データ保存手段５からデータを読み出すまで待機の状態に入る（ステップＳ２０６）。この後、受信側のプログラム単位ｉが同報送信データ保存手段５からのデータの読み出しを完了したことを契機に、送信側のプログラム単位１に対してこの旨が通知される（ステップＳ２０７）。送信側のプログラム単位１はこの通知を受けて、ステップＳ２０９へ移行する。
【００３５】
また、同報送信データ保存手段５の既存データが上書き可能ではない場合（ステップＳ２０５のＹＥＳの場合）、送信側のプログラム単位１は送信読み出しポインタｊの値をデータサイズ分移動し（ステップＳ２０８）、ステップＳ２０９へ移行する。
【００３６】
ステップＳ２０９およびステップＳ２１０では、送信側のプログラム単位１は変数ｉを１つインクリメントし、ステップＳ２０３へ戻って上記の処理を変数ｉが４より大きくなるまで繰り返す。
【００３７】
このように、受信側のすべてのプログラム単位ｉについて上記の処理が完了したところで（ステップＳ２１０のＹＥＳ）、送信側のプログラム単位１はデータを同報送信データ保存手段５に書き込み（ステップＳ２１１）、送信書き込みポインタ１０を書き込んだデータのサイズ分移動させる（ステップＳ２１２）。
【００３８】
この後、送信側のプログラム単位１は、受信側のプログラム単位を示す変数ｉを初期値である２に再設定するとともに、受信側のプログラム単位ｉごとの同報通知手段を示す変数ｋの値として７を設定する（ステップＳ２１３）。なお、変数ｋと変数ｉとはｋ＝ｉ＋５の関係を満たす。送信側のプログラム単位１は、同報通知手段ｋを通じて、同報データを送信したことを受信側のプログラム単位ｉに通知する（ステップＳ２１４）。この後、変数ｉおよび変数ｋを１つインクリメントし（ステップＳ２１５）、ステップＳ２１４に戻って（ステップＳ２１６のＮＯ）、次の受信側のプログラム単位ｉについて処理を同様に繰り返す。受信側のすべてのプログラム単位ｉについてステップＳ２１４の処理が完了したところで（ステップＳ２１６のＹＥＳ）、データ送信処理を完了とする。
【００３９】
次に、図３のフローチャートを用いて、上記の同報データ受信時の処理手順をプログラム単位２の動作を例に詳細に説明する。
【００４０】
まず、受信側のプログラム単位２が同報通知手段７により通知を受信すると（ステップＳ３０１）、受信側のプログラム単位２は、同報送信データ保存手段５の送信読み出しポインタ１１の指す位置からデータを読み出し（ステップＳ３０２）、送信読み出しポインタ１１を読み出したデータのサイズ分移動させる（ステップＳ３０３）。
【００４１】
以上、プログラム単位２の受信の動作を説明したが、この受信時の動作は他の受信側のプログラム単位についても同様である。
【００４２】
以上説明した本実施形態のコンピュータシステム１００によれば、１つの同報送信データ保存手段５を、複数の受信側のプログラム単位２，３，４に対する同報データの送信に利用するとともに、この同報送信データ保存手段５の満杯となったとき、この満杯の要因となった受信側のプログラム単位に応じて、同報送信データ保存手段５に空き領域ができるまで待機してからデータを書き込むか、または、既存のデータに対して上書きで書き込むかを判断するようにしたことで、送信側のプログラム単位１による同報データの無駄な書き込みが発生しなくなり、プログラム単位間のデータ転送効率が向上する。
【００４３】
次に、本発明の第２の実施形態を説明する。
【００４４】
図４は本発明の第２の実施形態であるコンピュータシステム２００におけるプログラム単位間でのデータ同報通信方式の構成を示す図である。
【００４５】
同図に示すように、この同報通信方式には、同報データを送信するプログラム単位１と、同報データを受信するプログラム単位２，３，４と、プログラム単位１より送信された同報データが保存され、受信側の複数のプログラム単位２，３，４によって保存データの読み出しが行われる同報送信データ保存手段５と、送信側のプログラム単位１が受信側のプログラム単位２，３，４に対して同報データを送信したことを通知する同報通知手段７，８，９と、送信側のプログラム単位１による同報送信データ保存手段５の書き込み位置を指す送信書き込みポインタ１０と、受信側のプログラム単位２，３，４が同報送信データ保存手段５からデータを読み出す位置を指す送信読み出しポインタ１１，１２，１３と、送信側のプログラム単位１より送信された同報データが保存され、受信側の個々のプログラム単位２，３，４によって保存データの読み出しが個別に行われる個別同報受信データ保存手段１４，１５，１６と、個別同報受信データ保存手段１４，１５，１６の書き込み位置を指す受信書き込みポインタ１７，１８，１９と、個別同報受信データ保存手段１４，１５，１６の読み出し位置を指す受信読み出しポインタ２０，２１，２２が含まれる。
【００４６】
以下に、この実施形態のデータ同報通信方式の動作を説明する。
【００４７】
初期状態では送信書き込みポインタ１０、送信読み出しポインタ１１，１２，１３は同報送信データ保存手段５の先頭をポイントする。同報送信データ保存手段５は送信書き込みポインタ１０と送信読み出しポインタ１１，１２，１３によってサイクリックに使用される。
【００４８】
同様に初期状態では受信書き込みポインタ１７，１８，１９、受信読み出しポインタ２０，２１，２２は各々個別同報受信データ保存手段１４，１５，１６の先頭をポイントする。個別同報受信データ保存手段１４，１５，１６は各々、受信書き込みポインタ１７，１８，１９と受信読み出しポインタ２０，２１，２２によってサイクリックに使用される。
【００４９】
この前提を踏まえ、プログラム単位１が同報データを送信する際の処理を説明する。
【００５０】
送信側のプログラム単位１は、同報送信データ保存手段５に空きがあるか否かをチェックする。同報送信データ保存手段５に空きがない場合（同報送信データ保存手段５が満杯の場合）は、このことが受信側のどのプログラム単位がデータを読み出していないことに起因するかを、送信読み出しポインタ１１，１２，１３の位置から判断する。
【００５１】
続いて、送信側のプログラム単位１は、同報送信データ保存手段５からデータを読み出していない受信側のプログラム単位２，３，４の個別同報受信データ保存手段１４，１５，１６に空きがあるかチェックする。
【００５２】
個別同報受信データ保存手段１４，１５，１６に空きがない場合は、同報送信データ保存手段５の既存データを新しい送信データで上書きし、送信書き込みポインタ１０と、同報送信データ保存手段５が満杯の要因になっている受信側プログラム単位に対応する送信読み出しポインタ１１，１２，１３を、書き込んだデータのサイズ分移動する。個別同報受信データ保存手段１４，１５，１６に空きがある場合は、同報送信データ保存手段５から満杯の要因になっている受信側プログラム単位の個別同報受信データ保存手段１４，１５，１６に、同報送信データ保存手段５の上書き領域の更新前のデータを書き出し、そのデータサイズ分、受信書き込みポインタ１７，１８，１９と受信読み出しポインタ２０，２１，２２を移動する。
【００５３】
同報送信データ保存手段５に空きがある場合、及び上記の処理により同報送信データ保存手段５に空きをつくることができた場合は、送信側のプログラム単位１は、データを同報送信データ保存手段５に書き込み、送信書き込みポインタ１０を、書き込んだデータのサイズ分移動させる。
【００５４】
送信側のプログラム単位１は同報データの送信を完了すると、同報通知手段７，８，９を用いて、受信側のプログラム単位２，３，４に対して同報データを送信したことを通知する。
【００５５】
受信側のプログラム単位２，３，４は同報通知手段７，８，９を通じて通知を受け取ると、まず受信書き込みポインタ１７，１８，１９と受信読み出しポインタ２０，２１，２２を調べ、個別同報受信データ保存手段１４，１５，１６にデータが保存されているか調べ、保存されている場合はそのデータを読み出し、受信読み出しポインタ２０，２１，２２を読み出したデータのサイズ分移動させる。
【００５６】
この読み出し処理を、受信読み出しポインタ２０，２１，２２が受信書き込みポインタ１７，１８，１９と一致するまで続ける。受信読み出しポインタ２０，２１，２２が受信書き込みポインタ１７，１８，１９と一致する前に個別同報受信データ保存手段１４，１５，１６の底辺に達したら、受信読み出しポインタ２０，２１，２２を個別同報受信データ保存手段１４，１５，１６の先頭に移動させ、処理を続行する。
【００５７】
以上の処理により全てのデータを読み出したら、または個別同報受信データ保存手段１４，１５，１６にデータが保存されていない場合は次の処理に移る。
【００５８】
受信側のプログラム単位２，３，４は送信読み出しポインタ１１，１２，１３の指す位置から同報送信データ保存手段５に保存されているデータを読み出し、送信読み出しポインタ１１，１２，１３を読み出したサイズ分移動させる。この読み出し処理を、送信読み出しポインタ１１，１２，１３が送信書き込みポインタ１０と一致するまで続ける。
【００５９】
送信書き込みポインタ１０と一致する前に同報送信データ保存手段５の底辺に達したら、送信読み出しポインタ１１，１２，１３を同報送信データ保存手段５の先頭に移動させ、処理を続行する。
【００６０】
次に、図５のフローチャートを用いて、上記の同報データ送信時の処理手順を詳細に説明する。
【００６１】
まず、プログラム単位を示す変数ｉの初期値として２を設定し、プログラム単位ごとの個別同報受信データ保存手段を示す変数ｊの初期値として１４を設定し、プログラム単位ごとの送信読み出しポインタを示す変数ｋの初期値として１１を設定し、受信書き込みポインタを示す変数ｌの初期値として１７を設定する（ステップＳ５０１）。ここで、ｉは２から４の値を取る変数であり、各変数ｉ、ｊ、ｋ、ｌは、ｊ＝ｉ＋１２、ｋ＝ｉ＋９、ｌ＝ｉ＋１５の関係を満たす。
【００６２】
送信側のプログラム単位１が、これから書き込みしたいデータを書き込める容量の空き領域が同報送信データ保存手段５にあるか否かをチェックする（ステップＳ５０２）。送信側のプログラム単位１は、送信書き込みポインタ１０と受信側のプログラム単位ｉの送信読み出しポインタｋとの差により同報送信データ保存手段５の空き領域の容量を求めることができる。
【００６３】
同報送信データ保存手段５にデータを書き込めるだけの容量の空き領域がある場合（ステップＳ５０３のＹＥＳの場合）はステップＳ５０９へ移行し、ない場合（ステップＳ５０３のＮＯの場合）、送信側のプログラム単位１は、個別同報受信データ保存手段ｊにデータを書き込めるだけの容量の空き領域があるかチェックする（ステップＳ５０４）。
【００６４】
この結果、個別同報受信データ保存手段ｊにデータを書き込めるだけの容量の空き領域がない場合（ステップＳ５０５のＮＯの場合）はステップＳ５０８へ移行する。また、個別同報受信データ保存手段ｊにデータを書き込めるだけの容量の空き領域がある場合（ステップＳ５０５のＹＥＳの場合）は、送信側のプログラム単位１は、同報送信データ保存手段５から個別同報受信データ保存手段ｊにデータを移動させ（ステップＳ５０６）、受信書き込みポインタｌを移動させたデータのサイズ分移動させる（ステップＳ５０７）。この後、ステップＳ５０８へ移行する。
【００６５】
ステップＳ５０８では、送信側のプログラム単位１が、送信読み出しポインタｋを移動させたデータのサイズ分移動させ、次のステップＳ５０９へ移行する。
【００６６】
ステップＳ５０９およびステップＳ５１０では、送信側のプログラム単位１は各変数ｉ、ｊ、ｋ、ｌを各々１つずつインクリメントし、ステップＳ５０３へ戻って上記の処理を変数ｉが４より大きくなるまで繰り返す。
【００６７】
このように受信側のすべてのプログラム単位ｉについて上記の処理が完了したところで（ステップＳ５１０のＹＥＳ）、送信側のプログラム単位１はデータを同報送信データ保存手段５に書き込み（ステップＳ５１１）、送信書き込みポインタ１０を書き込んだデータのサイズ分移動させる（ステップＳ５１２）。
【００６８】
この後、送信側のプログラム単位１は、受信側のプログラム単位を示す変数ｉを初期値である２に再設定するとともに、受信側のプログラム単位ｉごとの同報通知手段を示す変数ｍの値として７を設定する（ステップＳ５１３）。なお、変数ｍと変数ｉとはｍ＝ｉ＋５の関係を満たす。
【００６９】
次に、送信側のプログラム単位１は、同報通知手段ｍを通じて、データを送信したことを受信側のプログラム単位ｉに通知する（ステップＳ５１４）。この後、変数ｉおよび変数ｍを１つずつインクリメントし（ステップＳ５１５）、ステップＳ５１４へ戻って（ステップＳ５１６のＮＯ）、次の受信側のプログラム単位ｉについて処理を同様に繰り返す。受信側のすべてのプログラム単位ｉについてステップＳ５１４の処理が完了したところで（ステップＳ５１６のＹＥＳ）、データ送信処理を完了とする。
【００７０】
次に、図６のフローチャートを用いて、上記の同報データ受信時の処理手順をプログラム単位２の動作を例に詳細に説明する。
【００７１】
まず、受信側のプログラム単位２が同報通知手段７により通知を受信すると（ステップＳ６０１）、受信側のプログラム単位２は、個別同報受信データ保存手段１４にデータが存在するかどうかをチェックし（ステップＳ６０２）、存在する場合（ステップＳ６０３のＹＥＳの場合）は、その個別同報受信データ保存手段１４からデータを読み出すためにステップＳ６０４へ移行し、存在しない場合（ステップＳ６０３のＮＯの場合）は、同報送信データ保存手段５からデータを読み出すためにステップＳ６０６へ移行する。
【００７２】
ステップＳ６０４では、受信側のプログラム単位２が個別同報受信データ保存手段１４の受信読み出しポインタ２０の指す位置からデータを読み出す。この後、ステップＳ６０５で、受信側のプログラム単位２は受信読み出しポインタ２０を読み出したデータのサイズ分移動させる。この後、ステップＳ６０６へ移行する。
【００７３】
ステップＳ６０６では、受信側のプログラム単位２が、同報送信データ保存手段５の送信読み出しポインタ１１の指す位置のからデータを読み出し、続いて、ステップＳ６０７で、送信読み出しポインタ１１を読み出したデータのサイズ分移動させる。以上で、データ受信の処理を完了とする。
【００７４】
以上、プログラム単位２の受信の動作を説明したが、この受信時の動作は他の受信側のプログラム単位についても同様である。
【００７５】
以上説明した本実施形態のコンピュータシステム２００は、受信側のプログラム単位２，３，４の中に、送信側のプログラム単位１から送信されたデータを全て受信する必要があるものが存在しない場合に有効である。すなわち、このコンピュータシステム２００では、送信側のプログラム単位１が満杯の同報送信データ保存手段５にデータを書き込むときに、同報送信データ保存手段５に上書きでデータを書き込むとともに、満杯の要因となっている受信側のプログラム単位に対応する個別同報受信データ保存手段１４，１５，１６に、同報送信データ保存手段５にて上書きが行われた領域の上書き前のデータを書き込むことで、同報送信データ保存手段５が満杯になってから以後のデータの書き込みが続行可能になるとともに、満杯の要因をつくった受信側のプログラム単位は、個別同報受信データ保存手段１４，１５，１６からデータを取得する機会が与えられる。これによりプログラム単位間のデータ転送効率が向上する。
【００７６】
尚、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施形態であるコンピュータシステムにおけるプログラム単位間でのデータ同報通信方式の構成を示す図である。
【図２】第１の実施形態の同報データ送信時の処理手順を示すフローチャートである。
【図３】第１の実施形態の同報データ受信時の処理手順を示すフローチャートである。
【図４】本発明の第２の実施形態であるコンピュータシステムにおけるプログラム単位間でのデータ同報通信方式の構成を示す図である。
【図５】第２の実施形態の同報データ送信時の処理手順を示すフローチャートである。
【図６】第２の実施形態の同報データ受信時の処理手順を示すフローチャートである。
【図７】従来のコンピュータシステムにおけるプログラム単位間でのデータ同報通信方式の構成を示す図である。
【符号の説明】
【００７８】
１…送信側のプログラム単位、２，３，４…受信側のプログラム単位、５…同報送信データ保存手段、６…続行識別手段、７，８，９…同報通知手段、１０…送信書き込みポインタ、１１，１２，１３…送信読み出しポインタ、１４，１５，１６…個別同報受信データ保存手段、１７，１８，１９…受信書き込みポインタ、２０，２１，２２…受信読み出しポインタ、１００，２００…コンピュータシステム
【図１】
2005293017.tif 000003
【図２】
2005293017.tif 000004
【図３】
2005293017.tif 000005
【図４】
2005293017.tif 000006
【図５】
2005293017.tif 000007
【図６】
2005293017.tif 000008
【図７】
2005293017.tif 000009