(57)【要約】【課題】メモリの割り当てを効率良く行うことのできる情報処理装置及び情報処理プログラムを提供すること。【解決手段】メモリ１４と、メモリ１４の中からデータを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するバッファ確保手段３４と、メモリ１４の空き容量を取得する空き容量取得手段３０と、を備え、バッファ確保手段３４は、バッファの確保を行う際に、空き容量取得手段３０により取得されたメモリ１４の空き容量に基づいて、次に確保する予定のバッファのサイズを変更することを特徴とする情報処理装置。【選択図】図２
2012203597.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリの中からデータを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するバッファ確保手段と、
前記メモリの空き容量を取得する空き容量取得手段と、を備え、
前記バッファ確保手段は、前記バッファの確保を行う際に、前記空き容量取得手段により取得された前記メモリの空き容量に基づいて、次に確保する予定の前記バッファのサイズを変更することを特徴とする情報処理装置。
【請求項２】
前記バッファに格納されたデータに対し演算処理を行う演算手段と、
前記演算手段による演算処理が完了したデータを外部に転送する転送手段と、
前記転送手段におけるデータの転送速度を取得する転送速度取得手段と、を備え、
前記バッファ確保手段は、前記バッファの確保を行う際に、前記空き容量取得手段により取得された前記メモリの空き容量と、転送速度取得手段により取得されたデータの転送速度とに基づいて、次に確保する予定の前記バッファのサイズを変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ｎ面のバッファのそれぞれにおけるデータの状態を取得する状態取得手段を備え、
前記バッファ確保手段は、前記状態取得手段により取得されたデータの状態に基づいて、前記バッファの確保を行うか否かを決定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記バッファ確保手段は、データが転送待ち状態にある前記バッファの数が所定値以上の場合には、次に確保する予定の前記バッファの確保を行わないことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
コンピュータに対し、
メモリの中からデータを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するステップと、
前記メモリの空き容量を取得するステップと、
取得された前記メモリの空き容量に基づいて、次に確保する予定の前記バッファのサイズを変更するステップと、
を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
大容量のデータに所定の演算処理（例えば、暗号化処理や画像処理等）を施し、ネットワークへと転送する情報処理システムが知られている。データは例えばＨＤＤ（Hard disk Drive）などの大容量記憶装置から一時的な記憶装置であるメモリへと読み出され、メモリ上にあるデータに対し演算処理が実行される。メモリへのデータの読み込みの際には、予め所定のサイズのデータ格納領域（バッファ）をメモリ内に確保しておく必要がある。
【０００３】
メモリの記憶容量（メモリ資源）は有限であるため、例えば複数のアプリケーションを同時に使用する場合には、メモリの割り当てが問題となる。特に、大容量のデータはメモリの消費量が大きいため、他のアプリケーションのためのメモリ資源を残しつつ、当該データを処理するためのメモリを確保することが求められる。特許文献１には、アプリケーションの実行前に最大限に確保可能なメモリ容量を算出し、メモリの割り当てを行う情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭６２−６１０１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のメモリの割り当て方法では、アプリケーションの起動後はバッファのサイズが固定となるため、新たに別のアプリケーションが起動した場合などにメモリ容量が不足してしまう場合があった。メモリ容量が不足すると、処理速度の低下や動作の不具合が発生してしまう場合があった。一方で、他のアプリケーションの終了などによりメモリの容量に余裕ができた場合でも、バッファのサイズが固定であるため空いたメモリ資源を有効に活用できていない場合があった。このように、従来のメモリ割り当て方法では、バッファのサイズが固定であるため、メモリの割当を効率良く行うことは難しかった。
【０００６】
本発明は上記課題に鑑みなされたものであり、メモリの割り当てを効率良く行うことのできる情報処理装置及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に記載の情報処理装置は、メモリと、前記メモリの中からデータを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するバッファ確保手段と、前記メモリの空き容量を取得する空き容量取得手段と、を備え、前記バッファ確保手段は、前記バッファの確保を行う際に、前記空き容量取得手段により取得された前記メモリの空き容量に基づいて、次に確保する予定の前記バッファのサイズを変更することを特徴とする。
【０００８】
請求項２に記載の情報処理装置は、前記バッファに格納されたデータに対し演算処理を行う演算手段と、前記演算手段による演算処理が完了したデータを外部に転送する転送手段と、前記転送手段におけるデータの転送速度を取得する転送速度取得手段と、を備え、前記バッファ確保手段は、前記バッファの確保を行う際に、前記空き容量取得手段により取得された前記メモリの空き容量と、転送速度取得手段により取得されたデータの転送速度とに基づいて、次に確保する予定の前記バッファのサイズを変更することを特徴とする。
【０００９】
請求項３に記載の情報処理装置は、前記ｎ面のバッファのそれぞれにおけるデータの状態を取得する状態取得手段を備え、前記バッファ確保手段は、前記状態取得手段により取得されたデータの状態に基づいて、前記バッファの確保を行うか否かを決定することを特徴とする。
【００１０】
請求項４に記載の情報処理装置は、前記バッファ確保手段は、データが転送待ち状態にある前記バッファの数が所定値以上の場合には、次に確保する予定の前記バッファの確保を行わないことを特徴とする。
【００１１】
請求項５に記載の情報処理プログラムは、コンピュータに対し、メモリの中からデータを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するステップと、前記メモリの空き容量を取得するステップと、取得された前記メモリの空き容量に基づいて、次に確保する予定の前記バッファのサイズを変更するステップと、を実行させることを特徴とする。
【発明の効果】
【００１２】
請求項１に記載の情報処理装置によれば、本構成を有しない場合に比べて、メモリの割り当てを効率良く行うことができる。
【００１３】
請求項２に記載の情報処理装置によれば、本構成を有しない場合に比べて、転送速度に応じたメモリの割り当てを効率良く行うことができる。
【００１４】
請求項３に記載の報処理装置によれば、本構成を有しない場合に比べて、バッファの処理状態に応じたメモリの割り当てを効率良く行うことができる。
【００１５】
請求項４に記載の情報処理装置によれば、本構成を有しない場合に比べて、バッファの処理状態に応じたメモリの割り当てをさらに効率良く行うことができる。
【００１６】
請求項５に記載の情報処理装置によれば、本構成を有しない場合に比べて、メモリの割り当てを効率良く行うことができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る情報処理装置のハードウェア構成を示す図である。
【図２】図２は、実施例１に係る情報処理装置の機能ブロック図である。
【図３】図３は、実施例１に係る情報処理装置による情報処理を説明する模式図である。
【図４】図４は、実施例１に係る情報処理装置の動作を示すフローチャート（その１）である。
【図５】図５は、実施例１に係る情報処理装置の動作時に参照されるテーブルを示す図である。
【図６】図６は、実施例１に係る情報処理装置の動作を示すフローチャート（その２）である。
【図７】図７は、実施例２に係る情報処理装置の動作を示すフローチャートである。
【図８】図８は、実施例２に係る情報処理装置の動作時に参照されるテーブルを示す図である。
【図９】図９は、実施例３に係る情報処理装置の動作を示すフローチャートである。
【図１０】図１０は、実施例３に係る情報処理装置の動作時に参照されるテーブルを示す図である。
【発明を実施するための形態】
【実施例１】
【００１８】
図１は、実施例１に係る情報処理装置のハードウェア構成を示す図である。ここでは、情報処理装置としてコンピュータ１０を例に説明する。コンピュータ１０は、ＣＰＵ（Central Processing Unit）１２、メモリ１４、ＨＤＤ１６、及びネットワークインターフェース１８を備え、これらは内部のデータバス１９により互いに接続されている。ＣＰＵ１２は演算装置の一例であり、ＨＤＤ１６は不揮発性の大容量記憶装置の一例である。メモリ１４は演算データを一時的に格納するための記憶装置であり、例えばＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）等のメモリカードを用いることができる。ネットワークインターフェース１８は、外部とデータの入出力を行うための装置であり、例えばネットワークカード等を用いることができる。
【００１９】
コンピュータ１０は、ネットワークインターフェース１８及びＬＡＮ（Local Area Network）２０を介して、外部のレポジトリサーバ２２に接続されている。ここで、レポジトリサーバ２２は、外部記憶装置の一例である。
【００２０】
図２は、実施例１に係る情報処理装置の機能ブロック図である。ＣＰＵ１２は、所定のプログラムを実行することにより、システム制御部３０、メモリ管理部３２、バッファ管理部３４、暗号化処理部３６、及び通信制御部３８として機能する。ＨＤＤ１６は、大容量のデータを記憶するための記憶部４０として機能する。メモリ１４の一部は、暗号化処理のためのデータを一時的に格納する機密情報格納部４２として機能する。ネットワークインターフェース１８は、外部のレポジトリサーバ２２との間でのデータの入出力（通信）を行う通信処理部４４として機能する。
【００２１】
システム制御部３０は、コンピュータ１０の機能ブロック間におけるデータの入出力を制御すると共に、各機能ブロックの状態を監視する。メモリ管理部３２は、メモリ１４に関する情報（例えば、メモリ１４の空き容量）を管理する。バッファ管理部３４は、メモリ１４のメモリ資源の中から、演算データを格納するためのバッファを確保し、管理する。本実施例では、大容量のデータを効率良く処理するために、バッファ管理部３４はｎ面（ｎは２以上の整数）のバッファを確保するものとする。この点については後段で詳述する。
【００２２】
暗号化処理部３６は、記憶部４０からメモリ１４のバッファ（機密情報格納部４２）に読み込まれたデータ（例えば、機密情報）に対し、暗号化処理を実行する。通信制御部３８は、バッファにおけるデータの処理状態を監視し、暗号化の終了したデータを通信処理部４４へと転送する。通信処理部４４は、通信制御部３８により、機密情報格納部４２から転送されたデータをレポジトリサーバ２２へと送信する。記憶部４０は、暗号化前の機密情報をはじめとする各種のデータを記憶するとともに、ＣＰＵ１２を機能させるための各種のプログラムを記憶する。また、後述のバッファサイズを決定するためのテーブルも、記憶部４０に記憶される。
【００２３】
図３は、コンピュータ１０における処理（バッファ確保、データ読み込み、暗号化、データ転送）を模式的に説明するための図である。図示するように、メモリ１４内にはｎ面のバッファが確保されており、記憶部４０に記憶されたデータはバッファのサイズに合わせて分割され、１〜ｎの各バッファへと読み込まれる。読み込まれたデータは、暗号化処理部３６により順次暗号化され、暗号化が終了次第ネットワークへと順次転送される。これにより、ネットワーク上のレポジトリサーバ２２内に、暗号化済みのデータが記憶されていく。
【００２４】
ここで、データの暗号化処理及び転送処理の速度を向上させるためには、各ｎ面バッファのサイズを大きくし、データの読み込み及び書き込みの回数を少なくすることが好ましい。一方で、バッファのサイズを大きくしすぎると、ｎ面バッファがメモリ１４の容量を圧迫してしまい、同時に起動している他のアプリケーションとの関係で不具合が生じる可能性がある。従って、メモリの使用状況に応じて、暗号化処理のために確保するバッファのサイズを柔軟に変更することが好ましい。
【００２５】
図４は、実施例１に係る情報処理装置におけるバッファの確保及び記憶部４０からのデータ読み込み動作を示すフローチャートである。最初にシステム制御部３０が、ｎ面バッファのうち第ｋ面の処理を開始する（ステップＳ１０）。次に、システム制御部３０は、メモリ管理部３２に現時点でのメモリ１４の空き容量を問い合わせ、メモリ１４の空き容量を取得する（ステップＳ１２）。次に、システム制御部３０は、記憶部４０に記憶されたテーブルを参照し、確保すべきバッファのサイズを決定する（ステップＳ１４）。
【００２６】
図５は、メモリ１４の空き容量と確保すべき第ｋ面のバッファサイズとの関係を示すテーブルである。図示するように、メモリ１４の空き容量に対し、確保すべきバッファのサイズが段階的に規定されている。メモリ１４の空き容量が大きくなるに従い、バッファのサイズも大きくなるように設定されている。例えば、空きメモリの容量が１０００ＭＢであれば、第ｋ面のバッファサイズは１０ＭＢとなる。図５に示すテーブルの各パラメータの値は、これ以外にも任意に設定することができる。
【００２７】
再び図４に戻り、バッファ管理部３４が第ｋ面のバッファを確保する（ステップＳ１６）。ここで確保されるバッファのサイズは、ステップＳ１４で参照されたテーブルに基づき決定されたサイズとなる。次に、システム制御部３０が、確保された第ｋ面のバッファに対し記憶部４０からのデータの読み込みを行う（ステップＳ１８）。データの読み込みが完了したら、暗号化処理部３６がバッファ上のデータに対する暗号化処理を開始する（ステップＳ２０）。
【００２８】
次に、システム制御部３０は、データの読み込みが全て完了したか否かを判定する（ステップＳ２２）。データの読み込みが完了していない場合には、ｋ＝ｋ＋１としてステップＳ１０に戻り、第ｋ＋１面のバッファの処理を開始する。バッファの処理はｋ＝１の状態から開始され、ｋ＝ｎとなったらまたｋ＝１へと戻る。これにより、ｎ面のバッファに周期的にデータの読み込みを行うことができる。ステップＳ２２においてデータの読み込みが全て完了した場合には、バッファの確保及びデータ読み込みを終了する。
【００２９】
図６は、実施例１に係る情報処理装置における暗号化処理及びデータ転送処理を示すフローチャートである。図４のステップＳ２０において第ｋ面バッファの暗号化処理が開始されると、通信制御部３８が第ｋ面バッファのデータ処理の状態を監視する（ステップＳ３０）。通信制御部３８は、第ｋ面バッファの暗号化処理が終了したか否かを判定する（ステップＳ３２）。暗号化処理が終了した場合、通信制御部３８は、第ｋ面バッファの暗号化済みデータを、通信処理部４４を介してレポジトリサーバ２２へと送信する（ステップＳ３４）。ステップＳ３２において暗号化処理が終了していない場合には、ステップＳ３０の前段へと戻る。
【００３０】
次に、システム制御部３０は、ｎ面バッファ上にある全てのデータの転送が完了したか否かを判定する（ステップＳ３６）。データの転送が全て完了していない場合には、ｋ＝ｋ＋１としてステップＳ３０に戻り、暗号化処理及びデータ転送処理を続行する。データの転送が全て完了した場合には、暗号化処理及びデータ転送処理を終了する。
【００３１】
実施例１に係る情報処理装置及び情報処理プログラムによれば、バッファの確保が行われる際に、その時点におけるメモリ１４の空き容量に基づいて、次に確保する予定のバッファのサイズが決定される。これにより、空き容量が大きい場合には大きいサイズのバッファが確保され、空き容量が小さい場合には小さいサイズのバッファが確保されるため、暗号化処理に対するメモリ資源の割り当てを効率的に行うことができる。また、バッファサイズの変更を新しいバッファを確保するたびに行うことで、バッファのサイズを固定とする場合に比べて、情報処理速度の向上及び動作不具合の抑制を図ることができる。
【実施例２】
【００３２】
実施例２は、メモリの空き容量に加え、データの転送速度を参照してバッファサイズを決定する例である。
【００３３】
図７は、実施例２に係る情報処理装置の動作を示すフローチャートである。ステップＳ４０〜Ｓ４２及びステップＳ４８〜Ｓ５４については、実施例１（図４）で説明したステップＳ１０〜Ｓ１２及びステップＳ１６〜Ｓ２２と共通であるため、詳細な説明を省略する。また、暗号化処理及びデータ転送処理についても、実施例１（図６）と同様であるため説明を省略する。
【００３４】
ステップＳ４２においてメモリ１４の空き容量が取得されたら、システム制御部３０は通信処理部４４におけるデータの転送速度を取得する（ステップＳ４４）。次に、システム制御部３０は、記憶部４０に記憶されたテーブルを参照し、確保すべきバッファのサイズを決定する（ステップＳ４６）。
【００３５】
図８は、データの転送速度、メモリ１４の空き容量、及び確保すべき第ｋ面のバッファサイズの関係を示すテーブルである。図示するように、データの転送速度及びメモリ１４の空き容量に対し、バッファのサイズが段階的に規定されている。転送速度が同じであれば、メモリ１４の空き容量が大きくなるほどバッファのサイズは大きくなる。また、メモリ１４の空き容量が同じであれば、転送速度が大きくなるほどバッファのサイズは大きくなる。例えば、転送速度が２５ＭＢ／Ｓで空きメモリの容量が５００ＭＢであれば、第ｋ面のバッファサイズは１０ＭＢとなる。図８に示すテーブルの各パラメータの値は、これ以外にも任意に設定することができる。
【００３６】
実施例２に係る情報処理装置及び情報処理プログラムによれば、バッファの確保が行われる際に、データの転送速度及びメモリ１４の空き容量に基づいて、次に確保する予定の第ｋ面のバッファサイズが決定される。データの転送速度が小さい場合には、バッファのサイズを大きくしたとしても、処理済みのデータが転送待ち状態となりバッファに貯まってしまう場合がある。このような場合には、確保するバッファのサイズを小さくし、不必要なバッファ（メモリ資源）を他のアプリケーションのために開放することが好ましい。一方、データの転送速度が大きい場合には、処理が完了したバッファ上のデータを次々と転送することができるため、処理速度向上のためにバッファのサイズを大きくすることが好ましい。以上のように、ネットワークにおけるデータの転送速度を考慮することで、メモリ資源の割り当てをさらに効率良く行うことができる。
【実施例３】
【００３７】
実施例３は、メモリの空き容量及びデータの転送速度に加え、バッファにおけるデータの状態を参照してバッファの確保を行う例である。
【００３８】
図９は、実施例３に係る情報処理装置の動作を示すフローチャートである。ステップＳ６０〜Ｓ６４及びステップＳ７２〜Ｓ７８については、実施例２（図７）で説明したステップＳ４０〜Ｓ４４及びステップＳ４８〜Ｓ５４と共通であるため、詳細な説明を省略する。また、暗号化処理及びデータ転送処理についても、実施例１（図６）と同様であるため説明を省略する。
【００３９】
ステップＳ６４において通信処理部４４における転送速度が取得されたら、システム制御部３０は、メモリ１４内の第１面〜第ｎ面のバッファにおけるデータの処理状態を通信制御部３８に問い合わせ、バッファにおけるデータの処理状態を取得する（ステップＳ６６）。
【００４０】
図１０は、各バッファにおけるデータの処理状態を示すテーブルである。データの処理状態は、例えば「転送終了」、「転送中」、「転送待ち」、「暗号化処理中」、「処理待ち」、「未処理」のように示すことができる。ここで、「処理待ち」とは、バッファの確保及びデータの読み込みが完了して暗号化処理を待っている状態を指し、「未処理」とは、まだバッファの確保及びデータの読み込みがされていない状態を指す。また、「転送待ち」とは、データの暗号化処理が終了してネットワークへの転送待ち状態にある状態を指す。
【００４１】
次に、システム制御部３０は、記憶部４０に記憶されたテーブルを参照し、確保すべきバッファのサイズを決定する（ステップＳ６８）。ここで、確保されるバッファのサイズは、実施例２（図８）と同様に、データの転送速度及びメモリ１４の空き容量に基づいて決定される。
【００４２】
次に、システム制御部３０は、転送待ち状態にあるバッファの数が所定の閾値以上であるか否かを判定する（ステップＳ７０）。転送待ち状態のバッファが所定値より少ない場合は、ステップＳ７２へと進み、第ｋ面のバッファの確保を実行する。転送待ち状態のバッファの数が所定値以上の場合には、ステップＳ６０の前段へと戻る。このとき、転送待ち状態のバッファの数が所定値を下回るまで、第ｋ面のバッファの確保及びバッファへのデータの読み込みは行われない。
【００４３】
実施例３に係る情報処理装置及び情報処理プログラムによれば、バッファの確保を行う際に、バッファにおけるデータの処理状態に基づいて、バッファの確保を行うか否かが決定される。転送待ちのデータが多い状態では、バッファの確保及び暗号化処理を行ったとしても、新規のデータが転送待ち状態となってしまうことが予想される。転送待ちのデータはメモリ容量を圧迫するため、このような場合には新規バッファの確保は行わず、メモリ資源を他のアプリケーションのために開放することが好ましい。一方、転送待ちのデータが少ない場合には、暗号化処理後のデータが速やかに転送されることが期待されるため、新規バッファの確保及びデータの読み込みを行うことが好ましい。以上のように、ｎ面バッファにおけるデータの処理状態を考慮することで、メモリ資源の割り当てをさらに効率良く行うことができる。
【００４４】
実施例１〜３において、バッファ管理部３４は、データを一時的に格納するためのｎ面（ｎは２以上の整数）のバッファを順次確保するバッファ確保手段の一例である。また、システム制御部３０は、メモリの空き容量を取得する空き容量取得手段、通信処理部４４（転送手段）におけるデータの転送速度を取得する転送速度取得手段、及びｎ面のバッファのそれぞれにおけるデータの状態を取得する状態取得手段の一例である。
【００４５】
実施例１〜３において、暗号化処理部３６は、バッファに格納されたデータに対し演算処理を行う演算手段の一例である。実施例１〜３では機密文書の暗号化処理を例に説明を行ったが、データに対する演算処理はこれ以外の形態（例えば、画像データに対する画像処理等）であってもよい。実施例１〜３に係る情報処理装置は、大容量のデータをメモリ（バッファ）上に読み込むデータ処理に対し特に好適である。また、通信処理部４４は、演算手段による演算処理が完了したデータを外部に転送する転送手段の一例である。
【００４６】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４７】
１０    コンピュータ
１２    ＣＰＵ
１４    メモリ
１６    ＨＤＤ
１８    ネットワークインターフェース
２０    ＬＡＮ
２２    レポジトリサーバ
３０    システム制御部
３２    メモリ管理部
３４    バッファ管理部
３６    暗号化処理部
３８    通信制御部
４０    機密情報格納部
４２    記憶部
４４    通信処理部
【図１】
2012203597.tif 000003
【図２】
2012203597.tif 000004
【図３】
2012203597.tif 000005
【図４】
2012203597.tif 000006
【図５】
2012203597.tif 000007
【図６】
2012203597.tif 000008
【図７】
2012203597.tif 000009
【図８】
2012203597.tif 000010
【図９】
2012203597.tif 000011
【図１０】
2012203597.tif 000012