(57)【要約】【課題】データの性質に応じた圧縮を施すこと。【解決手段】発明の一実施形態の情報処理装置は、複数のＲＡＭディスクのぞれぞれの圧縮方式を設定した設定情報と、前記設定情報の設定に従い、前記圧縮方式毎にＲＡＭディスクを作成する作成部と、データの書込みおよび読込みを要求するアプリケーションと、前記アプリケーションによる前記データの書込みの要求に基づき、前記アプリケーションに対応するＲＡＭディスクに該ＲＡＭディスクの圧縮方式で前記データを書込むファイルシステムと、を有する。【選択図】図２
2019061654.tif 000002
【特許請求の範囲】
【請求項１】
複数のＲＡＭディスクのぞれぞれの圧縮方式を設定した設定情報と、
前記設定情報の設定に従い、前記圧縮方式毎にＲＡＭディスクを作成する作成部と、
データの書込みおよび読込みを要求するアプリケーションと、
前記アプリケーションによる前記データの書込みの要求に基づき、前記アプリケーションに対応するＲＡＭディスクに該ＲＡＭディスクの圧縮方式で前記データを書込むファイルシステムと、
を有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションは、
前記データの書込み先として、前記設定情報の設定の内の自身のアプリケーションのデータの性質が対応する圧縮方式のＲＡＭディスクを指定し、
前記ファイルシステムは、
前記アプリケーションにより指定されたＲＡＭディスクに該ＲＡＭディスクに設定されている圧縮方式で前記データの書込みを行う、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記作成部は、前記圧縮方式毎のＲＡＭディスクの作成において、前記設定情報の設定に従い、前記複数のＲＡＭディスクの記憶領域をＤＲＡＭの一部の記憶領域にＲＡＭディスク毎に作成する、
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記圧縮方式には非圧縮が含まれ、
前記アプリケーションは、前記データが圧縮済みのデータである場合に、前記データの書込み先として前記複数のＲＡＭディスクの内の非圧縮の設定のＲＡＭディスクを指定し、
前記ファイルシステムは、前記アプリケーションにより非圧縮の設定のＲＡＭディスクが指定された場合に、前記データを圧縮を省略して前記指定されたＲＡＭディスクに書込む、
ことを特徴とする請求項１乃至３のうちの何れか一項に記載の情報処理装置。
【請求項５】
前記アプリケーションは、
前記アプリケーションのファイルごとにデータの性質が対応する圧縮方式を指定する指定手段と、
前記指定手段により指定された圧縮方式に対応するＲＡＭディスクを前記データの書込みを要求した書込み先を示す情報として前記データのファイル名ごとに管理するファイル管理情報と、
を有する、
ことを特徴とする請求項１乃至４のうちの何れか一項に記載の情報処理装置。
【請求項６】
前記指定手段は、
前記アプリケーションのファイルごとにデータの性質を判別する判別手段と、
前記判別手段により判別されたデータの性質と該データの性質に対応する圧縮方式とが予め対応付けられているデータ情報と、
に基づき前記アプリケーションのファイルごとにデータの性質が対応する圧縮方式を指定する、
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記ファイルシステムは、前記アプリケーションからデータの読込みの要求を受けた場合に、前記アプリケーションから前記ファイル管理情報に含まれる前記データの書込み先を示す情報の指定があると、前記読込の要求を受けたデータを、前記指定された書込み先のＲＡＭディスクから該ＲＡＭディスクの圧縮方式に応じて伸張する、
ことを特徴とする請求項５または６に記載の情報処理装置。
【請求項８】
ＲＡＭディスクの圧縮方式を設定した設定情報と、
前記設定情報の設定に従い、前記圧縮方式に対応したＲＡＭディスクを作成する作成部と、
データの書込みおよび読込みを要求するアプリケーションと、
前記アプリケーションによる前記データの書込みの要求に基づき、前記ＲＡＭディスクに前記データに対応する圧縮方式で前記データを書込むファイルシステムと、
前記アプリケーションが書込みを要求する前記データにおいて、前記データに対応する圧縮方式が前記ＲＡＭディスクの圧縮方式に一致しない場合に、前記ＲＡＭディスクの圧縮方式を前記データに対応する圧縮方式に設定し直す設定変更手段と、
を有することを特徴とする情報処理装置。
【請求項９】
前記設定変更手段は、
前記ファイルシステムが前記ＲＡＭディスクに前記データの書込みを行う度に、前記ＲＡＭディスクの圧縮方式が前記データに対応する圧縮方式に一致しないという条件を満たすと、前記ＲＡＭディスクの圧縮方式を前記データに対応する圧縮方式に設定し直す、
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記設定変更手段が一つのＲＡＭディスクを対象に圧縮方式を異なる圧縮方式へ設定し直すリマウントを繰り返す度に、前記ファイルシステムは、前記一つのＲＡＭディスク領域に前記リマウント後の圧縮方式に対応するデータを書込む、
ことを特徴とする請求項８または９に記載の情報処理装置。
【請求項１１】
ＲＡＭディスクの空き領域を管理する管理手段を有し、
前記管理手段は、前記ＲＡＭディスクに長期に滞留するデータを削除することにより前記ＲＡＭディスクの空き領域を増加させる、
ことを特徴とする請求項１乃至１０のうちの何れか一項に記載の情報処理装置。
【請求項１２】
前記管理手段は、複数のＲＡＭディスクのうちの第１のＲＡＭディスクに書込まれているデータを第２のＲＡＭディスクへ移動することにより第１のＲＡＭディスクの空き領域を増加させる、
ことを特徴とする請求項１乃至１１のうちの何れか一項に記載の情報処理装置。
【請求項１３】
前記管理手段は、前記ＲＡＭディスクに書込まれているデータを該データの圧縮アルゴリズムよりも高い圧縮アルゴリズムで圧縮したデータで書き換えることにより前記ＲＡＭディスクの空き領域を増加させる、
ことを特徴とする請求項１乃至１２のうちの何れか一項に記載の情報処理装置。
【請求項１４】
前記ＲＡＭディスクに書込んだデータを二次記憶装置に保存することにより前記データを永続化させる、
ことを特徴とする請求項１乃至１３のうちの何れか一項に記載の情報処理装置。
【請求項１５】
前記ＲＡＭディスクに書込んだデータをネットワークを介してネットワークストレージに保存することにより永続化させる、
ことを特徴とする請求項１乃至１４のうちの何れか一項に記載の情報処理装置。
【請求項１６】
ＲＡＭディスクを設定する方法であって、
複数のＲＡＭディスクのぞれぞれの圧縮方式を設定した設定情報を取得するステップと、
ＲＡＭディスク用の領域を確保するステップと、
前記ＲＡＭディスク用の領域をフォーマットするステップと、
前記ＲＡＭディスク用の領域に前記圧縮方式をマウントするステップと、
を前記複数のＲＡＭディスクの数だけ繰り返す、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び方法に関する。
【背景技術】
【０００２】
従来、主記憶装置の一部をＲＡＭディスクの記憶領域に割り当て、その記憶領域に一時ファイルなどのデータを書き込む技術が一般に利用されている。組み込み機器のように搭載できるメモリの量が限られている場合には、要求される書き込みデータを効率よくＲＡＭディスクの記憶領域に収めるため、データの圧縮が行われる。
【０００３】
主記憶装置と補助記憶装置との間の記録管理方式について技術を開示した文献がある。この技術では、ＣＰＵが送出した論理アドレスに対応するデータが主記憶装置に存在しない場合に、補助記憶装置内の論理アドレスに対応するデータをページ単位で読み出し、読み出したデータを圧縮して主記憶装置に格納し、主記憶装置内のデータの内、ＣＰＵが要求するものを読み出して伸張することが記載されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、搭載できるメモリの量が限られる一方で、要求される書き込みデータの量が多く上回る場合には、それらをより効果的に圧縮する必要が生じる。従来は、ファイルシステムのオプション機能などにより各データに対し所定の圧縮アルゴリズムで一律に圧縮を施していたため、データの性質によっては最適な圧縮ではなかった。データの中には既に圧縮済みのデータも含まれているため、このようなデータを圧縮した場合には、圧縮の向上が望めず、圧縮前よりも圧縮率が悪くなったりすることもある。このようにデータの性質に応じた圧縮を施すことができないという問題がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、データの性質に応じた圧縮を施すことが可能な情報処理装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、発明の一実施形態の情報処理装置は、複数のＲＡＭディスクのぞれぞれの圧縮方式を設定した設定情報と、前記設定情報の設定に従い、前記圧縮方式毎にＲＡＭディスクを作成する作成部と、データの書込みおよび読込みを要求するアプリケーションと、前記アプリケーションによる前記データの書込みの要求に基づき、前記アプリケーションに対応するＲＡＭディスクに該ＲＡＭディスクの圧縮方式で前記データを書込むファイルシステムと、を有する。
【発明の効果】
【０００７】
本発明によれば、データの性質に応じた圧縮を施すことが可能になるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態にかかる情報処理装置のハードウェア構成の一例を示す図である。
【図２】図２は、ＳＳＤのソフトウェアの構成の一例を示す図である。
【図３】図３は、情報処理装置の主な機能構成の一例を示す図である。
【図４】図４は、設定情報のテーブル構造の一例を示す図である。
【図５】図５は、ＲＡＭディスクの作成手順の一例を示すフロー図である。
【図６】図６は、メモリ管理部が管理するＤＲＡＭの記憶領域についてのメモリマップの一例を示す図である。
【図７】図７は、属性情報の一例を示す図である。
【図８】図８は、アプリの一時ファイルをＲＡＭディスク領域に書き込む手順の一例を示すシーケンス図である。
【図９】図９は、書込んだ一時ファイルのデータをアプリで読込む手順の一例を示すシーケンス図である。
【図１０】図１０は、変形例１に係るＳＳＤのソフトウェアの構成の一例を示す図である。
【図１１】図１１は、データ情報のデータ構成の一例を示す図である。
【図１２】図１２は、ファイル管理情報の一例を示す図である。
【図１３】図１３は、アプリの一時ファイルをＲＡＭディスク領域に書き込む手順の一例を示すシーケンス図である。
【図１４】図１４は、ＲＡＭディスクに書込まれている一時ファイルのデータをアプリが取得する手順の一例を示すシーケンス図である。
【図１５】図１５は、変形例２に係るＳＳＤのソフトウェアの構成の一例を示す図である。
【図１６】図１６は、情報処理装置におけるＲＡＭディスク管理モジュールの動作について説明する図である。
【図１７】図１７は、変形例３に係るＤＲＡＭのメモリマップの一例を示す図である。
【図１８】図１８は、マウント情報の一例を示す図である。
【図１９】図１９は、リマウントが繰り返された場合のＲＡＭディスクの状態遷移の一例を示す図である。
【図２０】図２０は、ＲＡＭディスクリマウントモジュールが行うリマウントの手順の一例を示すフロー図である。
【図２１】図２１は、圧縮アルゴリズムが異なる設定の一時ファイルをアプリが同じＲＡＭディスク領域に書き込む手順の一例を示すシーケンス図である。
【図２２】図２２は、変形例４に係るデータ情報のデータ構成の一例を示す図である。
【図２３】図２３は、ＲＡＭディスクが異なる圧縮アルゴリズムでマウントされる度に遷移するマウントの状態の一例を示す図である。
【図２４】図２４は、長期滞留データをリマウントにより高圧縮する際の情報処理装置全体の動作の一例を示すシーケンス図である。
【図２５】図２５は、変形例５に係るハードウェア構成の一例を示す図である。
【図２６】図２６は、ＲＡＭディスク内に存在するデータを外部ストレージへ保存するための手順の一例を示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、本発明にかかる情報処理装置及び方法の実施の形態を詳細に説明する。
【００１０】
（実施の形態）
本実施の形態にかかる情報処理装置は、例えばＭＦＰ（MultiFunction  Peripheral）の情報処理装置などへの適用が可能である。当該情報処理装置の主記憶装置は、ＤＲＡＭ（Dynamic  Random  Access  Memory）などにより構成し、プログラムやデータの「記憶部」はＳＳＤ（Solid  State  Drive）やＨＤＤ（Hard  Disk  Drive）などにより構成する。
【００１１】
図１は、実施の形態に係る情報処理装置のハードウェア構成の一例を示す図である。図１に示す情報処理装置１は、ＣＰＵ１１と、ＤＲＡＭ１２と、ＳＳＤ１３とを有し、これらはバス１４により相互に接続されている。その他、組み込み機器に応じてデバイス機器のコントローラなどが接続される。例えばＭＦＰであれば、画像処理エンジンや、各種の通信インタフェースや、タッチパネルや液晶ディスプレイのコントローラなどが接続される。
【００１２】
ＣＰＵ１１は、中央演算処理装置であり、情報処理装置１全体を統括的に制御する。ＤＲＡＭ１２は、ＣＰＵ１１が高速に情報の読み書きを行う揮発性メモリであり、ＣＰＵ１１の作業領域として利用される。ＳＳＤ１３は、不揮発性のメモリであり、各種プログラムやデータを格納する。
【００１３】
図２は、ＳＳＤ１３のソフトウェアの構成の一例を示す図である。図２には、ＯＳ（Operating  System）のソフトウェアと共にＳＳＤ１３にインストールする主なソフトウェアの構成の一例を示している。
【００１４】
設定情報１００は、ＲＡＭディスクを作成するための設定を有するテーブル情報である。
【００１５】
ＲＡＭディスク作成プログラム１０１は、ＲＡＭディスクを作成するなどの機能をカーネルに追加するモジュール型のプログラムである。
【００１６】
圧縮ファイルシステムプログラム１０２は、圧縮機能を有するファイルシステムのプログラムである。
【００１７】
各種のアプリケーションプログラム１０３、１０４、・・・は、特定機能を有し、特定の処理を行う際にファイルを入出力するアプリケーションのプログラムである。例えばＭＦＰのコピーやファックスなどの特定機能を有するアプリケーションのプログラムである。なお、以下では「アプリケーション」を単に「アプリ」と省略して呼ぶものとする。
【００１８】
（機能構成）
図３は、情報処理装置１の主な機能構成の一例を示す図である。各機能は、ＣＰＵ１１がＳＳＤ１３にインストールされている各種プログラムをＤＲＡＭ１２にロードして実行することにより実現される。図３に示す機能の内、デバイスドライバ２０１、圧縮ファイルシステム２０２、各種のアプリ２０３、２０４、・・・は、それぞれ、ＲＡＭディスク作成プログラム１０１（図２参照）、圧縮ファイルシステムプログラム１０２（図２参照）、各種のアプリケーションプログラム１０３、１０４、・・・（図２参照）の機能部として実現される。その他、ＯＳ（本例ではＵｎｉｘ系のリナックス（登録商標）とする）のソフトなどに基づいてカーネル空間４０２の各種機能部が実現される。図３に示す各種のアプリ２０３、２０４、・・・はユーザ空間４０１で動作し、その他の各種機能部はカーネル空間４０２で動作する。なお、図３に破線で示すＤＲＡＭ１２とＳＳＤ１３は、図１に示すハードウェア構成であり、説明のために機能部と共に図示したものである。
【００１９】
各種のアプリ２０３、２０４、・・・は、システムコール２０５にファイルの書込みやファイルの読出しなどの処理を要求する。例えば、ＭＦＰにおいて画像編集アプリを使用する場合、非圧縮ファイル或いはＪＰＥＧファイルやＰＤＦ（登録商標）ファイルなどの圧縮済みのファイルの書込みや読出しを要求する。
【００２０】
仮想ファイルシステム２００は、ファイルシステムの違いを吸収し、ユーザ空間４０１から一つのファイルシステムとして見えるようにする。
【００２１】
圧縮ファイルシステム２０２は、複数のＲＡＭディスクのファイルを管理する。具体的に圧縮ファイルシステム２０２は、各ＲＡＭディスクのサイズ、ＲＡＭディスクのパス、ＲＡＭディスクの圧縮方式を属性情報３００として個別に有し、各属性情報３００に基づいて各ＲＡＭディスクのファイルを個別に管理する。例えば、圧縮ファイルシステム２０２は、各種のアプリ２０３、２０４、・・・が一時ファイルの書込み先として指定するＲＡＭディスクに対応する圧縮方式で処理を施し、処理後のファイルを当該ＲＡＭディスクにデバイスドライバ２０１を介して書き込む。
【００２２】
その他のファイルシステム２０６は、圧縮ファイルシステム２０２とは異なる種類のファイルシステムである。例えば、ＯＳに予め組み込まれているファイルシステムである。
【００２３】
メモリ管理部２０７は、ＤＲＡＭ１２のメモリ領域の予約などの割り当ての管理を行う。
【００２４】
デバイスドライバ２０１は、「作成部」やＤＲＡＭ１２のデバイスドライバとして機能する。
【００２５】
ドライバ２０８は、ＳＳＤ１３などのドライバとして機能する。
【００２６】
（ＲＡＭディスクの作成）
次に、情報処理装置１における各種処理について説明する。先ず、ＲＡＭディスクの作成手順について説明する。以下では設定情報１００について説明し、その後で作成手順について説明する。ここでは、作成するＲＡＭディスクの数を一例として４個に限定して示す。なお、作成するＲＡＭディスクの数は一例であり、適宜増減させてよい。
【００２７】
図４は、設定情報１００のテーブル構造の一例を示す図である。図４に示す設定情報１００は、ＲＡＭディスク番号ｔ１と、圧縮方式ｔ２と、パスｔ３と、サイズｔ４とを対応付けたものである。
【００２８】
ＲＡＭディスク番号ｔ１には、ＲＡＭディスクを一意に識別するインデックス番号を設定する。この例では、４個のＲＡＭディスクのそれぞれのインデックス番号として、「１」、「２」、「３」、「４」を設定したものを示している。
【００２９】
圧縮方式ｔ２には、ＲＡＭディスク番号ｔ１に設定した各ＲＡＭディスクの圧縮方式を設定する。図４には、ＲＡＭディスク「１」〜ＲＡＭディスク「３」に圧縮のための所定の圧縮アルゴリズム「Ａ」〜「Ｃ」を設定し、ＲＡＭディスク「４」に非圧縮を表す「Ｄ」を設定している。
【００３０】
パスｔ３には、ＲＡＭディスク番号ｔ１に設定した各ＲＡＭディスクのパス情報を設定する。
【００３１】
サイズｔ４には、ＲＡＭディスク番号ｔ１に設定した各ＲＡＭディスクのディスク容量であるサイズ情報を設定する。
【００３２】
図５は、ＲＡＭディスクの作成手順の一例を示すフロー図である。ここでは、情報処理装置１のシステム起動時に行われる処理の流れを説明する。情報処理装置１がブートし、ＯＳがＤＲＡＭ１２の所定の記憶領域にロードされると、ＲＡＭディスク作成プログラム１０１が読み込まれ、ＲＡＭディスクを作成する作成部が追加される。
【００３３】
作成部は、先ず、ＳＳＤ１３に格納されている設定情報１００（図４参照）を取得する（Ｓ１）。
【００３４】
続いて、作成部は、取得した設定情報１００の内の未作成の１つのＲＡＭディスクについてサイズｔ４を参照し、当該ＲＡＭディスク用の領域として、サイズｔ４に設定されているサイズの確保をメモリ管理部２０７（図３参照）に要求する（Ｓ２）。メモリ管理部２０７は、この起動時の初期段階にＲＡＭディスク用の領域を確保する。
【００３５】
続いて、作成部は、ステップＳ２で確保したＲＡＭディスクの領域をフォーマットする（Ｓ３）。フォーマットの際、作成部は、当該ＲＡＭディスクを管理する圧縮ファイルシステム２０２（図３参照）の属性情報３００（図７参照）にサイズ情報を設定する。
【００３６】
続いて、作成部は、設定情報１００のパスｔ３を参照し、パスｔ３に設定されているＲＡＭディスクのマウントポイントに当該ＲＡＭディスク（当該ＲＡＭディスクのイメージ）をマウントするマウント操作を行う（Ｓ４）。作成部は、このマウント操作において、設定情報１００のパスｔ３の設定に対応する圧縮方式ｔ２を上記圧縮ファイルシステム２０２の圧縮方式として設定する。更に、作成部は、この操作の際に、当該ＲＡＭディスクを管理する圧縮ファイルシステム２０２の属性情報３００にパスと圧縮方式とを設定する。
【００３７】
続いて、作成部は、設定情報１００において他に未作成のＲＡＭディスクがあるかを判定する（Ｓ５）。他に未作成のＲＡＭディスクがある場合（Ｓ５：Ｙｅｓ判定）、未作成のＲＡＭディスクの内の１つについてステップＳ２から同様に処理を行い、ＲＡＭディスクを作成する。
【００３８】
本例では、１巡目にＲＡＭディスク番号「１」のＲＡＭディスクを作成し、２巡目にＲＡＭディスク番号「２」のＲＡＭディスクを作成し、３巡目にＲＡＭディスク番号「３」のＲＡＭディスクを作成し、４巡目にＲＡＭディスク番号「４」のＲＡＭディスクを作成する。この作成処理の際に、各ＲＡＭディスクの圧縮ファイルシステム２０２が有する各属性情報３００を設定する。
【００３９】
他に未作成のＲＡＭディスクがない場合（Ｓ５：Ｎｏ判定）、本処理を終了する。
【００４０】
（メモリマップ）
図６は、メモリ管理部２０７が管理するＤＲＡＭ１２の記憶領域についてのメモリマップの一例を示す図である。メモリ管理部２０７は、図６に示すＤＲＡＭ１２のＯＳ管理対象領域１２０とＯＳ管理対象外領域１３０の内、ＯＳ管理対象領域１２０に、複数のＲＡＭディスク領域を割り当てる。本例ではＲＡＭディスク番号「１」〜「４」の４つのＲＡＭディスク領域、それぞれ、ＲＡＭディスク領域１２１、ＲＡＭディスク領域１２２、ＲＡＭディスク領域１２３、およびＲＡＭディスク領域１２４を、ＲＡＭディスク区切りで割り当てる。ＯＳ管理対象領域１２０のＲＡＭディスクを除く記録領域１２５は、タスクの処理などに割り当てる。
【００４１】
（属性情報）
図７は、属性情報３００の一例を示す図である。属性情報３００は、図５に示すＲＡＭディスクの作成処理により、起動処理において設定される。図７に示すように、属性情報３００には、各ＲＡＭディスクのパス情報、圧縮方式、サイズ情報が設定される。
【００４２】
（アプリの一時ファイルの処理）
続いて、各アプリ２０３、２０４、・・・（図３参照）の一時ファイルをＤＲＡＭ１２（図３参照）のＲＡＭディスク領域１２１、１２２、１２３、１２４（図６参照）に書込む手順、書込んだ一時ファイルを各アプリ２０３、２０４、・・・で読込む手順について説明する。なお、以下では、各アプリ２０３、２０４、・・・の内のアプリ２０３について説明するが、その他のアプリ２０４・・・についても同様とする。また、理解を容易にするために、図３に示す機能ブロックの内の主な機能ブロックを示し、その他の機能ブロックについては適宜説明し、図示については省略する。
【００４３】
図８は、アプリ２０３の一時ファイルをＲＡＭディスク領域１２１、１２２、１２３、１２４に書き込む手順の一例を示すシーケンス図である。図８に示すように、先ず、アプリ２０３が設定情報１００を取得する（Ｓ１１、Ｓ１２）。具体的に、アプリ２０３は、システムコール２０５（図３参照）を介して設定情報を要求し（Ｓ１１）、ＳＳＤ１３から設定情報１００の圧縮方式とパスを取得する（Ｓ１２）。
【００４４】
続いて、アプリ２０３は、出力する一時ファイルの性質（例えば拡張子など）に基づいて圧縮が必要なファイルか圧縮が不要なファイルかを判断し（Ｓ１３）、圧縮方式に対応するＲＡＭディスクのパスを取得済みの設定情報から抽出する（Ｓ１４）。具体的に、アプリ２０３は、圧縮が必要なファイルの場合には、そのファイルに最適な圧縮アルゴリズムを、設定情報１００の圧縮方式ｔ２に設定されている圧縮アルゴリズム「Ａ」〜「Ｃ」の内から判断し、その圧縮アルゴリズムに対応するパスをパスｔ３から抽出する。例えば、テキストデータを出力する場合、アプリ２０３は、圧縮アルゴリズム「Ａ」〜「Ｃ」の内から圧縮率が最も良いアルゴリズムが最適と判断する。また、アプリ２０３は、圧縮が不要なファイルについては、設定情報１００の圧縮方式ｔ２に設定されている非圧縮「Ｄ」のパスをパスｔ３から抽出する。
【００４５】
続いて、アプリ２０３が、当該一時ファイルをＲＡＭディスクに書き込む要求と共に圧縮方式のパスと一時ファイルの生データとをシステムコール２０５に渡す。なお、アプリ２０３は、ステップＳ１４で抽出したパスに対応する圧縮アルゴリズムを、その後においても各一時ファイルの書込みの要求の際にシステムコール２０５に渡す。圧縮ファイルシステム２０２は、書込みの要求があると、次のようにＲＡＭディスクに一時ファイルを書き込む。
【００４６】
先ず、圧縮ファイルシステム２０２は、アプリ２０３からシステムコール２０５に渡された圧縮方式のパスおよび一時ファイルの生データの通知を受けると（Ｓ１５）、各圧縮ファイルシステム２０２の自己の属性情報３００の設定から、通知されたパスに対応する圧縮方式で生データを処理する（Ｓ１６）。例えば、圧縮ファイルシステム２０２は、アプリ２０３から渡された圧縮方式のパスがパスｔ３（図４参照）の「／ｒａｍｄｉｓｋ０」の場合、これに対応する圧縮アルゴリズム「Ａ」の設定に従い、生データを圧縮処理する。圧縮ファイルシステム２０２は、「／ｒａｍｄｉｓｋ１」の場合には、圧縮アルゴリズム「Ｂ」の設定に従って生データを圧縮処理する。圧縮ファイルシステム２０２は、「／ｒａｍｄｉｓｋ２」の場合には、圧縮アルゴリズム「Ｃ」の設定に従って生データを圧縮処理する。圧縮ファイルシステム２０２は、「／ｒａｍｄｉｓｋ３」の場合には、これに対応する非圧縮「Ｄ」から、生データの圧縮処理を省略する。
【００４７】
続いて、圧縮ファイルシステム２０２は、デバイスドライバ２０１を介して、ＲＡＭディスク領域１２１、１２２、１２３、１２４の内、アプリ２０３から渡された圧縮方式のパスに対応するＲＡＭディスク領域にデータを格納する（Ｓ１７）。
【００４８】
図９は、書込んだ一時ファイルのデータをアプリ２０３で読込む（取得する）手順の一例を示すシーケンス図である。図９に示すように、先ず、アプリ２０３がパスを指定してファイルの読込要求を行う（Ｓ２１）。具体的には、アプリ２０３は、システムコール２０５を通じて上記読込要求を行う。
【００４９】
圧縮ファイルシステム２０２は、上記読込要求で指定されたパスに基づき、デバイスドライバ２０１にＲＡＭディスク領域１２１、１２２、１２３、１２４の内のパスに対応するＲＡＭディスク領域からのデータの読み取りを指示し（Ｓ２２）、デバイスドライバ２０１から読み取りデータを取得する（Ｓ２３）。
【００５０】
続いて、圧縮ファイルシステム２０２は、自己の属性情報３００から圧縮方式を判断し、読み取ったデータの処理を行う（Ｓ２４）。例えば、圧縮ファイルシステム２０２は、圧縮アルゴリズム「Ａ」、「Ｂ」、「Ｃ」の場合、それぞれのアルゴリズムに基づいて圧縮データを伸張処理する。また、圧縮ファイルシステム２０２は、非圧縮「Ｄ」の場合、読み取ったデータの伸張処理を省略する。
【００５１】
続いて、アプリ２０３が、圧縮ファイルシステム２０２から、伸張等を終えたファイルを受け取る（Ｓ２５）。具体的に、圧縮ファイルシステム２０２からは、システムコール２０５を介して上記ファイルが返信される。
【００５２】
以上のように、本実施の形態では、データの性質（アプリ）に応じて最適な圧縮アルゴリズムを選択したり、圧縮済みのデータの場合には圧縮／伸張の処理を省略したりするため、データの性質（アプリ）に応じた最適な圧縮を施すことが可能になる。また、圧縮方式毎にＲＡＭディスクの記憶領域を割り当てるため、各ＲＡＭディスクの記憶領域のサイズをデータの性質に応じて異ならせることも可能であり、記憶領域の効率の良い利用が可能になる。また、ＤＲＡＭはＳＳＤに比べてスループットが高く、ＣＰＵでの演算負荷が大きいが、圧縮の効果が期待できない圧縮済みのデータについて圧縮／伸張の処理を省略するため、その分のＣＰＵでの演算負荷を低減することが可能になる。また、頻繁に書込みを行う一時データをＤＲＡＭのＲＡＭディスク領域に書込むことができるため、一時データの書込みに基づくＳＳＤの寿命短縮を抑止することが可能になる。
【００５３】
なお、本実施の形態では、圧縮か非圧縮かの判断をユーザ空間４０１のアプリ２０３、２０４、・・・が行う例を示したが、カーネル空間４０２内で圧縮ファイルシステム２０２などが行うように変形してもよい。
【００５４】
（変形例１）
実施の形態では、アプリ毎に各アプリに適する圧縮アルゴリズムを使ってファイルの書込みおよび読込みを行う場合の態様を示したが、ここでは、その変形例として、各アプリがファイルの書込み時に書込み対象のデータの性質に応じて圧縮アルゴリズムを指定する指定手段を設けた場合の態様について示す。なお、ここでは主に実施の形態と異なる部分について説明するものとし、実施の形態と同様な箇所については図示及び説明を適宜省略する。また、各アプリ２０３、２０４、・・・の内のアプリ２０３を一例とする説明については、その他のアプリ２０４・・・についても同様とする。
【００５５】
図１０は、変形例１に係るＳＳＤ１３のソフトウェアの構成の一例を示す図である。図１０には、実施の形態に示したソフトウェアの構成（図２参照）において更にデータ情報１５０とファイル管理情報１５１とを含めた構成を示している。データ情報１５０は、複数のデータ種別と圧縮アルゴリズムとを対応付けた情報である。ファイル管理情報１５１は、各アプリ２０３、２０４、・・・（図３参照）がファイル名毎にファイルとＲＡＭディスクのパスとを対応付けて管理するためにある。ファイル管理情報１５１は、アプリ２０３、２０４、・・・がそれぞれ備え、ファイルの書込み時や読込み時に適宜設定する。
【００５６】
図１１は、データ情報１５０のデータ構成の一例を示す図である。図１１に示すように、データ情報１５０には、データの種別ｔ１５１と圧縮アルゴリズムｔ１５２とが対応付けられている。データの種別ｔ１５１には、データの性質を示す情報が設定されている。データの性質を示す情報とはアプリ２０３、２０４、・・・が生データから判別することができるデータの性質を示す情報、例えばテキストデータであるか画像データであるかなどを示す情報である。他方の圧縮アルゴリズムｔ１５２には、データの種別ｔ１５１の設定に対応する最適な圧縮アルゴリズムが設定されている。
【００５７】
例えば、テキストデータの場合、データの種別ｔ１５１にテキストデータであることを示す情報が、圧縮アルゴリズムｔ１５２にテキストデータの圧縮に適した圧縮アルゴリズムが設定されている。また、ＪＰＥＧの画像データなど、既に圧縮済みのデータの場合には、データをさらに圧縮するとリソースの浪費に繋がる。このため、データの種別ｔ１５１に圧縮済みのデータが設定されているものについては、その圧縮アルゴリズムｔ１５２に圧縮を行わない非圧縮が設定されている。
【００５８】
図１２は、ファイル管理情報１５１の一例を示す図である。図１２には、各アプリ２０３、２０４、・・・のうちの一つのファイル管理情報１５１を示している。図１２に示すように、ファイル管理情報１５１には、ファイル名とパスとが対応付けて設定される。
【００５９】
図１２に示す設定例は、ＲＡＭディスクへのデータの書込みやＲＡＭディスクからのデータの読込みが複数回行われた後の設定例である。この例では、１つのアプリ（例えばアプリ２０３）が、ファイル１をＲＡＭディスク領域１２１（図６参照）に書込み、ファイル２をＲＡＭディスク領域１２２（図６参照）に書込み、ファイル３をＲＡＭディスク領域１２３（図６参照）に書込み、ファイル４をＲＡＭディスク領域１２４（図６参照）に書込んだ後の、当該アプリ（アプリ２０３）のファイル管理情報１５１の設定状態を示している。パスは、一意性を持たせるために「ｒａｍｄｉｓｋ＊／アプリ名／ファイル名」の形式としている。なお、各アプリ２０３、２０４、・・・は自己のアプリ名以下のディレクトリを自由に使用できるものとする。
【００６０】
変形例１に係るアプリは、ファイルの書込み時に書込み対象のデータの性質に応じて圧縮アルゴリズムを指定する指定手段を有する。指定手段は、例えば、書込み対象のデータの性質を判別する判別手段の判別結果から圧縮アルゴリズムを指定する。判別手段は、例えばテキストデータや画像データなどを判別する。指定手段による圧縮アルゴリズムの指定は、データ情報１５０や設定情報１００などを利用する。以下に、変形例１に係る情報処理装置１におけるＲＡＭディスクへの一時ファイルの書込みと読込みのシーケンスについて説明する。なお、アプリ２０３を一例に説明するが、その他のアプリ２０４・・・についても同様とする。
【００６１】
図１３は、アプリ２０３の一時ファイルをＲＡＭディスク領域１２１、１２２、１２３、１２４に書き込む手順の一例を示すシーケンス図である。なお、図１３において、ＲＡＭディスク領域１２１、１２２、１２３、１２４の図示は省略している。
【００６２】
最初にアプリ２０３は、生データから書込みたいデータの性質を判別する（Ｓ３１）。
【００６３】
続いてアプリ２０３は、データ情報１５０からデータの性質に対応する圧縮アルゴリズムを示す情報を取得する（Ｓ３２、Ｓ３３）。
【００６４】
続いてアプリ２０３は、ステップＳ３２、Ｓ３３で取得した圧縮アルゴリズムに対応するＲＡＭディスクのパスを設定情報１００から取得する（Ｓ３４、Ｓ３５）。
【００６５】
続いてアプリ２０３は、ステップＳ３４、Ｓ３５で取得したＲＡＭディスクのパスを使ってデータの書込み要求を行う（Ｓ３６）。具体的にアプリ２０３は、ＲＡＭディスク＊／アプリ名／ファイル名」のディレクトリ構造のパスで当該データの書込みを要求する。
【００６６】
圧縮ファイルシステム２０２は、データの書込み要求があると、自己の属性情報３００の設定に従って当該データを圧縮処理する（Ｓ３７）。具体的に、圧縮ファイルシステム２０２は、アプリ２０３から書込み要求のあったＲＡＭディスクのパスに対応する圧縮アルゴリズムでデータを圧縮する。なお、圧縮ファイルシステム２０２は、書込み要求のあったＲＡＭディスクが属性情報３００において非圧縮として設定されている場合、当該データの圧縮を行わないものとし、これも圧縮処理の一つに含めている。
【００６７】
続いて、圧縮ファイルシステム２０２は、自己の属性情報３００の設定に従い、当該データの圧縮方式に対応するＲＡＭディスクにデバイスドライバ２０１を介して圧縮処理後のデータを書き込む（Ｓ３８、Ｓ３９）。
【００６８】
アプリ２０３は、圧縮ファイルシステム２０２がデータの書込みを完了すると（Ｓ４０）、自己のファイル管理情報１５１を、当該データのファイル名とパスとを設定（追加設定）することにより更新する（Ｓ４１）。
【００６９】
ここでは、一例として、１つのアプリが一つのファイル名のデータをＲＡＭディスクに書込むまでのシーケンスを示したが、同じアプリが別のファイル名のデータをＲＡＭディスクに書込む場合も、同様の手順で行われる。つまり、同じアプリであっても異なる種別のデータを扱う場合、各データで異なる圧縮方式が適用される可能性があり、異なる圧縮方式が適用された場合は、それぞれで別のＲＡＭディスクにデータが書込まれることになる。
【００７０】
図１４は、ＲＡＭディスクに書込まれている一時ファイルのデータをアプリ２０３が取得する手順の一例を示すシーケンス図である。なお、図１４においても、ＲＡＭディスク領域１２１、１２２、１２３、１２４の図示は省略している。
【００７１】
最初にアプリ２０３は、自己のファイル管理情報１５１（図１２参照）から、取得したいファイル名のパスを取得する（Ｓ５１）。
【００７２】
続いてアプリ２０３は、そのパスのデータの読込みの要求を行う（Ｓ５２）。
【００７３】
圧縮ファイルシステム２０２は、アプリ２０３から上記読込の要求があると、自己の属性情報３００の設定の、上記パスにあるデータをデバイスドライバ２０１を介してＲＡＭディスクから読み込む（Ｓ５３、Ｓ５４）。
【００７４】
続いて圧縮ファイルシステム２０２は、自己の属性情報３００の上記パスに対応する圧縮アルゴリズムでデータを伸張処理する（Ｓ５５）。このとき、属性情報３００の属性が非圧縮であれば、圧縮ファイルシステム２０２は上記パスにあるデータの伸張を行わない。当該データの伸長を行わないものも伸張処理の一つに含まれる。
【００７５】
アプリ２０３は、圧縮ファイルシステム２０２から、伸張処理を終えたデータが返される（Ｓ５６）。
【００７６】
（変形例１の効果）
変形例１に示すように１つのプロセスが様々なデータ形式を扱うことがある。その場合、アプリが１つのアルゴリズムしか使えないとするとアプリ内のすべてのデータに対し、同一の圧縮アルゴリズムしか使えないことになる。その場合、すべてのデータに対して適切な圧縮アルゴリズムを選択することが困難になる。例えば、既に圧縮済みでこれ以上の圧縮が望めないようなデータも含まれ、これを圧縮処理すると、ＣＰＵの演算負荷がさらに増えてしまうことになる。
【００７７】
しかし、変形例１の構成であれば、アプリがデータの性質に応じた最適な圧縮アルゴリズムをデータごとに指定できるため、ＣＰＵ負荷を減らすことや、効率的な圧縮処理によってＤＲＡＭの書き込むデータ量を増やすことが可能になる。よって、ＤＲＡＭへのデータの書込み量とＣＰＵの演算負荷のバランスをとることが可能になる。
【００７８】
（変形例２）
ＲＡＭディスクの空き領域が所定値を下回る場合、ＲＡＭディスクに書込まれてから長期滞留しているデータ（長期滞留データ）の削除や移動を行うことにより、データが書込めるようにしてもよい。以下、実施の形態や他の変形例と同様の箇所については図示及び説明を適宜省略し、主に異なる部分について説明する。
【００７９】
図１５は、本変形例２に係るＳＳＤ１３のソフトウェアの構成の一例を示す図である。本変形例２に係るＳＳＤ１３のソフトウェアの構成は、実施の形態に示したソフトウェアの構成（図２参照）において、さらにデータ情報１５０とファイル管理情報１５１とＲＡＭディスク管理プログラム１７１とを含む。データ情報１５０とファイル管理情報１５１は、それぞれ、図１１と図１２に示す構成、つまり変形例１と同様であるため、ここでの詳しい説明は省略する。
【００８０】
ＲＡＭディスク管理プログラム１７１は、ＲＡＭディスクを管理する機能（管理手段）をカーネルに追加するモジュール型のプログラムである。
【００８１】
本変形例２では一例として、データ情報１５０とファイル管理情報１５１とを含む構成で説明するが、これらを構成に含めなくても実施は可能である。
【００８２】
本変形例２に係る情報処理装置におけるＲＡＭディスクの作成手順や、各アプリによるＲＡＭディスクへの一時ファイルの書込みの手順や、ＲＡＭディスクからの取得の手順などは、変形例１と同様である。本変形例２は、ＲＡＭディスク管理プログラム１７１による情報処理装置全体の動作が、実施の形態や変形例１と主に異なる。以下では、ＲＡＭディスク管理プログラム１７１による情報処理装置全体の動作について詳しく説明する。
【００８３】
（ＲＡＭディスク管理モジュール）
ＲＡＭディスク管理モジュール（「管理手段」の一例）２１０（図１６参照）は、ＣＰＵ１１がＤＲＡＭ１２にＲＡＭディスク管理プログラム１７１（図１５参照）をロードして実行することにより実現される。
【００８４】
（ＲＡＭディスク管理プログラムによる情報処理装置全体の動作）
図１６は、情報処理装置１におけるＲＡＭディスク管理モジュール２１０の動作について説明する図である。図１６には、ＲＡＭディスク管理モジュール２１０がＲＡＭディスク領域１２１、１２２、１２３、１２４（図６参照）に書込まれているデータの空き領域を確保するときの情報処理装置全体のシーケンスを示している。なお、図２２において、ＲＡＭディスク領域１２１、１２２、１２３、１２４の図示は省略している。
【００８５】
最初に、ＲＡＭディスク管理モジュール２１０は、一定間隔でデバイスドライバ２０１に各ＲＡＭディスク領域１２１、１２２、１２３、１２４の空き容量を確認する（Ｓ１０１）。
【００８６】
ステップＳ１０１の確認により、いずれかのＲＡＭディスク領域１２１、１２２、１２３、１２４の空き容量が一定値より少ないと判定されたとする。その場合、ＲＡＭディスク管理モジュール２１０は、空き容量が一定値より少ないＲＡＭディスク領域内に長期に滞留しているデータ（長期滞留データ）がないかをチェックし、圧縮ファイルシステム２０２からデータ情報（長期滞留データ）を取得する（Ｓ１０２）。
【００８７】
続いて、ＲＡＭディスク管理モジュール２１０は、データを削除する場合と、データを削除しない場合とに分けて次の処理を行う。なお、データを削除するかどうかについては、例えば他のＲＡＭディスク領域に十分な空き領域があるか、その時点で設定されている圧縮アルゴリズムよりも高圧縮率の圧縮アルゴリズムに変更可能かどうか、などにより判断する。変更可能であれば、データを削除せずに、他のＲＡＭディスク領域にデータを移動する。
【００８８】
先ずデータを削除する場合について説明する。データを削除する場合、ＲＡＭディスク管理モジュール２１０は、取得した長期滞留データの書き込み元のアプリ（一例としてアプリ２０３とする）に対し、ファイル名を通知して当該データの削除を要求する（Ｓ１０３）。要求を受けたアプリ２０３は当該データを削除し（Ｓ１０４）、自己のファイル管理情報１５１の当該データの設定を更新する（Ｓ１０５）。
【００８９】
一方、データを削除しない場合、ＲＡＭディスク管理モジュール２１０は、当該データの移動を行う（Ｓ１０６、Ｓ１０７）。具体的に、ＲＡＭディスク管理モジュール２１０は、圧縮ファイルシステム２０２に対し、ステップＳ１０２で取得した長期滞留データの移動を要求する（Ｓ１０６）。ＲＡＭディスク管理モジュール２１０は、移動後の新しいパスをＲＡＭディスク管理モジュール２１０へ通知する（Ｓ１０７）。この一連の処理において、圧縮ファイルシステム２０２は、伸張した長期滞留データを別のＲＡＭディスク領域の圧縮アルゴリズムで圧縮し、そのＲＡＭディスク領域に圧縮後のデータを書き込む。
【００９０】
そして、ＲＡＭディスク管理モジュール２１０が当該長期滞留データの書き込み元のアプリ２０３へ当該長期滞留データの新しいパスへの更新を指示することにより（Ｓ１０８）、アプリ２０３がファイル管理情報１５１の当該長期滞留データの設定を更新する（Ｓ１０９）。
【００９１】
なお、この例では、長期滞留データを削除する場合において、ＲＡＭディスク管理モジュール２１０からデータ削除の要求を受けるとアプリ２０３が当該データを削除する例を示した。しかし、アプリ２０３は当該データが削除可能であるかを判断してから当該データを削除してもよい。アプリ２０３が当該データを削除可能ではないと判断した場合には、それをＲＡＭディスク管理モジュール２１０に通知し、ＲＡＭディスク管理モジュール２１０が圧縮ファイルシステム２０２に当該データの書込みを指示し、圧縮ファイルシステム２０２から当該データとは異なる別の長期滞留データを取得する。
【００９２】
（変形例２の効果）
ＲＡＭディスクに長期滞在するデータが存在する場合、ＲＡＭディスクの容量を圧迫し、ＲＡＭディスクに書き込めるデータ量が制限される、ＲＡＭディスクは揮発性メモリのため、電源を消した時にＲＡＭディスク内のデータが消えてしまう。しかし、変形例２の構成であれば、長期滞在するデータが存在する際に、ＲＡＭディスク上のデータを消去することや別のＲＡＭディスク領域に移動することで、空き領域の少ないＲＡＭディスク領域に書き込むデータ量を増やすことができる。
【００９３】
（変形例３）
任意のＲＡＭディスクの圧縮アルゴリズムを動的に変更する手段を設けてもよい。ここでは、ＲＡＭディスクを異なる圧縮アルゴリズムで設定し直す（リマウントする）ことにより、同じＲＡＭディスク領域を複数の圧縮アルゴリズムで使い分ける構成について示す。一例として、ＲＡＭディスク領域を一つとし、複数のプロセスが同じＲＡＭディスク領域を使用する形態について示す。なお、実施の形態や他の変形例と同様の箇所については図示及び説明を適宜省略し、ここでは主に異なる部分について説明する。
【００９４】
本変形例３に係るＳＳＤ１３のソフトウェアの構成は、実施の形態に示したソフトウェアの構成（図２参照）において、さらにデータ情報１５０（図１１参照）を含む。また、実施の形態に示した設定情報１００（図４参照）やＲＡＭディスク作成プログラム１０１とは構成が異なる。具体的に、本変形例３に係る設定情報１００は、ＲＡＭディスク一つ分の設定のみを有する。例えば設定情報１００（図４参照）のＲＡＭディスク番号「１」の設定のみを有する。また、ＲＡＭディスク作成プログラム１０１は、ＲＡＭディスクの作成の他に、ＲＡＭディスクのリマウントを行うプログラムと、マウント情報とを含む。マウント情報は、ＲＡＭディスクのマウント状態を示す情報であり、ＲＡＭディスク作成プログラム１０１により使用される。
【００９５】
本変形例３に係る情報処理装置においても、実施の形態や、その他の変形例と同様に、作成部が設定情報１００の設定に基づいてＲＡＭディスクを作成する。本変形例３では、設定情報１００がＲＡＭディスク一つ分の設定のみを有するため、ＤＲＡＭ１２には一つのＲＡＭディスクが作成される。その作成された一つのＲＡＭディスクを対象に、後述するＲＡＭディスクリマウントモジュール（「設定変更手段」の一例）２０９（図２１参照）が、データの書込みの際、そのデータに対応する圧縮アルゴリズムでリマウントを行う。
【００９６】
図１７は、本変形例３に係るＤＲＡＭ１２のメモリマップの一例を示す図である。図１７に示すように、本変形例３ではＯＳ管理対象領域１２０に一つのＲＡＭディスク領域１２００が割り当てられることになる。
【００９７】
（マウント情報）
マウント情報は、初期化の際に設定されるＲＡＭディスク初期化情報と、リマウントの度に更新されるＲＡＭディスク更新情報とを有する。マウント情報は、「設定変更手段」の一部である。
【００９８】
図１８は、本変形例３に係るマウント情報の一例を示す図である。図１８に示すマウント情報１６０は、ＲＡＭディスク初期化情報１６１と、ＲＡＭディスク更新情報１６２とを有する。
【００９９】
ＲＡＭディスク初期化情報１６１には、ＲＡＭディスク作成時におけるＲＡＭディスクの圧縮アルゴリズムとパスとサイズの一セット分の情報が設定される。
【０１００】
ＲＡＭディスク更新情報１６２には、当該ＲＡＭディスクについて、リマウントされた圧縮アルゴリズムと、リマウントを要求した要求元のプロセス（プロセス名等）とが設定される。なお、ＲＡＭディスク更新情報１６２には、ＲＡＭディスクがリマウントされる度に最新の情報が上書きされる。
【０１０１】
図１９は、リマウントが繰り返された場合のＲＡＭディスクの状態遷移の一例を示す図である。図１９において、ＲＡＭディスク領域１２１は、図１９（ａ）、図１９（ｂ）、図１９（ｃ）の順で状態が遷移する。
【０１０２】
図１９（ａ）は、初期化時にＲＡＭディスク領域１２００が圧縮アルゴリズムＡでマウントされた場合の例である。図１９（ａ）には、圧縮アルゴリズムＡがマウントされた後にＲＡＭディスク領域１２００に圧縮アルゴリズムＡで圧縮されたデータｄ１が書き込まれた状態を表している。
【０１０３】
なお、初期化の際、マウント情報１６０（図１８参照）のＲＡＭディスク初期化情報１６１には、ＲＡＭディスクの圧縮アルゴリズム（この場合、圧縮アルゴリズムＡ）とパスとサイズの一セット分の情報が設定される。
【０１０４】
図１９（ｂ）は、図１９（ａ）と同じＲＡＭディスク領域１２００にアプリがデータｄ２を圧縮アルゴリズムＢで書き込んだ場合の例を示している。図１９（ｂ）に示すように、図１９（ａ）で圧縮アルゴリズムＡがマウントされていたＲＡＭディスク領域１２００が圧縮アルゴリズムＢにリマウントされる。そして、圧縮アルゴリズムＢにリマウントされた領域に、圧縮アルゴリズムＢで圧縮されたデータｄ２が書き込まれる。なお、リマウント前に書き込まれていたデータｄ１は圧縮アルゴリズムＡの状態を保持している。
【０１０５】
図１９（ｂ）に示す状態において、マウント情報１６０のＲＡＭディスク更新情報１６２は、リマウントを行った圧縮アルゴリズムＢと要求元のプロセスとを示す情報により更新されている。
【０１０６】
図１９（ｃ）は、図１９（ｂ）と同じＲＡＭディスク領域１２００にアプリがデータｄ３を圧縮アルゴリズムＣで書き込んだ場合の例を示している。図１９（ｃ）に示すように、図１９（ｂ）で圧縮アルゴリズムＢがマウントされていたＲＡＭディスク領域１２００が圧縮アルゴリズムＣにリマウントされる。そして、圧縮アルゴリズムＣでリマウントされた領域に、圧縮アルゴリズムＣで圧縮されたデータｄ３が書き込まれる。なお、リマウント前に書込まれていたデータｄ１は圧縮アルゴリズムＡの状態を保持し、データｄ２は圧縮アルゴリズムＢの状態を保持している。
【０１０７】
図１９（ｃ）に示す状態において、マウント情報１６０のＲＡＭディスク更新情報１６２は、リマウントを行った圧縮アルゴリズムＣと要求元のプロセスとを示す情報により更新されている。
【０１０８】
続いて、同じＲＡＭディスク領域を、異なる圧縮アルゴリズムのデータにより使い分けるためのリマウントの手順について説明する。各プロセスは、自ら生データの最適な圧縮方式を指定し、各自のデータの書込みの要求を行う。本変形例３では、先ず、ＲＡＭディスクリマウントモジュール２０９（図２１参照）が複数のプロセスからの異なる圧縮アルゴリズムでマウントする要求を受け取り、リマウントの処理を行う。なお、ＲＡＭディスクリマウントモジュール２０９は、複数のプロセスから要求を受けとることになるため、最初に占有権の取得を行う。
【０１０９】
図２０は、ＲＡＭディスクリマウントモジュール２０９（図２１参照）が行うリマウントの手順の一例を示すフロー図である。
【０１１０】
ＲＡＭディスクリマウントモジュール２０９は、最初に占有権の取得を行い、処理対象のプロセスの一つから要求を受ける（Ｓ６１）。なお、他のプロセスは、占有権が取得されている間は、その占有権が開放されるまで、待機する。
【０１１１】
ＲＡＭディスクリマウントモジュール２０９は、占有権を取得すると、先ずマウント情報１６０を参照する（Ｓ６２）。
【０１１２】
続いて、ＲＡＭディスクリマウントモジュール２０９は、プロセスからのデータの書込みなどの要求に基づき、ＲＡＭディスクのリマウント処理が必要かを判断する（Ｓ６３）。具体的に、ＲＡＭディスクリマウントモジュール２０９は、プロセスから受け取った圧縮アルゴリズムがＲＡＭディスク更新情報１６２の最新の圧縮アルゴリズムに一致するかを判定し、圧縮アルゴリズムが一致しない場合にリマウント処理が必要と判断する。
【０１１３】
圧縮アルゴリズムが一致する場合（Ｓ６３：Ｙｅｓ）、ＲＡＭディスクリマウントモジュール２０９は、ステップＳ６４、Ｓ６５のリマウント処理を行わずに、プロセスが要求した圧縮アルゴリズムで圧縮されたデータをＲＡＭディスク領域に書込み、占有権を開放する（Ｓ６６）。
【０１１４】
圧縮アルゴリズムが一致しない場合（Ｓ６３：Ｎｏ）、ＲＡＭディスクリマウントモジュール２０９は、ステップＳ６４、Ｓ６５のリマウント処理を行う。それから、ＲＡＭディスクリマウントモジュール２０９は、プロセスが要求した圧縮アルゴリズムで圧縮されたデータをＲＡＭディスク領域に書込み、占有権を開放する（Ｓ６６）。
【０１１５】
なお、リマウント処理において、ＲＡＭディスクリマウントモジュール２０９は、ＲＡＭディスクのマウントポイントに当該ＲＡＭディスクをリマウントする（Ｓ６４）。更に、ＲＡＭディスクリマウントモジュール２０９は、この操作の際に、圧縮ファイルシステム２０２の属性情報３００にパスと圧縮方式とを設定する。
【０１１６】
また、リマウント処理において、ＲＡＭディスクリマウントモジュール２０９は、マウント情報１６０のＲＡＭディスク更新情報１６２を、リマウントした圧縮アルゴリズムと、そのリマウントを要求した要求元のプロセスの情報とにより更新する。
【０１１７】
図２１は、圧縮アルゴリズムが異なる設定の一時ファイルをアプリ２０３が同じＲＡＭディスク領域１２００に書き込む手順の一例を示すシーケンス図である。
【０１１８】
最初にアプリ２０３は、生データから書込みたいデータの性質を判別する（Ｓ７１）。
【０１１９】
続いてアプリ２０３は、データ情報１５０を参照し、データの性質に対応する圧縮アルゴリズムを取得する（Ｓ７２、Ｓ７３）。
【０１２０】
続いてアプリ２０３は、ＲＡＭディスクリマウントモジュール２０９に占有権の取得を要求する（Ｓ７４）。これによりＲＡＭディスクリマウントモジュール２０９は、そのアプリ２０３の占有権を取得する。他のアプリが占有権を取得している場合は、他のアプリの占有権を開放するまで、新たなアプリの占有権は取得しない。
【０１２１】
ＲＡＭディスクリマウントモジュール２０９は、マウント情報を参照し（Ｓ７５）、圧縮アルゴリズムを比較する（Ｓ７６）。具体的に、ＲＡＭディスクリマウントモジュール２０９は、アプリ２０３から受け取った圧縮アルゴリズムとマウント情報１６０の最新の圧縮アルゴリズムとを比較し、一致するかを判定する。
【０１２２】
圧縮アルゴリズムが一致しない場合、ＲＡＭディスクリマウントモジュール２０９は、マウント情報１６０のＲＡＭディスク更新情報１６２を更新し（Ｓ７７）、デバイスドライバ２０１にリマウント操作を行う（Ｓ７８）。
【０１２３】
圧縮アルゴリズムが一致する場合は、ステップＳ７７、Ｓ７８をとばす。
【０１２４】
続いて、アプリ２０３が、ＲＡＭディスクリマウントモジュール２０９からの応答に基づき、圧縮ファイルシステムにデータの書込みを要求する（Ｓ７９）。
【０１２５】
圧縮ファイルシステムは、データを受け取ると、データ圧縮を行って（Ｓ８０）、デバイスドライバ２０１に書込みを要求する（Ｓ８１、Ｓ８２）。
【０１２６】
アプリ２０３は、データの書込みの要求に対する応答があると（Ｓ８３）、ＲＡＭディスクリマウントモジュール２０９の占有権を開放する（Ｓ８４）。
【０１２７】
書込んだ一時ファイルのデータをアプリ２０３で読込む手順は、図１４において、ステップＳ５１を省略した手順に相当する。本変形例３では、ＲＡＭディスク領域を一つだけ設けているためパスは所定の一つである。このため、ステップＳ５１を省略することができる。
【０１２８】
なお、本変形例３では、ＲＡＭディスク領域を１つに設定したが、ＲＡＭディスク領域を複数設定し、各ＲＡＭディスク領域においてリマウント処理を行うようにしてもよい。
【０１２９】
（変形例３の効果）
本変形例３では、ＲＡＭディスクを異なる圧縮アルゴリズムでリマウントすることにより、同じＲＡＭディスク領域を複数の圧縮アルゴリズムで使い分けることができる。従って、ＲＡＭディスク領域を圧縮アルゴリズムごとに複数に分ける必要がなく、ＲＡＭディスク領域を効率よく使用することができる。
【０１３０】
（変形例４）
長期に滞留しているデータを圧縮率の高い圧縮アルゴリズムに切り替えるようにしてもよい。本変形例４では、一例として一つのＲＡＭディスク領域に対し変形例３に示すようなリマウントを行って長期滞留データをより圧縮率の高い圧縮アルゴリズムに切り替えていく例について示す。なお、実施の形態や他の変形例と同様の箇所については図示及び説明を適宜省略し、ここでは主に異なる部分について説明する。
【０１３１】
本変形例４に係るＳＳＤ１３のソフトウェアの構成は、ソフトウェアの構成（図２参照）において、データ情報１５０（図２２参照）とＲＡＭディスク管理プログラム１７１とを含む。また、ＲＡＭディスク作成プログラム１０１の構成が異なる。
【０１３２】
データ情報１５０は、データの種別と圧縮アルゴリズムとを対応付けた情報である。本変形例４に係る構成では、変形例１に示した構成（図１１参照）において、さらに優先順位の異なる複数の圧縮アルゴリズムを設定できるようになっている。データ情報１５０の構成例については図２２を用いて後述する。
【０１３３】
ＲＡＭディスク管理プログラム１７１は、ＲＡＭディスクを管理する機能をカーネルに追加するモジュール型のプログラムである。ＲＡＭディスク作成プログラム１０１は、ＲＡＭディスクの作成の他に、ＲＡＭディスクのリマウントを行うプログラムと、マウント情報とを含む。各プログラムに基づく情報処理装置全体の動作は図２４を用いて後述する。マウント情報の構成については、変形例３で説明済みであるため、ここでの詳しい説明は省略する。
【０１３４】
本変形例４は、主に、データ情報１５０のデータ構成や、長期滞留データをリマウントにより高圧縮する際の情報処理装置全体の動作などが、実施の形態や他の変形例と異なる。以下では、データ情報５０のデータ構成や、長期滞留データをリマウントにより高圧縮する際の情報処理装置全体の動作について詳しく説明する。
【０１３５】
（データ情報）
図２２は、本変形例４に係るデータ情報１５０のデータ構成の一例を示す図である。図２２に示すように、データ情報１５０には、データの種別ｔ１５１と第１の圧縮アルゴリズムｔ１５２−１と第２の圧縮アルゴリズムｔ１５２−２とが対応付けられている。データの種別ｔ１５１は変形例１と同様に、データの性質を示す情報が設定されている。第１の圧縮アルゴリズムｔ１５２−１には、データの種別ｔ１５１に適した圧縮アルゴリズムが第１の優先順位の圧縮アルゴリズムとして設定されている。第２の圧縮アルゴリズムｔ１５２−２には、設定できる中でより高い圧縮アルゴリズムが第二の圧縮アルゴリズムとして設定されている。第二の圧縮アルゴリズムは、ＲＡＭディスクの空き容量が少なくなった場合に適用される。なお、ＣＰＵ負荷率などを考慮しない場合であれば、設定できる中で最も高い圧縮アルゴリズムを第二の圧縮アルゴリズムとして設定してよい。
【０１３６】
ここでは、第１の圧縮アルゴリズムｔ１５２−１にデータの種別に応じた圧縮アルゴリズムの設定例を示している。第２の圧縮アルゴリズムｔ１５２−２には全ての種別に共通するより高圧縮の圧縮アルゴリズム、一例として第１の圧縮アルゴリズムの中でより高圧縮の圧縮アルゴリズムＡの設定例を示している。
【０１３７】
（ＲＡＭディスクの状態遷移）
図２３は、ＲＡＭディスクが異なる圧縮アルゴリズムでマウントされる度に遷移するマウントの状態の一例を示す図である。図２３（ａ）、図２３（ｂ）、図２３（ｃ）に示す各状態は、図１９の図１９（ａ）、図１９（ｂ）、図１９（ｃ）に示す各状態に一致し、図２３（ｄ）に示す状態は、本変形例４で新たに追加した、長期滞留データの圧縮アルゴリズムの変更を示している。
【０１３８】
図２３（ａ）には、圧縮アルゴリズムＡがマウントされた後にＲＡＭディスク領域１２００に圧縮アルゴリズムＡで圧縮されたデータｄ１が書き込まれた状態を表している。
【０１３９】
図２３（ｂ）には、図２３（ａ）と同じＲＡＭディスク領域１２００にアプリがデータｄ２を圧縮アルゴリズムＢで書き込んだ場合の状態を示している。
【０１４０】
図２３（ｃ）には、図２３（ｂ）と同じＲＡＭディスク領域１２００にアプリがデータｄ３を圧縮アルゴリズムＣで書き込んだ場合の状態を示している。
【０１４１】
このようにＲＡＭディスク領域１２００にはデータｄ１、ｄ２、ｄ３が順次書き込まれる。ＲＡＭディスク管理モジュール２１０が、データｄ１とデータｄ２を長期滞留データとして判断したとする。その場合、各長期滞留データが伸張され、最も圧縮率の高いアルゴリズム（この例では圧縮アルゴリズムＡ）でＲＡＭディスクがリマウントされて、その領域に、圧縮アルゴリズムＡで圧縮し直された長期滞留データが書き込まれる。
【０１４２】
図２３（ｄ）には、図２３（ｃ）と同じＲＡＭディスク領域１２００に、ＲＡＭディスク管理モジュール２１０が長期滞留データとして判断したデータｄ１とデータｄ２を圧縮アルゴリズムＡで書込み直したときの状態を示している。図２３（ｃ）と図２３（ｄ）とが示すように、圧縮アルゴリズムＣでマウントされたＲＡＭディスク領域が圧縮アルゴリズムＡにリマウントされ、データｄ１とデータｄ２が圧縮アルゴリズムＡで書き込み直される。なお、データｄ１、ｄ２は、その後に別の圧縮アルゴリズムでリマウントされた後においても常に状態を保持する。
【０１４３】
また、ＲＡＭディスク更新情報１６２（図１８参照）は、最後にリマウントを行った圧縮アルゴリズムＡと要求元のプロセスとを示す情報に更新される。
【０１４４】
（長期滞留データをリマウントにより高圧縮する際の情報処理装置全体の動作）
図２４は、長期滞留データをリマウントにより高圧縮する際の情報処理装置全体の動作の一例を示すシーケンス図である。
【０１４５】
最初に、ＲＡＭディスク管理モジュール２１０は、一定間隔でデバイスドライバ２０１にＲＡＭディスク領域１２００の空き容量を確認する（Ｓ１５１）。
【０１４６】
ステップＳ１５１の確認により、ＲＡＭディスク領域１２００の空き容量が一定値より少ないと判定されたとする。その場合、ＲＡＭディスク管理モジュール２１０は、ＲＡＭディスクリマウントモジュール２０９に占有権の取得を要求する（Ｓ１５２）。そして、ＲＡＭディスク管理モジュール２１０は、占有権が取得できると、ＲＡＭディスク領域１２００内に長期滞留データがないかをチェックし、圧縮ファイルシステム２０２からデータ情報（長期滞留データ）を取得する（Ｓ１５３）。
【０１４７】
続いて、ＲＡＭディスク管理モジュール２１０は、データを削除する場合と、データを削除しない場合とに分けて次の処理を行う。なお、データを削除するかどうかについては、例えば、その時点で設定されている圧縮アルゴリズムよりも高圧縮率の圧縮アルゴリズムに変更可能かどうか、などにより判断する。
【０１４８】
先ずデータを削除する場合について説明する。データを削除する場合、ＲＡＭディスク管理モジュール２１０は、取得した長期滞留データの書き込み元のアプリ（一例としてアプリ２０３とする）に対し、ファイル名を通知して当該データの削除を要求する（Ｓ１５４）。要求を受けたアプリ２０３は当該データを削除する（Ｓ１５５）。
【０１４９】
一方、データを削除することができない場合、ＲＡＭディスク管理モジュール２１０は、データ情報１５０からデータ情報を取得する（Ｓ１５６、Ｓ１５７）。そして、ＲＡＭディスク管理モジュール２１０は、当該長期滞留データが圧縮アルゴリズム（１）で圧縮されている場合、ＲＡＭディスクリマウントモジュール２０９に圧縮アルゴリズム（２）への変更を要求する（Ｓ１５８）。この要求により、ＲＡＭディスクリマウントモジュール２０９は、ＲＡＭディスクを圧縮アルゴリズム（１）でリマウントして当該長期滞留データを取得し、さらにＲＡＭディスクを圧縮アルゴリズム（２）でリマウントして当該長期滞留データを書き込む。
【０１５０】
その後、この実施により圧縮アルゴリズム（２）の圧縮データが書き込まれると、ＲＡＭディスク管理モジュール２１０は、ＲＡＭディスクリマウントモジュール２０９の占有権を開放する（Ｓ１５９）。
【０１５１】
（変形例４の効果）
ＲＡＭディスクに長期滞在するデータが存在する場合、ＲＡＭディスクの容量を圧迫し、ＲＡＭディスクに書き込めるデータ量が制限される、ＲＡＭディスクは揮発性メモリのため、電源を消した時にＲＡＭディスク内のデータが消えてしまう。
【０１５２】
しかし、変形例４の構成であれば、長期滞在するデータが存在する際に、現在設定されている圧縮アルゴリズムからより高い圧縮アルゴリズムへの変更、またはＲＡＭディスク上のデータを消去することで、ＲＡＭディスクに書き込むデータ量を増やすことができる。
【０１５３】
（変形例５）
ネットワーク接続が可能で、ネットワークストレージを有する情報処理装置において、ＲＡＭディスクに保存したデータをネットワークストレージに保存して永続化するように変形してもよい。以下では、ＲＡＭディスク内に存在するデータを外部ストレージ（ネットワークストレージや二次記憶装置など）へ保存する場合の態様について示す。
【０１５４】
図２５は、変形例５に係るハードウェア構成の一例を示す図である。図２５には、一例として、ＣＰＵ１１、ＤＲＡＭ（ＲＡＭディスク）１２、ＳＳＤ１３、外部ストレージ１５がバス１４を介して接続されている構成を示している。ここで、外部ストレージ１５は、ネットワークストレージ又は二次記憶装置である。二次記憶装置は、ＳＤ（登録商標）カードやＵＳＢ（Universal  Serial  Bus）メディアなどである。ＣＰＵ１１は、外部ストレージ１５がネットワークストレージである場合、ネットワーク通信インタフェースを介してネットワーク上の外部ストレージと通信接続する。
【０１５５】
図２６は、ＲＡＭディスク１２内に存在するデータを外部ストレージ１５へ保存するための手順の一例を示すシーケンス図である。
【０１５６】
最初、ＲＡＭディスク管理モジュール２１０は、圧縮ファイルシステム２０２にＲＡＭディスクのデータ情報の取得を要求する（Ｓ２０１）。データ情報は、ＲＡＭディスク内の一部の所定のデータでもよいし、全てのデータでもよい。
【０１５７】
続いて、ＲＡＭディスクのデータを取得するシーケンスを行う（Ｓ２０２）。ＲＡＭディスクのデータを取得するシーケンスは、他の変形例において説明したデータ取得のシーケンスを行う。このシーケンスの詳細については他の変形例などに一例を示しているため、ここでの詳しいシーケンスの図示および説明は省略する。
【０１５８】
ステップＳ２０２に続き、ＲＡＭディスク管理モジュール２１０は、圧縮ファイルシステム２０２に対し、取得したデータの外部ストレージ１５への保存を要求する（Ｓ２０３）。この要求により、圧縮ファイルシステム２０２が外部ストレージ１５にデータの保存を行う（Ｓ２０５）。
【０１５９】
（変形例５の効果）
ＲＡＭディスク内のデータを外部ストレージに保存することで、情報処理装置の電源を切った後でもデータを永続化することができる。このため、情報処理装置を再び起動した後も、ＲＡＭディスク内のデータを復元することが図れる。また、ＲＡＭディスク内の一部のデータを外部ストレージへ移動した場合には、ＲＡＭディスク内の空き領域が増えるため、書き込むデータ量を増やすことができる。
【０１６０】
実施の形態及び各変形例の各装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１６１】
また、実施の形態及び各変形例の各装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、実施の形態及び各変形例の各装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１６２】
また、実施の形態及び各変形例のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【符号の説明】
【０１６３】
１００          設定情報
１０２          圧縮ファイルシステムプログラム
１０３、１０４  アプリケーションプログラム
【先行技術文献】
【特許文献】
【０１６４】
【特許文献１】特開平５−１２０１３１号公報
【図１】
2019061654.tif 000003
【図２】
2019061654.tif 000004
【図３】
2019061654.tif 000005
【図４】
2019061654.tif 000006
【図５】
2019061654.tif 000007
【図６】
2019061654.tif 000008
【図７】
2019061654.tif 000009
【図８】
2019061654.tif 000010
【図９】
2019061654.tif 000011
【図１０】
2019061654.tif 000012
【図１１】
2019061654.tif 000013
【図１２】
2019061654.tif 000014
【図１３】
2019061654.tif 000015
【図１４】
2019061654.tif 000016
【図１５】
2019061654.tif 000017
【図１６】
2019061654.tif 000018
【図１７】
2019061654.tif 000019
【図１８】
2019061654.tif 000020
【図１９】
2019061654.tif 000021
【図２０】
2019061654.tif 000022
【図２１】
2019061654.tif 000023
【図２２】
2019061654.tif 000024
【図２３】
2019061654.tif 000025
【図２４】
2019061654.tif 000026
【図２５】
2019061654.tif 000027
【図２６】
2019061654.tif 000028