(57)【要約】【課題】アプリケーションサーバの記憶装置にアプリケーションプログラムが利用するメモリ構造を保持した共有メモリ領域（メモリイメージファイル）を構築し、高速検索を可能とするメモリ管理サーバ、方法及びプログラムを提供する。【解決手段】アプリケーションプログラムにおいて使用されるデータの大きさを演算する工程と、アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域で確保する工程と、連続した内部メモリ領域にアプリケーションプログラムにおいて使用されるデータを書き込む工程と、連続した内部メモリ領域に書き込まれたデータをメモリイメージファイルとして補助記憶装置にメモリマッピング処理する工程と、メモリイメージファイルのデータとメモリイメージファイルのデータの同期をとる工程と、を備える。【選択図】図４
2010061253.tif 000002
【特許請求の範囲】
【請求項１】
補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするための方法であって、
アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する工程と、
前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込む工程と、
前記連続した内部メモリ領域に書き込まれた前記データを補助記憶装置にメモリイメージファイルとしてメモリマッピング処理する工程と、
前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータを同期をとる工程と、
を含み、
前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有することを特徴とするメモリ管理方法。
【請求項２】
前記内部メモリ領域のデータの並び順と前記補助記憶装置の前記メモリイメージファイルのデータの並び順とが同じであることを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記アプリケーションプログラムはＷＥＢアプリケーションプログラムであり、前記補助記憶装置は前記ＷＥＢアプリケーションプログラムが動作するＷＥＢアプリケーションサーバ内にある記憶装置であることを特徴とする請求項１または２に記載のメモリ管理方法。
【請求項４】
前記メモリイメージファイルは読み出し専用とし、前記メモリイメージファイルのデータの内容を変更する場合には前記メモリイメージファイルの全体を差し替えることを特徴とする請求項１乃至３の何れか一項に記載のメモリ管理方法。
【請求項５】
補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするためのメモリ管理サーバ装置であって、
アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する記憶領域確保手段と、
前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込むデータ書込手段と、
前記連続した内部メモリ領域に書き込まれた前記データをメモリイメージファイルとして補助記憶装置にメモリマッピング処理するメモリマッピング手段と、
前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータを同期をとる同期手段と、
を備え、
前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有することを特徴とするメモリ管理サーバ装置。
【請求項６】
請求項１乃至４何れか一項に記載の方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理サーバ、方法及びプログラムに関する。さらに、詳細には、ＷＥＢアプリケーションプログラム毎にアプリケーションサーバでメモリを共有するサーバ、方法及びプログラムに関する。
【背景技術】
【０００２】
一般的に、ＷＥＢアプリケーションプログラムにおいてリクエスト毎に同じデータを参照したい場合にはデータベースサーバを使用している。
【０００３】
しかし、さらに早いスピードを求められるＷＥＢアプリケーションプログラムの場合には、データをＷＥＢサーバの共有メモリ上に格納（記憶）し、メモリアクセスのみでデータを検索することによってデータベースサーバによるオーバヘッドを回避することがある（例えば特許文献１参照）。
【０００４】
【特許文献１】特開平６−６７９５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＷＥＢサーバ上の半導体素子による共有メモリを使用するとデータへのアクセスを高速に実行することが可能となるが、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合には、共有メモリを使用することができない。
【０００６】
また、共有メモリを使用する場合にはアプリケーションサーバのメモリリソースを消費することになるために、あまり大量のデータを共有メモリに格納（記憶）することができない。
【０００７】
本発明は、このような状況に鑑みてなされたものであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置にアプリケーションプログラムが利用するメモリ構造を保持した共有メモリ領域（メモリイメージファイル）を構築し、この領域をＷＥＢアプリケーションプログラムから参照することによって上記問題を解決するとともに、データベースサーバの代替としての機能を担うことによって高速検索を可能とするメモリ管理サーバ及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするための方法であって、アプリケーションプログラムにおいて使用される前記データを連続した内部メモリ領域を確保する工程と、前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込む工程と、前記連続した内部メモリ領域に書き込まれた前記データを補助記憶装置にメモリイメージファイルとしてメモリマッピング処理する工程と、前記内部メモリのデータと前記メモリイメージファイルのデータの同期をとる工程と、を含み，前記メモリイメージファイルの前記データは前記メモリ領域のメモリ構造を保持し、複数の前記アプリケーションプログラムが、前記記憶装置の前記メモリイメージファイルを共有することを特徴とするメモリ管理方法。
【０００９】
（１）に係る発明によれば、補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするために、アプリケーションプログラムに使用されるデータを連続したメモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータを内部メモリ領域のメモリ構造を保持したままで、メモリマッピング処理し、メモリマッピング処理されたメモリイメージファイル（メモリマップファイルとも呼ぶ）を物理的に格納する補助記憶装置に同期を取る（データを書き込む）動作を実行する。ここで、「補助記憶装置」とは、典型的には、コンピュータ装置に備えられたハードディスク等の書き込み可能な記憶装置または記憶媒体を指すが、「内部メモリ」（主記憶）との対比のために使用しており、必ずしも物理的にコンピュータ装置筐体の内部、外部に位置することを意味するものではない。
【００１０】
このようにして、（１）に係る発明によれば、アプリケーションプログラムに使用されるデータがネットワークを介して接続されたデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００１１】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると、本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００１２】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなる。
【００１３】
さらに、メインメモリは一般的に価格および実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが、本発明ではデータへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００１４】
また、本発明によれば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００１５】
共有メモリ領域（メモリイメージファイル）をＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００１６】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
（２）前記内部メモリ領域の前記データの並び順と前記補助記憶装置の前記メモリイメージファイルの前記データの並び順とが同じであることを特徴とする（１）に記載のメモリ管理方法。
【００１７】
（２）に係る発明によれば、（１）において作成するメモリイメージファイルの前記データは前記内部メモリ領域の前記データの並び順と同じであるので複数のアプリケーションプログラムで一つのファイルとして扱われることが可能となる。
【００１８】
このようにして、（２）に係る発明によれば、一つのアプリケーションプログラムに使用されるデータをまとめて一つのメモリイメージファイルにすることができるので、データを効率よく管理することが可能となった。
【００１９】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているのでＷＥＢアプリケーションプログラム毎にデータの検索（アクセス）が可能となる。
【００２０】
（３）前記アプリケーションプログラムはＷＥＢアプリケーションプログラムであり、前記補助記憶装置は前記ＷＥＢアプリケーションプログラムが動作するＷＥＢアプリケーションサーバ内にある記憶装置であることを特徴とする（１）または（２）に記載のメモリ管理方法。
【００２１】
（３）に係る発明によれば、ＷＥＢアプリケーションで使用したいデータを、メモリに格納する場合と同じイメージでファイル化し、ＨＤＤ等の記憶装置に保存する。
【００２２】
このようにして、（３）に係る発明によれば、共有メモリ領域であるメモリイメージファイルがＨＤＤ等の記憶装置に存在するので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００２３】
（４）前記メモリイメージファイルは読み出し専用とし、前記メモリイメージファイルのデータの内容を変更する場合には前記メモリイメージファイル全体を差し替えることを特徴とする請求項（１）乃至（３）の何れか一項に記載のメモリ管理方法。
【００２４】
このようにして、（４）に係る発明によれば、メモリイメージファイルの内容を変更する場合には、メモリイメージファイルの差し替えのみでデータの更新が可能となる。
【００２５】
（５）補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするためのメモリ管理サーバ装置であって、アプリケーションプログラムにおいて使用される前記データを連続した内部メモリ領域を確保する記憶領域確保手段と、前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込むデータ書込手段と、前記連続した領域に書き込まれた前記データを補助記憶装置にメモリイメージファイルとしてメモリマッピング処理するメモリマッピング手段と、前記内部メモリのデータと前記メモリイメージファイルのデータを同期をとる同期手段と、を備え、前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有することを特徴とするメモリ管理サーバ装置。
【００２６】
（５）に係る発明によれば、補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするために、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行する。なお、「補助記憶装置」の定義は、（１）で説明したものと同様である。
【００２７】
このようにして、（５）に係る発明によれば、アプリケーションプログラムに使用されるデータがデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００２８】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００２９】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなった。
【００３０】
さらに、メインメモリは一般的に価格および実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが本発明では、データへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００３１】
また、本発明によれば、ＯＳや開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００３２】
共有メモリ領域（メモリイメージファイル）をＨＤＤ等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００３３】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
【００３４】
（６）（１）乃至（４）何れか一項に記載の方法をコンピュータに実行させることを特徴とするプログラム。
【００３５】
このような構成によれば、当該プログラムをコンピュータに実行させることにより、（５）と同様の効果が期待できる。
【発明の効果】
【００３６】
本発明によれば、アプリケーションプログラムに使用されるデータがデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００３７】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００３８】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなった。
【００３９】
さらに、メインメモリは一般的に価格および実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが、本発明ではデータへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００４０】
また、本発明によれば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００４１】
共有メモリ領域（メモリイメージファイル）をＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００４２】
また、データの内容が変更になった場合であっても、メモリイメージファイルの差し替えで容易に対応することが可能である。
【００４３】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施形態について図を参照しながら説明する。
【００４５】
［システム全体構成］
図１には、本実施形態に係るメモリ管理サーバ（アプリケーションサーバ）１０と、ユーザ端末３０とから構成される情報処理システム１を示す。なお、図１においては、情報処理システム１は、メモリ管理サーバ１０と、ユーザ端末３０とがそれぞれ一つずつで示されているが、これに限られず、それぞれ複数台で構成されても良い。
【００４６】
メモリ管理サーバ１０は、図２に示すように、制御部３００を構成するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１０（マルチプロセッサ構成ではＣＰＵ３２０等複数のＣＰＵが追加されても良い）、バスライン２００、通信Ｉ／Ｆ（Ｉ／Ｆ：インタフェース）３３０、メインメモリ３４０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）３５０、Ｉ／Ｏコントローラ３６０、ハードディスク３７０、光ディスクドライブ３８０、並びに半導体メモリ３９０を備える。なお、ハードディスク３７０、光ディスクドライブ３８０、並びに、半導体メモリ３９０はまとめて記憶装置４１０と呼ばれる。
【００４７】
制御部３００は、メモリ管理サーバ１０を統括的に制御する部分であり、ハードディスク３７０に記憶された各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００４８】
通信Ｉ／Ｆ３３０は、メモリ管理サーバ１０が、ネットワークを介してユーザ端末３０等の他の装置と情報を送受信する場合のネットワーク・アダプタである。
【００４９】
ＢＩＯＳ３５０は、メモリ管理サーバ１０の起動時にＣＰＵ３１０が実行するブートプログラムや、メモリ管理サーバ１０のハードウェアに依存するプログラム等を記録する。
【００５０】
Ｉ／Ｏコントローラ３６０には、ハードディスク３７０、光ディスクドライブ３８０、及び半導体メモリ３９０等の記憶装置４１０を接続することができる。
【００５１】
ハードディスク３７０は、本ハードウェアをメモリ管理サーバ１０として機能させるための各種プログラム、本発明の機能を実行するプログラム及び後述するテーブル等を記憶する。なお、メモリ管理サーバ１０は、外部に別途設けたハードディスク（図示せず）を補助記憶装置として利用することもできる。
【００５２】
光ディスクドライブ３８０としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＣＤ−ＲＡＭドライブを使用することができる。この場合は各ドライブに対応した光ディスク４００を使用する。光ディスク４００から光ディスクドライブ３８０によりプログラム又はデータを読み取り、Ｉ／Ｏコントローラ３６０を介してメインメモリ３４０又はハードディスク３７０に提供することもできる。
【００５３】
なお、本発明でいうコンピュータとは、記憶装置、制御部等を備えた情報処理装置をいい、メモリ管理サーバ１０は、記憶装置４１０、制御部３００等を備えた情報処理装置により構成される。
【００５４】
また、本発明に係るメモリ管理サーバ１０は、上述のような構成を有することにより、アプリケーションプログラムにおいて使用されるデータをメモリイメージファイルとしてメモリマッピング処理をし、メモリイメージファイルをメモリ管理サーバ１０の記憶装置４１０にメモリイメージファイルとして書き込み、同期をとり、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持したままで、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有する機能を有している。
【００５５】
ここで、当該機能を発揮するための構成について、図３に示す機能ブロック図を用いて説明する。メモリ管理サーバ１０は、データ演算手段としてのデータ演算部１１と、記憶領域確保手段としての記憶領域確保部１２と、データ書込手段としてのデータ書込部１３と、メモリマッピング処理手段としてのメモリマッピング部１４と、同期手段としての同期部１５と、メモリイメージファイルを記憶するメモリイメージファイル記憶部１６と、メモリマッピング処理前後のデータが読み書きされる内部メモリ１７、とを備える。
【００５６】
データ演算部１１は、アプリケーションプログラムにおいて使用されるデータの大きさを演算する機能を有する。
【００５７】
メモリイメージファイルに必要な領域を確保するためにはデータの大きさを演算することが必要となる。
【００５８】
複数の異なるアプリケーションプログラムがメモリ管理サーバ１０で動作している場合があり、その場合にはアプリケーションプログラム毎に使用されるデータの大きさが演算される。そして、アプリケーションプログラム毎にメモリイメージファイルが形成されるので、複数のアプリケーションプログラムで共有されるメモリイメージファイル（またはメモリマップファイルとも呼ぶ）が複数存在する場合もある。
【００５９】
アプリケーションプログラムにおいて使用されるデータの大きさは、一例としてＣ言語の場合にはｓｉｚｅｏｆ（）関数を用いることによって演算することが可能である。また、通常のファイルＩＯでは、書き込みを行うと自動的に領域が確保されるため、あらかじめ領域を確保しておく必要はない場合もあるが、例えば、ｍｍａｐを使用したＩＯでは読み書きする大きさをあらかじめ設定しておく必要があり、その大きさはｍｍａｐ関数の引数として渡す必要がある。
【００６０】
記憶領域確保部１２は、アプリケーションプログラムにおいて使用される前記データを連続した記憶領域で確保する機能を有する。
【００６１】
連続した領域を確保するのは、マップさせたいファイルの必要サイズ（大きさ）を実際にデータとして使用しているサイズに合わせる為である。
【００６２】
連続した領域を確保することは、内部メモリ１７を一時的に使用することで実現できる。
【００６３】
データ書込部１３は連続した内部メモリ領域にアプリケーションプログラムにおいて使用されるデータを書き込む機能を有する。
【００６４】
これは、マッピング処理をする前にマップファイルにデータを書き込む必要があるからである。
【００６５】
一例としてＣ言語の場合にはｒｅａｄ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で，ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから読み込み、ｗｒｉｔｅ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で、ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから書き込むことが可能になる。
【００６６】
メモリマッピング部１４は、連続した内部メモリ領域に書き込まれたデータをメモリイメージファイルとしてメモリマッピング処理する機能を有する。
【００６７】
一例としてＣ言語の場合には、ｍｍａｐ（０，ｓｉｚｅ，ＰＲＯＴ＿ＲＥＡＤ｜ＰＲＯＴ＿ＷＲＩＴＥ，ＭＡＰ＿ＳＨＡＲＥＤ，ｆｄ，０）でメモリマッピング処理を実行できる。
【００６８】
式中、第１引数が“０”であるので、新しいマッピングの開始アドレスはカーネルが選択する。この方法は最も移植性のある新しいマッピングの方法である。
【００６９】
また、ＰＲＯＴ＿ＲＥＡＤはページが読み込み可能であることを許可し、ＰＲＯＴ＿ＷＲＩＴＥはページが書き込み可能であることを許可し、ＭＡＰ＿ＳＨＡＲＥＤはマッピングが共有されることを許可する
【００７０】
但し、書き込みはファイル全体での書き換え（ファイルの差し替え）を許可し、ファイルの一部だけの書き込みは許可されない。
【００７１】
同期部１５はメモリイメージファイルを記憶装置（メモリイメージファイル記憶部１６）にメモリイメージファイルとして同期をとる機能を有する。
【００７２】
内部メモリのデータをハードディスク上のような物理記憶領域上にあるメモリイメージファイル記憶部１６との同期を取る。
【００７３】
すなわち、内部メモリ１７に展開されたメモリイメージファイルの（データ）構造（メモリ構造）をそのまま維持した状態で、メモリイメージファイル記憶部１６にそのメモリ構造を書き込むので、複数のアプリケーションが内部メモリ１７のメモリ構造を保持したままで、メモリイメージファイル記憶部１６のメモリイメージファイルを共有することが可能となる。
【００７４】
また、この場合には内部メモリ１７のデータとメモリイメージファイルのデータの並び順が同じとなる。
【００７５】
一例としてＣ言語の場合に、実際にメモリイメージファイルに書き込み同期を取るには、ｍｓｙｎｃ（ｐｔｒ，ｓｉｚｅ，０）関数を用いることができる。この場合、ｐｔｒから始まり長さ“ｓｉｚｅ”のメモリ領域に対応するデータがＨＤＤ等の記憶装置４１０に記憶される。そして、最後にファイルがクローズされる（ｃｌｏｓｅ（ｆｄ））。
【００７６】
このような構成によれば、アプリケーションプログラムに使用されるデータの大きさを演算し、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行するので、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持し、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有することが可能となる。
【００７７】
したがって、アプリケーションサーバの記憶装置において、アプリケーションプログラムが利用するデータの記憶されているメモリ領域をあたかも一つのファイル（メモリ構造を保持したまま保存されたデータ）として扱うことが可能となったので、大量のデータを共有することが可能になるとともに、この領域をＷＥＢアプリケーションプログラムから参照することによって、データベースサーバの代替としての機能を担うことによって高速検索を可能とすることが可能になった。
【００７８】
［処理手順］
ここで、本発明を適用した場合において実現され得る具体的な処理手順について、図４に示すフローチャート（Ｃ言語を使用した場合）を参照して説明する。なお、以下に示す処理手順は、一例であってこれ以外にも実現され得る処理手順は無数に存在する。
【００７９】
ステップＳ１において、メモリ管理サーバ１０はマップ用のファイルをオープンする。例えば、マップ用のファイルの名称を“ＭａｐＦｉｌｅ”とした場合には、ｏｐｅｎ（“ＭａｐＦｉｌｅ”，Ｏ＿ＲＤＷＲ｜Ｏ＿ＣＲＥＡＴＥ，０６６６）でマップ用のファイルをオープンすることができる。
【００８０】
ステップＳ２において、メモリ管理サーバ１０のデータ演算部１１は、アプリケーションプログラム毎にアプリケーションプログラムに使用されるデータの大きさを演算し、その大きさをマップファイルの領域の大きさとする。
【００８１】
ステップＳ３において、メモリ管理サーバ１０の記憶領域確保部１２は、ステップＳ２において演算されたデータの大きさに対応して、内部メモリ１７上にメモリ領域を確保する。
【００８２】
ステップＳ４において、メモリ管理サーバ１０のデータ書込部１３はステップＳ３において確保されたマップファイルに、アプリケーションプログラムにおいて使用されるデータを書き込む。
【００８３】
一例としてＣ言語の場合にはｒｅａｄ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で，ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから読み込み（アプリケーションで使用されるデータを読み込み）、ｗｒｉｔｅ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で、ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから書き込むことが可能になる。
【００８４】
ステップＳ５において、メモリ管理サーバ１０のメモリマッピング部１４は、ステップＳ４において連続した内部メモリ領域に書き込まれたデータをメモリイメージファイルとしてメモリマッピング処理をする。
【００８５】
一例としてＣ言語の場合には、ｍｍａｐ（０，ｓｉｚｅ，ＰＲＯＴ＿ＲＥＡＤ｜ＰＲＯＴ＿ＷＲＩＴＥ，ＭＡＰ＿ＳＨＡＲＥＤ，ｆｄ，０）でメモリマッピング処理を実行できる。
【００８６】
ステップＳ６において、メモリ管理サーバ１０の同期部１５は、メモリイメージファイルを記憶装置（メモリイメージファイル記憶部１６）に書き込み同期をとる。
【００８７】
すなわち、内部メモリ１７に展開されたメモリイメージファイルの（データ）構造（メモリ構造）をそのまま維持した状態で、メモリイメージファイル記憶部１６にそのメモリ構造を書き込み、同期を取る。
【００８８】
一例としてＣ言語の場合に、ｍｓｙｎｃ（ｐｔｒ，ｓｉｚｅ，０）関数を用いて書き込み同期を取ることができる。そして、ファイルがクローズされる（ｃｌｏｓｅ（ｆｄ））。
【００８９】
ステップＳ７において、ユーザがユーザ端末３０を利用してメモリ管理サーバ１０に存在するアプリケーションプログラムを呼び出し、アプリケーションを実行している場合に、そのアプリケーションプログラムに使用されるデータにリクエスト要求が発生する。
【００９０】
ステップＳ８において、メモリ管理サーバ１０の制御部３００は、ステップＳ７においてデータが要求されたアプリケーションプログラム毎に用意された、メモリ管理サーバ１０内のメモリイメージファイル記憶部１６に記憶されたメモリイメージファイルからデータを読み出す。
【００９１】
このような構成によれば、アプリケーションプログラムに使用されるデータの大きさを演算し、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行するので、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持したままで、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有することが可能となる。
【００９２】
したがって、アプリケーションサーバの記憶装置において、アプリケーションプログラムが利用するデータの記憶されているメモリ領域をあたかも一つのファイル（メモリ構造を保持したまま保存されたデータ）として扱うことが可能となったので、大量のデータを共有することが可能になるとともに、この領域をＷＥＢアプリケーションプログラムから参照することによって、データベースサーバの代替としての機能を担うことによって高速検索を可能とすることが可能になった。
【００９３】
［全体構成の概念］
全体構成の概念図を図５に示す。
メモリ管理サーバ１０にアプリケーション（プログラム）１、アプリケーション（プログラム）２およびアプリケーション（プログラム）３が実装されている場合に、アプリケーション（プログラム）１、アプリケーション（プログラム）２およびアプリケーション（プログラム）３に使用されているデータ１８がメインメモリ３４０の記憶部分に記憶されている。
【００９４】
本実施形態においては、制御部３００のデータ演算部１１、記憶領域確保部１２、データ書込部１３、メモリマッピング部１４および同期部１５がメモリマッピング処理プロセス１９を実行する。
【００９５】
メモリマッピング処理プロセス１９によってデータ１８は、それぞれのアプリケーション（プログラム）が使用するデータ毎に分割して処理される。
【００９６】
すなわち、アプリケーション１用のデータは、アプリケーション１用メモリイメージファイル１６ａとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９７】
同様に、アプリケーション２用のデータは、アプリケーション２用メモリイメージファイル１６ｂとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９８】
また、同様に、アプリケーション３用のデータは、アプリケーション３用メモリイメージファイル１６ｃとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９９】
ユーザ端末３０ａを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション１を実行している場合に、アプリケーション１がアプリケーション１用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション１用メモリイメージファイル１６ａを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１００】
また、ユーザ端末３０ａを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション２を実行している場合に、アプリケーション２がアプリケーション２用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション２用メモリイメージファイル１６ｂを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０１】
同様にユーザ端末３０ｃを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション１を実行している場合に、アプリケーション１がアプリケーション１用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション１用メモリイメージファイル１６ａを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０２】
また、同様に、ユーザ端末３０ｃを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション２を実行している場合に、アプリケーション２がアプリケーション２用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション２用メモリイメージファイル１６ｂを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０３】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【０１０４】
なお、本実施形態においては、メモリ管理サーバ１０は、ハードディスク３７０及び光ディスクドライブ３８０を有する構成として説明したが、これに限られず、これらの駆動系を有さない構成、いわゆるゼロスピンドルによる構成であっても良い。このような構成の場合には、ハードディスク３７０に記憶される内容は、大容量の半導体メモリ３９０に記憶される。
【図面の簡単な説明】
【０１０５】
【図１】本実施形態に係るサーバと、ユーザ端末とから構成される情報処理システムを示す図である。
【図２】本発明に係るサーバの構成を示すブロック図である。
【図３】本実施形態に係るサーバの機能的な構成を示す機能ブロック図である。
【図４】本実施形態に係るサーバによる処理手順についての説明に供するフローチャートである。
【図５】本実施形態に係る全体構成の概念を示す図である。
【符号の説明】
【０１０６】
１  情報処理システム
１０  メモリ管理サーバ
１１  データ演算部
１２  記憶領域確保部
１３  データ書込部
１４  メモリマッピング部
１５  同期部
１６  メモリイメージファイル記憶部
１７  内部メモリ
３０  ユーザ端末
【図１】
2010061253.tif 000003
【図２】
2010061253.tif 000004
【図３】
2010061253.tif 000005
【図４】
2010061253.tif 000006
【図５】
2010061253.tif 000007
【手続補正書】
【提出日】平成21年11月18日(2009.11.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするための方法であって、
アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する工程と、
前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込む工程と、
前記連続した内部メモリ領域に書き込まれた前記データを補助記憶装置にメモリイメージファイルとしてメモリマッピング処理する工程と、
前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータの同期をとる工程と、
を含み、
前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有するメモリ管理方法。
【請求項２】
前記内部メモリ領域のデータの並び順と前記補助記憶装置の前記メモリイメージファイルのデータの並び順とが同じである請求項１に記載のメモリ管理方法。
【請求項３】
前記アプリケーションプログラムはＷＥＢアプリケーションプログラムであり、前記補助記憶装置は前記ＷＥＢアプリケーションプログラムが動作するＷＥＢアプリケーションサーバ内にある記憶装置である請求項１又は２に記載のメモリ管理方法。
【請求項４】
前記メモリイメージファイルは読み出し専用とし、前記メモリイメージファイルのデータの内容を変更する場合には前記メモリイメージファイルの全体を差し替える請求項１乃至３の何れか一項に記載のメモリ管理方法。
【請求項５】
補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするためのメモリ管理サーバ装置であって、
アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する記憶領域確保手段と、
前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込むデータ書込手段と、
前記連続した内部メモリ領域に書き込まれた前記データをメモリイメージファイルとして補助記憶装置にメモリマッピング処理するメモリマッピング手段と、
前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータの同期をとる同期手段と、
を備え、
前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有するメモリ管理サーバ装置。
【請求項６】
請求項１乃至４の何れか一項に記載の方法をコンピュータに実行させるプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理サーバ、方法及びプログラムに関する。さらに、詳細には、ＷＥＢアプリケーションプログラム毎にアプリケーションサーバでメモリを共有するサーバ、方法及びプログラムに関する。
【背景技術】
【０００２】
一般的に、ＷＥＢアプリケーションプログラムにおいてリクエスト毎に同じデータを参照したい場合にはデータベースサーバを使用している。
【０００３】
しかし、さらに早いスピードを求められるＷＥＢアプリケーションプログラムの場合には、データをＷＥＢサーバの共有メモリ上に格納（記憶）し、メモリアクセスのみでデータを検索することによってデータベースサーバによるオーバヘッドを回避することがある（例えば特許文献１参照）。
【０００４】
【特許文献１】特開平６−６７９５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＷＥＢサーバ上の半導体素子による共有メモリを使用するとデータへのアクセスを高速に実行することが可能となるが、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合には、共有メモリを使用することができない。
【０００６】
また、共有メモリを使用する場合にはアプリケーションサーバのメモリリソースを消費することになるために、あまり大量のデータを共有メモリに格納（記憶）することができない。
【０００７】
本発明は、このような状況に鑑みてなされたものであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置にアプリケーションプログラムが利用するメモリ構造を保持した共有メモリ領域（メモリイメージファイル）を構築し、この領域をＷＥＢアプリケーションプログラムから参照することによって上記問題を解決するとともに、データベースサーバの代替としての機能を担うことによって高速検索を可能とするメモリ管理サーバ及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするための方法であって、アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する工程と、前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込む工程と、前記連続した内部メモリ領域に書き込まれた前記データを補助記憶装置にメモリイメージファイルとしてメモリマッピング処理する工程と、前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータの同期をとる工程と、を含み、前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有するメモリ管理方法。
【０００９】
（１）に係る発明によれば、補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするために、アプリケーションプログラムに使用されるデータを連続したメモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータを内部メモリ領域のメモリ構造を保持したままで、メモリマッピング処理し、メモリマッピング処理されたメモリイメージファイル（メモリマップファイルとも呼ぶ）を物理的に格納する補助記憶装置に同期を取る（データを書き込む）動作を実行する。ここで、「補助記憶装置」とは、典型的には、コンピュータ装置に備えられたハードディスク等の書き込み可能な記憶装置又は記憶媒体を指すが、「内部メモリ」（主記憶）との対比のために使用しており、必ずしも物理的にコンピュータ装置筐体の内部、外部に位置することを意味するものではない。
【００１０】
このようにして、（１）に係る発明によれば、アプリケーションプログラムに使用されるデータがネットワークを介して接続されたデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００１１】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると、本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００１２】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなる。
【００１３】
さらに、メインメモリは一般的に価格及び実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが、本発明ではデータへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００１４】
また、本発明によれば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００１５】
共有メモリ領域（メモリイメージファイル）をＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００１６】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するような場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
（２）前記内部メモリ領域のデータの並び順と前記補助記憶装置の前記メモリイメージファイルのデータの並び順とが同じである（１）に記載のメモリ管理方法。
【００１７】
（２）に係る発明によれば、（１）において作成するメモリイメージファイルの前記データは前記内部メモリ領域の前記データの並び順と同じであるので複数のアプリケーションプログラムで一つのファイルとして扱われることが可能となる。
【００１８】
このようにして、（２）に係る発明によれば、一つのアプリケーションプログラムに使用されるデータをまとめて一つのメモリイメージファイルにすることができるので、データを効率よく管理することが可能となった。
【００１９】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するような場合であっても、メモリイメージファイルとしてデータが保持されているのでＷＥＢアプリケーションプログラム毎にデータの検索（アクセス）が可能となる。
【００２０】
（３）前記アプリケーションプログラムはＷＥＢアプリケーションプログラムであり、前記補助記憶装置は前記ＷＥＢアプリケーションプログラムが動作するＷＥＢアプリケーションサーバ内にある記憶装置である（１）又は（２）に記載のメモリ管理方法。
【００２１】
（３）に係る発明によれば、ＷＥＢアプリケーションで使用したいデータを、メモリに格納する場合と同じイメージでファイル化し、ＨＤＤ等の記憶装置に保存する。
【００２２】
このようにして、（３）に係る発明によれば、共有メモリ領域であるメモリイメージファイルがＨＤＤ等の記憶装置に存在するので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００２３】
（４）前記メモリイメージファイルは読み出し専用とし、前記メモリイメージファイルのデータの内容を変更する場合には前記メモリイメージファイルの全体を差し替える請求項（１）乃至（３）の何れか一項に記載のメモリ管理方法。
【００２４】
このようにして、（４）に係る発明によれば、メモリイメージファイルの内容を変更する場合には、メモリイメージファイルの差し替えのみでデータの更新が可能となる。
【００２５】
（５）補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするためのメモリ管理サーバ装置であって、アプリケーションプログラムにおいて使用されるデータを連続した内部メモリ領域に確保する記憶領域確保手段と、前記連続した内部メモリ領域に前記アプリケーションプログラムにおいて使用される前記データを書き込むデータ書込手段と、前記連続した内部メモリ領域に書き込まれた前記データをメモリイメージファイルとして補助記憶装置にメモリマッピング処理するメモリマッピング手段と、前記内部メモリ領域のデータと前記補助記憶装置のメモリイメージファイルのデータの同期をとる同期手段と、を備え、前記メモリイメージファイルの前記データは前記内部メモリ領域のメモリ構造を保持し、複数のアプリケーションプログラムが、前記補助記憶装置の前記メモリイメージファイルを共有するメモリ管理サーバ装置。
【００２６】
（５）に係る発明によれば、補助記憶装置を共有メモリとして、複数のアプリケーションから利用することを可能にするために、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行する。なお、「補助記憶装置」の定義は、（１）で説明したものと同様である。
【００２７】
このようにして、（５）に係る発明によれば、アプリケーションプログラムに使用されるデータがデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００２８】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００２９】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなった。
【００３０】
さらに、メインメモリは一般的に価格及び実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが本発明では、データへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００３１】
また、本発明によれば、ＯＳや開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００３２】
共有メモリ領域（メモリイメージファイル）をＨＤＤ等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００３３】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
【００３４】
（６）（１）乃至（４）の何れか一項に記載の方法をコンピュータに実行させるプログラム。
【００３５】
このような構成によれば、当該プログラムをコンピュータに実行させることにより、（５）と同様の効果が期待できる。
【発明の効果】
【００３６】
本発明によれば、アプリケーションプログラムに使用されるデータがデータベースサーバに記憶されている場合に比較すると通信回線を介した送受信がないのでデータ検索の高速化が容易に達成される。
【００３７】
また、アプリケーションサーバのローカルな記憶部にマッピング処理をしていない状態でデータが記憶されている場合に比較すると本発明ではフォーマット変換が不要となるのでデータ検索の高速化が容易に達成される。
【００３８】
また、アプリケーションサーバのメインメモリにデータを記憶する場合には、アプリケーションサーバの起動時にアプリケーションサーバのローカルな記憶部に記憶されているデータを一旦メインメモリに読み込む必要があるのでメモリ読み込み時間がかかるが、本発明ではそのような待ち時間がなくなった。
【００３９】
さらに、メインメモリは一般的に価格及び実装面積の制限から大きな容量を保持することが困難であるために、データ領域に多くの容量を使用すると他のプログラムの実行速度が遅くなるなどの弊害が発生するが、本発明ではデータへの検索速度の高速化を維持しつつそのような弊害も発生しない。
【００４０】
また、本発明によれば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や開発言語に対応したメモリイメージファイルを作成することにより環境に依存しない構成とすることが可能になる。
【００４１】
共有メモリ領域（メモリイメージファイル）をＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等のアプリケーションサーバの記憶装置に記憶しているので、ＷＥＢサーバがダウンしてもデータが失われることがない。
【００４２】
また、データの内容が変更になった場合であっても、メモリイメージファイルの差し替えで容易に対応することが可能である。
【００４３】
また、ＷＥＢアプリケーションプログラムがリクエスト毎に新たなプロセスを生成するようなものである場合であっても、メモリイメージファイルとしてデータが保持されているので検索（アクセス）が可能となる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施形態について図を参照しながら説明する。
【００４５】
［システム全体構成］
図１には、本実施形態に係るメモリ管理サーバ（アプリケーションサーバ）１０と、ユーザ端末３０とから構成される情報処理システム１を示す。なお、図１においては、情報処理システム１は、メモリ管理サーバ１０と、ユーザ端末３０とがそれぞれ一つずつで示されているが、これに限られず、それぞれ複数台で構成されても良い。
【００４６】
メモリ管理サーバ１０は、図２に示すように、制御部３００を構成するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１０（マルチプロセッサ構成ではＣＰＵ３２０等複数のＣＰＵが追加されても良い）、バスライン２００、通信Ｉ／Ｆ（Ｉ／Ｆ：インタフェース）３３０、メインメモリ３４０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）３５０、Ｉ／Ｏコントローラ３６０、ハードディスク３７０、光ディスクドライブ３８０及び半導体メモリ３９０を備える。なお、ハードディスク３７０、光ディスクドライブ３８０及び半導体メモリ３９０はまとめて記憶装置４１０と呼ばれる。
【００４７】
制御部３００は、メモリ管理サーバ１０を統括的に制御する部分であり、ハードディスク３７０に記憶された各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００４８】
通信Ｉ／Ｆ３３０は、メモリ管理サーバ１０が、ネットワークを介してユーザ端末３０等の他の装置と情報を送受信する場合のネットワーク・アダプタである。
【００４９】
ＢＩＯＳ３５０は、メモリ管理サーバ１０の起動時にＣＰＵ３１０が実行するブートプログラムや、メモリ管理サーバ１０のハードウェアに依存するプログラム等を記録する。
【００５０】
Ｉ／Ｏコントローラ３６０には、ハードディスク３７０、光ディスクドライブ３８０及び半導体メモリ３９０等の記憶装置４１０を接続することができる。
【００５１】
ハードディスク３７０は、本ハードウェアをメモリ管理サーバ１０として機能させるための各種プログラム、本発明の機能を実行するプログラム及び後述するテーブル等を記憶する。なお、メモリ管理サーバ１０は、外部に別途設けたハードディスク（図示せず）を補助記憶装置として利用することもできる。
【００５２】
光ディスクドライブ３８０としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＣＤ−ＲＡＭドライブを使用することができる。この場合は各ドライブに対応した光ディスク４００を使用する。光ディスク４００から光ディスクドライブ３８０によりプログラム又はデータを読み取り、Ｉ／Ｏコントローラ３６０を介してメインメモリ３４０又はハードディスク３７０に提供することもできる。
【００５３】
なお、本発明でいうコンピュータとは、記憶装置、制御部等を備えた情報処理装置をいい、メモリ管理サーバ１０は、記憶装置４１０、制御部３００等を備えた情報処理装置により構成される。
【００５４】
また、本発明に係るメモリ管理サーバ１０は、上述のような構成を有することにより、アプリケーションプログラムにおいて使用されるデータをメモリイメージファイルとしてメモリマッピング処理をし、メモリイメージファイルをメモリ管理サーバ１０の記憶装置４１０にメモリイメージファイルとして書き込み、同期をとり、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持したままで、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有する機能を有している。
【００５５】
ここで、当該機能を発揮するための構成について、図３に示す機能ブロック図を用いて説明する。メモリ管理サーバ１０は、データ演算手段としてのデータ演算部１１と、記憶領域確保手段としての記憶領域確保部１２と、データ書込手段としてのデータ書込部１３と、メモリマッピング処理手段としてのメモリマッピング部１４と、同期手段としての同期部１５と、メモリイメージファイルを記憶するメモリイメージファイル記憶部１６と、メモリマッピング処理前後のデータが読み書きされる内部メモリ１７、とを備える。
【００５６】
データ演算部１１は、アプリケーションプログラムにおいて使用されるデータの大きさを演算する機能を有する。
【００５７】
メモリイメージファイルに必要な領域を確保するためにはデータの大きさを演算することが必要となる。
【００５８】
複数の異なるアプリケーションプログラムがメモリ管理サーバ１０で動作している場合があり、その場合にはアプリケーションプログラム毎に使用されるデータの大きさが演算される。そして、アプリケーションプログラム毎にメモリイメージファイルが形成されるので、複数のアプリケーションプログラムで共有されるメモリイメージファイル（又は、メモリマップファイルとも呼ぶ）が複数存在する場合もある。
【００５９】
アプリケーションプログラムにおいて使用されるデータの大きさは、一例としてＣ言語の場合にはｓｉｚｅｏｆ（）関数を用いることによって演算することが可能である。また、通常のファイルＩＯでは、書き込みを行うと自動的に領域が確保されるため、あらかじめ領域を確保しておく必要はない場合もあるが、例えば、ｍｍａｐを使用したＩＯでは読み書きする大きさをあらかじめ設定しておく必要があり、その大きさはｍｍａｐ関数の引数として渡す必要がある。
【００６０】
記憶領域確保部１２は、アプリケーションプログラムにおいて使用されるデータを連続したメモリ領域で確保する機能を有する。
【００６１】
連続した領域を確保するのは、マップさせたいファイルの必要サイズ（大きさ）を実際にデータとして使用しているサイズに合わせる為である。
【００６２】
連続した領域を確保することは、内部メモリ１７を一時的に使用することで実現できる。
【００６３】
データ書込部１３は連続した内部メモリ領域にアプリケーションプログラムにおいて使用されるデータを書き込む機能を有する。
【００６４】
これは、マッピング処理をする前にマップファイルにデータを書き込む必要があるからである。
【００６５】
一例としてＣ言語の場合にはｒｅａｄ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で，ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから読み込み、ｗｒｉｔｅ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で、ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから書き込むことが可能になる。
【００６６】
メモリマッピング部１４は、連続した内部メモリ領域に書き込まれたデータをメモリイメージファイルとしてメモリマッピング処理する機能を有する。
【００６７】
一例としてＣ言語の場合には、ｍｍａｐ（０，ｓｉｚｅ，ＰＲＯＴ＿ＲＥＡＤ｜ＰＲＯＴ＿ＷＲＩＴＥ，ＭＡＰ＿ＳＨＡＲＥＤ，ｆｄ，０）でメモリマッピング処理を実行できる。
【００６８】
式中、第１引数が“０”であるので、新しいマッピングの開始アドレスはカーネルが選択する。この方法は最も移植性のある新しいマッピングの方法である。
【００６９】
また、ＰＲＯＴ＿ＲＥＡＤはページが読み込み可能であることを許可し、ＰＲＯＴ＿ＷＲＩＴＥはページが書き込み可能であることを許可し、ＭＡＰ＿ＳＨＡＲＥＤはマッピングが共有されることを許可する。
【００７０】
但し、書き込みはファイル全体での書き換え（ファイルの差し替え）を許可し、ファイルの一部だけの書き込みは許可されない。
【００７１】
同期部１５はメモリイメージファイルを記憶装置（メモリイメージファイル記憶部１６）にメモリイメージファイルとして同期をとる機能を有する。
【００７２】
内部メモリのデータをハードディスク上のような物理記憶領域上にあるメモリイメージファイル記憶部１６との同期を取る。
【００７３】
すなわち、内部メモリ１７に展開されたメモリイメージファイルの（データ）構造（メモリ構造）をそのまま維持した状態で、メモリイメージファイル記憶部１６にそのメモリ構造を書き込むので、複数のアプリケーションが内部メモリ１７のメモリ構造を保持したままで、メモリイメージファイル記憶部１６のメモリイメージファイルを共有することが可能となる。
【００７４】
また、この場合には内部メモリ１７のデータとメモリイメージファイルのデータの並び順が同じとなる。
【００７５】
一例としてＣ言語の場合に、実際にメモリイメージファイルに書き込み同期を取るには、ｍｓｙｎｃ（ｐｔｒ，ｓｉｚｅ，０）関数を用いることができる。この場合、ｐｔｒから始まり長さ“ｓｉｚｅ”のメモリ領域に対応するデータがＨＤＤ等の記憶装置４１０に記憶される。そして、最後にファイルがクローズされる（ｃｌｏｓｅ（ｆｄ））。
【００７６】
このような構成によれば、アプリケーションプログラムに使用されるデータの大きさを演算し、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行するので、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持し、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有することが可能となる。
【００７７】
したがって、アプリケーションサーバの記憶装置において、アプリケーションプログラムが利用するデータの記憶されているメモリ領域をあたかも一つのファイル（メモリ構造を保持したまま保存されたデータ）として扱うことが可能となったので、大量のデータを共有することが可能になるとともに、この領域をＷＥＢアプリケーションプログラムから参照することによって、データベースサーバの代替としての機能を担うことによって高速検索を可能とすることが可能になった。
【００７８】
［処理手順］
ここで、本発明を適用した場合において実現され得る具体的な処理手順について、図４に示すフローチャート（Ｃ言語を使用した場合）を参照して説明する。なお、以下に示す処理手順は、一例であってこれ以外にも実現され得る処理手順は無数に存在する。
【００７９】
ステップＳ１において、メモリ管理サーバ１０はマップ用のファイルをオープンする。例えば、マップ用のファイルの名称を“ＭａｐＦｉｌｅ”とした場合には、ｏｐｅｎ（“ＭａｐＦｉｌｅ”，Ｏ＿ＲＤＷＲ｜Ｏ＿ＣＲＥＡＴＥ，０６６６）でマップ用のファイルをオープンすることができる。
【００８０】
ステップＳ２において、メモリ管理サーバ１０のデータ演算部１１は、アプリケーションプログラム毎にアプリケーションプログラムに使用されるデータの大きさを演算し、その大きさをマップファイルの領域の大きさとする。
【００８１】
ステップＳ３において、メモリ管理サーバ１０の記憶領域確保部１２は、ステップＳ２において演算されたデータの大きさに対応して、内部メモリ１７上にメモリ領域を確保する。
【００８２】
ステップＳ４において、メモリ管理サーバ１０のデータ書込部１３はステップＳ３において確保されたマップファイルに、アプリケーションプログラムにおいて使用されるデータを書き込む。
【００８３】
一例としてＣ言語の場合にはｒｅａｄ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で，ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから読み込み（アプリケーションで使用されるデータを読み込み）、ｗｒｉｔｅ（ｆｄ，＆ｃ，ｓｉｚｅｏｆ（ｃｈａｒ））関数で、ｓｉｚｅｏｆ（ｃｈａｒ）のバイト数のデータをアドレス＆ｃから書き込むことが可能になる。
【００８４】
ステップＳ５において、メモリ管理サーバ１０のメモリマッピング部１４は、ステップＳ４において連続した内部メモリ領域に書き込まれたデータをメモリイメージファイルとしてメモリマッピング処理をする。
【００８５】
一例としてＣ言語の場合には、ｍｍａｐ（０，ｓｉｚｅ，ＰＲＯＴ＿ＲＥＡＤ｜ＰＲＯＴ＿ＷＲＩＴＥ，ＭＡＰ＿ＳＨＡＲＥＤ，ｆｄ，０）でメモリマッピング処理を実行できる。
【００８６】
ステップＳ６において、メモリ管理サーバ１０の同期部１５は、メモリイメージファイルを記憶装置（メモリイメージファイル記憶部１６）に書き込み同期をとる。
【００８７】
すなわち、内部メモリ１７に展開されたメモリイメージファイルの（データ）構造（メモリ構造）をそのまま維持した状態で、メモリイメージファイル記憶部１６にそのメモリ構造を書き込み、同期を取る。
【００８８】
一例としてＣ言語の場合に、ｍｓｙｎｃ（ｐｔｒ，ｓｉｚｅ，０）関数を用いて書き込み同期を取ることができる。そして、ファイルがクローズされる（ｃｌｏｓｅ（ｆｄ））。
【００８９】
ステップＳ７において、ユーザがユーザ端末３０を利用してメモリ管理サーバ１０に存在するアプリケーションプログラムを呼び出し、アプリケーションを実行している場合に、そのアプリケーションプログラムに使用されるデータにリクエスト要求が発生する。
【００９０】
ステップＳ８において、メモリ管理サーバ１０の制御部３００は、ステップＳ７においてデータが要求されたアプリケーションプログラム毎に用意された、メモリ管理サーバ１０内のメモリイメージファイル記憶部１６に記憶されたメモリイメージファイルからデータを読み出す。
【００９１】
このような構成によれば、アプリケーションプログラムに使用されるデータの大きさを演算し、アプリケーションプログラムに使用されるデータを連続した内部メモリ領域に書き込み、連続した内部メモリ領域に書き込まれたデータをメモリマッピング処理し、メモリマッピング処理されたメモリイメージファイルを物理的に存在する記憶装置に同期を取る（データを書き込む）動作を実行するので、メモリイメージファイルのデータはメインメモリ３４０のメモリ構造を保持したままで、複数のアプリケーションプログラムが記憶装置４１０のメモリイメージファイルを共有することが可能となる。
【００９２】
したがって、アプリケーションサーバの記憶装置において、アプリケーションプログラムが利用するデータの記憶されているメモリ領域をあたかも一つのファイル（メモリ構造を保持したまま保存されたデータ）として扱うことが可能となったので、大量のデータを共有することが可能になるとともに、この領域をＷＥＢアプリケーションプログラムから参照することによって、データベースサーバの代替としての機能を担うことによって高速検索を可能とすることが可能になった。
【００９３】
［全体構成の概念］
全体構成の概念図を図５に示す。
メモリ管理サーバ１０にアプリケーション（プログラム）１、アプリケーション（プログラム）２及びアプリケーション（プログラム）３が実装されている場合に、アプリケーション（プログラム）１、アプリケーション（プログラム）２及びアプリケーション（プログラム）３に使用されているデータ１８がメインメモリ３４０の記憶部分に記憶されている。
【００９４】
本実施形態においては、制御部３００のデータ演算部１１、記憶領域確保部１２、データ書込部１３、メモリマッピング部１４及び同期部１５がメモリマッピング処理プロセス１９を実行する。
【００９５】
メモリマッピング処理プロセス１９によってデータ１８は、それぞれのアプリケーション（プログラム）が使用するデータ毎に分割して処理される。
【００９６】
すなわち、アプリケーション１用のデータは、アプリケーション１用メモリイメージファイル１６ａとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９７】
同様に、アプリケーション２用のデータは、アプリケーション２用メモリイメージファイル１６ｂとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９８】
また、同様に、アプリケーション３用のデータは、アプリケーション３用メモリイメージファイル１６ｃとして一つのファイルがメモリ領域のように取り扱われる形態でメモリイメージファイル記憶部１６に記憶される。
【００９９】
ユーザ端末３０ａを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション１を実行している場合に、アプリケーション１がアプリケーション１用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション１用メモリイメージファイル１６ａを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１００】
また、ユーザ端末３０ａを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション２を実行している場合に、アプリケーション２がアプリケーション２用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション２用メモリイメージファイル１６ｂを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０１】
同様にユーザ端末３０ｃを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション１を実行している場合に、アプリケーション１がアプリケーション１用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション１用メモリイメージファイル１６ａを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０２】
また、同様に、ユーザ端末３０ｃを使用しているユーザがメモリ管理サーバ１０に実装されているアプリケーション２を実行している場合に、アプリケーション２がアプリケーション２用のデータを使用する場合には、メモリイメージファイル記憶部１６に記憶されているアプリケーション２用メモリイメージファイル１６ｂを検索し、データを取得し、アプリケーション１の実行を続ける。
【０１０３】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【０１０４】
なお、本実施形態においては、メモリ管理サーバ１０は、ハードディスク３７０及び光ディスクドライブ３８０を有する構成として説明したが、これに限られず、これらの駆動系を有さない構成、いわゆるゼロスピンドルによる構成であっても良い。このような構成の場合には、ハードディスク３７０に記憶される内容は、大容量の半導体メモリ３９０に記憶される。
【図面の簡単な説明】
【０１０５】
【図１】本実施形態に係るサーバと、ユーザ端末とから構成される情報処理システムを示す図である。
【図２】本発明に係るサーバの構成を示すブロック図である。
【図３】本実施形態に係るサーバの機能的な構成を示す機能ブロック図である。
【図４】本実施形態に係るサーバによる処理手順についての説明に供するフローチャートである。
【図５】本実施形態に係る全体構成の概念を示す図である。
【符号の説明】
【０１０６】
１  情報処理システム
１０  メモリ管理サーバ
１１  データ演算部
１２  記憶領域確保部
１３  データ書込部
１４  メモリマッピング部
１５  同期部
１６  メモリイメージファイル記憶部
１７  内部メモリ
３０  ユーザ端末
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2010061253.tif 000008
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2010061253.tif 000009