(57)【要約】【課題】  読み出し専用メモリ上のプログラムを仮想記憶機能を用いて実行するために必要な随時書き込み読み出しメモリの容量を削減できる情報処理装置及びファイル管理方法を提供することを目的とする。【解決手段】  プログラムの実行に仮想記憶機能を用いる情報処理装置であって、読み出し専用メモリ３上のファイル３１を管理するファイル管理機能と、ファイルに含まれるプログラムの読み出し専用メモリ３上の物理アドレスとプログラムの仮想アドレスとを対応付けたテーブルを生成するテーブル生成機能と、プログラムを実行するときに、プログラムの仮想アドレスに対応する読み出し専用メモリ３上の物理アドレスをテーブルから取得して、プログラムを読み出し専用メモリ３上で実行するプログラム実行機能とを有することにより上記課題を解決する。【選択図】  図３
2005078419.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行に仮想記憶機能を用いる情報処理装置であって、
読み出し専用メモリ上のファイルを管理するファイル管理機能と、
前記ファイルに含まれるプログラムの読み出し専用メモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成するテーブル生成機能と、
前記プログラムを実行するときに、前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスを前記テーブルから取得して、前記プログラムを読み出し専用メモリ上で実行するプログラム実行機能と
を有することを特徴とする情報処理装置。
【請求項２】
前記テーブル生成機能は、前記ファイルに含まれる一のプログラムのうち、書き換えの可能性のある部分を随時書き込み読み出しメモリに複写して、前記書き換えの可能性のある部分の随時書き込み読み出しメモリ上の物理アドレスと前記書き換えの可能性のある部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記テーブル生成機能は、前記ファイルに含まれる一のプログラムのうち、書き換えの可能性のない部分の読み出し専用メモリ上の物理アドレスと前記書き換えの可能性のない部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記ファイルに含まれる一のプログラムのうち、前記書き換えの可能性のある部分は、ファイルのデータ領域であり、前記書き換えの可能性のない部分は、ファイルのコード領域であることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記テーブル生成機能は、前記ファイルに含まれる一のプログラムのうち、書き換え指示のあった部分をページ単位で随時書き込み読み出しメモリに複写して、前記書き換え指示のあった部分の随時書き込み読み出しメモリ上の物理アドレスと前記書き換えの指示のあった部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記テーブル生成機能は、前記ファイルに含まれる一のプログラムのうち、書き換え指示のない部分の読み出し専用メモリ上の物理アドレスと前記書き換え指示のない部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記テーブル生成機能は、前記プログラムを実行するときに発生したページ例外に基づき、前記プログラムが、読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているか否かを判定し、前記読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているときに、前記テーブルを作成することを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記プログラムが、読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているか否かの判定は、オペレーティングシステムの有するｖｎｏｄｅにより行われることを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記テーブル生成機能は、前記プログラムが、前記随時書き込み読み出しメモリ上のファイルを管理するファイル管理機能により管理されているときに、前記ファイルに含まれるプログラムの随時書き込み読み出しメモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項７記載の情報処理装置。
【請求項１０】
前記プログラム実行機能は、前記プログラムを実行するとき、前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスが前記テーブルに登録されていなければ、ページ例外を発生することを特徴とする請求項７記載の情報処理装置。
【請求項１１】
画像形成処理で使用されるハードウェア資源と、前記ハードウェア資源を用いて画像形成に係る処理を行う１つ以上のプログラムとを有することを特徴とする請求項１乃至１０何れか一項記載の情報処理装置。
【請求項１２】
プログラムの実行に仮想記憶機能を用いる情報処理装置のファイル管理方法であって、
読み出し専用メモリ上のファイルに含まれるプログラムの読み出し専用メモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成するテーブル生成段階と、
前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスを前記テーブルから取得して、前記プログラムを読み出し専用メモリ上で実行するプログラム実行段階と
を有することを特徴とするファイル管理方法。
【請求項１３】
前記テーブル生成段階は、前記ファイルに含まれる一のプログラムのうち、書き換えの可能性のある部分を随時書き込み読み出しメモリに複写して、前記書き換えの可能性のある部分の随時書き込み読み出しメモリ上の物理アドレスと前記書き換えの可能性のある部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１２記載のファイル管理方法。
【請求項１４】
前記テーブル生成段階は、前記ファイルに含まれる一のプログラムのうち、書き換えの可能性のない部分の読み出し専用メモリ上の物理アドレスと前記書き換えの可能性のない部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１３記載のファイル管理方法。
【請求項１５】
前記ファイルに含まれる一のプログラムのうち、前記書き換えの可能性のある部分は、ファイルのデータ領域であり、前記書き換えの可能性のない部分は、ファイルのコード領域であることを特徴とする請求項１４記載のファイル管理方法。
【請求項１６】
前記テーブル生成段階は、前記ファイルに含まれる一のプログラムのうち、書き換え指示のあった部分をページ単位で随時書き込み読み出しメモリに複写して、前記書き換え指示のあった部分の随時書き込み読み出しメモリ上の物理アドレスと前記書き換えの指示のあった部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１２記載のファイル管理方法。
【請求項１７】
前記テーブル生成段階は、前記ファイルに含まれる一のプログラムのうち、書き換え指示のない部分の読み出し専用メモリ上の物理アドレスと前記書き換え指示のない部分の仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１６記載のファイル管理方法。
【請求項１８】
前記テーブル生成段階は、前記プログラムを実行するときに発生したページ例外に基づき、前記プログラムが、読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているか否かを判定し、前記読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているときに、前記テーブルを作成することを特徴とする請求項１２記載のファイル管理方法。
【請求項１９】
前記プログラムが、読み出し専用メモリ上のファイルを管理するファイル管理機能により管理されているか否かの判定は、オペレーティングシステムの有するｖｎｏｄｅにより行われることを特徴とする請求項１８記載のファイル管理方法。
【請求項２０】
前記テーブル生成段階は、前記プログラムが、前記随時書き込み読み出しメモリ上のファイルを管理するファイル管理機能により管理されているときに、前記ファイルに含まれるプログラムの随時書き込み読み出しメモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成することを特徴とする請求項１８記載のファイル管理方法。
【請求項２１】
前記プログラム実行段階は、前記プログラムを実行するとき、前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスが前記テーブルに登録されていなければ、ページ例外を発生することを特徴とする請求項１８記載のファイル管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びファイル管理方法に係り、特に仮想記憶機能を用いる情報処理装置及びその情報処理装置で利用するファイル管理方法に関する。
【背景技術】
【０００２】
例えばパソコン等の情報処理装置では、プログラムやデータを格納するためにファイルという単位を用いる。また、情報処理装置ではファイルをディレクトリと呼ばれる場所に格納して管理している。なお、ファイルを格納するディレクトリは、ファイルと同じ扱いを受ける。したがって、ファイルとディレクトリとは再起的なツリー構造（階層構造）となる。図１４（１）〜（３）のようなツリー構造のファイルの格納場所は、ファイルシステムと呼ばれる。
【０００３】
通常、ファイルシステムはハードディスク装置（以下、ＨＤＤという）等の外部記憶装置に格納されている。一台の外部記憶装置の容量には限界があるため、情報処理装置ではファイルシステム内のディレクトリに、他のファイルシステムを接続する機能を提供している。このような接続処理は、マウントと呼ばれる。また、他のファイルシステムを接続する接続先のディレクトリは、マウントポイントと呼ばれる。情報処理装置ではマウントを繰り返すことにより、ツリー構造を保持したまま図１４（１）〜（３）のファイルシステムを図１５のように拡張することができる。
【０００４】
ファイルシステムを利用する情報処理装置は、ファイルシステムのツリー構造の起点として一つのファイルシステムが予め設定されている。ツリー構造の起点として設定されているファイルシステムは、特にルートファイルシステムと呼ばれている。
【０００５】
ファイルシステムを構築する際に、複数のファイルシステムをマウントする場合、情報処理装置は起動処理の途中で各ファイルシステムをマウントするマウントポイントを指定する必要がある。起動処理の途中でユーザがマウントポイントを手入力で指定することは現実的でないため、情報処理装置は、予め用意されているファイルシステムとそのファイルシステムのマウントポイントとを記述した定義ファイルをルートファイルシステムに格納している。
【０００６】
情報処理装置は、起動処理の途中で定義ファイルをルートファイルシステムから読み出し、その定義ファイルに記述されているファイルシステムとそのファイルシステムのマウントポイントとの関係に基づき、マウントポイントにファイルシステムをマウントすることで図１５のようにファイルシステム全体を構築している。
【０００７】
ところで、ファイルシステムを格納する外部記憶装置として一般的に使用されているＨＤＤは、衝撃に弱い，消費電力が多い，外形寸法が大きい，寿命もそれほど長くない等の欠点があり、組込み型の情報処理装置での使用に不向きな特性を持っている。このようなＨＤＤの特性のため、組込み型の情報処理装置ではファイルシステムを読み出し専用メモリ（以下、ＲＯＭという）に格納していることが多い。
【０００８】
ファイルシステムをＨＤＤ等の外部記憶装置に格納する場合、中央処理装置（以下、ＣＰＵという）は外部記憶装置内のデータを直接には読み出し又は書き込みすることができない。そこで、ＣＰＵは外部記憶装置内のデータが随時書き込み読み出しメモリ（以下、ＲＡＭという）にコピーされたあと、ＲＡＭ上のデータを読み出し又は書き込みする。ＣＰＵにより書き込みがされたＲＡＭ上のデータは、外部記憶装置に書き戻される。また、外部記憶装置内のプログラムを実行する場合、少なくともＣＰＵがアクセスするデータは外部記憶装置でなくＲＡＭ上に無ければならない。
【０００９】
一方、ファイルシステムをＲＯＭに格納する場合、従来の情報処理装置ではファイルシステムをＨＤＤ等の外部記憶装置に格納した場合に用いられている操作インターフェースとの互換性を重視して、ＲＯＭ上のデータをＲＡＭにコピーしてから実行することが多かった。
【００１０】
また、パソコン等の情報処理装置では、マルチプロセスを実現するオペレーティングシステム（以下、ＯＳという）が、例えば仮想記憶機能を用いてアドレス管理を行い、各プロセスごとに別の仮想アドレス空間を提供する。仮想記憶機能では、他のプロセスのアクセスからメモリを保護するためにページングの手法を用いている。ページングとは、プロセスに提供した仮想アドレス空間と物理メモリのある物理メモリ空間とをプロセッサにより決められる所定サイズのページに区切り、仮想アドレス空間内のページと物理アドレス空間内のページとの対応関係を管理することで、仮想アドレスを物理アドレスに変換する手法をいう。
【００１１】
ページングの手法では、仮想アドレス空間のページと物理アドレス空間のページとの対応関係をページテーブルと呼ばれる変換表を用いて管理している。ページテーブルは、仮想アドレス空間を持つプロセスごとに必要となる。ページングの手法を用いる場合、全てのメモリアクセスに対して仮想アドレスを物理アドレスに変換するアドレス変換が必要となるため、実行速度の点からハードウェアによるサポートが必須であった。このアドレス変換は、プロセッサのメモリ管理部（以下、ＭＭＵという）により行われ、その対応がプロセッサごとに異なっている。
【００１２】
例えば一のプロセッサのＭＭＵでは、制御レジスタにページテーブルの物理アドレスをセットしておくことにより、メモリアクセスを行うときに自動的にメモリ上にあるページテーブルを検索して物理アドレスへの変換を行う。この場合、プロセスを切り替えるときに別のページテーブルの物理アドレスが制御レジスタにセットされる。
【００１３】
また、他のプロセッサのＭＭＵではページテーブルを自動的に検索することはなく、トランスレーション・ルックアサイド・バッファ（以下、ＴＬＢという）と呼ばれるプロセッサ内の変換テーブルのみを検索して物理アドレスへの変換を行う。この場合、メモリアクセスを行いたい仮想アドレス用のエントリがＴＬＢにないときにＴＬＢ例外エラーが発生し、このＴＬＢ例外エラーのハンドラによりソフトウェア的にページテーブルが検索される。そして、その検索結果に基づくエントリがＴＬＢに追加される。
【００１４】
さらに、デマンドページングと呼ばれる手法を用いるＭＭＵでは、プロセスの実行に必要なデータを含むページのみをファイルシステムから読み出して物理メモリに書き込んだあと、ページテーブルを書き換えることによって、物理メモリをプロセスの仮想アドレスにマップする。
【００１５】
特許文献１には、ファイルシステムをＲＯＭに格納した場合の技術内容が開示されている。また、特許文献２には、仮想記憶機能に関する技術内容が開示されている。
【特許文献１】特開２００２−２５９１９０号公報
【特許文献２】特開平７−１６０５８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
組込み型の情報処理装置では、ファイルシステムをＨＤＤ等の外部記憶装置でなくＲＯＭに格納していることが多い。図１６に示すように、ＣＰＵはＲＡＭの場合と同様、ＲＯＭの物理アドレス空間を確認できるので、ＲＯＭ上のプログラムを直接実行することもできる。しかしながら、従来の情報処理装置ではファイルシステムをＲＯＭに格納する場合であっても、ファイルシステムを外部記憶装置に格納した場合に用いられている操作インターフェースとの互換性を重視して、ＲＯＭ上のプログラムをＲＡＭにコピーしてから実行することが多かった。
【００１７】
したがって、従来の情報処理装置ではファイルシステムをＲＯＭに格納している場合であってもＲＯＭ上のプログラムをＲＡＭ上にコピーしてから実行するため、ＲＯＭ上のプログラムを直接実行する場合と比べて、プログラムのサイズだけ余分にＲＡＭの容量が必要であった。この結果、従来の情報処理装置ではファイルシステムをＲＯＭに格納している場合であってもＲＡＭの容量を削減することができないという問題があった。
【００１８】
本発明は、上記の点に鑑みなされたもので、読み出し専用メモリ上のプログラムを仮想記憶機能を用いて実行するために必要な随時書き込み読み出しメモリの容量を削減できる情報処理装置及びファイル管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
そこで、上記課題を解決するため、本発明は、プログラムの実行に仮想記憶機能を用いる情報処理装置であって、読み出し専用メモリ上のファイルを管理するファイル管理機能と、前記ファイルに含まれるプログラムの読み出し専用メモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成するテーブル生成機能と、前記プログラムを実行するときに、前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスを前記テーブルから取得して、前記プログラムを読み出し専用メモリ上で実行するプログラム実行機能とを有することを特徴とする。
【００２０】
また、本発明は、プログラムの実行に仮想記憶機能を用いる情報処理装置のファイル管理方法であって、読み出し専用メモリ上のファイルに含まれるプログラムの読み出し専用メモリ上の物理アドレスと前記プログラムの仮想アドレスとを対応付けたテーブルを生成するテーブル生成段階と、前記プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスを前記テーブルから取得して、前記プログラムを読み出し専用メモリ上で実行するプログラム実行段階とを有することを特徴とする。
【００２１】
本発明では、プログラムの読み出し専用メモリ上の物理アドレスとプログラムの仮想アドレスとを対応付けたテーブルを生成し、プログラムの仮想アドレスに対応する読み出し専用メモリ上の物理アドレスをテーブルから取得して、プログラムを読み出し専用メモリ上で実行することにより、外部記憶装置に格納したプログラムを実行する場合の操作インターフェースとの互換性を保ったまま、読み出し専用メモリから随時書き込み読み出しメモリに複写されるプログラムのサイズを減少させることができる。この結果、随時書き込み読み出しメモリの容量を削減できる。
【発明の効果】
【００２２】
本発明によれば、読み出し専用メモリ上のプログラムを仮想記憶機能を用いて実行するために必要な随時書き込み読み出しメモリの容量を削減できる。
【発明を実施するための最良の形態】
【００２３】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。
【００２４】
図１は、本発明の情報処理装置の一例のハードウェア構成図である。図１の情報処理装置は、ＣＰＵ１，ＲＡＭ２，ＲＯＭ３，ＨＤＤ４が、バス５を介して接続されている。なお、図１の情報処理装置は最低限必要と思われる構成を表しているが、キーボードやマウス等の入力装置やディスプレイ等の表示装置を含む構成であってもよい。また、バス５は単純なバスであってもよいし、バスブリッジを介した構成のバスであってもよい。
【００２５】
図２は、ＨＤＤをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する一例の図である。ＨＤＤ４には、ファイルシステム（以下、ＨＤＤファイルシステムという）が格納されている。ＨＤＤファイルシステム上のファイル１５をプログラムとして起動すると、そのプログラムを実行する環境（以下、プロセスという）が作成される。プロセスには、プロセス毎に異なる仮想アドレス空間１０が割り当てられる。
【００２６】
仮想アドレス空間１０の指定アドレスには、プログラムのコード領域１１，データ領域１２，初期化データ領域１３及びスタック領域１４が仮想的にマップされる。仮想的なマップとは、実際に物理メモリを割り当てるのではなく、仮想アドレス空間の仮想アドレスにＣＰＵ１がアクセスした時点で、実際のデータを保持する物理メモリを割り当てるように設定することを言う。
【００２７】
なお、コード領域１１はプログラムの実行コードが格納される領域である。データ領域１２は、初期値を持ったデータが格納される領域である。初期化データ領域１３は、０に初期化されているデータが格納される領域である。スタック領域１４は、プログラムの実行時にスタックとして使用される領域である。
【００２８】
仮想アドレス空間１０にコード領域１１が仮想的にマップされている状態でＣＰＵ１がコード領域１１をアクセスすると、ページ例外が発生し、ページ例外ハンドラが起動される。ページ例外ハンドラは、アクセスされた仮想アドレスに対応するプログラムのコードをページ単位でＨＤＤファイルシステム上のコード領域１７から読み出して、別に確保したＲＡＭ２上のコード領域１９に書き込む。
【００２９】
更に、ページ例外ハンドラはＲＡＭ２の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応をページテーブルにセットし、ページ例外処理を終了する。ページ例外処理が成された後、ＣＰＵ１は実行を再開し、コード領域１１をアクセスすることで、アクセスされた仮想アドレスに対応する物理アドレスからプログラムのコードを読み出し、そのコードを実行する。
【００３０】
なお、初期化データ領域１３及びスタック領域１４には、ＲＡＭ２が仮想的にマップされている。この初期化データ領域１３及びスタック領域１４へのＣＰＵ１のアクセスがあると、ページ例外ハンドラによりページ単位でＲＡＭ２が割り当てられる。
【００３１】
図２はＨＤＤ４をファイルシステムの格納場所として使用した場合の例であるが、ファイルシステムの格納場所としてＲＯＭ３を使用すると、ＲＡＭ２に書き込むことなくＲＯＭ３の物理アドレスからプログラムのコードを読み出すことができる。そこで、本発明ではページ例外ハンドラの処理を後述するように変更することで、ＨＤＤファイルシステム上のプログラムを実行する場合の操作インターフェースとの互換性を保ったまま、ＲＯＭ３上のプログラムを実行する。
【００３２】
図３は、ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第１実施例の図である。ＲＯＭ３には、ファイルシステム（以下、ＲＯＭファイルシステムという）が格納されている。ＲＯＭファイルシステム上のファイル３１をプログラムとして起動すると、そのプログラム用のプロセスが作成される。プロセスには、プロセス毎に異なる仮想アドレス空間１０が割り当てられる。
【００３３】
仮想アドレス空間１０の指定アドレスには、図２の場合と同様に、プログラムのコード領域１１，データ領域１２，初期化データ領域１３及びスタック領域１４が仮想的にマップされる。なお、コード領域１１には、ＲＯＭファイルシステム上のコード領域３３が仮想的にマップされる。データ領域１２には、ＲＯＭファイルシステム上のデータ領域３４が仮想的にマップされる。
【００３４】
仮想アドレス空間１０にコード領域１１が仮想的にマップされている状態でＣＰＵ１がコード領域１１にアクセスすると、ページ例外が発生し、ページ例外ハンドラが起動される。ページ例外ハンドラは、ＲＯＭファイルシステム上のコード領域３３のうち、ＣＰＵ１によりアクセスされた仮想アドレスに対応する部分の物理アドレスを求める。
【００３５】
更に、ページ例外ハンドラはＲＯＭ３の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応をページテーブルにセットし、ページ例外処理を終了する。ページ例外処理が成された後、ＣＰＵ１は処理を再開し、コード領域１１をアクセスすることで、アクセスされた仮想アドレスに対応するＲＯＭ３上の物理アドレスからプログラムのコードを読み出し、そのコードを実行する。
【００３６】
なお、ＣＰＵ１がデータ領域１２にアクセスした場合は、コード領域１１にアクセスした場合と同様、ページ例外ハンドラによりページテーブルの内容が変更され、アクセスされた仮想アドレスに対応するＲＯＭ３上の物理アドレスへの直接アクセスが行われる。
【００３７】
図３の実施例では、データ領域１２のデータの内容を書き換えることができないという制約がつくことになるが、ＲＯＭ３上のコード領域３３，データ領域３４をＲＡＭ２上にコピーして実行する場合と比べて、ＲＡＭ２のメモリ容量を大幅に削減できる。
【００３８】
図４は、ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第２実施例の図である。ＲＯＭ３には、ＲＯＭファイルシステムが格納されている。ＲＯＭファイルシステム上のファイル３１をプログラムとして起動すると、そのプログラム用のプロセスが作成される。プロセスには、プロセス毎に異なる仮想アドレス空間１０が割り当てられる。
【００３９】
仮想アドレス空間１０の指定アドレスには、図２の場合と同様に、プログラムのコード領域１１，データ領域１２，初期化データ領域１３及びスタック領域１４が仮想的にマップされる。なお、コード領域１１には、ＲＯＭファイルシステム上のコード領域３３が仮想的にマップされる。また、データ領域１２には、ＲＯＭファイルシステム上のデータ領域３４をコピーしたＲＡＭ上のデータ領域４１が、ページテーブルに最初からセットされる形で直接的にマップされる。
【００４０】
この状態でＣＰＵ１がコード領域１１にアクセスする場合の処理は、図３と同様であるため説明を省略する。一方、ＣＰＵ１がデータ領域１２にアクセスする場合の処理は、図３と異なる。ＣＰＵ１は、アクセスしたデータ領域１２の仮想アドレスに対応するＲＡＭ２の物理アドレスをページテーブルから取得し、ＲＯＭファイルシステム上のデータ領域３４をコピーしたＲＡＭ２上のデータ領域４１に直接アクセスする。
【００４１】
図４の実施例では、データ領域３４へのアクセスにデータ領域３４のサイズと同じだけのＲＡＭ２のメモリ容量を必要とするという制約がつくことになるが、データ領域３４のデータの内容を書き換えることができ、ＲＯＭ３上のコード領域３３，データ領域３４をＲＡＭ２上にコピーして実行する場合と比べて、ＲＡＭ２のメモリ容量を削減できる。
【００４２】
図５は、ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第３実施例の図である。ＲＯＭ３には、ＲＯＭファイルシステムが格納されている。ＲＯＭファイルシステム上のファイル３１をプログラムとして起動すると、そのプログラム用のプロセスが作成される。プロセスには、プロセス毎に異なる仮想アドレス空間１０が割り当てられる。
【００４３】
仮想アドレス空間１０の指定アドレスには、図２の場合と同様に、プログラムのコード領域１１，データ領域１２，初期化データ領域１３及びスタック領域１４が仮想的にマップされる。なお、コード領域１１には、ＲＯＭファイルシステム上のコード領域３３が仮想的にマップされる。データ領域１２には、ＲＯＭファイルシステム上のデータ領域３４が仮想的にマップされる。
【００４４】
この状態でＣＰＵ１がコード領域１１にアクセスする場合の処理は、図３と同様であるため説明を省略する。一方、ＣＰＵ１がデータ領域１２にアクセスすると、図３と同様にページ例外が発生し、ページ例外ハンドラが起動されるが、このページ例外ハンドラの処理が図３の場合と異なる。
【００４５】
まず、ＣＰＵ１がデータ領域１２から読み出す処理をした場合について説明する。ＣＰＵ１がデータ領域１２からデータを読み出す処理をした場合、ページ例外ハンドラはＲＯＭファイルシステム上のデータ領域３４のうち、ＣＰＵ１によりアクセスされた仮想アドレスに対応する部分の物理アドレスを求める。
【００４６】
更に、ページ例外ハンドラはＲＯＭ３の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応をページテーブルにセットし、ページ例外処理を終了する。ページ例外処理が成された後、ＣＰＵ１は処理を再開し、データ領域１２をアクセスすることで、アクセスされた仮想アドレスに対応するＲＯＭ３上の物理アドレスに直接アクセスしてデータを読み出す。
【００４７】
次に、ＣＰＵ１がデータ領域１２に書き込む処理をした場合について説明する。ＣＰＵ１がデータ領域１２にデータを書き込む処理をした場合、ページ例外ハンドラはＲＡＭ２上の領域を１ページ分確保する。次に、ページ例外ハンドラはアクセスされた仮想アドレスに対応するデータをページ単位でＲＯＭファイルシステム上のデータ領域３４から読み出して、確保したＲＡＭ２上の領域に書き込む。
【００４８】
例えばＣＰＵ１がアクセスした仮想アドレスがデータ領域１２のデータＡ１２ａであったとすると、ページ例外ハンドラはデータ領域１２のデータＡ１２ａに対応するデータＡ３４ａをページ単位でＲＯＭファイルシステム上のデータ領域３４から読み出して、確保したＲＡＭ２上の領域５１ａに書き込む。
【００４９】
更に、ページ例外ハンドラはデータＡが書き込まれた領域５１ａの物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応をページテーブルにセットし、ページ例外処理を終了する。
【００５０】
この状態でデータ領域１２のデータＡ１２ａにアクセスすると、ＣＰＵ１はデータＡ１２ａの仮想アドレスに対応するＲＡＭ２の物理アドレスをページテーブルから取得し、ＲＯＭファイルシステム上のデータＡ３４ａをコピーしたＲＡＭ２上のデータＡにアクセスする。ＣＰＵ１がアクセスした仮想アドレスがデータ領域１２のデータＢ１２ｂであった場合は、ＣＰＵ１がアクセスした仮想アドレスがデータ領域１２のデータＡ１２ａであった場合と同様であるので説明を省略する。この後、ＣＰＵ１がデータＡ１２ａからの読み出しを行った場合には、ＲＯＭ３上のデータＡ３４ａでなく、ページテーブルによりマップされている領域５１ａのデータＡが読み出される。
【００５１】
図５で説明した処理は、「ｃｏｐｙ  ｏｎ  ｗｒｉｔｅ」として知られている。「ｃｏｐｙ  ｏｎ  ｗｒｉｔｅ」は、従来、複数のプロセスにより共有されたデータを書き換える際に適用されていた。図５の実施例では、「ｃｏｐｙ  ｏｎ  ｗｒｉｔｅ」を書き換え不可能なＲＯＭファイルシステム上のファイルに応用したものである。
【００５２】
図５の実施例では、プログラムの実行時に書き換え指示のあった部分をページ単位でＲＡＭ２上にコピーする為、データ領域３４のデータの内容をＲＡＭ２上で書き換えることができ、ＲＯＭ３上のコード領域３３，データ領域３４をＲＡＭ２上にコピーして実行する場合と比べて、ＲＡＭ２のメモリ容量を削減できる。
【００５３】
以下、上述した図３〜図５の第１〜第３実施例を実現するカーネルの構成および処理について説明していく。図６は、第１〜第３実施例を実現するカーネルの一実施例の構成図である。なお、図６のユーザプロセス６１及びカーネル１００は、本発明の情報処理装置により起動される。
【００５４】
ユーザプロセス６１は、ＨＤＤファイルシステムやＲＯＭファイルシステム上のファイルをプログラムとして起動することで作成されたプロセスである。カーネル１００は、例えばＵＮＩＸ（登録商標）などのＯＳの中核部分である。
【００５５】
図６のカーネル１００は、プロセス管理部１１０，仮想記憶処理部１２０，ファイルシステム１３０，ドライバ１４０を含むように構成される。プロセス管理部１１０は、ｅｘｅｃ（）処理部１１１を含む。また、仮想記憶処理部１２０はｖｍｍａｐ１２１，ページテーブル１２２，ｖｍｍａｐ処理部１２３，ページ例外処理部１２４を含む。また、ファイルシステム１３０はＶＦＳ／ＶＮＯＤＥインターフェース１３１，ＲＯＭＦＳ１３２，ＦＦＳ１３３，ＮＦＳ１３４，ＦＡＴ１３５，ＩＳＯ９６６０  １３６を含む。また、ドライバ１４０はＨＤＤドライバ１４１，ネットワークドライバ１４２，ＣＤ−ＲＯＭドライバ１４３などを含む。
【００５６】
仮想記憶処理部１２０のｖｍｍａｐ１２１は、プロセスの仮想アドレス空間がどのように使用されているかを保存している。ページテーブル１２２は、プロセスの仮想アドレスと物理アドレスとの対応を管理している。なお、ページテーブル１２２はＣＰＵ１から直接参照される場合もある。また、プロセスごとに仮想アドレス空間の構成や、仮想アドレスと物理アドレスとの対応が異なっているため、ｖｍｍａｐ１２１及びページテーブル１２２はプロセスごとに管理されている。
【００５７】
ファイルシステム１３０のＲＯＭＦＳ１３２は、ＲＯＭ３を使用する読み出し専用のＲＯＭファイルシステムである。ＦＦＳ１３３は、ＨＤＤ４を使用する読み出し書き込み可能なファーストファイルシステムである。なお、本実施例ではファーストファイルシステムをＨＤＤファイルシステムと呼んでいる。また、ＮＦＳ１３４はネットワークを介した別の機器上のファイルにアクセス可能なネットワークファイルシステムである。ＦＡＴ１３５及びＩＳＯ９６６０  １３６も、ファイルシステムの一例である。
【００５８】
次に、本発明の理解を容易とする為、ＨＤＤファイルシステム上のファイルを実行するときのカーネルの処理について図７を参照しつつ説明する。図７は、ＨＤＤファイルシステム上のファイルを実行するときにカーネルが行う処理の一例のシーケンス図である。
【００５９】
ステップＳ１では、ユーザプロセス６１が、例えばＨＤＤファイルシステム上のファイル１５を指定してｅｘｅｃ（）を実行する。ユーザプロセス６１からｅｘｅｃ（）を受信するとステップＳ２に進み、プロセス管理部１１０のｅｘｅｃ（）処理部１１１はｅｘｅｃ（）で指定されているファイル１５のヘッダ１６を読み込み、コードおよびデータをどの仮想アドレスにマップするかを決定する。ｅｘｅｃ（）処理部１１１は、決定した内容をｖｍｍａｐ処理部１２３に送信する。
【００６０】
ステップＳ３に進み、ｖｍｍａｐ処理部１２３はファイル名，オフセットからなるファイル情報とマップすべき仮想アドレスとを、ユーザプロセス６１のｖｍｍａｐ１２１に登録する。ステップＳ４に進み、ｅｘｅｃ（）処理部１１１はコードのスタートアドレスからの命令実行を指示する。
【００６１】
ステップＳ５に進み、ユーザプロセス６１はコードのスタートアドレスに基づき、最初の命令を実行しようとするが、ページテーブル１２２に該当するエントリがセットされていないため、ページ例外が発生する。ページ例外が発生すると、ページ例外ハンドラとしてのページ例外処理部１２４はステップＳ６に進み、ＲＡＭ２上にコード領域１９を確保する。
【００６２】
ページ例外処理部１２４は、ｖｍｍａｐ１２１に登録されているファイル情報に基づきファイル名およびオフセットを指定し、ファイルシステム１３０にデータの読み出しを依頼する。ステップＳ７に進み、ファイルシステム１３０はページ例外処理部１２４からの依頼に基づき、各ファイルシステムに共通のｇｅｔｐａｇｅ（）処理を行う。ファイルシステム１３０は指定されたファイルからデータを読み出し、ＲＡＭ２上に確保したコード領域１９にデータを書き込む。
【００６３】
ステップＳ９に進み、ページ例外処理部１２４はデータが書き込まれたＲＡＭ２の物理アドレスをユーザプロセス６１の仮想アドレスにマップするため、ユーザプロセス６１のページテーブル１２２にＲＡＭ２の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応を表すエントリを追加し、ページ例外処理を終了する。
【００６４】
ページ例外から復帰すると、ユーザプロセス６１はステップＳ１０に進み、コードのスタートアドレスに基づき、最初の命令を実行する。このとき、ページテーブル１２２に該当するエントリがセットされているため、ページ例外は発生しない。このような処理の繰り返しにより、ユーザプロセス６１が実行される。
【００６５】
次に、ＲＯＭファイルシステム上のファイルを実行するときのカーネルの処理について図８を参照しつつ説明する。図８は、ＲＯＭファイルシステム上のファイルを実行するときにカーネルが行う処理の一例のシーケンス図である。
【００６６】
ステップＳ１１では、ユーザプロセス６１が、例えばＲＯＭファイルシステム上のファイル３１を指定してｅｘｅｃ（）を実行する。ユーザプロセス６１からｅｘｅｃ（）を受信するとステップＳ１２に進み、プロセス管理部１１０のｅｘｅｃ（）処理部１１１はｅｘｅｃ（）で指定されているファイル３１のヘッダ３２を読み込み、コードおよびデータをどの仮想アドレスにマップするかを決定する。ｅｘｅｃ（）処理部１１１は、決定した内容をｖｍｍａｐ処理部１２３に送信する。
【００６７】
ステップＳ１３に進み、ｖｍｍａｐ処理部１２３はファイル名，オフセットからなるファイル情報とマップすべき仮想アドレスとを、ユーザプロセス６１のｖｍｍａｐ１２１に登録する。ステップＳ１４に進み、ｅｘｅｃ（）処理部１１１はコードのスタートアドレスからの命令実行を指示する。
【００６８】
ステップＳ１５に進み、ユーザプロセス６１はコードのスタートアドレスに基づき、最初の命令を実行しようとするが、ページテーブル１２２に該当するエントリがセットされていないため、ページ例外が発生する。ページ例外が発生すると、ページ例外処理部１２４はステップＳ１６に進み、該当するファイルがＲＯＭファイルシステム上か他のファイルシステム上かを後述するように判断して処理を切り分ける。ここでは、該当するファイルがＲＯＭファイルシステム上と判断した場合の処理について説明する。
【００６９】
該当するファイルがＲＯＭファイルシステム上にあると判断した場合、ページ例外処理部１２４は、ｖｍｍａｐ１２１に登録されているファイル情報に基づきファイル名およびオフセットを指定し、該当するファイルのＲＯＭ３上の物理アドレスをファイルシステム１３０に要求する。
【００７０】
ステップＳ１７に進み、ファイルシステム１３０はページ例外処理部１２４からの要求に基づき、指定されたファイルのＲＯＭ３上の物理アドレスを計算する。ステップＳ１８に進み、ページ例外処理部１２４は計算したＲＯＭ３上の物理アドレスをユーザプロセス６１の仮想アドレスにマップするため、ユーザプロセス６１のページテーブル１２２にＲＯＭ３の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応を表すエントリを追加し、ページ例外処理を終了する。
【００７１】
ページ例外から復帰すると、ユーザプロセス６１はステップＳ１９に進み、コードのスタートアドレスに基づき、最初の命令を実行する。このとき、ページテーブル１２２に該当するエントリがセットされているため、ページ例外は発生しない。このような処理の繰り返しにより、ユーザプロセス６１が実行される。
【００７２】
図８のシーケンス図では、ページ例外処理部１２４でＲＡＭ２上に新たな領域を確保する必要がないため、図７のシーケンス図の処理と比べてＲＡＭ２のメモリ容量を大幅に削減できる。
【００７３】
更に、ＲＯＭファイルシステム上のファイルを実行するときのカーネルの処理について図９を参照しつつ説明する。図９は、ＲＯＭファイルシステム上のファイルを実行するときにカーネルが行う処理の他の一例のシーケンス図である。
【００７４】
ステップＳ２１では、ユーザプロセス６１が、例えばＲＯＭファイルシステム上のファイル３１を指定してｅｘｅｃ（）を実行する。ユーザプロセス６１からｅｘｅｃ（）を受信するとステップＳ２２に進み、プロセス管理部１１０のｅｘｅｃ（）処理部１１１はｅｘｅｃ（）で指定されているファイル３１のヘッダ３２を読み込み、コードおよびデータをどの仮想アドレスにマップするかを決定する。ｅｘｅｃ（）処理部１１１は、決定した内容をｖｍｍａｐ処理部１２３に送信する。
【００７５】
ステップＳ２３に進み、ｖｍｍａｐ処理部１２３はファイル名，オフセットからなるファイル情報とマップすべき仮想アドレスとを、ユーザプロセス６１のｖｍｍａｐ１２１に登録する。ステップＳ２４に進み、ｅｘｅｃ（）処理部１１１はコードのスタートアドレスからの命令実行を指示する。
【００７６】
ステップＳ２５に進み、ユーザプロセス６１はコードのスタートアドレスに基づき、最初の命令を実行しようとするが、ページテーブル１２２に該当するエントリがセットされていないため、ページ例外が発生する。ページ例外が発生すると、ページ例外処理部１２４はステップＳ２６に進み、該当するファイルがＲＯＭファイルシステム上か他のファイルシステム上かを後述するように判断して処理を切り分ける。ここでは、該当するファイルがＲＯＭファイルシステム上と判断した場合の処理について説明する。
【００７７】
該当するファイルがＲＯＭファイルシステム上にあると判断した場合、ページ例外処理部１２４は、ｖｍｍａｐ１２１に登録されているファイル情報に基づきファイル名およびオフセットを指定し、該当するファイルのＲＯＭ３上の物理アドレスをファイルシステム１３０に要求する。
【００７８】
ステップＳ２７に進み、ファイルシステム１３０はページ例外処理部１２４からの要求に基づき、指定されたファイルのＲＯＭ３上の物理アドレスを計算する。ステップＳ２８に進み、ページ例外処理部１２４は計算したＲＯＭ３上の物理アドレスをユーザプロセス６１の仮想アドレスにマップするため、ユーザプロセス６１のページテーブル１２２にＲＯＭ３の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応を表すエントリを追加し、ページ例外処理を終了する。
【００７９】
ページ例外から復帰すると、ユーザプロセス６１はステップＳ２９に進み、コードのスタートアドレスに基づき、最初の命令を実行する。このとき、ページテーブル１２２に該当するエントリがセットされているため、ページ例外は発生しない。
【００８０】
ステップＳ３０に進み、ユーザプロセス６１は新しいページへのデータの書き込みを実行しようとする。このとき、ページテーブル１２２に該当するエントリがセットされていないため、ページ例外が発生する。ページ例外が発生すると、ページ例外処理部１２４はステップＳ３１に進み、ＲＡＭ２上に例えばデータ領域５１ａを確保する。
【００８１】
ページ例外処理部１２４は、ｖｍｍａｐ１２１に登録されているファイル情報に基づきファイル名およびオフセットを指定し、ファイルシステム１３０にデータの読み出しを依頼する。ステップＳ３２に進み、ファイルシステム１３０はページ例外処理部１２４からの依頼に基づき指定されたファイルのＲＯＭ３上の物理アドレスを計算する。そして、ファイルシステム１３０は計算されたＲＯＭ３上の物理アドレスからデータを読み出し、ＲＡＭ２上に確保した例えばデータ領域５１ａにデータを書き込む。
【００８２】
ステップＳ３３に進み、ページ例外処理部１２４はデータが書き込まれたＲＡＭ２の物理アドレスをユーザプロセス６１の仮想アドレスにマップするため、ユーザプロセス６１のページテーブル１２２にＲＡＭ２の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応を表すエントリを追加し、ページ例外処理を終了する。
【００８３】
ページ例外から復帰すると、ユーザプロセス６１はステップＳ３４に進み、データの書き込みを実行する。このとき、ページテーブル１２２に該当するエントリがセットされているため、ページ例外は発生しない。
【００８４】
ステップＳ３５に進み、ユーザプロセス６１は新しいページからのデータの読み出しを実行しようとする。このとき、ページテーブル１２２に該当するエントリがセットされていないため、ページ例外が発生する。ページ例外が発生すると、ページ例外処理部１２４はステップＳ３６に進み、該当するファイルがＲＯＭファイルシステム上か他のファイルシステム上かを後述するように判断して処理を切り分ける。ここでは、該当するファイルがＲＯＭファイルシステム上と判断した場合の処理について説明する。
【００８５】
該当するファイルがＲＯＭファイルシステム上にあると判断した場合、ページ例外処理部１２４は、ｖｍｍａｐ１２１に登録されているファイル情報に基づきファイル名およびオフセットを指定し、該当するファイルのＲＯＭ３上の物理アドレスをファイルシステム１３０に要求する。
【００８６】
ステップＳ３７に進み、ファイルシステム１３０はページ例外処理部１２４からの要求に基づき、指定されたファイルのＲＯＭ３上の物理アドレスを計算する。ステップＳ３８に進み、ページ例外処理部１２４は計算したＲＯＭ３上の物理アドレスをユーザプロセス６１の仮想アドレスにマップするため、ユーザプロセス６１のページテーブル１２２にＲＯＭ３の物理アドレスと仮想アドレス空間１０の仮想アドレスとの対応を表すエントリを追加し、ページ例外処理を終了する。
【００８７】
ページ例外から復帰すると、ユーザプロセス６１はステップＳ３９に進み、データの読み出しを実行する。このとき、ページテーブル１２２に該当するエントリがセットされているため、ページ例外は発生しない。
【００８８】
図９のシーケンス図では、ページ例外処理部１２４で書き込み要求のあった領域をＲＯＭ３上からＲＡＭ２上にコピーするため、その領域のデータの内容を書き換えることができると共に、図７のシーケンス図の処理と比べてＲＡＭ２のメモリ容量を削減することができる。なお、図４の実施例はＲＯＭ３上のデータ領域３４について、図９のシーケンスのステップＳ３１〜Ｓ３３の処理をプログラムの起動時に行った例である。
【００８９】
次に、ページ例外処理部１２４で行われる該当するファイルがＲＯＭファイルシステム上か他のファイルシステム上かを判断する処理について説明する。カーネル１００の内部では、ファイルおよびファイルと同じ扱いを受けるディレクトリ（以下、ファイルと総称する）がｖｎｏｄｅによって管理されている。１つのｖｎｏｄｅは、１個のファイルに対応して作成される。なお、ｖｎｏｄｅは対応するファイルが使用されなくなった後、所定期間経過後に捨てられる。
【００９０】
ｖｎｏｄｅには、ファイルを使用するためにカーネル１００が必要とする各種情報が保存されている。図１０は、ｖｎｏｄｅについて説明するための一例の構造図である。図１０のｖｎｏｄｅは、ファイルを操作するために必要な各ファイルシステムに共通の情報１５０，ファイルがどのファイルシステムに属しているかを表すファイルシステムのタイプ１５１，ファイルを操作するためのファイル操作関数群１５２，ファイルが属するファイルシステム依存の情報１５３を含むように構成される。ｖｎｏｄｅに関する情報は、例えばファイルシステム１３０が保持している。
【００９１】
したがって、ページ例外処理部１２４で行われる該当するファイルがＲＯＭファイルシステム上か他のファイルシステム上かを判断する処理は、該当するファイルのｖｎｏｄｅを検索し、ｖｎｏｄｅのファイルシステムのタイプ１５１を参照することで行うことができる。
【００９２】
次に、ｅｘｅｃ（）処理部１１１で指定されたファイルのｖｎｏｄｅを作成する処理の詳細について説明する。まず、第１の処理では、ファイル名を辿るためのｖｎｏｄｅを獲得し、そのｖｎｏｄｅを現在のｖｎｏｄｅとする。例えばフルパスで指定されたファイルの場合、システムのルートディレクトリのｖｎｏｄｅを獲得する。また、相対パスで指定されたファイルの場合、カレントディレクトリのｖｎｏｄｅを獲得する。
【００９３】
第２の処理では、ファイル名に次のコンポーネント（／と／との間の名前）がない場合に、現在のｖｎｏｄｅを求めるファイルに対するｖｎｏｄｅと判断する。次のコンポーネントがあれば、第３の処理に進み、ファイル名の次のコンポーネントを現在のｖｎｏｄｅのディレクトリから読み出し、そのファイルに対応するｖｎｏｄｅを作成または検索して現在のｖｎｏｄｅとする。
【００９４】
そして、第４の処理に進み、現在のｖｎｏｄｅの上に別のファイルシステムがマウントされていないか否かを確認する。別のファイルシステムがマウントされている場合は、図１１のようなマウントテーブルからマウント先のファイルシステムのルートｖｎｏｄｅを獲得し、現在のｖｎｏｄｅとする。第４の処理の後、第２の処理に戻り処理を続ける。
【００９５】
カーネル１００の内部では、マウントテーブルにより各ファイルシステムがどのディレクトリにマウントされているかが管理されている。マウント処理時に、マウント元のディレクトリのｖｎｏｄｅとマウント先のファイルシステムのルートｖｎｏｄｅとが図１１のようなマウントテーブルに登録される。
【００９６】
図１１は、マウントテーブルについて説明するための一例の構造図である。図１１のマウントテーブルは、ファイルシステムを操作するためのファイルシステム操作関数群１６０，マウント元のディレクトリのｖｎｏｄｅ１６１，マウント先のルートｖｎｏｄｅ１６２，マウント先およびファイルシステムから独立した内部情報１６３，ファイルシステム依存の内部情報１６４を含むように構成される。
【００９７】
上記の第１の処理から第５の処理により求めたｖｎｏｄｅは、プロセスごとの情報を保存するプロセス構造体に保存される。ｅｘｅｃ（）処理部１１１では、ｖｎｏｄｅに保存されているファイル操作関数群１５２の中のファイル読み出し関数を用いてファイルのヘッダを読み出す。実行ファイルのヘッダにはコード領域，データ領域に関するファイル上のオフセットと長さが格納されている。また、実行ファイルのヘッダにはコード領域およびデータ領域をプロセスの仮想アドレス空間上のどこにマップすればよいかという情報も格納されている。
【００９８】
ｖｍｍａｐ１２１には、ｖｎｏｄｅ，開始オフセット，サイズ，仮想アドレス，仮想アドレスのサイズ，仮想アドレスマップの保護情報の組がコード，データ及びスタック領域に対してそれぞれ登録されている。
【００９９】
次に、前述したデータの読み出し時のページ例外処理について詳細に説明する。ページ例外が発生すると、ページ例外処理部１２４はＣＰＵ１の制御レジスタからページ例外の発生した仮想アドレスを取得する。次に、ページ例外処理部１２４は現在実行中のプロセスのｖｍｍａｐ１２１からページ例外が発生した仮想アドレスを検索し、ｖｍｍａｐ１２１に登録されている値を取得する。
【０１００】
ページ例外処理部１２４は、ｖｍｍａｐ１２１から取得したｖｎｏｄｅが有効なら、そのｖｎｏｄｅからファイルシステムのタイプを取得する。ファイルシステムのタイプがｒｏｍｆｓであった場合、その領域の先頭からのオフセットとｖｎｏｄｅを指定してファイルシステム操作関数のｇｅｔ＿ａｄｄｒ（）を呼び出す。ｒｏｍｆｓファイルシステムのｇｅｔ＿ａｄｄｒ（）では、指定されたｖｎｏｄｅ上のオフセットに対するＲＯＭ上の物理アドレスを計算してページ例外処理部１２４に返す。ページ例外処理部１２４は、プロセスのページテーブルエントリの例外が起こったページテーブルエントリに、返された物理アドレスを書き込み禁止属性を付けてセットした後、ページ例外から復帰する。
【０１０１】
ファイルシステムのタイプがｒｏｍｆｓ以外であった場合、ＲＡＭ２上に１ページ分の物理メモリ領域を確保し、その領域の先頭からのオフセットとｖｎｏｄｅを指定してファイルシステム操作関数のｇｅｔ＿ｐａｇｅ（）を呼び出す。ｒｏｍｆｓファイルシステムのｇｅｔ＿ｐａｇｅ（）では、デバイスから１ページ分のデータを読み出し、確保した物理メモリ領域に書き込む。ページ例外処理部１２４は、プロセスのページテーブルエントリの例外が起こったページテーブルエントリに、データを書き込んだページの物理アドレスを書き込み禁止属性を付けてセットした後、ページ例外から復帰する。
【０１０２】
次に、前述したデータの書き込み時のページ例外処理について詳細に説明する。ページ例外が発生すると、ページ例外処理部１２４はＣＰＵ１の制御レジスタからページ例外の発生した仮想アドレスを取得する。次に、ページ例外処理部１２４は現在実行中のプロセスのｖｍｍａｐ１２１からページ例外が発生した仮想アドレスを検索し、ｖｍｍａｐ１２１に登録されている値を取得する。
【０１０３】
ページ例外処理部１２４は、ｖｍｍａｐ１２１から取得したｖｎｏｄｅが有効なら、そのｖｎｏｄｅからファイルシステムのタイプを取得する。ＲＡＭ２上に１ページ分の物理メモリ領域を確保し、その領域の先頭からのオフセットとｖｎｏｄｅを指定してファイルシステム操作関数のｇｅｔ＿ｐａｇｅ（）を呼び出す。ｒｏｍｆｓファイルシステムのｇｅｔ＿ｐａｇｅ（）では、デバイスから１ページ分のデータを読み出し、確保した物理メモリ領域に書き込む。ページ例外処理部１２４は、プロセスのページテーブルエントリの例外が起こったページテーブルエントリに、データを書き込んだページの物理アドレスを書き込み可能属性を付けてセットした後、ページ例外から復帰する。
【０１０４】
本発明のファイル管理方法は、例えば図１２及び図１３の融合機に適用できる。図１２は、本発明による融合機の一実施例の構成図である。融合機とは、プリンタ，コピー，ファクシミリおよびスキャナなどの各装置の機能を１つの筐体内に収納した画像処理装置のことである。
【０１０５】
融合機２０１は、ソフトウェア群２０２と，融合機起動部２０３と，ハードウェア資源２０４とを含むように構成される。融合機起動部２０３は融合機１の電源投入時に最初に実行され、アプリケーション層２０５およびプラットフォーム２０６を起動する。例えば融合機起動部２０３は、アプリケーション層２０５およびプラットフォーム２０６のプログラムをＨＤＤなどから読み出し、読み出した各プログラムをメモリ領域に転送して起動する。
【０１０６】
ハードウェア資源２０４は、スキャナ２１１と，プロッタ２１２と，ファクシミリなどのその他のハードウェアリソース２１３とを含む。また、ソフトウェア群２０２は、ＵＮＩＸ（登録商標）などのＯＳ上に起動されているアプリケーション層２０５とプラットフォーム２０６とを含む。
【０１０７】
アプリケーション層２０５は、プリンタ，コピー，ファックスおよびスキャナなどの画像形成にかかるユーザサービスにそれぞれ固有の処理を行うプログラムを含む。アプリケーション層２０５は、プリンタアプリ２２１と，コピーアプリ２２２と，ファックスアプリ２２３と，スキャナアプリ２２４と，ネットファイルアプリ２２５とを含む。なお、ネットファイルアプリ２２５はネットワークファイル用アプリケーションであり、融合機２０１にネットワークを介して接続されるネットワーク機器とのデータ通信を管理するものである。
【０１０８】
また、プラットフォーム２０６は、アプリケーション層２０５からの処理要求を解釈してハードウェア資源２０４の獲得要求を発生するコントロールサービス層２０９と、１つ以上のハードウェア資源２０４の管理を行ってコントロールサービス層２０９からの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）２３９と、ＳＲＭ２３９からの獲得要求に応じてハードウェア資源２０４の管理を行うハンドラ層２１０とを含む。
【０１０９】
コントロールサービス層２０９は、ネットワークコントロールサービス（以下、ＮＣＳという）２３１，デリバリーコントロールサービス（以下、ＤＣＳという）２３２，オペレーションパネルコントロールサービス（以下、ＯＣＳという）２３３，ファックスコントロールサービス（以下、ＦＣＳという）２３４，エンジンコントロールサービス（以下、ＥＣＳという）２３５，メモリコントロールサービス（以下、ＭＣＳという）２３６，ユーザインフォメーションコントロールサービス（以下、ＵＣＳという）２３７，システムコントロールサービス（以下、ＳＣＳという）２３８など、一つ以上のサービスモジュールを含むように構成されている。
【０１１０】
なお、プラットフォーム２０６は予め定義されている関数により、アプリケーション層２０５からの処理要求を受信するＡＰＩ２５３を有するように構成されている。ＯＳは、アプリケーション層２０５およびプラットフォーム２０６の各ソフトウェアをプロセスとして並列実行する。
【０１１１】
ＮＣＳ２３１のプロセスは、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。例えばＮＣＳ２３１は、融合機にネットワークを介して接続されるネットワーク機器とのデータ通信を制御する。
【０１１２】
ＤＣＳ２３２のプロセスは、融合機に蓄積されている文書データの配送などの制御を行う。ＯＣＳ２３３のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。ＦＣＳ２３４のプロセスは、アプリケーション層２０５からＰＳＴＮまたはＩＳＤＮ網を利用したファックス送受信，バックアップ用のメモリで管理されている各種ファックスデータの登録／引用，ファックス読み取り，ファックス受信印刷などを行うためのＡＰＩを提供する。
【０１１３】
ＥＣＳ２３５のプロセスは、スキャナ２１１，プロッタ２１２，ハードウェアリソース２１３などのエンジン部の制御を行う。ＭＣＳ２３６のプロセスは、メモリの取得および解放，ＨＤＤの利用，画像データの圧縮および伸張などのメモリ制御を行う。ＵＣＳ２３７のプロセスは、ユーザ情報の管理を行うものである。
【０１１４】
ＳＣＳ２３８のプロセスは、アプリケーション管理，操作部制御，システム画面表示，ＬＥＤ表示，ハードウェア資源管理，割り込みアプリケーション制御などの処理を行う。ＳＲＭ２３９のプロセスは、ＳＣＳ２３８と共にシステムの制御およびハードウェア資源２０４の管理を行うものである。例えばＳＲＭ２３９のプロセスは、スキャナ２１１およびプロッタ２１２などのハードウェア資源２０４を利用する上位層からの獲得要求に従って調停を行い、実行制御する。
【０１１５】
具体的に、ＳＲＭ２３９のプロセスは獲得要求されたハードウェア資源２０４が利用可能であるか（他の獲得要求により利用されていないかどうか）を判定し、利用可能であれば獲得要求されたハードウェア資源２０４が利用可能である旨を上位層に通知する。また、ＳＲＭ２３９のプロセスは上位層からの獲得要求に対してハードウェア資源２０４を利用するためのスケジューリングを行い、要求内容（例えば、プリンタエンジンによる紙搬送と作像動作，メモリ確保，ファイル生成など）を直接実施している。
【０１１６】
また、ハンドラ層２１０は後述するファックスコントロールユニット（以下、ＦＣＵという）の管理を行うファックスコントロールユニットハンドラ（以下、ＦＣＵＨという）２４０と、プロセスに対するメモリの割り振り及びプロセスに割り振ったメモリの管理を行うイメージメモリハンドラ（以下、ＩＭＨという）２４１とを含む。
【０１１７】
ＳＲＭ２３９およびＦＣＵＨ２４０は、予め定義されている関数によりハードウェア資源２０４に対する処理要求を送信するエンジンＩ／Ｆ２５４を利用して、ハードウェア資源２０４に対する処理要求を行う。
【０１１８】
図１２の構成により、融合機２０１は各アプリケーションで共通的に必要な処理をプラットフォーム２０６で一元的に処理することができる。次に、融合機２０１のハードウェア構成について説明する。
【０１１９】
図１３は、本発明による融合機の一実施例のハードウェア構成図である。融合機２０１は、コントローラ２６０と，オペレーションパネル２７０と，ＦＣＵ２８０と，ＵＳＢデバイス２９０と，ＩＥＥＥ１３９４デバイス３００と，エンジン部３１０とを含む。
【０１２０】
また、コントローラ２６０は、ＣＰＵ２６１と，システムメモリ（ＭＥＭ−Ｐ）２６２と，ノースブリッジ（以下、ＮＢという）２６３と，サウスブリッジ（以下、ＳＢという）２６４と，ＡＳＩＣ２６６と，ローカルメモリ（ＭＥＭ−Ｃ）２６７と，ＨＤＤ２６８およびネットワークインターフェースコントローラ２６９とを含む。
【０１２１】
オペレーションパネル２７０は、コントローラ２６０のＡＳＩＣ２６６に接続されている。また、ＦＣＵ２８０，ＵＳＢデバイス２９０，ＩＥＥＥ１３９４デバイス３００およびエンジン部３１０は、コントローラ２６０のＡＳＩＣ２６６にＰＣＩバスで接続されている。
【０１２２】
コントローラ２６０は、ＡＳＩＣ２６６にローカルメモリ２６７，ＨＤＤ２６８およびネットワークインターフェースコントローラ２６９などが接続されると共に、ＣＰＵ２６１とＡＳＩＣ２６６とがＣＰＵチップセットのＮＢ２６３を介して接続されている。このように、ＮＢ２６３を介してＣＰＵ２６１とＡＳＩＣ２６６とを接続することにより、ＣＰＵ２６１のインターフェースが公開されていない場合に対応する。
【０１２３】
なお、ＡＳＩＣ２６６とＮＢ２６３とはＰＣＩバスを介して接続されているのでなく、ＡＧＰ（Accelerated Graphics Port）６５を介して接続されている。このように、図１２のアプリケーション層２０５やプラットフォーム２０６を形成する一つ以上のプロセスを実行制御するため、ＡＳＩＣ２６６とＮＢ２６３とを低速のＰＣＩバスでなくＡＧＰ２６５を介して接続し、パフォーマンスの低下を防いでいる。
【０１２４】
ＣＰＵ２６１は、融合機２０１の全体制御を行うものである。ＣＰＵ２６１は、ＮＣＳ２３１，ＤＣＳ２３２，ＯＣＳ２３３，ＦＣＳ２３４，ＥＣＳ２３５，ＭＣＳ２３６，ＵＣＳ２３７，ＳＣＳ２３８，ＳＲＭ２３９，ＦＣＵＨ２４０およびＩＭＨ２４１をＯＳ上にそれぞれプロセスとして起動して実行させると共に、アプリケーション層２０５を形成するプリンタアプリ２２１，コピーアプリ２２２，ファックスアプリ２２３，スキャナアプリ２２４，ネットファイルアプリ２２５を起動して実行させる。
【０１２５】
ＮＢ２６３は、ＣＰＵ２６１，システムメモリ２６２，ＳＢ２６４およびＡＳＩＣ２６６を接続するためのブリッジである。システムメモリ２６２は、融合機２０１の描画用メモリなどとして用いるメモリである。ＳＢ２６４は、ＮＢ２６３とＲＯＭ，ＰＣＩバス，周辺デバイスとを接続するためのブリッジである。また、ローカルメモリ２６７はコピー用画像バッファ，符号バッファとして用いるメモリである。
【０１２６】
ＡＳＩＣ２６６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＨＤＤ２６８は、画像データの蓄積，文書データの蓄積，プログラムの蓄積，フォントデータの蓄積，フォームの蓄積などを行うためのストレージである。ネットワークインターフェースコントローラ２６９は、ネットワークを介して接続されているネットワーク機器とＭＡＣアドレスなどを用いて通信する。また、オペレーションパネル２７０は、オペレータからの入力操作を受け付けると共に、オペレータに向けた表示を行う操作部である。
【０１２７】
本発明は上記の実施例に限定されるものではなく、本発明の範囲内で種々の変形や変更が可能である。
【図面の簡単な説明】
【０１２８】
【図１】本発明の情報処理装置の一例のハードウェア構成図である。
【図２】ＨＤＤをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する一例の図である。
【図３】ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第１実施例の図である。
【図４】ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第２実施例の図である。
【図５】ＲＯＭをファイルシステムの格納場所として使用した場合のプログラム起動時の状態について説明する第３実施例の図である。
【図６】第１〜第３実施例を実現するカーネルの一実施例の構成図である。
【図７】ＨＤＤファイルシステム上のファイルを実行するときにカーネルが行う処理の一例のシーケンス図である。
【図８】ＲＯＭファイルシステム上のファイルを実行するときにカーネルが行う処理の一例のシーケンス図である。
【図９】ＲＯＭファイルシステム上のファイルを実行するときにカーネルが行う処理の他の一例のシーケンス図である。
【図１０】ｖｎｏｄｅについて説明するための一例の構造図である。
【図１１】マウントテーブルについて説明するための一例の構造図である。
【図１２】本発明による融合機の一実施例の構成図である。
【図１３】本発明による融合機の一実施例のハードウェア構成図である。
【図１４】ファイルシステムの一例を説明するための図である。
【図１５】ファイルシステムのマウントについて説明するための図である。
【図１６】ＣＰＵからみた物理アドレス空間の一例を表した図である。
【符号の説明】
【０１２９】
１    ＣＰＵ
２    ＲＡＭ
３    ＲＯＭ
４    ＨＤＤ
５    バス
１０    仮想アドレス空間
６１    ユーザプロセス
１００    カーネル
１１０    プロセス管理部
１２０    仮想記憶処理部
１２２    ページテーブル
１２４    ページ例外処理部
１３０    ファイルシステム
１３２    ＲＯＭＦＳ
１３３    ＦＦＳ
１４０    ドライバ
２０１    融合機
２０２    ソフトウェア群
２０３    融合機起動部
２０４    ハードウェア資源
２０５    アプリケーション層
２０６    プラットフォーム
２０９    コントロールサービス層
２１０    ハンドラ層
２６１    ＣＰＵ
２６２    システムメモリ（ＭＥＭ−Ｐ）
２６７    ローカルメモリ（ＭＥＭ−Ｃ）
２６８    ハードディスク装置（ＨＤＤ）
２７０    オペレーションパネル
２８０    ファックスコントロールユニット（ＦＣＵ）
２９０    ＵＳＢデバイス
３００    ＩＥＥＥ１３９４デバイス
３１０    エンジン部
【図１】
2005078419.tif 000003
【図２】
2005078419.tif 000004
【図３】
2005078419.tif 000005
【図４】
2005078419.tif 000006
【図５】
2005078419.tif 000007
【図６】
2005078419.tif 000008
【図７】
2005078419.tif 000009
【図８】
2005078419.tif 000010
【図９】
2005078419.tif 000011
【図１０】
2005078419.tif 000012
【図１１】
2005078419.tif 000013
【図１２】
2005078419.tif 000014
【図１３】
2005078419.tif 000015
【図１４】
2005078419.tif 000016
【図１５】
2005078419.tif 000017
【図１６】
2005078419.tif 000018