(57)【特許請求の範囲】
【請求項１】
情報処理を行うためのハードウェア資源と、オペレーティングシステムと、前記オペレーティングシステム上で動作し、情報処理装置に情報処理を行わせるための複数のアプリケーションと、前記オペレーティングシステム上で動作し、情報処理装置に前記複数のアプリケーションからの処理要求を前記オペレーティングシステム経由で受信可能にさせ、該処理要求に従って前記ハードウェア資源の制御を行わせるためのデバイスドライバとを有する情報処理装置であって、
書き換え可能メモリ上の前記オペレーティングシステムによって管理される領域以外の物理領域に、前記アプリケーション及びデバイスドライバによって直接マップ可能な直接マップ領域を獲得すると共に、前記直接マップ領域の物理アドレスに対応する仮想メモリ領域上に含まれる直接マップ領域用の仮想アドレスを設定する領域獲得手段と、
前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたアドレス変換手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記仮想メモリ領域は、所定サイズのページごとに管理されることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたアドレス変換手段の内容を、仮想記憶システムを介さずに書き換えるアドレス書換手段を更に有することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記アドレス書換手段は、前記アプリケーションおよびデバイスドライバの起動時に前記アドレス変換手段の内容を書き換えることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記領域獲得手段は、情報処理装置の起動時に、前記直接マップ領域を獲得することを特徴とする請求項１乃至４何れか一項記載の情報処理装置。
【請求項６】
前記アドレス変換手段は、前記アプリケーションおよびデバイスドライバごとに、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたカーネル内のアドレス変換テーブルであることを特徴とする請求項１乃至５何れか一項記載の情報処理装置。
【請求項７】
前記アドレス変換手段は、前記アプリケーションおよびデバイスドライバごとに、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたプロセッサ内のアドレス変換テーブルであることを特徴とする請求項１乃至５何れか一項記載の情報処理装置。
【請求項８】
前記アドレス変換手段は、前記プロセッサ内のアドレス変換テーブルのうち上書きの対象とならない部分に、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けておくことを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記アドレス変換手段は、前記直接マップ領域用の仮想アドレスが連続しているとき、その仮想アドレスに対応する前記直接マップ領域の物理アドレスが連続するように、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けることを特徴とする請求項１乃至８何れか一項記載の情報処理装置。
【請求項１０】
前記アドレス変換手段は、複数の前記アプリケーション及びデバイスドライバが前記直接マップ領域を共有するように、前記直接マップ領域の物理アドレスと前記直接マップ領域用の仮想アドレスとを対応付けることを特徴とする請求項１乃至９何れか一項記載の情報処理装置。
【請求項１１】
前記仮想メモリ領域は、仮想記憶システムにより管理される仮想メモリ領域上のユーザプログラム領域およびスタック領域と、前記仮想メモリ領域上の直接マップ領域とを有し、前記仮想メモリ領域上の直接マップ領域用の仮想アドレスが、前記仮想メモリ領域用の仮想アドレスのうち前記ユーザプログラム領域またはスタック領域として使用されない未使用領域に獲得されることを特徴とする請求項３乃至１０何れか一項記載の情報処理装置。
【請求項１２】
情報処理を行うためのハードウェア資源と、オペレーティングシステムと、前記オペレーティングシステム上で動作し、情報処理装置に情報処理を行わせるための複数のアプリケーションと、前記オペレーティングシステム上で動作し、情報処理装置に前記複数のアプリケーションからの処理要求を前記オペレーティングシステム経由で受信可能にさせ、該処理要求に従って前記ハードウェア資源の制御を行わせるためのデバイスドライバとを有する情報処理装置のメモリ管理方法であって、
書き換え可能メモリ上の前記オペレーティングシステムによって管理される領域以外の物理領域に、前記アプリケーション及びデバイスドライバによって直接マップ可能な直接マップ領域を獲得すると共に、前記直接マップ領域の物理アドレスに対応する仮想メモリ領域上に含まれる直接マップ領域用の仮想アドレスを設定する領域獲得段階と、
前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたアドレス変換段階と
を有することを特徴とするメモリ管理方法。
【請求項１３】
前記仮想メモリ領域は、所定サイズのページごとに管理されることを特徴とする請求項１２記載のメモリ管理方法。
【請求項１４】
前記アドレス変換段階は、前記直接マップ領域の物理アドレスと前記直接マップ領域用の仮想アドレスとを対応付けた内容を、仮想記憶システムを介さずに書き換えることを特徴とする請求項１２又は１３記載のメモリ管理方法。
【請求項１５】
前記アドレス変換段階は、前記アプリケーションおよびデバイスドライバの起動時に、直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けた内容を書き換えることを特徴とする請求項１４記載のメモリ管理方法。
【請求項１６】
前記領域獲得段階は、情報処理装置の起動時に、前記直接マップ領域を獲得することを特徴とする請求項１２乃至１５何れか一項記載のメモリ管理方法。
【請求項１７】
前記アドレス変換段階は、前記アプリケーションおよびデバイスドライバごとに、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたカーネル内のアドレス変換テーブルを書き換えることを特徴とする請求項１２乃至１６何れか一項記載のメモリ管理方法。
【請求項１８】
前記アドレス変換段階は、前記アプリケーションおよびデバイスドライバごとに、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたプロセッサ内のアドレス変換テーブルを書き換えることを特徴とする請求項１２乃至１６何れか一項記載のメモリ管理方法。
【請求項１９】
前記アドレス変換段階は、前記プロセッサ内のアドレス変換テーブルのうち上書きの対象とならない部分に、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けることを特徴とする請求項１８記載のメモリ管理方法。
【請求項２０】
前記アドレス変換段階は、前記直接マップ領域用の仮想アドレスが連続しているとき、その仮想アドレスに対応する前記直接マップ領域の物理アドレスが連続するように、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けることを特徴とする請求項１２乃至１９何れか一項記載のメモリ管理方法。
【請求項２１】
前記アドレス変換段階は、複数の前記アプリケーション及びデバイスドライバが前記直接マップ領域を共有するように、前記直接マップ領域の物理アドレスと前記直接マップ領域用の仮想アドレスとを対応付けることを特徴とする請求項１２乃至２０何れか一項記載のメモリ管理方法。
【請求項２２】
前記仮想メモリ領域は、仮想記憶システムにより管理される仮想メモリ領域上のユーザプログラム領域およびスタック領域と、前記仮想メモリ領域上の直接マップ領域とを有し、前記仮想メモリ領域上の直接マップ領域用の仮想アドレスが、前記仮想メモリ領域用の仮想アドレスのうち前記ユーザプログラム領域またはスタック領域として使用されない未使用領域に獲得されることを特徴とする請求項１４乃至２１何れか一項記載のメモリ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置及びメモリ管理方法に係り、特に仮想アドレス機能を利用する情報処理装置及びメモリ管理方法に関する。
【０００２】
【従来の技術】
パソコン等の情報処理装置は、様々な情報処理にそれぞれ対応する１つ以上のソフトウェアを実行させることで様々な情報処理を行わせるものである。従来の情報処理装置では、各ソフトウェアを実行することで生成されるプロセスが、必要なメモリを別個に獲得していた。
【０００３】
また、情報処理装置の応用例としての画像形成装置は、プリンタ，コピー，ファクシミリおよびスキャナなどの各装置の機能を１つの筐体内に収納している。画像形成装置は、１つの筐体内に表示部，印刷部および撮像部などを設けると共に、プリンタ，コピー，ファクシミリおよびスキャナにそれぞれ対応する４種類のソフトウェアを設け、そのソフトウェアを切り替えることより、プリンタ，コピー，ファクシミリおよびスキャナとして動作させるものである。
【０００４】
融合機は、プリンタ，コピー，ファクシミリおよびスキャナにそれぞれ対応するソフトウェアを設けている。したがって、各ソフトウェアを実行することで生成されるプロセスは、必要なメモリを別個に獲得していた。
【０００５】
ところで、情報処理装置および画像形成装置が実行するソフトウェアは、オペレーティングシステム（以下、ＯＳという）上で動作する場合、ＯＳによりメモリ管理がなされる。マルチプロセスを実現するＯＳは、例えば仮想アドレス機能を用いてアドレス管理を行い、各プロセスごとに別の仮想アドレス空間を提供する。
【０００６】
仮想アドレス機能では、他のプロセスのアクセスからメモリを保護するためにページングの手法を用いている。ページングとは、プロセスに提供した仮想アドレス空間と物理メモリのある物理アドレス空間とをプロセッサにより決められる所定サイズのページに区切り、仮想アドレス空間内のページと物理アドレス空間内のページとの対応関係を管理し、仮想アドレスを物理アドレスに変換する手法をいう。
【０００７】
また、ページングの手法では、ページテーブルを使用して仮想アドレス空間のページと物理アドレス空間のページとの対応関係を管理している。ページテーブルは、仮想アドレス空間を提供したプロセスごとに必要となる。
【０００８】
ページングの手法を用いる場合、全てのメモリアクセスに対して仮想アドレスを物理アドレスに変換するアドレス変換が必要となるため、実行速度の点からハードウェアによるサポートが必須であった。このアドレス変換は、プロセッサのメモリ管理部（以下、ＭＭＵという）により行われ、その対応がプロセッサごとに異なっている。
【０００９】
例えば一のプロセッサのＭＭＵでは、制御レジスタにページテーブルの物理アドレスをセットしておくことで、メモリアクセスを行うときに自動的にメモリ上にあるページテーブルを検索して物理アドレスへの変換を行う。この場合、プロセスを切り替えるときに別のページテーブルの物理アドレスが制御レジスタにセットされる。
【００１０】
また、他のプロセッサのＭＭＵではページテーブルを自動的に検索することはなく、トランスレーション・ルックアサイド・バッファ（以下、ＴＬＢという）と呼ばれるプロセッサ内の変換テーブルのみを検索して物理アドレスへの変換を行う。この場合、メモリアクセスを行いたい仮想アドレス用のエントリがＴＬＢになかったときにＴＬＢ例外エラーが発生し、このＴＬＢ例外エラーのハンドラによりソフトウェア的にページテーブルが検索される。そして、その検索結果に基づくエントリがＴＬＢに追加される。
【００１１】
特許文献１には、ページテーブルの共有に関する技術が記載されている。特許文献２には、仮想メモリ上の１つのセグメントを共通領域と固有領域とに分割する技術が記載されている。
【００１２】
【特許文献１】
特開平７−１６０５８３号公報
【００１３】
【特許文献２】
特公平６−５８６４９号公報
【００１４】
【発明が解決しようとする課題】
ページングの手法を用いるアドレス管理では、ハードウェアによるサポートにより実質的な実行速度を得ている。しかしながら、デマンドページングと呼ばれる手法を用いるアドレス管理では、以下のような問題があった。
【００１５】
まず、プロセスの生成時は物理メモリが割り当てられないために、ページテーブルの内容が全て無効状態となっている。そして、プロセスの実行時にメモリアクセスが行われてページテーブル例外エラーが発生し、このページテーブル例外エラーのハンドラにより物理メモリを獲得してページテーブルの内容が作成される。
【００１６】
したがって、物理メモリに余裕がある場合でもメモリアクセスの際に一定のオーバーヘッドが発生してしまうという問題があった。このオーバーヘッドは、画像形成処理のような大量のメモリを使用する情報処理のプロセスの実行時に問題となる。
【００１７】
また、仮想メモリに対応する物理メモリのアドレスは、物理メモリの柔軟な管理を行うため、ページテーブルによりページ単位で設定される。したがって、連続した仮想アドレスに書き込んだデータはページ単位に分割されて不連続な物理アドレスに書き込まれてしまう恐れがあり、ダイレクト・メモリ・アクセス（以下、ＤＭＡという）を利用したデバイスとのデータ交換が煩雑になることがあるという問題があった。
【００１８】
なお、特許文献１および２に記載されている内容は、メモリアクセスの際に発生するオーバーヘッドを軽減するものではない。
【００１９】
本発明は、上記の点に鑑みなされたもので、メモリアクセスの際に発生するオーバーヘッドを軽減しつつメモリの使用効率を向上させることが可能な情報処理装置及びメモリ管理方法を提供することを目的とする。
【００２０】
【課題を解決するための手段】
そこで、上記課題を解決するため、本発明は、情報処理を行うためのハードウェア資源と、オペレーティングシステムと、前記オペレーティングシステム上で動作し、情報処理装置に情報処理を行わせるための複数のアプリケーションと、前記オペレーティングシステム上で動作し、情報処理装置に前記複数のアプリケーションからの処理要求を前記オペレーティングシステム経由で受信可能にさせ、該処理要求に従って前記ハードウェア資源の制御を行わせるためのデバイスドライバとを有する情報処理装置であって、書き換え可能メモリ上の前記オペレーティングシステムによって管理される領域以外の物理領域に、前記アプリケーション及びデバイスドライバによって直接マップ可能な直接マップ領域を獲得すると共に、前記直接マップ領域の物理アドレスに対応する仮想メモリ領域上に含まれる直接マップ領域用の仮想アドレスを設定する領域獲得手段と、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたアドレス変換手段とを有することを特徴とする。
【００２１】
また、本発明は、情報処理を行うためのハードウェア資源と、オペレーティングシステムと、前記オペレーティングシステム上で動作し、情報処理装置に情報処理を行わせるための複数のアプリケーションと、前記オペレーティングシステム上で動作し、情報処理装置に前記複数のアプリケーションからの処理要求を前記オペレーティングシステム経由で受信可能にさせ、該処理要求に従って前記ハードウェア資源の制御を行わせるためのデバイスドライバとを有する情報処理装置のメモリ管理方法であって、書き換え可能メモリ上の前記オペレーティングシステムによって管理される領域以外の物理領域に、前記アプリケーション及びデバイスドライバによって直接マップ可能な直接マップ領域を獲得すると共に、前記直接マップ領域の物理アドレスに対応する仮想メモリ領域上に含まれる直接マップ領域用の仮想アドレスを設定する領域獲得段階と、前記直接マップ領域の物理アドレスと、前記直接マップ領域用の仮想アドレスとを対応付けたアドレス変換段階とを有することを特徴とする。
【００６４】
【発明の実施の形態】
次に、本発明の実施の形態について図面に基づいて説明する。
【００６５】
図１は、本発明による情報処理装置の一実施例の構成図である。情報処理装置１０００は、ハードウェア資源１１００と，ソフトウェア群１２００とを含むように構成される。
【００６６】
ハードウェア資源１１００は、メモリ装置１１１０，入力装置１１２０，表示装置１１３０，その他のハードウェアリソース１１４０等を含む。ソフトウェア群１２００は、アプリケーション１２１０−１〜１２１０−ｎ，ＵＮＩＸ（登録商標）などのＯＳ１２３０，ＢＩＯＳ１２４０，デバイスドライバ１２５０等を含む。
【００６７】
情報処理装置１０００は、電源投入時にＯＳ１２３０のプログラムを補助記憶装置から読み出し、読み出したプログラムをメモリ装置１１１０に転送して起動する。また、情報処理装置１０００は電源投入時またはオペレータからの起動指示によりアプリケーション１２１０−１〜１２１０−ｎのプログラムを補助記憶装置から読み出し、読み出したプログラムをメモリ装置１１１０に転送して起動する。
【００６８】
アプリケーション１２１０−１〜１２１０−ｎは、情報処理装置１０００に様々な情報処理を行わせるものである。ＢＩＯＳ１２４０は、ハードウェア資源１１００を制御するプログラムである。また、デバイスドライバ１２５０はハードウェア資源１１００に含まれる周辺機器等を管理するプログラムである。
【００６９】
０Ｓ１２３０は、ＡＰＩ（Application Program Interface ）１２２０を利用してアプリケーション１２１０−１〜１２１０−ｎからの要求を受信する。ＡＰＩ１２２０は予め定義されている関数により、アプリケーション１２１０−１〜１２１０−ｎからの要求を受信するために利用される。
【００７０】
ＯＳ１２３０は、アプリケーション１２１０−１〜１２１０−ｎの各ソフトウェアをプロセスとして並列制御する。また、ＯＳ１２３０はＢＩＯＳ１２４０，デバイスドライバ１２５０を利用してハードウェア資源１１００に対する要求を行う。
【００７１】
次に、情報処理装置１０００のハードウェア構成について説明する。図２は、本発明による情報処理装置の一実施例のハードウェア構成図である。情報処理装置１０００は、それぞれバスＢで相互に接続されている入力装置１５１０，表示装置１５２０，補助記憶装置１５３０，メモリ装置１５４０および演算処理装置１５５０を有するように構成される。
【００７２】
入力装置１５１０はキーボード及びマウスなどで構成され、様々な操作指示を入力するために用いられる。表示装置１５２０は、操作に必要な各種ウインドウやデータ等を表示する。補助記憶装置１５３０は、情報処理装置１０００に係る処理を行わせるプログラムを格納すると共に、そのプログラムの処理に必要な各種ファイルやデータ等を格納している。
【００７３】
メモリ装置１５４０は、情報処理装置１０００の起動時に補助記憶装置１５３０からプログラムを読み出して格納する。演算処理装置１５５０は、メモリ装置１５４０に格納されたプログラムに従って処理を実行する。
【００７４】
次に、本発明による情報処理装置の応用例としての画像形成装置について説明する。なお、本実施例で説明する画像形成装置は、プリンタ，コピー，ファクシミリおよびスキャナ等の各装置の機能を１つの筐体内に収納しているため、融合機とも呼ばれる。
【００７５】
図３は、本発明による融合機の一実施例の構成図を示す。融合機１は、ハードウェア資源１０と，ソフトウェア群２０と，融合機起動部５０とを含むように構成される。ハードウェア資源１０は、白黒レーザプリンタ１１と，カラーレーザプリンタ１２と，スキャナやファクシミリなどのハードウェアリソース１３とを有する。また、ソフトウェア群２０は、ＵＮＩＸ（登録商標）などのオペレーティングシステム（以下、ＯＳという）上に起動されているアプリケーション３０とプラットフォーム４０とを有する。
【００７６】
プラットフォーム４０は、アプリケーション３０からの処理要求を解釈してハードウェア資源１０の獲得要求を発生するコントロールサービス５１と、１つ以上のハードウェア資源１０の管理を行ってコントロールサービス５１からの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）４３と、ＳＲＭ４３からの獲得要求に応じてハードウェア資源１０の管理を行うハンドラ層５２とを有するように構成されている。
【００７７】
コントロールサービス５１は、システムコントロールサービス（以下、ＳＣＳという）４２，エンジンコントロールサービス（以下、ＥＣＳという）４４，メモリコントロールサービス（以下、ＭＣＳという）４５，オペレーションパネルコントロールサービス（以下、ＯＣＳという）４６，ファックスコントロールサービス（以下、ＦＣＳという）４７，ネットワークコントロールサービス（以下、ＮＣＳという）４８，など一つ以上のサービスモジュールを有するように構成されている。
【００７８】
なお、プラットフォーム４０は予め定義されている関数によりアプリケーション３０からの処理要求を受信可能とするアプリケーションプログラムインターフェース（以下、ＡＰＩという）５３を有するように構成されている。ＯＳは、プラットフォーム４０およびアプリケーション３０の各ソフトウェアをプロセスとして並列実行する。
【００７９】
ＳＲＭ４３のプロセスは、ＳＣＳ４２と共にシステムの制御およびリソースの管理を行うものである。例えばＳＲＭ４３のプロセスは、スキャナ部やプリンタ部などのエンジン，メモリ，ＨＤＤファイル，ホストＩ／Ｏ（セントロＩ／Ｆ，ネットワークＩ／Ｆ，ＩＥＥＥ１３９４  Ｉ／Ｆ，ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源１０を利用する上位層からの要求に従って調停を行い、実行制御する。
【００８０】
具体的に、ＳＲＭ４３は要求されたハードウェア資源１０が利用可能であるか（他の要求により利用されていないかどうか）を判定し、利用可能であれば要求されたハードウェア資源１０が利用可能である旨を上位層に通知する。また、ＳＲＭ４３は上位層からの要求に対してハードウェア資源１０の利用スケジューリングを行い、例えばプリンタエンジンによる紙搬送と作像動作，メモリ獲得，ファイル生成などの要求内容を直接実施している。
【００８１】
ＳＣＳ４２のプロセスは、アプリケーション管理，操作部制御，システム画面表示，ＬＥＤ表示，リソース管理，割り込みアプリケーション制御を行う。ＥＣＳ４４のプロセスは、白黒レーザプリンタ１１，カラーレーザプリンタ１２，その他のハードウェアリソース１３のエンジンの制御を行う。
【００８２】
ＭＣＳ４５のプロセスは、画像メモリの取得および解放，ハードディスク装置（ＨＤＤ）の利用，画像データの圧縮および伸張などを行う。ＯＣＳ４６のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。
【００８３】
ＦＣＳ４７のプロセスは、システムコントローラの各アプリケーション層からＰＳＴＮまたはＩＳＤＮ網を利用したファクシミリ送受信，ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用，ファクシミリ読み取り，ファクシミリ受信印刷，融合送受信を行うためのアプリケーションを提供する。
【００８４】
ＮＣＳ４８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーション３０に対し、共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーション３０に振り分けたり、アプリケーション３０からのデータをネットワーク側に送信する際の仲介を行う。
【００８５】
また、ハンドラ層５２は後述するファックスコントロールユニット（以下、ＦＣＵという）の管理を行うファックスコントロールユニットハンドラ（以下、ＦＣＵＨという）５４と、各プロセスに対するメモリの割り振り、各プロセスに割り振ったメモリの管理，後述する直接マップ領域の管理などを行うイメージメモリハンドラ（以下、ＩＭＨという）５５とを含む。
【００８６】
ＳＲＭ４３，ＦＣＵＨ５４およびＩＭＨ５５は、予め定義されている関数によりハードウェア資源１０に対する処理要求を送信するエンジンＩ／Ｆ５６を利用してハードウェア資源１０に対する処理要求を行う。
【００８７】
また、アプリケーション３０は、プリンタ，コピー，ファクシミリ，スキャナなどの画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うものである。
【００８８】
アプリケーション３０は、ページ記述言語（ＰＤＬ，ＰＣＬ）およびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ３１と，コピー用アプリケーションであるコピーアプリ３２と，ファクシミリ用アプリケーションであるファックスアプリ３３と，スキャナ用アプリケーションであるスキャナアプリ３４とを有している。
【００８９】
図４は、本発明による融合機の一実施例のハードウェア構成図を示す。図４の融合機１は、コントローラ６０と，オペレーションパネル７０と，ファックスコントロールユニット（以下、ＦＣＵという）８０と，ＵＳＢデバイス９０と，ＩＥＥＥ１３９４デバイス１００と，エンジン部１１０とを有する。
【００９０】
また、コントローラ６０は、ＣＰＵ６１と，ＭＥＭ−Ｐ６２と，ノースブリッジ（以下、ＮＢという）６３と，サウスブリッジ（以下、ＳＢという）６４と，ＡＳＩＣ６６と，ＭＥＭ−Ｃ６７と，ＨＤＤ６８と，ネットワークＩ／Ｆコントローラ６９とを有する。
【００９１】
オペレーションパネル７０は、コントローラ６０のＡＳＩＣ６６に直接接続されている。また、ＦＣＵ８０，ＵＳＢデバイス９０，ＩＥＥＥ１３９４デバイス１００およびエンジン部１１０は、コントローラ６０のＡＳＩＣ６６にＰＣＩバスなどで接続されている。
【００９２】
コントローラ６０は、ＡＳＩＣ６６にＭＥＭ−Ｃ６７，ＨＤＤ６８，ネットワークＩ／Ｆコントローラ６９などが接続されると共に、ＣＰＵ６１とＡＳＩＣ６６とがＣＰＵチップセットのＮＢ６３を介して接続されている。このように、ＮＢ６３を介してＣＰＵ６１とＡＳＩＣ６６とを接続すれば、ＣＰＵ６１のインターフェースが公開されていない場合に対応できる。
【００９３】
ここで、ＡＳＩＣ６６とＮＢ６３とはＰＣＩバスを介して接続されているのでなく、ＡＧＰ（Accelerated Graphics Port ）６５を介して接続されている。このように、図３のプラットフォーム４０やアプリケーション３０を形成する一つ以上のプロセスを実行制御するため、ＡＳＩＣ６６とＮＢ６３とを低速のＰＣＩバスでなくＡＧＰ６５を介して接続し、パフォーマンスの低下を防いでいる。
【００９４】
ＣＰＵ６１は、融合機１の全体制御を行うものである。ＣＰＵ６１は、ＯＳ上でプラットフォーム４０を形成するＳＣＳ４２，ＳＲＭ４３，ＥＣＳ４４，ＭＣＳ４５，ＯＣＳ４６，ＦＣＳ４７，ＮＣＳ４８，ＦＣＵＨ５４およびＩＭＨ５５をそれぞれプロセスとして起動して実行させると共に、アプリケーション３０を形成するプリンタアプリ３１，コピーアプリ３２，ファックスアプリ３３，スキャナアプリ３４を起動して実行させる。なお、ＣＰＵ６１はページテーブルの自動参照機能を持っている。
【００９５】
ＮＢ６３は、ＣＰＵ６１，ＭＥＭ−Ｐ６２，ＳＢ６４およびＡＳＩＣ６６を接続するためのブリッジである。ＭＥＭ−Ｐ６２は、融合機１の描画用メモリなどとして用いるシステムメモリである。ＳＢ６４は、ＮＢ６３とＲＯＭ，ＰＣＩバス，周辺デバイスとを接続するためのブリッジである。
【００９６】
ＭＥＭ−Ｃ６７は、コピー用画像バッファ，符号バッファとして用いるローカルメモリである。ＡＳＩＣ６６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＨＤＤ６８は、画像データの蓄積，プログラムの蓄積，フォントデータの蓄積，フォームの蓄積を行うためのストレージである。また、オペレーションパネル７０は、オペレータからの入力操作を受け付けると共に、オペレータに向けた表示を行う操作部である。
【００９７】
図３の融合機起動部５０は、融合機１の電源投入時に最初に実行され、プラットフォーム４０やアプリケーション３０を起動するものである。図５は、融合機起動部の一例の構成図を示す。融合機起動部５０は、ＲＯＭモニタ１２１と，プログラム起動部１２２とを有する。
【００９８】
ＲＯＭモニタ１２１は電源投入時に実行され、ハードウェアの初期化，コントローラボードの診断，ソフトウェアの初期化，ＯＳの起動などを行う。プログラム起動部１２２はＯＳから呼び出されるものであり、ＭＥＭ−Ｐ６２，ＭＥＭ−Ｃ６７上にメモリ領域を獲得する。そして、プログラム起動部１２２は、コントロールサービス５１やアプリケーション３０のプログラムをＲＯＭから読み出し、読み出した各プログラムをＭＥＭ−Ｐ６２，ＭＥＭ−Ｃ６７上に獲得したメモリ領域に転送して起動するものである。
【００９９】
以下、本発明による情報処理装置の応用例としての融合機の処理を中心に説明する。図６は、融合機におけるメモリ管理の一例について説明する図を示す。
【０１００】
例えばＭＥＭ−Ｐ６２およびＭＥＭ−Ｃ６７のメモリマップは、図６（ｂ）のように表される。ＭＥＭ−Ｐ６２およびＭＥＭ−Ｃ６７は、例えばＯＳなどが使用するカーネル領域と，各種アプリケーション３０や各種コントロールサービス５１が使用する汎用領域と，後述する直接マップ領域とが獲得される。なお、カーネル領域および汎用領域は、ＯＳにより管理される。
【０１０１】
また、仮想メモリ領域のメモリマップは、図６（ａ）のように表される。仮想メモリ領域は、ユーザプログラム領域と，後述する直接マップ領域と，スタック領域とが獲得される。仮想メモリ領域は、プリンタアプリ３１，コピーアプリ３２などのアプリケーション３０のプロセスごと、およびＥＣＳ４４，ＭＣＳ４５などのコントロールサービス５１のプロセスごとに割り当てられる。
【０１０２】
なお、ユーザプログラム領域およびスタック領域は、仮想記憶システムにより管理される。したがって、ユーザプログラム領域およびスタック領域に対するページテーブルの内容は、仮想記憶システムによって作成または変更される。
【０１０３】
まず、ページテーブルの自動参照機能を持ったプロセッサを利用する第１実施例について説明する。図７は、ページアクセス処理の一例のフローチャートを示す。ここでは、ページテーブルの内容が無効状態となっている場合のページアクセス処理について説明する。
【０１０４】
新しいページへのアクセスがあると、ＣＰＵ６１はステップＳ１０に進み、アクセスするページの仮想アドレスがページテーブル内に登録されているか否かを判定する。ページテーブルの内容が無効状態となっている場合、ＣＰＵ６１はアクセスするページの仮想アドレスがページテーブル内に登録されていないと判定し（Ｓ１１においてＮＯ）、ステップＳ１３に進む。
【０１０５】
ステップＳ１３では、アクセスするページの仮想アドレスがページテーブル内に登録されていないと判定されたためにページテーブル例外エラーが発生する。ステップＳ１３に続いてステップＳ１４に進み、ＣＰＵ６１はページテーブル例外エラーが発生した仮想アドレスを取得する。
【０１０６】
ステップＳ１４に続いてステップＳ１５に進み、仮想記憶システムはステップＳ１４で取得された仮想アドレスがメモリにマップされている範囲内であるか否かを判定する。取得された仮想アドレスがメモリにマップされている範囲内であると判定すると（Ｓ１６においてＹＥＳ）、仮想記憶システムはステップＳ１８に進み、１ページ分の物理メモリを獲得する。なお、取得した仮想アドレスがメモリにマップされている範囲内でないと判定すると（Ｓ１６においてＮＯ）、仮想記憶システムはステップＳ１７に進み、プロセスに不正アドレスアクセスエラーを通知する。
【０１０７】
ステップＳ１８に続いてステップＳ１９に進み、仮想記憶システムはステップＳ１８で獲得した物理メモリのアドレスをページテーブルに登録することでページテーブルの内容を作成する。ステップＳ２０に続いてステップＳ１０に進み、ＣＰＵ６１はアクセスするページの仮想アドレスがページテーブル内に登録されているか否かを判定する。
【０１０８】
ステップＳ１９でページテーブルの内容を作成しているため、ＣＰＵ６１はアクセスするページの仮想アドレスがページテーブル内に登録されていると判定し（Ｓ１１においてＹＥＳ）、ステップＳ１２に進む。そして、ステップＳ１２では、ページテーブル例外エラーが発生せず、新しいページへのアクセスが成功することとなる。このようなページアクセス処理では、物理メモリに余裕がある場合でもメモリアクセスの際に一定のオーバーヘッドが発生してしまう。
【０１０９】
そこで、本発明では仮想メモリ領域に直接マップ領域を作成し、この直接マップ領域に対応するページテーブルの内容をプロセス生成時またはユーザプロセス実行時のシステムコールの発行により作成するようにした。図８は、直接マップ領域の一例のメモリマップを示す。図８に表されるように、直接マップ領域は、プリンタアプリ３１，コピーアプリ３２などのアプリケーションのプロセス、ＥＣＳ４４，ＭＣＳ４５などのコントロールサービスのプロセスごとに割り当てられる。
【０１１０】
なお、本発明では仮想記憶システムの起動時に、物理メモリの仮想メモリ領域以外の未使用領域を直接マップ領域として獲得する。したがって、直接マップ領域に対応するページテーブルの内容は、仮想記憶システムによって作成または変更されない。
【０１１１】
図９は、直接マップ領域に対するメモリ管理方法について説明するための図を示す。なお、図９では説明に関係のない構成を適宜省略している。
【０１１２】
カーネルは、仮想記憶へのアクセスを処理する仮想記憶処理部１３３と、仮想記憶の使用領域を、ページテーブルを用いてページ毎に管理するページテーブル管理部１３４と、仮想記憶へのアクセスの例外処理を行う例外処理部１３５とを有している。なお、仮想記憶処理部１３３，ページテーブル管理部１３４及び例外処理部１３５が仮想記憶システムを構成する。
【０１１３】
ＯＳ内の直接マップ領域獲得部１３１は、仮想記憶システムの起動時に物理メモリの直接マップ領域に対応した仮想メモリ領域上に含まれる直接マップ領域用の仮装アドレスを設定する。また、メモリマップ部１３２はプロセスの生成時またはユーザプロセス実行時のシステムコールの発行時に、ＩＭＨ５５からの指示に応じてプロセス用のメモリを直接マップ領域にマップする。言い換えれば、メモリマップ部１３２は直接マップ領域の物理アドレスと、仮想メモリ領域上に含まれる直接マップ領域用の仮装アドレスとを関連付けるように、ページテーブル管理部１３４が管理するページテーブルの内容を書き換える。
【０１１４】
なお、直接マップ領域獲得部１３１は特許請求の範囲に記載した領域獲得手段に相当する。ページテーブル管理部１３４の管理するページテーブルは特許請求の範囲に記載したアドレス変換手段に相当する。メモリマップ部１３２は特許請求の範囲に記載したアドレス書換手段に相当する。
【０１１５】
ここで、図７を利用して直接マップ領域に対するページアクセス処理について説明する。直接マップ領域に含まれるページへのアクセスがあると、ＣＰＵ６１はステップＳ１０に進み、アクセスするページの仮想アドレスがページテーブル内に登録されているか否かを判定する。
【０１１６】
直接マップ領域に対応するページテーブルの内容はプロセス生成時またはユーザプロセス実行時のシステムコールの発行により既に作成されているため、ＣＰＵ６１はアクセスするページの仮想アドレスがページテーブル内に登録されていると判定し（Ｓ１１においてＹＥＳ）、ステップＳ１２に進む。そして、ステップＳ１２では、ページテーブル例外エラーが発生せず、直接マップ領域に含まれるページへのアクセスが成功することとなる。
【０１１７】
つまり、ページテーブルの自動参照機能を持ったプロセッサが直接マップ領域に含まれるページにアクセスした場合、ページテーブル例外エラーが発生せず、プロセッサにより自動的にページテーブルが参照されて仮想アドレスから物理アドレスへの変換が行われる。
【０１１８】
したがって、仮想記憶システムは直接マップ領域に対するアクセスが起こったことを知ることがなく、仮想メモリ領域を管理するための処理も行わない。このようなページアクセス処理では、仮想記憶システムによるオーバーヘッドが発生することなく、ページにアクセスすることが可能となる。
【０１１９】
第１実施例では、仮想メモリ領域のユーザプログラム領域とスタック領域との間であって、仮想記憶システムが使用していないユーザアドレス空間を直接マップ領域として利用している。通常、仮想メモリ領域に含まれるユーザアドレス空間は実際に使用されるアドレス空間に比べて十分に大きいため、仮想記憶システムが使用していないユーザアドレス空間を直接マップ領域として利用しても問題ない。
【０１２０】
次に、ページテーブルの自動参照機能を持たず、ＴＬＢによるアドレス変換機能を持ったプロセッサを利用する第２実施例について説明する。
【０１２１】
ＣＰＵ６１のキャッシュメモリには、ＣＰＵ６１によって管理されるＴＬＢが設けられている。ＴＬＢは、プロセスごとに仮装アドレスと物理アドレスとを対応付けて保持しており、プロセスが仮装アドレスを指定してメモリにアクセスしようとしたときに、指定された仮装アドレスを物理アドレスに変換するものである。このＴＬＢは、仮装アドレスと物理アドレスとの組を所定数（例えば、４８個，６４個など）だけ保持している。
図１０は、ＴＬＢと各プロセスのページテーブルとの関係について説明するための図を示す。図１０に表したように、各ページテーブルは各プロセス独自の仮装アドレスを使用しており、その仮装アドレスに対応する物理アドレスを管理している。また、ＴＬＢは各プロセスがアクセスした仮装アドレスと、その仮装アドレスに対応する物理アドレスとをプロセスＩＤ（以下、ＰＩＤという）ごとに保持している。
【０１２２】
例えばプリンタアプリ３１のプロセスが仮装アドレス１１００番地に対してアクセスすると、ＣＰＵ６１はプリンタアプリ３１のＰＩＤの中から仮装アドレス１１００番地を検索し、プリンタアプリ３１の仮装アドレス１１００番地に対応する物理アドレス１３０番地を使用する。
【０１２３】
一方、プリンタアプリ３１のプロセスが仮装アドレス１０００番地に対してアクセスすると、ＣＰＵ６１はプリンタアプリ３１のＰＩＤの中から仮装アドレス１０００番地を検索する。しかし、図１０のＴＬＢにはプリンタアプリ３１の仮装アドレス１０００番地が登録されていない。このためにＴＬＢ例外エラーが発生し、ＣＰＵ６１はプリンタアプリ３１のページテーブルを参照する。そして、プリンタアプリ３１の仮装アドレス１０００番地に対応する物理アドレス３０番地を取得して、ＴＬＢに「ＰＩＤ：プリンタアプリ，物理アドレス：３０番地，仮装アドレス：１０００番地」のエントリを追加する。
【０１２４】
しかし、ＴＬＢが保持できるエントリの数はプロセッサにより決まっているため、新たにエントリを追加するときに以前のエントリが上書きされる場合が生じる。このように、ＴＬＢのエントリは上書きされて内容が変わってしまう場合があるが、頻繁に使用する重要なエントリを固定的な使用のために上書きから保護する機能がある。
【０１２５】
図１１は、ＴＬＢの一例の構成図を示す。図１１のＴＬＢでは、所定数のエントリを上書きの対象とならない固定的に使用されるエントリとし、残りのエントリを上書きの対象となる動的に使用されるエントリとしている。固定的に使用されるエントリを利用することにより、重要なエントリが上書きの対象とならないように保護することができる。
【０１２６】
そこで、本発明では第１実施例と同様に、仮想メモリ領域に直接マップ領域を作成し、直接マップ領域の仮想アドレス及びその仮想アドレスに対応する物理アドレスをプロセス生成時またはユーザプロセス実行時のシステムコールの発行により図１１の固定的に使用されるエントリに書き込むようにした。なお、本発明では仮想記憶システムの起動時に、物理メモリの仮想メモリ領域以外の未使用領域を直接マップ領域として獲得する。したがって、直接マップ領域に対するＴＬＢの内容は、仮想記憶システムによって作成または変更されない。
【０１２７】
なお、第２実施例の場合、図８のメモリマップ部１３２は直接マップ領域の物理アドレスと、仮想メモリ領域上に含まれる直接マップ領域用の仮装アドレスとを関連付けるように、ＣＰＵ６１が管理するＴＬＢの固定的に使用されるエントリに書き込む。
【０１２８】
この状態で直接マップ領域に含まれるページへのアクセスがあると、ＴＬＢに対する仮装アドレスの検索は必ずヒットし、ＣＰＵ６１は仮装アドレスに対応する物理アドレスを取得することができる。このように、ＴＬＢ例外エラーが発生しないため、仮想記憶システムは直接マップ領域に対するアクセスが起こったことを知ることがなく、仮想メモリ領域を管理するための処理も行わない。したがって、仮想記憶システムによるオーバーヘッドが発生することなく、ページにアクセスすることが可能となる。
【０１２９】
第２実施例では、仮想メモリ領域のユーザプログラム領域とスタック領域との間であって、仮想記憶システムが使用していないユーザアドレス空間を直接マップ領域として利用している。通常、仮想メモリ領域に含まれるユーザアドレス空間は実際にしようされるアドレス空間に比べて十分に大きいため、仮想記憶システムが使用していないユーザアドレス空間を直接マップ領域として利用しても問題ない。
【０１３０】
また、１つのエントリで指定できるアドレス範囲には制限があるため、その制限を越えたアドレス範囲を直接マップ領域として使用する場合には複数のエントリをＴＬＢの固定的に使用されるエントリに書き込んでおく必要がある。
【０１３１】
前述の第１実施例および第２実施例は、ハードウェアによるサポートを直接に利用して図６のような直接マップ領域を実現している。そこで、本発明の融合機１は直接マップ領域の仮想アドレスに対する物理アドレスが連続するようにページテーブルまたはＴＬＢを作成することにより、仮想アドレス空間でアドレスが連続している領域を物理メモリ上でもアドレスが連続しているように対応付けることが可能である。
【０１３２】
通常、デバイスが行うＤＭＡによるデータ交換は、物理アドレス空間で行われている。したがって、仮想アドレス空間で作成したデータをＤＭＡによりデバイスに転送する場合に、物理メモリ上でもアドレスが連続しているという保証があれば、一度のＤＭＡにより大量のデータをデバイスに転送することができる。
【０１３３】
また、本発明の融合機１は複数のプロセスでデータを共有する場合に、メモリを共有することが可能となる。図１２は、複数のプロセスによりメモリを共有するときの一例のメモリマップを示す。
【０１３４】
図１２のメモリマップでは、プロセスＡの仮想メモリ領域に含まれる領域ａとプロセスＢの仮想メモリ領域に含まれる領域ｂとが同じ物理メモリ領域を使用するように、領域ａおよび領域ｂに対応するページテーブルまたはＴＬＢの内容が書き換えられている。したがって、プロセスＡおよびプロセスＢは仮想記憶システムによるオーバーヘッドがほとんど発生することなく、物理メモリ領域を共有することができる。
【０１３５】
例えば図１２のメモリマップを利用して複数のプロセスでメモリを共有する処理を図１３を参照しつつ説明する。図１３は、複数のプロセスによりメモリを共有するときの一例のシーケンス図を示す。
【０１３６】
図１３中、ステップＳ３０ではプロセスＡがＩＭＨ４９に対して仮想メモリ領域ａの獲得を要求する。ステップＳ３０に続いてステップＳ３１に進み、ＩＭＨ４９はプロセスＡからの要求に応じて物理メモリ領域を獲得し、獲得した物理メモリ領域に対応する仮装アドレスＡをプロセスＡに通知する。例えばプロセスＡは画像を作成し、作成した画像を獲得した仮装アドレスＡに書き込む。
【０１３７】
ステップＳ３１に続いてステップＳ３２に進み、プロセスＡは画像を書き込んだ仮装アドレスＡをプロセス間通信によりプロセスＢに通知する。なお、プロセスＡの仮想メモリ領域に含まれる領域ａとプロセスＢの仮想メモリ領域に含まれる領域ｂとが同じ物理メモリ領域を使用するように、領域ａおよび領域ｂに対応するページテーブルまたはＴＬＢの内容が書き換えられている
したがって、プロセスＢはプロセスＡから通知された仮装アドレスＡから画像を読み出し、読み出した画像を例えばプリンタに出力できる。ステップＳ３２に続いてステップＳ３３に進み、プロセスＢは画像を読み込んでプリンタに出力した旨をプロセス間通信によりプロセスＡに通知する。ステップＳ３３に続いてステップＳ３４に進み、プロセスＡはＩＭＨ４９に対して物理アドレスの解放を要求して処理を終了する。
【０１３８】
本実施例では、融合機１の処理を中心に説明したが、図１及び図２に示した情報処理装置１０００に応用が容易に可能である。情報処理装置１０００では、図８のＩＭＨ５５に代わり、アプリケーション１２１０−１〜１２１０−ｎ，その他のプログラムが、プロセスの生成時などにメモリマップ部１３２に指示を出すこととなる。
【０１３９】
【発明の効果】
上述の如く、本発明によれば、メモリアクセスのときに例外エラーがほとんど発生しないため、直接マップ領域に対するメモリアクセスのオーバーヘッドを軽減することが可能である。
【０１４０】
また、本発明によれば、仮想メモリ領域上に含まれる直接マップ領域用の仮装アドレスで連続している領域を、直接マップ領域の連続した物理アドレスに割り当てることができるため、ダイレクト・メモリ・アクセスを利用したデバイスとのデータ交換が煩雑にならず、一度のダイレクト・メモリ・アクセスにより大量のデータを転送することが可能となる。
【０１４１】
また、本発明によれば、複数のプロセスが直接マップ領域を共有するように直接マップ領域の物理アドレスと仮想メモリ領域上に含まれる直接マップ領域用の仮装アドレスとを対応付けておくことができるため、複数のプロセスでメモリを共有することが可能となる。
【０１４２】
【図面の簡単な説明】
【図１】本発明による情報処理装置の一実施例の構成図である。
【図２】本発明による情報処理装置の一実施例のハードウェア構成図である。
【図３】本発明による融合機の一実施例の構成図である。
【図４】本発明による融合機の一実施例のハードウェア構成図である。
【図５】融合機起動部の一例の構成図である。
【図６】融合機におけるメモリ管理の一例について説明する図である。
【図７】ページアクセス処理の一例のフローチャートである。
【図８】直接マップ領域の一例のメモリマップである。
【図９】直接マップ領域に対するメモリ管理方法について説明するための図である。
【図１０】ＴＬＢと各プロセスのページテーブルとの関係について説明するための図である。
【図１１】ＴＬＢの一例の構成図である。
【図１２】複数のプロセスによりメモリを共有するときの一例のメモリマップである。
【図１３】複数のプロセスによりメモリを共有するときの一例のシーケンス図である。
【符号の説明】
１    融合機
１０，１１００    ハードウェア資源
１１    白黒レーザプリンタ
１２    カラーレーザプリンタ
１３，１１４０    ハードウェアリソース
２０，１２００    ソフトウェア群
３０，１２１０−１〜１２１０−ｎ    アプリケーション
４０    プラットフォーム
４２    システムコントロールサービス（ＳＣＳ）
４３    システムリソースマネージャ（ＳＲＭ）
４４    エンジンコントロールサービス（ＥＣＳ）
４５    メモリコントロールサービス（ＭＣＳ）
４６    オペレーションパネルコントロールサービス（ＯＣＳ）
４７    ファックスコントロールサービス（ＦＣＳ）
４８    ネットワークコントロールサービス（ＮＣＳ）
５０    融合機起動部
５１    コントロールサービス
５２    ハンドラ層
５３，１２２０    アプリケーションプログラムインターフェース（ＡＰＩ）
５４    ファックスコントロールユニットハンドラ（ＦＣＵＨ）
５５    イメージメモリハンドラ（ＩＭＨ）
５６    エンジンＩ／Ｆ
６０    コントローラ
６１    ＣＰＵ
６２    システムメモリ（ＭＥＭ−Ｐ）
６３    ノースブリッジ（ＮＢ）
６４    サウスブリッジ（ＳＢ）
６５    ＡＧＰ（Accelerated Graphics Port）
６６    ＡＳＩＣ
６７    ローカルメモリ（ＭＥＭ−Ｃ）
６８    ハードディスク装置（ＨＤＤ）
６９    ネットワークＩ／Ｆコントローラ
７０    オペレーションパネル
８０    ファックスコントロールユニット（ＦＣＵ）
９０    ＵＳＢデバイス
１００    ＩＥＥＥ１３９４デバイス
１１０    エンジン部
１２１    ＲＯＭモニタ
１２２    プログラム起動部
１３１    直接マップ領域獲得部
１３２    メモリマップ部
１３３    仮想記憶処理部
１３４    ページテーブル管理部
１３５    例外処理部
１０００    情報処理装置
１１１０    メモリ装置
１１２０    入力装置
１１３０    表示装置
１２３０    オペレーティングシステム（ＯＳ）
１２４０    ＢＩＯＳ
１２５０    デバイスドライバ
【図１】
0004263920.tif 000002
【図２】
0004263920.tif 000003
【図３】
0004263920.tif 000004
【図４】
0004263920.tif 000005
【図５】
0004263920.tif 000006
【図６】
0004263920.tif 000007
【図７】
0004263920.tif 000008
【図８】
0004263920.tif 000009
【図９】
0004263920.tif 000010
【図１０】
0004263920.tif 000011
【図１１】
0004263920.tif 000012
【図１２】
0004263920.tif 000013
【図１３】
0004263920.tif 000014