JP3761317B2 - バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents
バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP3761317B2 JP3761317B2 JP04753098A JP4753098A JP3761317B2 JP 3761317 B2 JP3761317 B2 JP 3761317B2 JP 04753098 A JP04753098 A JP 04753098A JP 4753098 A JP4753098 A JP 4753098A JP 3761317 B2 JP3761317 B2 JP 3761317B2
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- processing
- blocks
- processing process
- allocated
- 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
Images
Description
【発明の属する技術分野】
本発明は、バッファの動的管理方法に関し、より詳細には、マルチメディアデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している処理プロセスに動的に割り当てるバッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
近年のコンピュータ技術の発達に伴って、パーソナルコンピュータにおいても文字だけでなく、音声・静止画像・動画像のようなマルチメディアデータを容易に扱うことができるようになってきている。加えて、ネットワークの高速化により、ネットワークを介してサーバ装置が有しているマルチメディアデータをクライアント装置の要求に応じて配信し、クライアント装置で気軽にマルチメディアデータを閲覧したりすることが可能になってきている。
【0003】
図17は、マルチメディア・オン・デマンド・システム(以下、「MODシステム」と記述する)の概略構成図である。図17に示すMODシステムは、音声・静止画像・動画像等のマルチメディアデータを有するサーバ装置100と、サーバ装置100にマルチメディアデータの配信を要求し、サーバ装置100から配信されたマルチメディアデータを受信して閲覧等を行う複数のクライアント装置101a〜101c(以下「クライアント装置101」と記述する)と、サーバ装置100およびクライアント装置101とを接続するネットワーク102と、から構成されている。
【0004】
上述したように、サーバ装置100は、クライアント装置101からの要求に応じて該当するマルチメディアデータを要求があったクライアント101に配信する。この際、サーバ装置100においては、図示しないメモリ中に確保されたバッファ領域に配信するマルチメディアデータを読み出し、バッファ領域に読み出したマルチメディアデータを該当するクライアント装置101に配信する。換言すれば、クライアント101から配信要求があると、要求されたマルチメディアデータの種類に応じた処理プロセスがサーバ装置100内において発生し、発生した処理プロセスがそれぞれバッファ領域を利用する。
【0005】
ここで、サーバ装置100からクライアント装置101にスムーズにマルチメディアデータを配信するには、このバッファ領域をどのように管理するかが重要となってくる。よりスムーズにマルチメディアデータをクライアント装置101に配信するには、配信しようとするマルチメディアデータの全てをバッファ領域に読み出してしまえば良い。ところが、バッファ領域、即ちメモリ容量は有限であり、特に、動画像のようなデータの量は膨大であることから、配信しようとするマルチメディアデータの全てをバッファ領域に読み出すことは非現実的である。
【0006】
そのため、サーバ装置100においては、上記処理プロセス毎に、マルチメディアデータを配信するために用いるバッファを配分する処理を行う必要がある。このバッファの配分方法として以下のような技術が提案されている。
【0007】
バッファの配分方法の第1の例として、均等縮小・拡張方法がある。この均等縮小・拡張方法は、クライアント101からマルチメディアデータの配信要求があったが、この要求に応じて処理を行う処理プロセスで利用するバッファ領域を確保することができない場合に、既に他の処理プロセス毎に配分したバッファ領域をそれぞれ均等に縮小することによって、配分するためのバッファ領域を確保するというものである。また、均等縮小・拡張方法は、ある処理プロセスがバッファ領域を解放した場合に、解放されたバッファ領域を他の処理プロセスに均等に配分するというものである。
【0008】
また、バッファ配分方法の第2の例として、自浄方法がある。この自浄方法は、処理プロセスがバッファのアクセスを宣言した場合に、その処理プロセスが要求する分のバッファ領域を配分し、処理プロセスによってバッファがアクセスされていない場合には、処理プロセスが処理を行うために最低限必要なバッファ領域を配分しておくというものである。この場合において、処理プロセスがアクセス中の場合とアクセス中でない場合とにおけるバッファ領域の差分は、他の処理プロセスが利用できるように管理されることになっている。
【0009】
なお、上述した2つの方法において、バッファ領域は複数のブロックに分割して管理され、分割されたブロック(以下「バッファブロック」という)単位で各処理プロセスにバッファを配分するという処理が行われる。
【0010】
【発明が解決しようとする課題】
しかしながら、上記均等縮小・拡張方法においては、有限のバッファ領域を有効に活用することができるものの、バッファ領域の量が膨大な場合には、各処理プロセスに対して配分したバッファを縮小したり、拡大するための処理に時間を要するため、処理の高速化を図ることができないという問題点があった。
【0011】
また、上記均等縮小・拡張方法においては、縮小処理を行う毎に全ての処理プロセスに配分した各バッファの一部を解放する必要があると共に、拡張処理を行う毎に全ての処理プロセスに対してバッファを配分しなければならないため、処理が煩雑であり、かつ、メモリ操作が煩雑となることから、整合性が取りにくくなるという問題点があった。
【0012】
また、上記自浄方法においては、均等縮小・拡張方法と同様に、有限のバッファ領域を有効に活用することができるものの、ある処理プロセスがバッファのアクセスを宣言した場合にその処理プロセスが要求する分のバッファを配分するため、ある処理プロセスのバッファへのアクセス時間が長いと他の処理プロセスに配分するためのバッファが不足し、他の処理プロセスの処理が停止するという問題点があった。
【0013】
さらに、上記自浄方法においては、処理プロセスがバッファにアクセス中であるか否かに応じてバッファを配分するか否かを決定するため、バッファからマルチメディアデータをディスクに退避する回数が増大し、マルチメディアデータをバッファリングするメリットが減少するという問題点があった。
【0014】
本発明は上記に鑑みてなされたものであって、処理プロセスの増減等によってシステム全体の負荷が変化した際に各処理プロセスに対して配分したバッファを動的に再配分する場合、特定の処理プロセスを対象としてバッファの再配分処理を行うことにより、処理の高速化・簡素化を図ることを第1の目的とする。
【0015】
また、本発明は上記に鑑みてなされたものであって、特定の処理プロセスを対象としてバッファの再配分処理を行うことにより、他の処理プロセスに影響を与えることなく、バッファの再配分を行うことを可能にすることを第2の目的とする。
【0016】
さらに、本発明は上記に鑑みてなされたものであって、特定の処理プロセスを対象としてバッファの再配分処理を行うことにより、バッファからマルチメディアデータをディスクに退避する回数を減少させ、バッファリングするメリットを最大限活用できるようにすることを第3の目的とする。
【0017】
【課題を解決するための手段】
上記目的を達成するため、請求項1のバッファの動的管理方法は、システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合であって、前記未実行中の処理プロセスおよび実行中の処理プロセスがそれぞれ処理を実行するために最低限必要なバッファブロック数の合計数と前記バッファ領域の全バッファブロック数とを比較し、前記合計数が前記全バッファブロック数を越えない場合に、前記未実行中の処理プロセスにバッファブロックを割り当て可能であると判定する判定工程と、前記判定工程で割り当て可能と判定した場合に、前記実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むものである。
【0020】
また、請求項2のバッファの動的管理方法は、システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって前記未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、前記実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、前記未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めた前記バッファブロック数に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、前記判定工程で割り当て可能と判定した場合に、前記順位情報生成工程で生成した前記縮小順位情報に基づいて、バッファブロックを減少させる対象となる前記実行中の処理プロセスを決定し、前記実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むものである。
【0021】
また、請求項3のバッファの動的管理方法は、システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって前記未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、前記処理プロセスは、前記バッファブロックの割り当てに関する優先順位情報をそれぞれ有し、前記実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、前記未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めた前記バッファブロック数および前記優先順位情報に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、前記判定工程で割り当て可能と判定した場合に、前記順位情報生成工程で生成した前記縮小順位情報に基づいて、バッファブロックを減少させる対象となる前記実行中の処理プロセスを決定し、前記実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むものである。
【0025】
また、請求項4のバッファの動的管理方法は、システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求した前記バッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた不足分のバッファブロック数に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、任意の処理プロセスからバッファブロックが解放された場合に、前記順位情報生成工程で生成した前記割当順位情報に基づいて、解放された前記バッファブロックの割り当て対象となる処理プロセスを決定し、決定した前記処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、を含むものである。
【0026】
また、請求項5のバッファの動的管理方法は、システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、前記処理プロセスは、前記バッファブロックの割り当て順位に関する優先順位情報をそれぞれ有し、各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求した前記バッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた前記不足分のバッファブロック数および前記優先順位情報に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、任意の処理プロセスからバッファブロックが解放された場合に、前記順位情報生成工程で生成した前記割当順位情報に基づいて、前記解放されたバッファブロックの割り当て対象となる処理プロセスを決定し、決定した前記処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、を含むものである。
【0028】
さらに、請求項6のコンピュータ読み取り可能な記録媒体は、前記請求項1〜5のいずれか一つに記載のバッファの動的管理方法の各工程をコンピュータに実行させるためのプログラムを記録したものである。
【0029】
【発明の実施の形態】
以下、本発明に係るバッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体の一実施の形態について、添付の図面を参照しつつ詳細に説明する。なお、ここでは図17に示したMODシステムに本発明に係るバッファの動的管理方法を適用することを例に取って本発明の実施の形態を説明する。
【0030】
図1は、本実施の形態に係るバッファの動的管理方法による処理の概念を説明するためのブロック図であって、図17に示したサーバ装置100内における処理の概念を示すものである。図1において、バッファ管理マネージャ103は、メモリ管理マネージャ104を介してシステム全体または特定の装置におけるマルチメディアデータの処理のために使用するバッファ領域をメモリ105中に確保して一括管理し、かつ、該バッファ領域を複数のブロック(バッファブロック)に分割して各時点で実行している任意の数の処理プロセス(問い合わせ処理プロセスや更新処理プロセス等)にそれぞれ動的に割り当てる処理を実行する。各処理プロセスは、バッファ管理マネージャ103によって割り当てられたバッファ領域を用いてマルチメディアデータのバッファリングを行う。
【0031】
また、バッファ管理マネージャ103は、システム全体で同時に実行される処理プロセスの負荷を勘案し、各処理プロセスによる処理が高速に行われ、システムの並行動作性(スループット)が最も高くなるように各処理プロセスにそれぞれ割り当てるバッファブロック数を決定する。それぞれの処理プロセスに割り当てられたバッファブロック数分のバッファは、それが解放されるまで各処理プロセスによって独占的に使用される。
【0032】
そして、処理プロセスの増減等によってシステム全体の負荷が変化した場合には、バッファ管理マネージャが各処理プロセスに割り当てたバッファを動的に再配分し、各処理プロセスに対して常時最適なバッファの割り当て処理を行う。
【0033】
なお、実際のバッファリングの処理は、マルチメディア用バッファリングモジュール106(以下「モジュール106」と記述する)によって行われる。使用できるモジュール106は、音声・静止画像・動画像のような処理の対象となるデータの種類によって選択される。
【0034】
つぎに、本実施の形態に係るバッファの動的管理方法について、
(1)処理の概略
(2)バッファの動的管理方法で使用される情報
(3)バッファ管理マネージャの基本処理
(4)モジュールの基本処理
(5)バッファの動的管理方法を用いた具体的処理
(6)実施の形態の効果
の順で説明する。
【0035】
(1)処理の概略
本実施の形態に係るバッファの動的管理方法においては、大きく分けて以下の2つの処理が行われる。第1の処理(後述するバッファ再配分処理1に該当)は、あるモジュール106による処理プロセスを実行するためのバッファを確保できない場合に、他の特定のモジュール106の処理プロセスに対して割り当てたバッファから最低限処理を実行することができる分のバッファを確保するというものである。また、第2の処理(後述するバッファ再配分処理2に該当)は、あるモジュール106からバッファブロックが解放された場合に、その解放されたバッファブロックを他の特定のモジュール106の処理プロセスに割り当てて、そのモジュール106の処理プロセスに既に割り当てられていたバッファを拡張するというものである。
【0036】
上記第1および第2の処理は、共にバッファの再配分を行う対象となるモジュール106の処理プロセスがシステム内で実行中の全てのモジュール106による処理プロセスではなく、特定のモジュール106の処理プロセスである点を特徴としている。また、各モジュール106の処理プロセスに配分したバッファは、各処理プロセスによって独占的に使用され、他の処理プロセスとの間で何ら関係を持たない点を更なる特徴としている。
【0037】
(2)バッファの動的管理方法で使用される情報
続いて、本実施の形態に係るバッファの動的管理方法において使用される情報について定義しておくことにする。
【0038】
▲1▼ バッファ管理マネージャ103が管理する情報
a)総バッファブロック数:totalSize
メモリ105に確保されたバッファ領域中の全てのバッファブロック数である。
【0039】
b)現在使用バッファブロック数:currentTotalSize
総バッファブロック数のうち、現在使用されているバッファブロックの数である。
【0040】
c)未使用バッファブロック数合計:restTotalSize
現在使用されていないバッファブロック数の合計値である。
【0041】
d)要求バッファブロック数合計:requestTotalSize
各モジュール106が処理プロセスのために利用する最大のバッファブロック数の合計値である。
【0042】
e)最小可動バッファブロック数合計:minimumTotalSize
各モジュール106が処理プロセスのために最低限必要とするバッファブロック数の合計値である。
【0043】
▲2▼ モジュール106を管理する情報
a)要求バッファブロック数:requestSize
モジュール106が処理プロセスの実行のために利用する最大のバッファブロック数である。モジュール106が処理プロセスを実行する際に、バッファ管理マネージャ103に対して最初に要求するバッファブロック数である。バッファ領域に空きがある限り、各モジュールの処理プロセスにはこの要求バッファブロック数分のバッファが配分される。
【0044】
b)最小可動バッファブロック数:minimumSize
モジュール106が処理プロセスのために最低限必要とするバッファブロック数である。つまり、各モジュール106の処理プロセスに対して必ず配分しなければならないバッファブロック数である。
【0045】
c)バッファモード:mode
配分されたバッファブロック数を可変にする(動的割り当てを可能にする)可変モードと、バッファブロック数が変化しない(動的割り当てを不可能にする)固定数のバッファブロックが配分されるようにする固定モードとがある。固定モードを選択したモジュール106の処理プロセスは、後述するバッファの再配分処理1および2の対象から除外される。
【0046】
d)バッファ優先度:priority
バッファが再配分される対象となるモジュール106の処理プロセスの順位を決定するためのパラメータとなるものである。後述するバッファの再配分処理1および2において、縮小対象優先度および拡張対象優先度を決定する際に利用される。
【0047】
e)配分バッファブロック数:distributeSize
モジュール106の処理プロセスに対して実際に配分されるバッファブロック数である。
【0048】
f)現在のバッファブロック数:currentSize
モジュール106の処理プロセスに対して現在配分されているバッファブロック数である。
【0049】
g)配分可能バッファブロック数:potentialSize
各モジュール106の処理プロセスに対して現在配分されているバッファブロック数のうち、最小稼働バッファブロック数を除く、他のモジュール106の処理プロセスに対して配分可能なバッファブロック数である。後述するバッファ再配分処理1で利用される。
【0050】
h)不足バッファブロック数:insufficientSize
要求バッファブロック数から最小稼働バッファブロック数を除いたバッファブロック数であり、要求バッファブロック数を満たすまでにどのくらいの数のバッファブロックが必要かを示すものである。後述するバッファ再配分処理2で利用される。
【0051】
i)縮小対象優先度:reducePriority
後述するバッファ再配分処理1において、いずれのモジュール106の処理プロセスから配分可能バッファブロック数分のバッファの全てまたは一部を他のモジュール106の処理プロセスに配分するかを決定するための情報である。この縮小対象優先度に基づいて各モジュール106の処理プロセスに対して順位が付与され、第1順位のモジュール106の処理プロセスに対して配分されているバッファを他のモジュール106の処理プロセスに対して配分する。なお、本実施の形態の説明において「縮小」という場合には、モジュール106が配分可能バッファブロック数分のバッファの全てまたは一部を他のモジュール106の処理プロセスのために解放することを意味している。換言すれば、そのモジュール106の処理プロセスが占有するバッファ領域が縮小されることを意味している。
【0052】
j)拡張対象優先度:expandPriority
後述するバッファ再配分処理2において、いずれのモジュール106の処理プロセスに対して、他のモジュール106の処理プロセスによって解放されたバッファを配分するかを決定するための情報である。この拡張対象優先度に基づいて各モジュール106の処理プロセスに対して順位が付与され、第1順位のモジュール106の処理プロセスに対して、他で解放されたバッファを配分する。なお、本実施の形態の説明において「拡張」という場合には、モジュール106が不足バッファブロック数分のバッファの全てまたは一部を確保することを意味する。換言すれば、そのモジュール106の処理プロセスが占有するバッファ領域が拡張されることを意味している。
【0053】
k)縮小処理関数:reduceFunction()
モジュール106が配分可能バッファブロック数分のバッファの全てまたは一部を解放するために用いる関数である。後述するバッファ再配分処理1で利用される。
【0054】
l)拡張処理関数:expandFunction()
モジュール106が不足バッファブロック数分のバッファブロックを確保するために用いる関数である。後述するバッファ再配分処理2で利用される。
【0055】
なお、ここで、要求バッファブロック数および最小稼働バッファブロック数について、図2に示す静止画像データに基づいて説明を追加することにする。
【0056】
図2は、例えば地図等の静止画像データを示すものである。図2において、A〜Iで示す矩形領域は、図17に示したクライアント装置101で表示可能な1画面分のデータを意味している。最小稼働バッファブロック数は、これら矩形領域A〜Iのいずれか一つ分のデータを取り込むことができるバッファの容量に該当する。したがって、各モジュール106の処理プロセスに対し、この最小稼働バッファブロック数に該当するバッファが必ず配分されることになる。
【0057】
要求バッファブロック数は、図2に示す静止画像データの全て、即ち矩形領域A〜Iの全てを取り込むことができるバッファの容量に該当する。この要求バッファブロック数分のバッファを確保できた場合は、サーバ装置100においてディスクアクセスがなく、クライアント装置101において上下左右のスクロールをスムーズに行うことができる。
【0058】
(3)バッファ管理マネージャの基本処理
バッファ管理マネージャ103は、基本的に以下に挙げた処理を行う。なお、各処理には簡単な説明を付加しておくが、具体的な処理については後述する。
【0059】
a)総バッファの確保
メモリ管理マネージャ104に、動的に総バッファ数分アロケートした領域を渡す。
b)モジュール106からの登録依頼に対する処理
後述するバッファ配分処理に従って、登録依頼のあったモジュール106の処理プロセスに対してバッファを配分する。
c)モジュール106のバッファアクセス開始宣言に対する処理
バッファアクセス開始宣言を行ったモジュール106の処理プロセスを、後述するバッファ再配分処理1およびバッファ再配分処理2の対象から除外する。
d)モジュール106のバッファアクセス終了宣言に対する処理
バッファアクセス終了宣言を行ったモジュール106の処理プロセスを、後述するバッファ再配分処理1およびバッファ再配分処理2の対象に加える。
e)モジュール106からのバッファ解放依頼に対する処理
バッファの解放と空きバッファの再配分処理を行う。
f)総バッファの解放
メモリ管理マネージャ104を介してメモリ105中に確保した総バッファを解放する。
【0060】
(4)モジュールの基本処理
各モジュール106は、基本的に以下に挙げた処理を行う。なお、各処理について必要なものについては簡単な説明を付加しておくが、具体的な処理については後述する。
【0061】
a)各種パラメータの決定・準備
要求バッファブロック数,最小稼働バッファブロック数,バッファモード,バッファ優先度を決定すると共に、縮小処理関数および拡張処理関数を準備する。
b)バッファ構築情報の生成
c)バッファ管理マネージャ103への登録
決定したパラメータやバッファ構築情報に基づいて、バッファブロックの配分を受けるための処理を行う。
d)バッファ管理マネージャ103へのバッファブロック数の変更依頼
要求バッファブロック数や最小稼働バッファブロック数等の変更をバッファ管理マネージャ103に対して依頼する。
e)バッファのアクセス宣言
f)現在のバッファブロック数を取得
g)バッファへの実際のアクセス
h)バッファのアクセス終了宣言
i)バッファ管理マネージャ103からの縮小要求に対する処理
縮小処理関数(reduceFunction())を用いて、配分可能バッファブロック数分のバッファの全てまたは一部を解放する。
j)バッファ管理マネージャ106からの拡張要求に対する処理
拡張処理関数(expandFunction())を用いて、不足バッファブロック数分のバッファの全てまたは一部を確保する。
k)バッファ管理マネージャへの登録削除
配分されたバッファが解放される。
【0062】
(5)バッファの動的管理方法を用いた具体的処理
つぎに、本実施の形態に係るバッファの動的管理方法を用いた具体的な処理について、
▲1▼ バッファ配分処理
▲2▼ バッファ解放検知処理
▲3▼ バッファ再配分処理1
▲4▼ バッファ再配分処理2
の順で、「(2)バッファの動的管理方法で使用される情報」で定義した各情報を用いて詳細に説明する。
【0063】
▲1▼ バッファ配分処理
本実施の形態に係るバッファの動的管理方法の具体的な処理として、最初にモジュール106の処理プロセスにバッファを配分する処理について説明する。なお、バッファ管理マネージャ103は、メモリ105中に既に各モジュール106の処理プロセスに対して配分するためのバッファ領域を確保しているものとする。
【0064】
図3は、バッファ配分処理の手順を示すフローチャートである。バッファ管理マネージャ103は、モジュール106からバッファの配分要求があったか否かを判定する(S301)。モジュール106は、バッファの配分を要求する際に、上述した要求バッファブロック数や最小稼働バッファブロック数に関する情報をバッファ管理マネージャ103に渡す。
【0065】
ステップS301においてモジュール106からバッファ配分要求があったと判定した場合、バッファ管理マネージャ103は、要求バッファブロック数分のバッファを該当するモジュール106の処理プロセスに対して配分可能か否かを判定する(S302)。具体的に、バッファ管理マネージャ103は、現在使用バッファブロック数合計と要求バッファブロック数との和が、総バッファブロック数以下であるか否かを判定する。
【0066】
すなわち、
currentTotalSize + requestSize≦ totalSize
のとき、バッファ管理マネージャ103は、要求バッファブロック数分のバッファを該当するモジュール106の処理プロセスに対して配分可能であると判定する。
【0067】
ステップS302において、要求バッファブロック数分のバッファを配分可能であると判定した場合、バッファ管理マネージャ103は、要求バッファブロック数分のバッファを該当するモジュール106の処理プロセスに対して配分し(S306)、ステップS301の処理に戻る。すなわち、ここで該当するモジュール106に配分されるバッファブロック数は、
distributeSize = requestSize
である。
【0068】
一方、ステップS302において要求バッファブロック数分のバッファを配分可能ではないと判定した場合、バッファ管理マネージャ103は、未使用のバッファに該当するバッファブロック数からモジュール106の処理プロセスで処理の実行に最低限必要なバッファブロック数を配分可能か否かを判定する(S303)。
【0069】
すなわち、バッファ管理マネージャ103は、
のとき、モジュール106の処理プロセスで処理の実行に最低限必要なバッファブロック数を配分可能であると判定する。
【0070】
ステップS303においてモジュール106の処理プロセスの実行に最低限必要なバッファブロック数分のバッファを配分可能であると判定した場合、バッファ管理マネージャ103は、該当するモジュール106の処理プロセスに対し、確保可能な未使用のバッファブロック数分のバッファを配分し(S307)、ステップS301の処理に戻る。ここでモジュール106の処理プロセスに対して配分されるバッファブロック数は、
distributeSize = totalSize - currentTotalSize
となる。
【0071】
一方、ステップS303においてモジュール106の処理プロセスの実行に最低限必要なバッファブロック数分のバッファを配分可能ではないと判定した場合、バッファ管理マネージャ103は、縮小要求により、該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分できるか否かを判定する(S304)。ここで、縮小要求とは、他の特定のモジュール106に対して、配分可能バッファブロック数分のバッファの全てまたは一部をバッファの配分を要求しているモジュール106の処理プロセスのために解放することを要求することである。
【0072】
ここで、バッファ管理マネージャは、
であると判定した場合に、縮小要求により、該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分できると判定する。
【0073】
ステップS304において縮小要求により該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分できると判定した場合、バッファ管理マネージャ103は、バッファ再配分処理1を実行して、該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分する(S308)。ここでモジュール106の処理プロセスに対して配分されるバッファブロック数は、
distributeSize = minimumSize
となる。
【0074】
なお、ステップS308のバッファの再配分処理1については、後に図を用いて詳細に説明する。
【0075】
一方、ステップS304において縮小要求によっても該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分できないと判定した場合、バッファ管理マネージャ103は、該当するモジュール106に対してバッファ配分拒否処理を実行し(S305)、ステップS301の処理に戻る。
【0076】
ここで、縮小要求により該当するモジュール106の処理プロセスに対して最低限必要なバッファブロック数分のバッファを配分できない場合は、バッファの配分を要求してきたモジュール106の処理プロセスを含む、全てのモジュール106の処理プロセスの実行に必要な最小稼働バッファブロック数の合計値が総バッファブロック数より大きくなってしまうようなときに発生する。これは、現在実行中の各モジュール106の処理プロセスの全てが処理に最小限必要なバッファのみで処理を行っている状態であることを意味している。したがって、この状態でいずれかのモジュール106の処理プロセスからバッファを要求しているモジュール106の処理プロセスに対してバッファを配分することにすると、そのモジュール106の処理プロセスを実行することができない状態となってしまう。
【0077】
よって、バッファ管理マネージャ103は、
minimumTotalSize≦totalSize
という条件を満たさなければバッファを配分することはできない。そこで、あるモジュール106の処理プロセスに対して配分するためのバッファが要求されたとき、
minimumTotalSize + minimumSize> totalSize
の条件を満たす場合には、バッファを要求しているモジュール106の処理プロセスに対して配分可能なバッファブロック数は、
distributeSize = 0
となる。
【0078】
バッファ管理マネージャ103は、モジュール106からのバッファ配分要求に応じて上述した処理を繰り返し実行する。また、既にバッファの配分を受けているモジュール106からバッファブロック数を変更する要求があった場合にも図3に示した処理が実行される(例えば、最小稼働バッファブロック数を増加する場合等)。
【0079】
▲2▼ バッファ解放検知処理
続いて、バッファ解放検知処理について説明する。図4は、バッファ解放検知処理の手順を示すフローチャートである。この図4に示すバッファ解放検知処理は、上述したバッファ配分処理と並行して実行される。
【0080】
図3に示したバッファ配分処理の実行中に、バッファ管理マネージャ103は、あるモジュール106の処理プロセスからバッファが解放されたか否かを定期的にチェックする(S401)。ここでいうバッファの解放には、あるモジュール106の処理プロセスに対して配分されていた全てのバッファが解放された場合や、あるモジュール106がバッファブロック数の変更を要求した結果、既に配分されていた一部のバッファを解放した場合等が含まれる。
【0081】
ステップS401においてバッファが解放されたと判定した場合、バッファ管理マネージャ103は、図3のステップS308におけるバッファ再配分処理1の実行中であるか否かを判定する(S402)。
【0082】
ステップS402においてバッファ再配分処理1の実行中ではないと判定した場合、ステップS404に進む。一方、バッファ再配分処理1の実行中であると判定した場合、バッファ管理マネージャ103は、バッファ再配分処理1の実行を中止する(S403)。なぜなら、解放されたバッファをバッファの配分を要求しているモジュール106の処理プロセスに配分してやれば良いからである。ただし、バッファが解放された場合であっても、最小稼働バッファブロック数を配分することができない場合は、再びバッファ再配分処理1が実行される可能性がある。
【0083】
その後、バッファ管理マネージャ103は、バッファ再配分処理2を実行して(S404)、ステップS401の処理に戻る。なお、バッファ再配分処理2は、解放されたバッファを利用して、現在実行中のモジュール106の処理プロセスに対し不足バッファブロック数分のバッファの全てまたは一部を配分する処理のことである。このバッファ再配分処理2については、後に図を用いて詳細に説明する。
【0084】
▲3▼ バッファ再配分処理1
続いて、図3に示したステップS308で実行されるバッファ再配分処理1について説明する。図5は、バッファ再配分処理1の手順を示すフローチャートである。なお、バッファ管理マネージャ103は、バッファ再配分処理1を実行するに当たり、現在実行中のモジュール106の処理プロセスのうち、配分されるバッファブロック数が固定の固定モードを選択しているモジュール106の処理プロセスをバッファ再配分処理1の処理対象から除外する。また、バッファアクセス開始宣言を行ったモジュール106の処理プロセスについても、バッファ再配分処理1の処理対象から除外する。
【0085】
まず、バッファ管理マネージャ103は、各モジュール106の処理プロセス毎に、バッファの配分を要求しているモジュール106のために解放することができる配分可能バッファブロック数(現在のバッファブロック数−最小稼働バッファブロック数)を演算する(S501)。具体的には、
potentialSize = currentSize - minimumSize
という演算を行う。
【0086】
ステップS501において配分可能バッファブロック数を求めた後、バッファ管理マネージャ103は、各モジュール106の処理プロセス毎に、配分可能バッファブロック数にバッファ優先度の重みをかけて縮小対象優先度を決定すると共に、縮小対象優先度を降順にソートして各モジュール106の処理プロセスに対して順位付けを行う(S502,S503)。換言すれば、この順位は、いずれのモジュール106の処理プロセスに対し、配分可能バッファブロック数分のバッファの全てまたは一部をバッファの配分を要求しているモジュール106の処理プロセスのために解放することを要求するかについて決定するための基準となるものである。
【0087】
すなわち、バッファ管理マネージャ103は、ステップS502において、各モジュール106の処理プロセス毎に、
reducePriority = potentialSize÷ priority × C
という演算を繰り返し実行することにより縮小対象優先度を決定し、決定した縮小対象優先度を降順にソートして各モジュール106の処理プロセスに順位付けを行う(S503)。
【0088】
なお、高いバッファ優先度を有するモジュール106に関する処理プロセスの縮小対象優先度に基づく順位は、同一の配分可能バッファブロック数を有する他のモジュール106の処理プロセスより低くなる。
【0089】
そして、バッファ管理マネージャ103は、ステップS502およびS503において決定した第1順位のモジュール106に対し、縮小要求を出してバッファを要求しているモジュール106の処理プロセスに対して配分するバッファを確保する処理を実行する(S504)。
【0090】
ここで、縮小要求は、ステップS501で求めた配分可能バッファブロック数以下のバッファブロック数の解放を第1順位のモジュールの処理プロセスに要求するためのものである。この縮小要求を受けた第1順位のモジュール106は、配分されているバッファから縮小要求で要求されたバッファブロック数以上のバッファを解放しなければならない(バッファの再配分)。
【0091】
そして、バッファ管理マネージャ103は、確保したバッファブロック数がバッファの配分を要求しているモジュール106の処理プロセスを最低限実行できるバッファブロック数(最小稼働バッファブロック数)を満たすか否かを判定する(S505)。
【0092】
ステップS505においてバッファの配分を要求しているモジュール106の処理プロセスを最低限実行できるバッファブロック数を満たさないと判定した場合、バッファ管理モジュール103は、ステップS501〜ステップS504の処理を繰り返し実行する。
【0093】
一方、ステップS505においてバッファの配分を要求しているモジュール106の処理プロセスを最低限実行できるバッファブロック数を満たすと判定した場合、バッファ管理モジュール103は、該当するモジュール106の処理プロセスに対して、確保したバッファブロック数分のバッファを配分し(S506)、バッファ再配分処理1を終了して図3のステップS301に戻る。
【0094】
ここで、バッファ再配分処理1について、図6〜図11を用いてさらに具体的に説明する。まず、現時点のバッファの配分状況は図6に示す通りであり、現時点においては処理プロセス1〜4およびその他の処理プロセスが実行中であるものとする。この図6に対応して、各処理プロセス1〜4に配分したバッファブロックの様子を示すものが図10(a)である。また、図10(b)は、各処理プロセス毎に配分可能バッファブロック数を演算すると共に、各処理プロセス1〜4に対して縮小対象優先度に基づく順位付けを行った様子を示している。
【0095】
図10および図11の各図において、一番上の処理プロセスが第1順位の処理プロセスに該当し、この処理プロセスはバッファ管理マネージャ103による縮小要求で要求されたバッファブロック数以上のバッファを配分されているバッファから解放しなければならない。
【0096】
また、図10および図11において、網点で表示した矩形領域は処理プロセスに最低限必要なバッファブロック(最小稼働バッファブロック数)に、実線で囲まれた矩形領域は図5のステップS501で求めた他の処理プロセスに配分可能なバッファブロック(配分可能バッファブロック数)に、斜線で表示した矩形領域は配分可能バッファブロックのうち、他の処理プロセスのために解放するバッファブロックに、点線で囲まれた矩形領域は配分を要求したバッファブロック数に対して不足しているバッファブロック(不足バッファブロック数)に該当する。
【0097】
そして、図7に示すように処理プロセス5がバッファの配分を要求してきた場合を考えると、図10(b)に示す第1順位の処理プロセス4から処理プロセス5のためにバッファが解放され、処理プロセス5に対して最低限必要なバッファが配分される。その後、図10(c)に示すように、各処理プロセス毎に配分可能バッファブロック数を演算すると共に、縮小対象優先度を決定して、各処理プロセス1〜5に対して順位付けを行う。
【0098】
つぎに、図8に示すように処理プロセス6がバッファの配分を要求してきた場合を考えると、図10(c)に示す第1順位の処理プロセス3から処理プロセス6のためにバッファが解放され、処理プロセス6に対して最低限必要なバッファが配分される。その後、図11(d)に示すように、各処理プロセス毎に配分可能バッファブロック数を演算すると共に、縮小対象優先度を決定して、各処理プロセス1〜6に対して順位付けを行う。
【0099】
さらに、図9に示すように処理プロセス7がバッファの配分を要求してきた場合を考えると、図11(d)に示す第1順位の処理プロセス1から処理プロセス7のためにバッファが解放され、処理プロセス7に対して最低限必要なバッファが配分される。なお、図11(e)は、処理プロセス7に対してバッファを配分した後、各処理プロセス毎に配分可能バッファブロック数を演算すると共に、縮小対象優先度を決定して、各処理プロセス1〜7に対して順位付けを行った結果を示している。
【0100】
▲4▼ バッファ再配分処理2
さらに、図4に示したステップS404で実行されるバッファ再配分処理2について説明する。図12は、バッファ再配分処理2の手順を示すフローチャートである。なお、バッファ管理マネージャ103は、バッファ再配分処理2を実行するに当たり、現在実行中のモジュール106の処理プロセスのうち、配分されるバッファブロック数が固定の固定モードを選択しているモジュール106の処理プロセスをバッファ再配分処理2の処理対象から除外する。また、バッファアクセス開始宣言を行ったモジュール106の処理プロセスについても、バッファ再配分処理2の処理対象から除外する。
【0101】
まず、バッファ管理マネージャ103は、各モジュール106の処理プロセス毎に、配分を要求したバッファブロック数に対して不足している不足バッファブロック数(要求バッファブロック数−現在のバッファブロック数)を演算する(S1201)。具体的には、
insufficientSize = requestSize - currentSize
という演算を行う。
【0102】
ステップS1201において不足バッファブロック数を求めた後、バッファ管理マネージャ103は、各モジュール106の処理プロセス毎に、不足バッファブロック数にバッファ優先度の重みをかけ、拡張対象優先度を決定すると共に、拡張対象優先度を降順にソートして各モジュール106の処理プロセスに対して順位付けを行う(S1202,S1203)。換言すれば、各モジュール103の処理プロセスに対して付与された順位は、バッファ管理マネージャ103が、解放されたバッファから不足バッファブロック数分のバッファの全てまたは一部を確保すべきことをいずれのモジュール106の処理プロセスに対して要求すべきかを決定するための基準となる。
【0103】
すなわち、バッファ管理マネージャ103は、ステップS1202において、各モジュール106の処理プロセス毎に、
expandPriority = insufficientSize × priority × C
という演算を繰り返し実行することにより、拡張対象優先度を決定し、決定した拡張対象優先度を降順にソートして各モジュール106の処理プロセスに対して順位付けを行う(S1203)。
【0104】
なお、高いバッファ優先度を有するモジュール106の処理プロセスに関する拡張対象優先度による順位は、同一の配分可能バッファブロック数を有する他のモジュール106の処理プロセスより高くなる。
【0105】
そして、バッファ管理マネージャ103は、ステップS1202およびS1203で決定した第1順位のモジュール106に対して、拡張要求を出して解放されたバッファを確保させるための処理を実行する(S1204)。
【0106】
ここで、拡張要求は、解放されたバッファブロックからステップS1201で求めた不足バッファブロック数以下のバッファブロック数を確保することを第1順位のモジュール106に要求するものである。この拡張要求を受けた第1順位のモジュール106は、必要に応じてバッファブロックを確保して、占有可能なバッファを拡張することができる(バッファの再配分)。ただし、第1順位のモジュールは、バッファ管理モジュール103から拡張要求を受けたとしても、バッファを拡張する必要がない場合には解放されたバッファを確保してバッファを拡張する必要はない。
【0107】
そして、バッファ管理マネージャ103は、解放されたバッファが全て配分されたか否か、または、バッファ再配分処理2の対象となっている全てのモジュール106の処理プロセスに対して解放されたバッファが配分されたか否かを判定する(S1205)。
【0108】
ステップS1205において解放されたバッファが全て配分されていないと判定し、または、バッファ再配分処理2の対象となっている全てのモジュール106の処理プロセスに対して解放されたバッファが配分されていないと判定した場合、バッファ管理モジュール103は、ステップS1201〜ステップS1204の処理を繰り返し実行する。
【0109】
一方、ステップS1205において解放されたバッファが全て配分されたと判定し、または、バッファ再配分処理2の対象となっている全てのモジュール106の処理プロセスに対して解放されたバッファが配分されたと判定した場合、バッファ管理モジュール103は、バッファ再配分処理2を終了して図3のステップS301に戻る。
【0110】
ここで、バッファ再配分処理2について、図13〜図16を用いてさらに具体的に説明する。まず、現時点のバッファの配分状況は図9に示す通りであり、現時点においては処理プロセス1〜7およびその他の処理プロセスが実行中であるものとする。この図9に対応して、各処理プロセス1〜7に配分したバッファブロックの様子を示すものが図15(a)である。また、図15(b)は、各処理プロセス毎に不足バッファブロック数を演算すると共に、拡張対象優先度を決定して、各処理プロセス1〜7に対して順位付けを行った様子を示している。
【0111】
なお、図15および図16において、一番上の処理プロセスが第1順位の処理プロセスに該当し、この処理プロセスは、バッファ管理マネージャ103による拡張要求で要求されたバッファブロック数を確保し、確保したバッファブロック数分、既に配分されているバッファを拡張することができる。
【0112】
また、図15および図16において、網点で表示した矩形領域は処理プロセスに最低限必要なバッファブロック(最小稼働バッファブロック数)に、実線で囲まれた矩形領域は他の処理プロセスに配分可能なバッファブロック(配分可能バッファブロック数)に、点線で囲まれた矩形領域は要求バッファブロック数に対して不足している分のバッファブロック(不足バッファブロック数)に、斜線で表示した矩形領域は不足しているバッファブロックとして配分されるバッファブロックにそれぞれ該当する。
【0113】
そして、図13に示すように他の処理プロセスが8つのバッファブロックを解放した場合を考えると、図15(c)に示す第1順位の処理プロセス4に対し、解放された8つのバッファブロックが配分される。その後、図16(d)に示すように、各処理プロセス毎に不足バッファブロック数を演算すると共に、拡張対象優先度を決定して、各処理プロセス1〜7に対して順位付けを行う。
【0114】
つぎに、図14に示すように他の処理プロセスが9つのバッファブロックを解放した場合を考えると、図16(d)に示す第1順位の処理プロセス5に対し、解放された9つのバッファブロックが配分される。なお、図16(e)は、処理プロセス5に対して解放されたバッファブロックが配分された後に、各処理プロセス毎に不足バッファブロック数を演算すると共に、拡張対象優先度を決定して、各処理プロセス1〜7に対して順位付けを行った結果を示している。
【0115】
(6)本実施の形態の効果
このように、本実施の形態に係るバッファの動的管理方法によれば、処理プロセスの増減等によってシステム全体の負荷が変化した際に各処理プロセスに配分したバッファ領域を動的に再配分する場合、特定の処理プロセスを対象としてバッファの再配分処理を行うため、処理の高速化・簡素化を図ることができる。
【0116】
また、特定の処理プロセスを対象としてバッファの再配分処理を行うため、他の処理プロセスに影響を与えることなく、バッファの再配分を行うことを可能にすることができる。
【0117】
さらに、特定の処理プロセスを対象としてバッファの再配分処理を行うため、バッファからマルチメディアデータをディスクに退避する回数を減少させ、バッファリングするメリットを最大限活用できるようにすることができる。
【0118】
なお、図17に示したMODシステムに本発明に係るバッファの動的管理方法を適用することを例に取って本発明の実施の形態を説明したが、本発明に係るバッファの動的管理方法をバッファの動的管理を必要とする他のシステムや装置に適用可能であることはいうまでもない。
【0119】
また、マルチスレッドにおけるバッファ管理において、バッファ管理マネージャ103は1つのオブジェクトとして存在するが、1スレッドとして稼働しているプロシージャではない。実際にバッファ管理マネージャ103に登録依頼を行うための操作は、バッファを登録するスレッドがバッファ管理マネージャ103のオブジェクトを利用し、他のスレッドで利用しているバッファに対してバッファの縮小・拡張指令を実行している状態を意味する。
【0120】
さらに、上述した実施の形態におけるバッファ再配分処理1およびバッファ再配分処理2においては、配分可能バッファブロック数や不足バッファブロック数等を演算により求めるとして説明したが、これに代えて、常にこれらに関する情報をテーブルとして保持することにしておくことにしても良い。
【0121】
以上説明した本実施の形態に係るバッファの動的管理方法は、図3,図4,図5および図12に示したフローチャートの手順に従って、予め用意されたプログラムをコンピュータで実行することによって実現される。このプログラムは、ハードディスク、フロッピーディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、上記記録媒体を介して、またはネットワークを介して配布することができる。
【0122】
【発明の効果】
以上説明したように、本発明のバッファの動的管理方法(請求項1)によれば、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、バッファ領域における未使用のバッファブロック数が未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合であって、未実行中の処理プロセスおよび実行中の処理プロセスがそれぞれ処理を実行するために最低限必要なバッファブロック数の合計数とバッファ領域の全バッファブロック数とを比較し、合計数が全バッファブロック数を越えない場合に、未実行中の処理プロセスにバッファブロックを割り当て可能であると判定する判定工程と、判定工程で割り当て可能と判定した場合に、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって、未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、バッファ確保工程で確保したバッファブロックを未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むことにより、特定の処理プロセスを対象としてバッファの再配分処理を行うため、処理の高速化・簡素化を図ることができると共に、他の処理プロセスに影響を与えることなくバッファの再配分を行うことができる。特定の処理プロセスを対象としてバッファの再配分処理を行うことにより、バッファからデータをディスクに退避する回数を減少させることができるため、バッファリングするメリットを最大限活用できるようにすることができる。さらに、未実行中の処理プロセスにバッファを配分可能であるか否かを容易に判定することができると共に、実行中の処理プロセスに影響を与えることなく、バッファの再配分処理を行うことができる。
【0125】
また、本発明のバッファの動的管理方法(請求項2)によれば、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、バッファ領域における未使用のバッファブロック数が未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めたバッファブロック数に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、判定工程で割り当て可能と判定した場合に、順位情報生成工程で生成した縮小順位情報に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定し、実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、バッファ確保工程で確保したバッファブロックを未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むことにより、割り当てられているバッファブロックに余裕のある処理プロセスから順に未実行中の処理プロセスに割り当てるバッファを確保することができるため、未実行中の処理プロセスに割り当てるバッファを容易に確保することができる。
【0126】
また、本発明のバッファの動的管理方法(請求項3)によれば、未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、バッファ領域における未使用のバッファブロック数が未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、処理プロセスは、バッファブロックの割り当てに関する優先順位情報をそれぞれ有し、実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めたバッファブロック数および優先順位情報に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、判定工程で割り当て可能と判定した場合に、順位情報生成工程で生成した縮小順位情報に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定し、実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、バッファ確保工程で確保したバッファブロックを未実行中の処理プロセスに割り当てるバッファ割当工程と、を含むことにより、例えば、高速な処理が要求されているような処理プロセス対して高い優先順位を設定しておくことができるため、たとえその処理プロセスに割り当てられているバッファブロック数に余裕があるとしても、割り当てられたバッファブロック数が減少されて処理が遅くなるという事態の発生を防止することができる。
【0130】
また、本発明のバッファの動的管理方法(請求項4)によれば、各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求したバッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた不足分のバッファブロック数に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、任意の処理プロセスからバッファブロックが解放された場合に、順位情報生成工程で生成した割当順位情報に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定し、決定した処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、を含むため、不足しているバッファブロック数の多い処理プロセスに対して優先的にバッファを再配分することができる。
【0131】
また、本発明のバッファの動的管理方法(請求項5)によれば、処理プロセスは、バッファブロックの割り当て順位に関する優先順位情報をそれぞれ有し、各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求したバッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた不足分のバッファブロック数および優先順位情報に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、任意の処理プロセスからバッファブロックが解放された場合に、順位情報生成工程で生成した割当順位情報に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定し、決定した処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、を含むことにより、例えば、高速な処理が要求されているような処理プロセス対して高い優先順位を設定しておくことができるため、たとえその処理プロセスについて不足しているバッファブロック数が少ないとしても、優先的にバッファブロック数を増加させ、処理の高速化を図ることができる。
【0133】
さらに、本発明のコンピュータ読み取り可能な記録媒体(請求項6)によれば、請求項1〜5のいずれか一つに記載のバッファの動的管理方法の各工程をコンピュータに実行させるためのプログラムを記録したため、このプログラムをコンピュータで実行することにより、特定の処理プロセスを対象としてバッファの再配分処理を行うことができることから、処理の高速化・簡素化を図ることができると共に、他の処理プロセスに影響を与えることなく、バッファの再配分を行うことができるバッファの動的管理方法を実現することができる。さらに、特定の処理プロセスを対象としてバッファの再配分処理を行うことにより、バッファからデータをディスクに退避する回数を減少させることができるため、バッファリングするメリットを最大限活用できるバッファの動的管理方法を実現することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るバッファの動的管理方法による処理の概念を説明するためのブロック図である。
【図2】本発明の実施の形態に係るバッファの動的管理方法において利用される情報である要求バッファブロック数および最小稼働バッファブロック数を説明するための静止画像データの概念図である。
【図3】本発明の実施の形態に係るバッファの動的管理方法において、バッファ配分処理の手順を示すフローチャートである。
【図4】本発明の実施の形態に係るバッファの動的管理方法において、バッファ解放検知処理の手順を示すフローチャートである。
【図5】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1の手順を示すフローチャートである。
【図6】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図7】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図8】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図9】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図10】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図11】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理1をより具体的に説明するための説明図である。
【図12】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理2の手順を示すフローチャートである。
【図13】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理2をより具体的に説明するための説明図である。
【図14】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理2をより具体的に説明するための説明図である。
【図15】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理2をより具体的に説明するための説明図である。
【図16】本発明の実施の形態に係るバッファの動的管理方法において、バッファ再配分処理2をより具体的に説明するための説明図である。
【図17】マルチメディア・オン・デマンド・システム(MODシステム)の概略構成図である。
【符号の説明】
100 サーバ装置
101a〜101c クライアント装置
102 ネットワーク
103 バッファ管理マネージャ
104 メモリ管理マネージャ
105 メモリ
106 マルチメディア用バッファリングモジュール(モジュール)
Claims (6)
- システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、
未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合であって、前記未実行中の処理プロセスおよび実行中の処理プロセスがそれぞれ処理を実行するために最低限必要なバッファブロック数の合計数と前記バッファ領域の全バッファブロック数とを比較し、前記合計数が前記全バッファブロック数を越えない場合に、前記未実行中の処理プロセスにバッファブロックを割り当て可能であると判定する判定工程と、
前記判定工程で割り当て可能と判定した場合に、前記実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、
前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、
を含むことを特徴とするバッファの動的管理方法。 - システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、
未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって前記未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、
前記実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、前記未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めた前記バッファブロック数に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、
前記判定工程で割り当て可能と判定した場合に、前記順位情報生成工程で生成した前記縮小順位情報に基づいて、バッファブロックを減少させる対象となる前記実行中の処理プロセスを決定し、前記実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、
前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、
を含むことを特徴とするバッファの動的管理方法。 - システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、
未実行中の処理プロセスからバッファブロックの割り当て要求があった際に、前記バッファ領域における未使用のバッファブロック数が前記未実行中の処理プロセスで処理の実行に最低限必要なバッファブロック数に満たない場合、実行中の処理プロセスのいずれかに割り当てたバッファブロック数を減少させることによって前記未実行中の処理プロセスにバッファブロックを割り当て可能であるか否かを判定する判定工程と、
前記処理プロセスは、前記バッファブロックの割り当てに関する優先順位情報をそれぞ れ有し、
前記実行中の処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行するために最低限必要なバッファブロック数に基づいて、前記未実行中の処理プロセスに割り当て可能なバッファブロック数を求め、求めた前記バッファブロック数および前記優先順位情報に基づいて、バッファブロックを減少させる対象となる実行中の処理プロセスを決定するための縮小順位情報を生成する順位情報生成工程と、
前記判定工程で割り当て可能と判定した場合に、前記順位情報生成工程で生成した前記縮小順位情報に基づいて、バッファブロックを減少させる対象となる前記実行中の処理プロセスを決定し、前記実行中の処理プロセスに割り当てたバッファブロック数を減少させることによって、前記未実行中の処理プロセスに割り当てるバッファブロックを確保するバッファ確保工程と、
前記バッファ確保工程で確保したバッファブロックを前記未実行中の処理プロセスに割り当てるバッファ割当工程と、
を含むことを特徴とするバッファの動的管理方法。 - システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、
各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求した前記バッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた不足分のバッファブロック数に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、
任意の処理プロセスからバッファブロックが解放された場合に、前記順位情報生成工程で生成した前記割当順位情報に基づいて、解放された前記バッファブロックの割り当て対象となる処理プロセスを決定し、決定した前記処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、
を含むことを特徴とするバッファの動的管理方法。 - システム全体または特定の装置におけるデータの処理のために使用するバッファ領域を一括管理し、かつ、該バッファ領域を複数のブロックに分割して各時点で実行している任意の数の処理プロセスにそれぞれ動的に割り当てるバッファの動的管理方法において、
前記処理プロセスは、前記バッファブロックの割り当て順位に関する優先順位情報をそれぞれ有し、
各処理プロセス毎に、現在割り当てられているバッファブロック数および処理を実行する際に要求したバッファブロック数に基づいて、要求した前記バッファブロック数に対して不足している不足分のバッファブロック数を求め、求めた前記不足分のバッファブロック数および前記優先順位情報に基づいて、解放されたバッファブロックの割り当て対象となる処理プロセスを決定するための割当順位情報を生成する順位情報生成工程と、
任意の処理プロセスからバッファブロックが解放された場合に、前記順位情報生成工程で生成した前記割当順位情報に基づいて、前記解放されたバッファブロックの割り当て対象となる処理プロセスを決定し、決定した前記処理プロセスに解放されたバッファを割り当てるバッファ割当工程と、
を含むことを特徴とするバッファの動的管理方法。 - 前記請求項1〜5のいずれか一つに記載のバッファの動的管理方法の各工程をコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04753098A JP3761317B2 (ja) | 1998-02-27 | 1998-02-27 | バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04753098A JP3761317B2 (ja) | 1998-02-27 | 1998-02-27 | バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11249955A JPH11249955A (ja) | 1999-09-17 |
JP3761317B2 true JP3761317B2 (ja) | 2006-03-29 |
Family
ID=12777688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04753098A Expired - Fee Related JP3761317B2 (ja) | 1998-02-27 | 1998-02-27 | バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3761317B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2765511A2 (en) | 2013-02-07 | 2014-08-13 | Ricoh Company, Ltd. | Information processing device |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9306871B2 (en) * | 2005-11-04 | 2016-04-05 | Alcatel Lucent | Apparatus and method for non-mediated, fair, multi-type resource partitioning among processes in a fully-distributed environment |
JP2012033041A (ja) * | 2010-07-30 | 2012-02-16 | Hitachi Ltd | メモリ管理方法、メモリ管理プログラム、計算機 |
JP6269045B2 (ja) * | 2013-12-26 | 2018-01-31 | 日本電気株式会社 | バッファを管理する情報処理装置、バッファ管理方法、及びそのためのプログラム |
-
1998
- 1998-02-27 JP JP04753098A patent/JP3761317B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2765511A2 (en) | 2013-02-07 | 2014-08-13 | Ricoh Company, Ltd. | Information processing device |
US9436593B2 (en) | 2013-02-07 | 2016-09-06 | Ricoh Company, Ltd. | Information processing device |
Also Published As
Publication number | Publication date |
---|---|
JPH11249955A (ja) | 1999-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7665090B1 (en) | System, method, and computer program product for group scheduling of computer resources | |
US8190795B2 (en) | Memory buffer allocation device and computer readable medium having stored thereon memory buffer allocation program | |
US6859926B1 (en) | Apparatus and method for workload management using class shares and tiers | |
JP4049525B2 (ja) | 分散処理システム | |
JP2559915B2 (ja) | ロードバランスシステム | |
US8060679B2 (en) | Information processing apparatus and access control method capable of high-speed data access | |
WO2022095815A1 (zh) | 显存管理方法、装置、设备及系统 | |
JP2005031987A (ja) | コンテンツ配信システムにおけるコンテンツ配置管理システム及びコンテンツ配置管理プログラム | |
US20050240748A1 (en) | Locality-aware interface for kernal dynamic memory | |
JP4905120B2 (ja) | 負荷集約プログラム、該プログラムを記録した記録媒体、負荷集約装置および負荷集約方法 | |
US8775767B2 (en) | Method and system for allocating memory to a pipeline | |
US7904688B1 (en) | Memory management unit for field programmable gate array boards | |
US5640597A (en) | Method and apparatus for servicing simultaneously a plurality of requests for data streams | |
JP3761317B2 (ja) | バッファの動的管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US6754658B1 (en) | Database server processing system, method, program and program storage device | |
JP2004046372A (ja) | 分散処理システム、リソース割当方法およびプログラムならびにリソース割当プログラムが記録された記録媒体 | |
CN114327862B (zh) | 一种内存分配方法、装置、电子设备及存储介质 | |
JPH08314779A (ja) | サーバーシステム | |
Venkatasubramanian et al. | E ective load management for scalable video servers | |
CN111338782A (zh) | 面向共享式突发数据缓存的基于竞争感知的节点分配方法 | |
JP5641300B2 (ja) | ストレージシステム及びストレージシステムのメモリキャッシュ領域制御方法 | |
Tsai et al. | Wrr-scan: a rate-based real-time disk-scheduling algorithm | |
US20230010895A1 (en) | Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program | |
JP2022088762A (ja) | 情報処理装置およびジョブスケジューリング方法 | |
KR101932523B1 (ko) | 가상 머신에 할당된 가상 gpu 메모리의 슬롯을 동적으로 증감시키는 방법 및 이를 구현하는 컴퓨팅 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050926 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051205 |
|
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: 20060105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060110 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100120 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110120 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120120 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |