(57)【要約】【課題】メモリを予め確保する場合に、適切なサイズのメモリを確保することを可能とする情報処理装置、情報処理方法、及び情報処理プログラムを提供する。【解決手段】記憶領域の確保を要求した記憶領域通知手段に対して記憶領域の割り当てを行う場合に、記憶領域を確保するためのシステムコールを用いて記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、検出手段により検出された空き容量に応じて用いることにより記憶領域の割り当てを行う記憶領域管理手段を有する。【選択図】図６
2009048258.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段と、
前記記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、
前記処理手段が前段及び後段に接続され、前段の前記処理手段が前記処理済み情報を記憶するための記憶領域を前記記憶手段に確保し、該記憶領域の前記記憶手段における位置を前段の前記処理手段に通知するとともに、前記処理済み情報が記憶されている記憶領域の前記記憶手段における位置を後段の前記処理手段に通知する記憶領域通知手段と、
前記記憶手段に記憶可能な空き容量を検出する検出手段と、
前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出手段により検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理手段と、
を有する情報処理装置。
【請求項２】
前記検出手段により検出された空き容量が、前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和である第１のサイズ以上である場合に、前記記憶領域管理手段は、前記第２の方式を用いるとともに、該第２の方式で予め確保される記憶領域のサイズを前記第１のサイズとする請求項１に記載の情報処理装置。
【請求項３】
前記複数の処理手段のうち、異なる３つの前記記憶領域通知手段と接続されている処理手段が存在する場合に、前記検出手段により検出された空き容量が、前記異なる３つの前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和と、前記異なる３つの前記記憶領域通知手段以外の記憶領域通知手段が確保する記憶領域のサイズの最大値を３倍したサイズとの和である第２のサイズ以上、かつ前記第１のサイズ未満の場合に、前記記憶領域管理手段は、前記第２の方式を用いるとともに、該第２の方式で予め確保される記憶領域のサイズを前記第２のサイズとする請求項２に記載の情報処理装置。
【請求項４】
前記複数の処理手段のうち、異なる３つの前記記憶領域通知手段と接続されている処理手段が存在する場合に、前記検出手段により検出された空き容量が、前記異なる３つの前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和と、前記異なる３つの前記記憶領域通知手段以外の記憶領域通知手段が確保する記憶領域のサイズの最大値を２倍したサイズとの和である第３のサイズ以上、かつ前記第２のサイズ未満の場合に、前記記憶領域管理手段は、前記第３の方式を用いるとともに、該第３の方式で予め確保される記憶領域のサイズを前記第３のサイズとする請求項３に記載の情報処理装置。
【請求項５】
前記検出手段により検出された空き容量が、前記第３のサイズ未満の場合に、前記記憶領域管理手段は、前記第１の方式を用いる請求項４に記載の情報処理装置。
【請求項６】
記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、前記処理手段が前段及び後段に接続された記憶領域通知手段と、を有する情報処理装置における情報処理方法であって、
前記記憶手段に記憶可能な空き容量を検出する検出段階と、
前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出段階により検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理段階と、
を有する情報処理方法。
【請求項７】
情報を記憶するための記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、前記処理手段が前段及び後段に接続された複数の記憶領域通知手段と、を有する情報処理装置としてコンピュータを機能させるためのプログラムであって、
前記記憶手段に記憶可能な空き容量を検出する検出ステップと、
前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出ステップにより検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理ステップと、
を有する処理をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関し、特に適切なメモリ管理を行う情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来より、メモリの管理方法については種々の提案がされている。例えば特許文献１には、各画像処理モジュールの間に画像データを一時保持するバッファを配置し、バッファに出力要求に応えられるだけのデータが蓄積されていなければ、データを蓄積するために前段の画像処理モジュールに処理を行わせる事で、後段の画像処理モジュールは処理しやすい処理単位で処理を行いながら全体を連携させて処理する方式におけるメモリ管理方法が提案されている。
【０００３】
具体的には、メモリ割当/解放要求に応じてその都度ＯＳ(Operating System)のシステムコールを用いてメモリの割当/解放を行うメモリ管理方法が提案されている。また、予め所定サイズのメモリを確保しておき、メモリ割当要求に応じてその確保していたメモリから割り当て、割当/解放の状態をテーブル等で管理するメモリ管理方法が提案されている。更に、予め確保したサイズで不足であれば、再度ＯＳに対してメモリ割当を求めるメモリ管理方法が提案されている。
【特許文献１】特開２００６−３３８４９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、予めメモリを確保する場合、確保するメモリの適切なサイズがユーザには分からないため、接続された処理の関係によっては、処理速度向上の効果がほとんどなかったり、小さかったりすることが起こり易い。具体的には、ライン単位の処理がない場合にライン分のサイズだけメモリを予め確保していても、一度も使われないことなどがある。
【０００５】
このように従来の技術では、メモリを予め確保する場合に、適切なサイズのメモリを確保することが出来ないという問題点があった。
【０００６】
本発明は上記問題点に鑑み、メモリを予め確保する場合に、適切なサイズのメモリを確保することを可能とする情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１の発明は、記憶手段と、前記記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、前記処理手段が前段及び後段に接続され、前段の前記処理手段が前記処理済み情報を記憶するための記憶領域を前記記憶手段に確保し、該記憶領域の前記記憶手段における位置を前段の前記処理手段に通知するとともに、前記処理済み情報が記憶されている記憶領域の前記記憶手段における位置を後段の前記処理手段に通知する記憶領域通知手段と、前記記憶手段に記憶可能な空き容量を検出する検出手段と、前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出手段により検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理手段と、を有する。
【０００８】
請求項１の発明は、処理手段が記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶し、記憶領域通知手段が前記処理手段が前段及び後段に接続され、前段の前記処理手段が前記処理済み情報を記憶するための記憶領域を前記記憶手段に確保し、該記憶領域の前記記憶手段における位置を前段の前記処理手段に通知するとともに、前記処理済み情報が記憶されている記憶領域の前記記憶手段における位置を後段の前記処理手段に通知し、検出手段が前記記憶手段に記憶可能な空き容量を検出し、記憶領域管理手段が前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出手段により検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行うので、メモリを予め確保する場合に、適切なサイズのメモリを確保することを可能とする情報処理装置を提供することができる。
【０００９】
また、請求項２の発明は、請求項１の発明において、前記検出手段により検出された空き容量が、前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和である第１のサイズ以上である場合に、前記記憶領域管理手段は、前記第２の方式を用いるとともに、該第２の方式で予め確保される記憶領域のサイズを前記第１のサイズとするものである。
【００１０】
請求項２の発明によれば、空き容量に応じて、処理済み情報のサイズの総和だけ確保するので、記憶領域が不足することを回避できるとともに、必要以上に確保することないので、適切なサイズのメモリを確保することを可能とする情報処理装置を提供することができる。
【００１１】
また、請求項３の発明は、請求項２の発明において、前記複数の処理手段のうち、異なる３つの前記記憶領域通知手段と接続されている処理手段が存在する場合に、前記検出手段により検出された空き容量が、前記異なる３つの前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和と、前記異なる３つの前記記憶領域通知手段以外の記憶領域通知手段が確保する記憶領域のサイズの最大値を３倍したサイズとの和である第２のサイズ以上、かつ前記第１のサイズ未満の場合に、前記記憶領域管理手段は、前記第２の方式を用いるとともに、該第２の方式で予め確保される記憶領域のサイズを前記第２のサイズとするものである。
【００１２】
請求項３の発明によれば、空き容量に応じて、第２のサイズだけ確保するので、記憶領域が不足することを回避できるとともに、必要以上に確保することないので、適切なサイズのメモリを確保することを可能とする情報処理装置を提供することができる。
【００１３】
また、請求項４の発明は、請求項３の発明において、前記複数の処理手段のうち、異なる３つの前記記憶領域通知手段と接続されている処理手段が存在する場合に、前記検出手段により検出された空き容量が、前記異なる３つの前記記憶領域通知手段の前段に接続された前記処理手段が前記記憶領域に記憶する前記処理済み情報のサイズの総和と、前記異なる３つの前記記憶領域通知手段以外の記憶領域通知手段が確保する記憶領域のサイズの最大値を２倍したサイズとの和である第３のサイズ以上、かつ前記第２のサイズ未満の場合に、前記記憶領域管理手段は、前記第３の方式を用いるとともに、該第３の方式で予め確保される記憶領域のサイズを前記第３のサイズとするものである。
【００１４】
請求項４の発明によれば、空き容量に応じて、第３のサイズだけ確保するので、記憶領域が不足することを回避できるとともに、必要以上に確保することないので、適切なサイズのメモリを確保することを可能とする情報処理装置を提供することができる。
【００１５】
また、請求項５の発明は、請求項４の発明において、前記検出手段により検出された空き容量が、前記第３のサイズ未満の場合に、前記記憶領域管理手段は、前記第１の方式を用いるものである。
【００１６】
請求項５の発明によれば、空き容量に応じて、必要な時に必要なサイズだけ確保するので、他の資源を圧迫することなく、適切なサイズのメモリを確保することを可能とする情報処理装置を提供することができる。
【００１７】
また、請求項６の発明は、記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、前記処理手段が前段及び後段に接続された記憶領域通知手段と、を有する情報処理装置における情報処理方法であって、前記記憶手段に記憶可能な空き容量を検出する検出段階と、前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出段階により検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理段階と、を有する。
【００１８】
請求項６の発明は、請求項１の発明と同様に作用するので、請求項１と同様の効果が得られる。
【００１９】
請求項７の発明は、情報を記憶するための記憶手段の記憶領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報を前記記憶手段の記憶領域に記憶する複数の処理手段と、前記処理手段が前段及び後段に接続された複数の記憶領域通知手段と、を有する情報処理装置としてコンピュータを機能させるためのプログラムであって、前記記憶手段に記憶可能な空き容量を検出する検出ステップと、前記記憶領域通知手段から記憶領域の確保を要求する記憶領域要求が通知され、該要求した前記記憶領域通知手段に対して前記記憶領域の割り当てを行う場合に、前記記憶領域を確保するためのシステムコールを用いて前記記憶領域の割り当てを行う第１の方式、予め記憶領域を確保しておき、確保していた記憶領域を割り当てる第２の方式、及び前記第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、前記検出ステップにより検出された空き容量に応じて用いることにより前記記憶領域の割り当てを行う記憶領域管理ステップと、を有する処理をコンピュータに実行させるための情報処理プログラムである。
【００２０】
請求項７の発明は、請求項１の発明と同様に作用するので、請求項１と同様の効果が得られる。
【発明の効果】
【００２１】
本発明によれば、メモリを予め確保する場合に、適切なサイズのメモリを確保することを可能とする情報処理装置、情報処理方法、及び情報処理プログラムを提供することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、情報処理装置としてパソコンを用いた例について説明する。また、本実施の形態で処理対象となる情報は、画像情報を例にしている。
【００２３】
まず、図１を用いて、パソコン１０の構成について説明する。パソコン１０は、ＣＰＵ（Central Processing Unit）１８と、ＨＤＤ（Hard Disk Drive）２０と、ＲＡＭ（Random Access Memory）２２と、通信Ｉ／Ｆ（インタフェース）２４と、ＲＯＭ（Read Only Memory）２６と、表示部２８と、操作入力部３０と、バス３２とを含む。
【００２４】
ＣＰＵ１８は、パソコン１０の全体の動作を司るものであり、後述するフローチャートに示される処理は、ＣＰＵ１８により実行される。ＨＤＤ２０は、プログラム、ＯＳ（Operating System）等が記録される記憶装置である。ＲＡＭ２２（記憶手段）は、ＯＳやプログラムやデータ等が展開される記憶装置である。以下の説明におけるメモリ領域は、このＲＡＭ２２上の領域を示している。
【００２５】
通信Ｉ／Ｆ２４は、ネットワークに接続するためのものであり、ＮＩＣやそのドライバで構成される。この通信Ｉ／Ｆ２４は、ネットワークに接続しない場合には不要である。
【００２６】
ＲＯＭ２６は、パソコン１０の起動時に動作するブートプログラムなどが記憶されている記憶装置である。表示部２８は、パソコン１０に関する情報をパソコン１０のユーザに表示するものである。操作入力部３０は、ユーザがパソコン１０の操作や情報を入力する際に用いられるものである。バス３２は、情報のやりとりが行われる際に使用される。
【００２７】
次に、図２を用いて、本実施の形態に係るソフトウェア構成について説明する。同図に示されるように、パソコン１０のソフトウェアは、大別して処理管理部４６、画像処理モジュール（処理手段）３８ａ、３８ｂ、３８ｃ、及びバッファモジュール（記憶領域通知手段）４０ａ、４０ｂを含んで構成される。
【００２８】
以下の説明では、バッファモジュール４０ａ、４０ｂのように、末尾にａ、ｂ等の添字が付与された符号により表される複数の要素を総称して指し示す時、或いは、それら複数の要素のうちの任意の１つを指し示す時は、末尾の添字を省いて説明する。
【００２９】
上記処理管理部４６は、画像処理モジュール３８やバッファモジュール４０に係る処理の管理を行う。また、処理管理部４６は、更にメモリ領域管理部（記録領域管理部）４６ａ、空きメモリ検出部（検出手段）４６ｂ、エラー検出部４６ｃ、ワークフロー管理部４６ｄ、及びリソース管理部４６ｅを含む。
【００３０】
リソース管理部４６ｅは、メモリ等の資源の管理を行うものである。このリソース管理部４６ｅに含まれるメモリ領域管理部４６ａは、バッファモジュール４０からメモリ領域（記憶領域）の確保を要求するメモリ要求（記憶領域要求）が通知され、該要求したバッファモジュール４０に対してメモリ領域の割り当てを行う場合に、メモリ領域を確保するためのシステムコールを用いてメモリ領域の割り当てを行う第１の方式、予めメモリ領域を確保しておき、確保していたメモリ領域を割り当てる第２の方式、及び第１の方式と第２の方式とを併用する第３の方式のいずれか１つの方式を、空きメモリ検出部４６ｂにより検出された空き容量に応じて用いることによりメモリ領域の割り当てを行うものである。
【００３１】
なお、第１の方式と第２の方式とを併用する第３の方式とは、第２の方式のように、予めメモリを確保しておき、確保した領域で足りない場合には、第１の方式のようにシステムコールを用いてメモリ領域を確保するものである。
【００３２】
なお、上記システムコールとは、ＯＳが提供する関数であり、本実施の形態では、メモリ領域を確保するために、ＯＳに対してメモリ領域を要求するためのものと、メモリ領域を解放するものとしている。
【００３３】
空きメモリ検出部４６ｂは、ＲＡＭ２２に記憶可能な空き容量を検出するものである。これも通常はシステムコールにより得られる。エラー検出部４６ｃは、各画像処理モジュール３８や各バッファモジュール４０に係るエラーを検出するものであるが、本実施の形態では特にメモリ領域を確保するシステムコールによりメモリ領域が確保できなかったことを検出するものである。
【００３４】
ワークフロー管理部４６ｄは、バッファモジュール４０に関する情報を持ち、本実施の形態では、上記メモリ領域管理部４６ａがどれだけメモリ領域を確保する必要があるのかを判断する際に、バッファモジュール４０の情報を提供するものである。
【００３５】
上記画像処理モジュール３８は、ＲＡＭ２２のメモリ領域に記憶された所定の情報に対して予め定められた処理を行い、該処理により得られた処理済み情報をＲＡＭ２２のメモリ領域に記憶するもので、同図に示されるように複数存在する。
【００３６】
また、バッファモジュール４０は、画像処理モジュール３８が前段及び後段に接続され、前段の画像処理モジュール３８が処理済み情報を記憶するためのメモリ領域をＲＡＭ２２に確保し、メモリ領域のＲＡＭ２２における位置（以下、アドレスと記す）を前段の画像処理モジュール３８に通知するとともに、処理済み情報が記憶されているメモリ領域のＲＡＭ２２におけるアドレスを後段の画像処理モジュール３８に通知するものである。
【００３７】
このように、本実施の形態における各画像処理モジュール３８や各バッファモジュール４０は、パイプライン形態又はＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態で連結されている。
【００３８】
そして、上記ソフトウェア構成における基本的な処理の流れは、例えば画像処理モジュール３８ａが処理した処理済み情報をバッファモジュール４０ａがメモリ領域管理部４６ａにより確保したメモリ領域に記憶し、記憶された処理済み情報に対して画像処理モジュール３８ｂが更に処理を行い、それにより得られた処理済み情報をバッファモジュール４０ｂがメモリ領域管理部４６ａにより確保したメモリ領域に記憶する、という流れとなっている。
【００３９】
上記流れにおいて、各画像処理モジュール３８が処理を行う際に、処理対象の情報が記憶されたメモリ領域のアドレス、及び処理済み情報を記憶するためのメモリ領域のアドレスが必要となるが、このアドレスをバッファモジュール４０が画像処理モジュール３８に通知する。
【００４０】
次に、図３を用いて、異なる３つのバッファモジュールと接続されている画像処理モジュールの例について説明する。
【００４１】
図３に示される「Ｍ」は画像処理モジュール３８を示し、「Ｂ」はバッファモジュール４０を示しており、このように表現した場合、図２に示した画像処理モジュール３８とバッファモジュール４０は、図３（Ａ）に示される表現となる。
【００４２】
そして、同図（Ｂ）は、バッファモジュール４０の前段に１つの画像処理モジュール３８が接続され、後段には２つの画像処理モジュール３８が接続された例を示している。
【００４３】
また、同図（Ｃ）は、異なる３つのバッファモジュールと接続されている画像処理モジュールの例を示すものであり、画像処理モジュール３８の前段に２つのバッファモジュール４０が接続され、後段に１つのバッファモジュール４０が接続された例を示している。
【００４４】
同図（Ｃ）の場合、バッファモジュール４０が３つとなるため、各バッファモジュール４０が確保するメモリ領域の数は、少なくとも３つとなる。
【００４５】
次に、図４を用いて、確保したメモリ領域を管理するためのテーブルについて説明する。このテーブルは、同図に示されるように、使用されていないメモリ領域の先頭アドレスとサイズとを管理するテーブルである。このテーブルにより使用可能なメモリ領域の先頭アドレス、及びサイズを得ることができる。また、メモリ領域を確保する場合には、最大サイズの領域を、要求サイズの領域と残りの領域とに分割して確保し、要求サイズの領域はテーブルから削除する。
【００４６】
以下、本実施の形態に係る処理を、フローチャートを用いて説明する。このフローチャートは、上述したＣＰＵ１８により行われるものである。また、以下の説明では、画像処理モジュール３８を単にモジュールと表現し、バッファモジュール４０を単にバッファと表現する。また、上述した１つの画像処理モジュール３８に接続された異なる３つのバッファモジュールを分岐バッファと表現する。更に、バッファモジュール４０の処理により得られ、メモリ領域に記憶される処理済み情報の情報量を、そのバッファモジュール４０の出力量と表現し、バッファの前段を単にバッファ前段と表現する。
【００４７】
また、以下で説明する処理は、バッファモジュール４０から要求されたメモリ領域の管理に関する処理であり、画像処理モジュール３８からのメモリ領域の要求については、リソース管理部４６ｅが、その都度システムコールを用いて行うものとする。これは、画像処理モジュール３８からのメモリ領域の要求は、通常初期化時のみに発生し、実行時の処理性能に影響を及ぼさないためである。
【００４８】
まず、図５を用いて、メモリ領域管理部４６ａにより行われる初期化処理について説明する。この初期化処理とは、各画像処理モジュール３８が最初の処理を行う前に行われる処理である。
【００４９】
まず、ステップ１０１で、バッファ前段のモジュールの出力量Ｐ［ｉ］の総和Ｐｔ、分岐バッファ前段のモジュールの出力量の総和Ｐｂ、分岐バッファ以外のバッファが確保する記憶量の最大値Ｂｍ、をそれぞれ求める。
【００５０】
上記Ｐ［ｉ］とは、例えば図２において、モジュール３８ａ、３８ｂの各々の出力量を示し、この場合は、Ｐ［０］がモジュール３８ａの出力量、Ｐ［１］がモジュール３８ｂの出力量を示す。そして、総和Ｐｔは、Ｐ［０］＋Ｐ［１］となる。
【００５１】
また、総和Ｐｂとは、異なる３つのバッファが各々確保する３つメモリ領域のサイズの和を示している。
【００５２】
更に、最大値Ｂｍとは、例えば図２において、バッファモジュール４０ａ、４０ｂが確保するメモリ領域のサイズの中で最も大きいサイズを示している。
【００５３】
次のステップ１０２で、方式設定処理を行う。この方式設定処理とは、上記３つの方式のうち、いずれの方式を用いるかをＲＡＭ２２の空き容量に応じて定める処理である。
【００５４】
この方式設定処理の詳細を、図６のフローチャートを用いて説明する。まず、ステップ２０１で、空き容量Ｆを検出する。次のステップ２０２で、Ｆ≧Ｐｔか否か判断する。ステップ２０２で肯定判断した場合には、ステップ２０３で、バッファ毎に第２の方式を用いることとし、ステップ２０４でバッファ毎にＰ［ｉ］のサイズ（全体でＰｔ）のメモリを確保し、処理を終了する。ここで確保されたメモリ領域は、Ｐ［ｉ］ずつバッファ毎に固定的に割り当てられる。
【００５５】
一方、ステップ２０２で、否定判断した場合には、ステップ２０５で、Ｆ≧３×Ｂｍ＋Ｐｂか否か判断する。ステップ２０５で、肯定判断した場合には、ステップ２０６でバッファ毎に第２の方式を用いることとし、ステップ２０７で３×Ｂｍ＋Ｐｂのサイズのメモリを確保し、処理を終了する。ここで確保されたメモリ領域のうち、Ｐｂは分岐バッファ前段のモジュールの出力量の総和であるので、各分岐バッファにＰｂから固定的にメモリ領域が割り当てられる。そして、残った３×Ｂｍのサイズのメモリ領域で、分岐バッファ以外のバッファからのメモリ領域の要求に対応することとなる。
【００５６】
ステップ２０５で否定判断した場合には、ステップ２０８で更にＦ≧２×Ｂｍ＋Ｐｂか否か判断する。ステップ２０８で肯定判断した場合には、ステップ２０９で第３の方式を用いることとし、ステップ２１０で２×Ｂｍ＋Ｐｂのサイズのメモリを確保し、処理を終了する。ここで確保されたメモリ領域のうち、Ｐｂは分岐バッファ前段のモジュールの出力量の総和であるので、各分岐バッファにＰｂから固定的にメモリ領域が割り当てられる。そして、残った２×Ｂｍのサイズのメモリ領域で、分岐バッファ以外のバッファからのメモリ領域の要求に対応することとなる。
【００５７】
一方、ステップ２０８で、否定判断した場合には、ステップ２１１で、第１の方式を用いることとし、処理を終了する。
【００５８】
上述したフローチャートでは、３×Ｂｍ＋Ｐｂと、２×Ｂｍ＋Ｐｂを用いた２つの分岐処理がされている。これらの理由について説明する。まず、２×Ｂｍ＋Ｐｂでメモリを管理する場合、２×Ｂｍのサイズのメモリ領域を分断するように、サイズがＢｍのメモリ領域を割り当てている状態で、更にサイズがＢｍのメモリ領域を要求された場合、サイズがＢｍのメモリ領域を連続して確保することができない。従って、ステップ２０８で２×Ｂｍ＋Ｐｂだけ確保できた場合には、必要に応じてシステムコールを用いるようにする。
【００５９】
一方、３×Ｂｍ＋Ｐｂでメモリを管理する場合、３×Ｂｍのサイズのメモリ領域を分断するように、サイズがＢｍのメモリ領域を割り当てている状態で、更にサイズがＢｍのメモリ領域を要求された場合でも、残りのサイズが２×Ｂｍであり、しかも分断されたことにより２つの空き領域が発生することとなるが、いずれかの空き領域には、サイズがＢｍのメモリ領域が連続している。従って、ステップ２０５で３×Ｂｍ＋Ｐｂだけ確保できた場合には、必要に応じてシステムコールを用いる必要がないため、第３の方式でメモリを管理することができる。
【００６０】
以上説明した処理が初期化処理である。次に、図７のフローチャートを用いて、バッファからメモリ領域を要求された場合の処理について説明する。
【００６１】
バッファからメモリ領域を要求されると、ステップ３０１で、方式切り替え処理を行い、ステップ３０２で、方式に応じたメモリ確保処理を行う。これらの処理について、以下順に説明する。
【００６２】
まず、図８のフローチャートを用いて、方式切り替え処理について説明する。最初のステップ４０１で、現在用いている方式が第１の方式か否か判断する。ステップ４０１で肯定判断した場合には、ステップ４０２で上述した方式設定処理を行い、否定判断した場合には、そのまま処理を終了する。
【００６３】
このように、この処理は、第１の方式の場合には、第２、或いは第３の方式に切り替えるための処理である。
【００６４】
次に、図９、図１０、図１１のフローチャートを用いて、メモリ確保処理について説明する。まず、図９のフローチャートを用いて、第１の方式の場合のメモリ確保処理を説明する。
【００６５】
第１の方式は、メモリ領域が要求される度にシステムコールを用いて確保する処理であるので、ステップ５０１で、ＯＳにメモリを要求し、ステップ５０２で、システムコールの戻り値によりメモリ確保が成功したか否か判断する。
【００６６】
ステップ５０２で、肯定判断した場合には、ステップ５０３で、確保したメモリ領域を要求元のバッファに割り当て、処理を終了する。一方、ステップ５０２で否定判断した場合には、ステップ５０４で現在用いている方式が第１の方式か否か判断する。ステップ５０４で肯定判断した場合には、ステップ５０８でエラーを要求元のバッファに返し、処理を終了する。
【００６７】
ステップ５０４で否定判断した場合には、第１の方式以外の方式であるため、メモリ領域が予め確保されていることとなる。そのメモリ領域をステップ５０５で解放する。そしてステップ５０６で、再びＯＳにメモリを要求し、ステップ５０７で、システムコールの戻り値によりメモリ確保が成功したか否か判断する。ステップ５０７で否定判断した場合には、上記ステップ５０８でエラーを要求元のバッファに返し、処理を終了する。一方、ステップ５０７で肯定判断した場合には、ステップ５０３で、確保したメモリ領域を要求元のバッファに割り当て、処理を終了する。
【００６８】
上述した処理のように、最初にメモリ領域が確保できない場合には、確保しておいたメモリ領域を解放することで、更にメモリ領域の確保を試みるので、メモリ領域が確保できない事態を極力回避することができる。
【００６９】
次に、図１０のフローチャートを用いて、第２の方式の場合のメモリ確保処理を説明する。
【００７０】
まず、ステップ６０１で、メモリ領域を確保し、ステップ６０２で確保したメモリ領域をテーブルから削除することでテーブルを更新する。次のステップ６０３で、確保したメモリ領域を要求元に割り当て、処理を終了する。
【００７１】
以上説明した第２の方式の場合は、全てのバッファに対して必要なメモリ領域が確保されているため、ステップ６０１でメモリ領域を必ず確保することができる。
【００７２】
次に、図１１のフローチャートを用いて、第３の方式の場合のメモリ確保処理を説明する。まず、ステップ７０１で、テーブルに要求サイズ以上のメモリ領域が存在するか否か判断する。ステップ７０１で肯定判断した場合には、ステップ７０４で、メモリ領域を確保し、ステップ７０５で、確保したメモリ領域をテーブルから削除することでテーブルを更新し、ステップ７０６に処理が進む。
【００７３】
一方、ステップ７０１で否定判断した場合には、ステップ７０２で、ＯＳにメモリを要求し、ステップ７０３で、システムコールの戻り値によりメモリ確保が成功したか否か判断する。
【００７４】
ステップ７０３で、肯定判断した場合には、ステップ７０６で、確保したメモリ領域を要求元のバッファに割り当て、処理を終了する。一方、ステップ７０３で否定判断した場合には、ステップ７０７でエラーを要求元のバッファに返し、処理を終了する。
【００７５】
次に、図１２のフローチャートを用いて、メモリ領域を解放する処理について説明する。バッファがメモリ領域の解放を要求すると、ステップ８０１で、現在用いている方式が第１の方式か否か判断する。
【００７６】
ステップ８０１で肯定判断した場合には、システムコールを用いて確保されたメモリ領域であるので、ステップ８０２で、ＯＳにメモリ解放要求をして処理を終了する。一方、ステップ８０１で否定判断した場合には、ステップ８０３で、テーブルを更新し、処理を終了する。ここでの更新は、解放するメモリ領域をテーブルに登録することを示している。
【００７７】
以上説明した実施の形態によれば、空きメモリ量に応じて、メモリの管理方法を切り替えるため、メモリ不足になりにくく、また処理速度を向上することが可能となる。また、サーバーマシンのように負荷状況の変動が大きい場合でも、スワップアウトによる大幅な速度低下及びメモリ割当失敗による途中終了を防止することができる。
【００７８】
なお、以上説明した各フローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
【図面の簡単な説明】
【００７９】
【図１】パソコンの構成を示す図である。
【図２】ソフトウェア構成を示す図である。
【図３】分岐バッファを示す図である。
【図４】確保したメモリ領域を管理するためのテーブルを示す図である。
【図５】初期化処理を示すフローチャートである。
【図６】方式設定処理を示すフローチャートである。
【図７】メモリ領域要求時処理を示すフローチャートである。
【図８】方式切り替え処理を示すフローチャートである。
【図９】メモリ領域確保処理（第１の方式）を示すフローチャートである。
【図１０】メモリ領域確保処理（第２の方式）を示すフローチャートである。
【図１１】メモリ領域確保処理（第３の方式）を示すフローチャートである。
【図１２】解放処理を示すフローチャートである。
【符号の説明】
【００８０】
１０  パソコン
１８  ＣＰＵ
２０  ＨＤＤ
２２  ＲＡＭ
３８、３８ａ、３８ｂ、３８ｃ  画像処理モジュール
４０、４０ａ、４０ｂ  バッファモジュール
４６  処理管理部
４６ａ  メモリ領域管理部
４６ｂ  空きメモリ検出部
４６ｃ  エラー検出部
４６ｄ  ワークフロー管理部
４６ｅ  リソース管理部
【図１】
2009048258.tif 000003
【図２】
2009048258.tif 000004
【図３】
2009048258.tif 000005
【図４】
2009048258.tif 000006
【図５】
2009048258.tif 000007
【図６】
2009048258.tif 000008
【図７】
2009048258.tif 000009
【図８】
2009048258.tif 000010
【図９】
2009048258.tif 000011
【図１０】
2009048258.tif 000012
【図１１】
2009048258.tif 000013
【図１２】
2009048258.tif 000014