(57)【特許請求の範囲】
【請求項１】
画像形成処理を行うアプリケーションのプロセスと、画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスのプロセスとにメモリをマップする画像形成装置であって、
上記プロセスの仮想メモリ領域から上記メモリ上へ直接マップ可能であって、プロセッサーによる直接アクセスを可能とする第一直接マップ領域を上記メモリ上に獲得する第一マップ領域獲得手段と、
上記第一マップ領域獲得手段によって獲得した上記第一直接マップ領域の所定第一領域を示す物理アドレスをページディレクトリエントリに設定することによって、上記プロセスの仮想メモリ領域から該所定第一領域へ直接マップする第一マップ手段と、
上記プロセスが該プロセスの仮想メモリ領域から上記メモリ上への直接マップを可能とする第二マップ領域を上記メモリ上に獲得する第二マップ領域獲得手段と、
上記プロセスによるシステムコールによって、上記第二マップ領域獲得手段によって獲得した上記第二直接マップ領域の所定第二領域を示す物理アドレスをページテーブルエントリに設定することによって、該プロセスの仮想メモリ領域から該所定第二領域へ直接マップする第二マップ手段と
を有し、上記第一所定ページ長単位は、上記第二所定ページ長単位より大きいことを特徴とする画像形成装置。
【請求項２】
請求項１記載の画像形成装置であって、
上記第二マップ手段は、システムコールによって、オペレーティングシステムが有する上記プロセスの仮想メモリ領域から上記第二直接マップ領域の所定第二領域へマップするマップ処理手段を直接起動することを特徴とする画像形成装置。
【請求項３】
請求項１又は２記載の画像形成装置であって、
上記第一マップ手段は、上記プロセスに対して、上記第一直接マップ領域を、第一所定ページ長単位で、該プロセスの仮想メモリ領域からマップし、
上記第二マップ手段は、上記プロセスに対して、上記第二マップ領域を、第二所定ページ長単位で、該プロセスの仮想メモリ領域からマップすることを特徴とする画像形成装置。
【請求項４】
請求項３記載の画像形成装置であって、
オペレーティングシステム起動時に、上記第一所定ページ長単位をサポートしているか否かを判断するページ単位判断手段を有し、
上記ページ単位判断手段による判断結果に基づいて、上記第一マップ領域獲得手段と、上記第一マップ手段と、上記第二マップ領域獲得手段と、上記第二マップ手段とを有効とする画像形成装置。
【請求項５】
請求項１乃至４のいずれか一項記載の画像形成装置であって、上記メモリは、描画用として使用されることを特徴とする画像形成装置。
【請求項６】
画像形成処理を行うアプリケーションのプロセスと、画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスのプロセスとにメモリをマップするメモリマップ方法であって、
上記プロセスの仮想メモリ領域から上記メモリ上へ直接マップ可能であって、プロセッサーによる直接アクセスを可能とする第一直接マップ領域を上記メモリ上に獲得する第一マップ領域獲得手順と、
上記第一マップ領域獲得手段によって獲得した上記第一直接マップ領域の所定第一領域を示す物理アドレスをページディレクトリエントリに設定することによって、上記プロセスの仮想メモリ領域から該所定第一領域へ直接マップする第一マップ手順と、
上記プロセスが該プロセスの仮想メモリ領域から上記メモリ上への直接マップを可能とする第二マップ領域を上記メモリ上に獲得する第二マップ領域獲得手順と、
上記プロセスによるシステムコールによって、上記第二マップ領域獲得手順によって獲得した上記第二直接マップ領域の所定第二領域を示す物理アドレスをページテーブルエントリに設定することによって、該プロセスの仮想メモリ領域から該所定第二領域へ直接マップする第二マップ手順と
を有し、上記第一所定ページ長単位は、上記第二所定ページ長単位より大きいことを特徴とするメモリマップ方法。
【請求項７】
請求項６記載のメモリマップ方法であって、
上記第一マップ手順は、上記ページディレクトリエントリにユーザ使用可を示すフラグを設定することを特徴とするメモリマップ方法。
【請求項８】
請求項６又は７記載のメモリマップ方法であって、
上記第二マップ手順は、上記ページテーブルエントにユーザ使用可を示すフラグを設定することを特徴とするメモリマップ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多種の画像形成機能を有する画像形成装置に係り、詳しくは、各機能に対応するアプリケーションによって生成される複数のプロセス間でデータを共有可能とし、多種の画像形成機能を融合する画像形成装置を提供するものである。
【０００２】
【従来の技術】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置が一般的に知られている。このような複合型の画像形成装置は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する３種類のアプリケーションを設け、アプリケーションの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
例えば特許文献１には、上記のような複合型の画像形成装置の一例が記載されている。
【０００４】
【特許文献１】
特開２００２−８４３８３号公報
【０００５】
【発明が解決しようとする課題】
このような従来の複合型の画像形成装置では、プリンタ、コピーおよびファクシミリにそれぞれ対応する別個のアプリケーション（ＯＳを含む）を備えているため、各アプリケーションを実行して生成されるプロセスが必要とするメモリはそれぞれ別個に獲得され、また、個別に管理されている。
【０００６】
コピー、スキャナ、プリンタなどのアプリケーションがＯＳ（オペレーティングシステム）上で動作する従来の複合機の場合、ＯＳが行なうＯＳ仮想メモリ領域へのマップとアプリケーション等によって生成されるプロセスが行なう仮想メモリ領域へのマップとは、通常、別のアーキテクチャをとっていることが多い。
【０００７】
このようなアーキテクチャの場合、アプリケーションによって生成されたプロセスがマップした仮想メモリ領域のアドレスをＯＳ仮想メモリ領域のアドレスに変換することによって、かかるＯＳによるそのアドレスへのアクセスが制御されている。
【０００８】
例えば、図１に示すように、プロセスＡがプロセスＡの仮想メモリ領域内の所定領域へのマップ後、プロセスＡの動作中の割り込み発生によるＯＳ１によるＯＳ仮想メモリ領域へのアクセスは、プロセスＡがマップした仮想メモリ領域のアドレスをＯＳ仮想メモリ領域へのアドレスに変換することによって、アクセスが可能となる。
【０００９】
一方、プロセスＢの動作中の割り込み発生によって、プロセスＡがマップしたプロセスＡの仮想メモリ領域のアドレスに対応するＯＳ１によるＯＳ仮想メモリ領域へのアクセスは、プロセスＢが、プロセスＡがマップしたプロセスＡの仮想メモリ領域内の所定領域に対応するプロセスＢの仮想メモリ領域内の所定領域へマップをしていない場合、そのアドレスをＯＳ仮想メモリ領域へのアドレスに変換することができない。このアドレス変換の失敗により、ＯＳ１は、異常終了をしてしまう等の問題があった。
【００１０】
このような異常終了によって、例えば、同一画像データをプリンタ機能によって紙へ出力し、また、スキャナ機能によってイメージデータの出力を行なう場合などに効率的な処理を行なうことができなかった。
【００１１】
よって、従来のようなプリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した複合機型の画像形成装置ではなく、各機能に対応するアプリケーションによって生成されるプロセス間でデータを共有することによって、プリンタ、コピー、ファクシミリ、スキャナなどの機能を融合して１つの画像形成装置とすることが望まれている。
【００１２】
そこで、本発明の課題は、多種の画像形成機能毎に対応するアプリケーションによって生成されるプロセス間でデータの共有を可能とする画像形成装置を提供することである。
【００２２】
【課題を解決するための手段】
上記課題を解決するため、本発明は、画像形成処理を行うアプリケーションのプロセスと、画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスのプロセスとにメモリをマップする画像形成装置であって、上記プロセスの仮想メモリ領域から上記メモリ上へ直接マップ可能であって、プロセッサーによる直接アクセスを可能とする第一直接マップ領域を上記メモリ上に獲得する第一マップ領域獲得手段と、上記第一マップ領域獲得手段によって獲得した上記第一直接マップ領域の所定第一領域を示す物理アドレスをページディレクトリエントリに設定することによって、上記プロセスの仮想メモリ領域から該所定第一領域へ直接マップする第一マップ手段と、上記プロセスが該プロセスの仮想メモリ領域から上記メモリ上への直接マップを可能とする第二マップ領域を上記メモリ上に獲得する第二マップ領域獲得手段と、上記プロセスによるシステムコールによって、上記第二マップ領域獲得手段によって獲得した上記第二直接マップ領域の所定第二領域を示す物理アドレスをページテーブルエントリに設定することによって、該プロセスの仮想メモリ領域から該所定第二領域へ直接マップする第二マップ手段とを有し、上記第一所定ページ長単位は、上記第二所定ページ長単位より大きいことを特徴とする。
【００２３】
このような画像形成装置では、オペレーティングシステムを介さずに、プロセッサーによる上記第一直接マップ領域への直接アクセスがページディレクトリエントリから可能となる。
【００２５】
また、このような画像形成装置では、プロセスは、オペレーティングシステムを介さずに、上記所定第二領域を示す物理アドレスをページテーブルエントリに設定することによって、該ページテーブルエントリからマップすることができる。また、このような画像形成装置ではプロセッサーによって容量の大きいデータを高速で処理することができる。
【００２６】
プロセスが上記所定第二領域へ直接マップするという観点から、上記第二マップ手段は、システムコールによって、オペレーティングシステムが有する上記プロセスの仮想メモリ領域から上記第二直接マップ領域の所定第二領域へマップするマップ処理手段を直接起動するように構成することができる。
【００２７】
このような画像形成装置では、プロセスがシステムコールを行なえるように構成されるため、オペレーティングシステムを介さずに、上記所定第二領域をマップすることができる。
【００２８】
上記第一マップ領域と上記第二マップ領域とには異なるページ長単位でマップするという観点から、上記第一マップ手段は、上記プロセスに対して、上記第一直接マップ領域を、第一所定ページ長単位で、該プロセスの仮想メモリ領域からマップし、上記第二マップ手段は、上記プロセスに対して、上記第二マップ領域を、第二所定ページ長単位で、該プロセスの仮想メモリ領域からマップするように構成することができる。
【００２９】
このような画像形成装置では、プロセッサーが高速に直接アクセスできる上記第一マップ領域と、プロセスがシステムコールによって直接マップ可能な上記第二マップ領域とを夫々異なるページ長単位でマップすることができる。
【００３２】
従来機能と互換性を保つといる観点から、オペレーティングシステム起動時に、上記第一所定ページ長単位をサポートしているか否かを判断するページ単位判断手段を有し、上記ページ単位判断手段による判断結果に基づいて、上記第一マップ領域獲得手段と、上記第一マップ手段と、上記第二マップ領域獲得手段と、上記第二マップ手段とを有効とするように構成することができる。
【００３３】
このような画像形成装置では、容量の大きいデータをアクセスするための上記第一所定ページ長単位をサポートしていない場合、上記第一直接マップ領域及び上記第二直接マップ領域の獲得及びマップを行なわないようにすることができ、従来機能との互換性を保つことができる。
【００３４】
上記メモリは、描画用として使用されるように構成することができる。
【００３５】
更に、上記課題を解決するため、本発明は、画像形成処理を行うアプリケーションのプロセスと、画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスのプロセスとにメモリをマップするメモリマップ方法であって、上記プロセスの仮想メモリ領域から上記メモリ上へ直接マップ可能であって、プロセッサーによる直接アクセスを可能とする第一直接マップ領域を上記メモリ上に獲得する第一マップ領域獲得手順と、上記第一マップ領域獲得手段によって獲得した上記第一直接マップ領域の所定第一領域を示す物理アドレスをページディレクトリエントリに設定することによって、上記プロセスの仮想メモリ領域から該所定第一領域へ直接マップする第一マップ手順と、上記プロセスが該プロセスの仮想メモリ領域から上記メモリ上への直接マップを可能とする第二マップ領域を上記メモリ上に獲得する第二マップ領域獲得手順と、上記プロセスによるシステムコールによって、上記第二マップ領域獲得手順によって獲得した上記第二直接マップ領域の所定第二領域を示す物理アドレスをページテーブルエントリに設定することによって、該プロセスの仮想メモリ領域から該所定第二領域へ直接マップする第二マップ手順とを有し、上記第一所定ページ長単位は、上記第二所定ページ長単位より大きいことを特徴とする。
【００３６】
このようなメモリマップ方法では、獲得された第一マップ領域内の所定第一領域を示す物理アドレスがページディレクトリエントリに設定されるため、ページディレクトリエントリから該所定第一領域へのアクセスを行なうことができる。
また、このようなメモリマップ方法では、ページのエントリを管理するページテーブルに、ページの物理アドレスを設定することによって、マップした領域へのマップしたプロセス自身によるアクセスを可能とする。従って、同一領域へマップした他プロセスによる該同一領域へのアクセスも可能となり該同一領域を共有することができる。さらに、このような画像形成装置ではプロセッサーによって容量の大きいデータを高速で処理することができる。
【００３７】
プロセッサーから高速に直接アクセスを可能とするという観点から、上記第一マップ手順は、上記ページディレクトリエントリにユーザ使用可を示すフラグを設定する。
このようなメモリマップ方法では、獲得された第一マップ領域内の所定第一領域を示す物理アドレスが設定されたページディレクトリエントリにユーザ使用可を示すフラグが設定されるため、オペレーティングシステムを介さずに、プロセッサーが直接アクセスすることができる。
【００４０】
プロセスからのアクセスを可能にするという観点から、上記第二マップ手順は、上記ページテーブルエントリにユーザ使用可を示すフラグを設定するように構成することができる。
【００４１】
このようなメモリマップ方法では、獲得された第二マップ領域内の所定第二領域を示す物理アドレスが設定されたページテーブルエントリにユーザ使用可を示すフラグが設定されるため、オペレーティングシステムを介さずに、プロセスが直接アクセスすることができる。
【００４２】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
【００４３】
本発明の実施の一形態に係る多種の画像形成機能を融合する画像形成装置（以下、融合機と言う）は、例えば、図２に示すような機能構成を成す。図２は、本発明の一実施例に係る多種の画像形成機能を融合する融合機の機能構成を示すブロック図である。
【００４４】
図２において、融合機１２００は、ハードウェア資源１２０５と，ソフトウェア群１２１０と，融合機起動部１２４０とを含むように構成される。ハードウェア資源１０は、白黒レーザプリンタ（Ｂ＆Ｗ  ＬＰ）１２０１と、カラーレーザプリンタ（Ｃｏｌｏｒ  ＬＰ）１２０２と、スキャナ、ファクシミリなどのハードウェアリソース１２０３などを有する。
【００４５】
また、ソフトウェア群１２１０は、ＵＮＩＸ（登録商標）などのオペレーティングシステム（以下、ＯＳという）上に起動されているプラットフォーム１２２０とアプリケーション１２３０とから構成される。融合機起動部１２４０は、融合機１２００の電源投入時に先ず始めに実行され、プラットフォーム１２２０やアプリケーション１２３０を起動する。
【００４６】
プラットフォーム１２２０は、アプリケーション１２３０からの処理要求を解釈して、ハードウェア資源の獲得要求を発生させる下記に示すコントロールサービス１２５０と、一または複数のハードウェア資源の管理をおこない、コントロールサービス１２５０からの獲得要求を調停するシステムリソースマネージャー（ＳＲＭ（System Resource Manager）１２２３）と、ＳＲＭ１２２３からの獲得要求に応じてハードウェア資源１２０５の管理を行うハンドラ層１２６０とを有する。
【００４７】
このコントロールサービス１２５０は、複数のサービスモジュールにより形成され、具体的には、ＳＣＳ（System Control Service）１２２２と、ＥＣＳ（(Engine Control Service)１２２４と、ＭＣＳ（Memory Control Service）１２２５と、ＯＣＳ（Operation panel Control Service）１２２６と、ＦＣＳ（FAX Control Service）１２２７と、ＮＣＳ（Network Control Service）１２２８とがある。なお、このプラットフォーム１２２０は、あらかじめ定義された関数により前記アプリケーション１２３０からの処理要求を受信可能とするアプリケーションプログラムインターフェース（ＡＰＩ）１２１５を有する。
【００４８】
ＯＳは、ＵＮＩＸ（登録商標）などのオペレーティング・システムであり、プラットフォーム１２２０並びにアプリケーション１２３０の各ソフトウェアをそれぞれプロセスとして並列実行する。オープンソースのＵＮＩＸ（登録商標）を用いることにより、プログラムの安全性を確保できるとともに、ネットワーク対応可能となり、ソースコードの入手も容易となる。さらに、ＯＳ、ＴＣＰ／ＩＰのロイヤリティが不要であり、アウトソーシングも容易となる。
【００４９】
ＳＲＭ１２２３は、ＳＣＳ１２２２とともにシステムの制御およびリソースの管理をおこなうものであり、スキャナやプロッタなどのエンジン部、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４Ｉ／Ｆ、ＲＳ２３２ＣＩ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停をおこない、実行制御する。
【００５０】
具体的には、このＳＲＭ１２２３は、要求されたハードウェア資源が利用可能であるかどうか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、上位層からの要求に対してハードウェア資源の利用スケジューリングをおこない、要求内容（たとえば、プリンタエンジンによる紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施するようにしてもよい。
【００５１】
ＳＣＳ１２２２は、アプリ管理（機能１）、操作部制御（機能２）、システム画面表示（ジョブリスト画面、カウンタ表示画面など）（機能３）、ＬＥＤ表示（機能４）、リソース管理（機能５）、割り込みアプリ制御（機能６）等の複数の機能を行なう。
【００５２】
具体的には、アプリ管理（機能１）では、アプリの登録と、その情報を他のアプリに通知する処理をおこなう。操作部制御（機能２）では、アプリの操作部使用権の排他制御をおこなう。システム画面表示（機能３）では、操作部使用権を持つアプリからの要求内容に応じて、エンジン部の状態に対応する警告画面の表示をおこなう。ＬＥＤ表示（機能４）では、警告ＬＥＤ、アプリキーなどのシステムＬＥＤの表示制御をおこなう。リソース管理（機能５）では、アプリ（ＥＣＳ）がジョブを実行するにあたって、排他しなければならないエンジンリソース（スキャナ、ステープルなど）の排他制御のためのサービスをおこなう。割り込みアプリ制御（機能６）では、特定のアプリを優先動作せさるための制御及びサービスをおこなう。
【００５３】
ＥＣＳ１２２４は、白黒レーザプリンタ（Ｂ＆Ｗ  ＬＰ）１２０１、カラーレーザプリンタ（Ｃｏｌｏｒ  Ｌ）１２０２、その他ハードウェアリソース１２０３などのエンジン部を制御するものであり、画像読み込みと印刷動作、状態通知、ジャムリカバリなどをおこなう。
【００５４】
ＭＣＳ１２２５は、メモリ制御をおこなうものであり、具体的には、画像メモリの取得および開放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などをおこなう。
【００５５】
ＯＣＳ１２２６は、オペレータと本体制御間の情報伝達手段となる操作パネルを制御するモジュールであり、オペレータのキー操作イベントを本体制御に通知する処理、各アプリがＧＵＩを構築するためのライブラリ関数を提供する処理、構築されたＧＵＩ情報をアプリ別に管理する処理、操作パネル上への表示反映処理などをおこなう。
【００５６】
ＦＣＳ１２２７は、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を使ったファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読み取り、ファクシミリ受信印刷、融合送受信をおこなうためのＡＰＩ（Application Program Interface）を提供する。
【００５７】
ＮＣＳ１２２８は、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのモジュール群であり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介をおこなう。
【００５８】
また、ハンドラ層１２６０は後述するＦＣＵ（FAX Control Unit）の管理を行うＦＣＵＨ（FAX Control Unit Handler）１２３１と、各プロセスに対するメモリの割り振り、各プロセスに割り振ったメモリの管理，後述する直接マップ領域の管理などを行うＩＭＨ（Imaging Memory Handler）１２２９とを含む。
【００５９】
また、ＩＭＨ１２２９はイメージデータを仮想メモリ領域（ユーザ仮想空間）から物理メモリへマップする。プロセスの起動に応じて、システムコールを行ない、プロセス用の仮想メモリ領域をマップしたり、マップした仮想メモリ領域をプロセスの終了時に開放する処理等を行なう。ＩＭＨ１２２９は、後述されるＣＰＵによって直接アクセス可能なＭＥＭ−Ｐ領域と、プロセスによって直接アクセス可能なＭＥＭ−Ｐ０領域へのマップを行なう。
【００６０】
ＳＲＭ１２２３，ＦＣＵＨ１２３１およびＩＭＨ１２２９は、予め定義されている関数によりハードウェア資源１２０５に対する処理要求を送信するエンジンＩ／Ｆ１２３３を利用してハードウェア資源１２０５に対する処理要求を行う。
【００６１】
アプリケーション１２３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１２１１と、コピー用アプリケーションであるコピーアプリ１２１２と、ファクシミリ用アプリケーションであるファックスアプリ１２１３と、スキャナ用アプリケーションであるスキャナアプリ１２１４とを有する。
【００６２】
各アプリケーション１２１１〜１２１４は、プラットフォーム１２２０上の各プロセスを利用して動作実行し得るため、画面制御、キー操作制御およびジョブ生成などをおこなう画面表示制御プログラムがその主体となる。なお、ＮＣＳ１２２８により接続されたネットワークを介して新たなアプリケーションをネットワーク経由で搭載することもできる。また、各アプリケーションはアプリケーションごとに追加または削除することができる。
【００６３】
このように、融合機１２００は、各アプリで共通的に必要となる処理をプラットフォーム１２２０で一元的に処理する。
【００６４】
次に、融合機１２００のハードウェア構成について説明する。図３は、図２に示した融合機１２００のハードウェア構成を示すブロック図である。図３に示すように、この融合機１２００は、オペレーションパネル１３１０、ファックスコントロールユニット（ＦＣＵ）１３２０、ＵＳＢ（Universal Serial Bus）デバイス１３３０、ＩＥＥＥ１３９４デバイス１３４０およびエンジン部１３５０とコントローラ１３００のＡＳＩＣ１３０１とをＰＣＩ（Peripheral Component Interconnect）バス等で接続した構成となる。
【００６５】
コントローラ１３００は、ＡＳＩＣ１３０１にＭＥＭ−Ｃ１３０２、ＨＤ１３０３、ネットワークＩ／Ｆコントローラ１３０９などを接続するとともに、このＡＳＩＣ１３０１とＣＰＵ１３０４とをＣＰＵチップセットのＮＢ１３０５を介して接続している。このように、ＮＢ１３０５を介して接続する理由は、ＣＰＵ１３０４自体のインターフェースが公開されていないためである。
【００６６】
ここで、このＡＳＩＣ１３０１とＮＢ１３０５は、単にＰＣＩを介して接続されているのではなく、ＡＧＰ１３０８を介して接続されている。このようにＡＧＰ１３０８を介して接続することとした理由は、この融合機１２００が図２に示したプラットフォーム１２２０やアプリケーション１２３０を形成する複数のプロセスを実行制御する関係上、これらを低速のＰＣＩで接続したのでは、パフォーマンスが低下するからである。
【００６７】
ＣＰＵ１３０４は、融合機１２００の全体制御をおこなうものであり、具体的には、ＯＳ上でプラットフォーム１２２０を形成するＳＣＳ１２２２、ＳＲＭ１２２３、ＥＣＳ１２２４、ＭＣＳ１２２５、ＯＣＳ１２２６、ＦＣＳ１２２７、ＮＣＳ１２２８をそれぞれプロセスとして起動して実行させるとともに、アプリケーション１２３０を形成するプリンタアプリ１２１１、コピーアプリ１２１２、ファックスアプリ１２１３、スキャナアプリ１２１４を起動して実行させる。
【００６８】
ＮＢ１３０５は、ＣＰＵ１３０４とＭＥＭ−Ｐ１３０６、ＳＢ１３０７、ＡＳＩＣ１３０１とを接続するためのブリッジであり、ＭＥＭ−Ｐ１３０６は、融合機の描画用メモリなどとして用いるシステムメモリであり、ＳＢ１３０７は、ＮＢ１３０５とＲＯＭ、ＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。ＭＥＭ−Ｃ１３０２は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＡＳＩＣ１３０１は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。
【００６９】
ＨＤＤ１３０３は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージであり、オペレーションパネル１３１０は、操作者からの入力操作の受け付け並びに操作者に向けた表示をおこなう操作部である。
【００７０】
したがって、ＡＳＩＣ１３０１には、ＭＥＭ−Ｃ１３０２を接続するためのＲＡＭインターフェースと、ＨＤＤ１３０３を接続するためのハードディスクインターフェースが設けられ、これらの記憶部に対して画像データの入出力をおこなう場合には、入出力先がＲＡＭインターフェースまたはハードディスクインターフェースに切り替えられる。
【００７１】
ＡＧＰ１３０８は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、システムメモリに高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にする。
【００７２】
ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）上にプラットフォーム１２２０及びアプリケーション１２３０が構築される融合機１２００の場合、仮想アドレス領域は、ＯＳのカーネルによって解釈可能な仮想アドレス空間と、ソフトウェアによって生成されたプロセスによって解釈可能な仮想アドレス空間とによって制御されている。
【００７３】
そのため、ＯＳ独自で仮想メモリ領域（以下、カーネル用仮想メモリ領域とする）へのアクセスを制御すると共に、ソフトウェアによって生成されたプロセスによって展開される仮想メモリ領域（以下、プロセス毎仮想メモリ領域とする）へのアクセスを制御する必要がある。また、ＯＳがカーネル用仮想メモリ領域からプロセス毎仮想メモリ領域をアクセスする際には、ＯＳからアクセス可能な仮想アドレス領域に変換される。
【００７４】
先ず、ＭＥＭ−Ｃ１３０２、ＭＥＭ−Ｐ１３０６及びＨＤＤ１３０３等にて展開される物理メモリと仮想メモリ領域との対応について図４で説明する。図４を参照すると、物理メモリ１０には、カーネルが使用するカーネル領域１１と、仮想記憶処理部１１１で汎用的に管理される汎用領域１２と、ＭＥＭ−Ｐ１３０６の領域の一部であって、アプリケーション１２３０又はコントロールサービス１２５０によって生成されるプロセスから仮想メモリ領域へマップされるＭＥＭ−Ｐ０領域１３と、ＣＰＵ１３０４から高速にアクセスされるＭＥＭ−Ｐ１３０６としての実質的なＭＥＭ−Ｐ領域１４と、白黒レーザプリンタ（Ｂ＆Ｗ  ＬＰ）１２０１、カラーレーザプリンタ（Ｃｏｌｏｒ  ＬＰ）１２０２、その他ハードウェアリソース１２０３がエンジンＩ／Ｆ１２３３を介して高速にアクセス可能なＭＥＭ−Ｃ１３０２としての実質的なＭＥＭ−Ｃ領域１５とを有する。領域１１から領域１４は、ＭＥＭ−Ｐ１３０６側のＲＡＭが使用され、領域１５は、ＭＥＭ−Ｃ１３０２側のＲＡＭが使用される。
【００７５】
この物理メモリ１０に対応させて展開される仮想メモリ領域２０は、ＯＳ（後述される汎用処理部１１０）によって汎用的に管理されるユーザプログラム領域２１と、プロセスが該プロセスの仮想メモリ領域２０から物理メモリ１０へ直接マップ可能な直接マップ領域２２と、ＯＳ（汎用処理部１１０）によって汎用的に管理され必要に応じてデータがスタックされるスタック領域２３とを有する。
【００７６】
ユーザプログラム領域２１は、更に、アプリケーション１２３０をＣＰＵ１３０４が実行するためのプログラムコードを格納するプログラムコード領域２１１と、アプリケーション１２３０をＣＰＵ１３０４が実行する際に必要となるプログラムデータを格納するプログラムデータ領域２１２と、動的にデータ領域の割付けを行なうヒープ領域２１３とを有する。ユーザプログラム領域２１は、物理メモリ１０の仮想領域１２にマップされる。スタック領域２３もまた、物理メモリ１０の仮想領域１２にマップされる。
【００７７】
直接マップ領域２２は、ＭＥＭ−Ｐ１３０６の一部と、ＭＥＭ−Ｃ１３０２とに対応し、ＯＳ（後述される汎用処理部１１０）によって管理されない領域であって、後述される直接マップ領域アクセスドライバ１２０によって管理される領域である。直接マップ領域２２は、物理メモリ１０のＭＥＭ−Ｐ０領域１３、ＭＥＭ−Ｐ領域１４及びＭＥＭ−Ｃ領域１５とに夫々対応するＭＥＭ−Ｐ０領域２２１、ＭＥＭ−Ｐ領域２２２及びＭＥＭ−Ｃ領域２２３とを有する。
【００７８】
このような対応関係における直接マップ領域に対するメモリ管理方法について説明する。図５は、プロセス間でのメモリ共有を実現する機能構成図である。
【００７９】
図５において、ＯＳ１２２１は、カーネルの起動時に物理メモリ１０に対応する仮想メモリ領域２０を設定する直接マップ領域獲得部１３０と、プロセスによるマップの可否を示すユーザマップ可否フラグ１３１と、プロセス起動時にプロセス毎に仮想メモリ領域２０から物理メモリ１０への直接マップを行なうためのテーブルを初期化する直接マップ仮想メモリ領域プロセス用初期化部１３２と、プロセス毎のプロセス用仮想アドレス空間１４１と、プロセス毎仮想メモリ領域を管理するための複数のテープルを管理するテーブルセット１４３と、プロセス毎に割り当てられるＭＥＭ−Ｐ０用仮想アドレス及びサイズとを取得するＭＥＭ−Ｐ０領域情報取得部２４１と、プロセス毎に割り当てられるＭＥＭ−Ｐ用仮想アドレス及びサイズとを取得するＭＥＭ−Ｐ領域情報取得部２４２と、プロセス用にメモリをマップするＭＥＭ−Ｐ０用メモリマップ部２４３と、プロセス用にマップされたメモリを開放するＭＥＭ−Ｐ０用メモリ開放部２４４と、システムコール時の処理の振り分けを行なうシステムコール処理部２４０とを有する。
【００８０】
カーネルは、融合機起動部１２４０によって起動され、直接マップ領域２２の有無を判断する直接マップ領域有無判断部１０２と、汎用的に仮想記憶へのアクセスを処理する汎用処理部１１０と、汎用処理部１１０を介さずに仮想記憶のアクセスを処理する直接マップ領域アクセスドライバ１２０とを有する。更に、汎用処理部１１０は、仮想記憶へのアクセスを処理する仮想記憶処理部１１１と、仮想記憶の使用領域をページ毎に管理するページテーブル管理部１１２と、仮想記憶へのアクセスの例外処理を行なう例外処理部１１３とを有する。
【００８１】
直接マップ領域アクセスドライバ１２０は、プロセス毎仮想メモリ領域上の直接マップ領域のアドレス（以下、ユーザ仮想アドレスという）をカーネルからアクセス可能なアドレスに変換するカーネル用アドレス変換部１２１と、直接マップ領域のユーザ仮想アドレスを対応する物理アドレスに変換する物理アドレス変換部１２２と、アドレスとサイズで指定される領域がプロセス毎仮想メモリ領域の直接マップ領域に存在するか否かを判断する指定領域有無判断部１２３とを有する。
【００８２】
プロセス管理部２００は、ソフトウェアを実行するのに必要となるプロセスを生成し、また、プロセスが終了するとそのプロセスを開放する。プロセス管理部２００は、ソフトウェア群１２１０によって生成されたプロセスを管理する。プロセス管理部２００は、直接マップ仮想メモリ領域プロセス用初期化部１３２を起動することによって、ＣＰＵ１３０４によるＭＥＭ−Ｐ１３０６内への高速アクセスを可能とするＭＥＭ−Ｐ領域２２２へのマップ及びプロセスが直接アクセスするＭＥＭ−Ｐ０領域２２１へのマップを行なうためのテーブルの初期設定を行なう。
【００８３】
直接マップ仮想メモリ領域プロセス用初期化部１３２は、プロセス毎のプロセス用仮想アドレス空間１４１に基づいて、ＭＥＭ−Ｐ領域２２２及びＭＥＭ−Ｐ０領域２２１へのマップを行なうためのテーブルを初期化する。
【００８４】
起動された各プロセスは、更に、ＩＭＨ１２２９を介してシステムコールを行ない、ＭＥＭ−Ｐ０領域２２１のプロセスによる直接アクセス可能とするテーブルの初期設定を行なう。
【００８５】
ＩＭＨ１２２９よりシステムコールがなされると、システムコール処理部２４０は、システムコールの種別に応じて、対応する処理部を起動する。例えば、ＩＭＨ１２２９がシステムコールを行なうとは、ｓｙｓａｒｃｈ関数を呼ぶことである。
【００８６】
システムコール処理部２４０は、ＭＥＭ−Ｐ領域情報の取得を示す種別であれば、ＭＥＭ−Ｐ領域情報取得部２４２を起動し、ＭＥＭ−Ｐ０領域情報の取得を指示する種別であれば、ＭＥＭ−Ｐ０領域情報取得部２４１を起動し、ＭＥＭ−Ｐ０領域２２１へのメモリマップを指示する種別であれば、ＭＥＭ−Ｐ０用メモリマップ部２４３を起動し、ＭＥＭ−Ｐ０領域２２１へのマップしたメモリの開放を指示する種別であれば、ＭＥＭ−Ｐ０用メモリ開放部２４４を起動する。
【００８７】
このように、ＭＥＭ−Ｐ０領域２２１へのメモリマップをＩＭＨ１２２９のシステムコールによって実行するように構成する。例えば、プロセスＡによってＭＥＭ−Ｐ０領域２２１にマップされた同一領域を、プロセスＢが同一アドレスを指定することによって、プロセスＢによるかかる同一領域へのアクセスを行なうことが可能となり、プロセスＡとプロセスＢとによるＭＥＭ−Ｐ０領域２２１における一部領域の共有が実現される。
【００８８】
以下、直接マップ領域２２のＭＥＭ−Ｐ０領域２２１及びＭＥＭ−Ｐ領域２２２の制御方法について説明する。先ず、直接マップ領域獲得部１３０での処理を図６のフローチャートに従って説明する。図６は、直接マップ領域獲得部での処理を説明するフローチャート図である。
【００８９】
カーネルは、融合機起動部１２４０によって起動されると、ＣＰＵ１３０４がアプリケーション１２３０によるＭＥＭ−Ｐ０領域１３のプロセス毎仮想メモリ領域へのマップを可能とするか否かを判断（ステップＳ１１）する。例えば、その判断の方法は、ＣＰＵ１３０４によって高速にアクセスされるＭＥＭ−Ｐ領域１４のページサイズとなる４ＭＢサイズのページをサポートしているか否かによって判断する。
【００９０】
そして、所定領域に４ＭＢサイズのページングが可能であることを示すユーザマップ可否フラグ１３１をオンにする（ステップＳ１２）。ユーザマップ可否フラグ１３１は、所定レジスタ（例えば、ＣＰＵ１３０４の制御用レジスタ）に設定するようにしても良い。
【００９１】
ステップＳ１１においてマップ不可の場合（ＮＯ）、汎用処理部１１０を起動して、従来の仮想記憶の管理を行い、処理を終了する。一方、マップ可能な場合（ＹＥＳ）、カーネルは、直接マップ領域獲得部１３０によって、図４に示す仮想メモリ領域２０における直接マップ領域２２のＭＥＭ−Ｐ領域２２２の構造体を、カーネル用仮想メモリ領域に設定し（ステップＳ１３）、ステップＳ１４へ進み、更に、ＭＥＭ−Ｐ０領域２２１の構造体を設定する。
【００９２】
続けて、カーネルは、直接マップ領域獲得部１３０によって、ＭＥＭ−Ｐ領域２２２用のページディレクトリのサイズを指定して、プロセス毎仮想メモリ領域におけるＭＥＭ−Ｐ領域２２２用のページディレクトリにページディレクトリエントリを設定する（ステップＳ１５）。よって、ＭＥＭ−Ｐ領域２２２は、ＣＰＵ１３０４によって直接アクセスされるため、カーネル用仮想メモリ領域からプロセス毎仮想メモリ領域への変換を不要とし、高速にアクセス可能な領域として設定される。
【００９３】
また、カーネルは、直接マップ領域獲得部１３０によって、ＭＥＭ−Ｐ０領域２２１のページディレクトリのサイズを指定して、プロセス毎仮想メモリ領域におけるＭＥＭ−Ｐ０領域２２１用のページディレクトリにページディレクトリエントリを設定する（ステップＳ１６）。これらのページサイズは、ＣＰＵ１３０４によってサポートされている最大ページサイズ（例えば４ＭＢ）を設定すればよい。
【００９４】
ページディレクトリ（ＰＤ）内に設定されたページディレクトリエントリ（ＰＤＥ）は、各ページテーブルの先頭を示し、各ページテーブルはテーブルセット１４３で管理される。ページディレクトリの詳細は、後述する。初期化されることによって、ＭＥＭ−Ｐ０領域２２１用及びＭＥＭ−Ｐ領域２２２用共に、ページディレクトリの各エントリには、データが格納されているページの先頭からのオフセットで示すページテーブル（ＰＴ）のベース物理アドレス、所定ページサイズ（例えば４ＭＢ）、ユーザアクセス不可、読み取り／書き込み可、ページの有効等の情報が設定される。
【００９５】
カーネル及び直接マップ領域獲得部１３０による処理の終了後、例えば、アプリケーション１２３０のソフトウェアが起動すると、プロセス管理部２００が生成された新規プロセス（以下、例えば、プロセスＡとする）のために、プロセス用仮想アドレス空間１４１に基づいて直接マップ領域へマップするためのテーブルセット１４３で管理されるテーブルへのエントリを行なう。
【００９６】
次に、図５のプロセスの起動時に直接マップ仮想メモリ領域プロセス用初期化部１３２によって実行される仮想メモリ領域でのプロセス用のページディレクトリの初期化処理を図７で説明する。図７は、直接マップ仮想メモリ領域プロセス用初期化部での処理を説明するフローチャート図である。
【００９７】
図７において、直接マップ仮想メモリ領域プロセス用初期化部１３２は、プロセスに対応するページディレクトリエントリを初期化し（ステップＳ３１）、該プロセスを識別するローカルディスクリプタテーブルを初期化する（ステップＳ３２）。
【００９８】
続けて、ＭＥＭ−Ｐ領域２２２用のページディレクトリのサイズ、ユーザアクセス可能を指定して、仮想メモリ領域におけるＭＥＭ−Ｐ領域用のページディレクトリにページディレクトリエントリを設定する（ステップＳ３３）。ＭＥＭ−Ｐ領域２２２用の各ページディレクトリエントリには、ページの物理アドレスが設定され、これによって、高速にページをアクセスすることが可能となる。
【００９９】
更に、直接マップ仮想メモリ領域プロセス用初期化部１３２は、ＭＥＭ−Ｐ０領域２２１用のページディレクトリのサイズ、ユーザアクセス不可を指定して、仮想メモリ領域におけるＭＥＭ−Ｐ０領域用のページディレクトリにページディレクトリエントリを設定する（ステップＳ３４）。ＭＥＭ−Ｐ０領域２２１用の各ページディレクトリエントリには、更に、ページを管理するページテーブルの物理アドレスが設定される。そして、プロセスＡのためのページディレクトリの初期化処理を終了する。
【０１００】
この処理によって、ＭＥＭ−Ｐ０領域２２１用のページディレクトリの各ページディレクトリエントリには、プロセスからのアクセスは不可のままであるが、ＭＥＭ−Ｐ領域２２２用のページディレクトリの各ページディレクトリエントリには、プロセスからのアクセスが可能となる。
【０１０１】
次に、生成されたプロセスＡは、プロセスＡでの処理に必要なデータを直接アクセスするためのＭＥＭ−Ｐ０領域２２１を、システムコールによって確保する。図８は、ＭＥＭ−Ｐ０領域へのマップ処理を説明するためのフローチャート図である。図８において、例えば、プロセスＡがシステムコールによってＭＥＭ−Ｐ０領域情報の取得を指示すると、システムコール処理部２４０はＭＥＭ−Ｐ０領域情報取得部２４１を起動する。ＭＥＭ−Ｐ０領域情報取得部２４１は、ページテーブルの先頭アドレスを取得し（ステップＳ４１）、また、ページテーブルのサイズを取得する（ステップＳ４２）。
【０１０２】
続けて、サイズ分のページディレクトリエントリ（ＰＤＥ）を設定したか否かを判断する（ステップＳ４３）。サイズ分の設定が終了している場合、ＭＥＭ−Ｐ０領域情報取得部２４１での処理を終了する。一方、サイズ分の設定が終了していない場合、更に、ページテーブルの割り当てがあるか否かを判断する（ステップＳ４４）。割り当てがある場合、ステップＳ４６へ進む。一方、割り当てがない場合、ページテーブルを割り当てる（ステップＳ４５）。
【０１０３】
ステップＳ４６において、ＭＥＭ−Ｐ０用メモリマップ部２４３はユーザアクセス可能を示すページテーブルエントリ（ＰＴＥ）を設定し（ステップＳ４６）、ページを確保する（ステップＳ４７）。ページテーブルエントリには、ページの先頭を示すベース物理アドレス、ユーザアクセス可能、読み取り／書き込み可能、存在済み等が設定される。この処理によって、プログラムＡによるＭＥＭ−Ｐ０領域２２１内の一部領域の物理メモリ１０のＭＥＭ−Ｐ０領域１３内へのマップが完了する。
【０１０４】
また、上記処理によって、プログラムＢがＭＥＭ−Ｐ０領域２２１から物理メモリ１０のＭＥＭ−Ｐ０領域１３へのマップを行なうことにより、プログラムＢによるアクセスが可能となる。プログラムＢによるメモリマップ時に、プログラムＡがマップした領域と同一の領域（同一の物理メモリ１０のＭＥＭ−Ｐ０領域１３上の領域）をマップすることによって、プログラムＡ及びプログラムＢによるアクセスが可能となり、かかる領域を共有することができる。
【０１０５】
図９は、直接マップ領域での仮想アドレスとテーブルとの関係を示す図である。図９（Ａ）において、ＭＥＭ−Ｐ用仮想アドレスとテーブルとの関係が示される。ＭＥＭ−Ｐ用仮想アドレス４１は、ページディレクトリ（ＰＤ）オフセットとページオフセットとで構成される。
【０１０６】
ＭＥＭ−Ｐ用に使用されるページディレクトリ４２において、所定長のページサイズ（例えば、４Ｍバイト）にて、各ページベース物理アドレス等を示すページディレクトリエントリ（ＰＤＥ）が管理される。ページディレクトリエントリの位置は、ページディレクトリ４２の所定のベース物理アドレスにＭＥＭ−Ｐ用仮想アドレス４１のＰＤオフセットを加算することによって決定される。
【０１０７】
また、ページディレクトリエントリによってポインタされたページ４３には、実際にプロセスによって参照される参照データが所定ページ単位（例えば、４Ｍバイト）で格納される。参照データは、ページディレクトリエントリに設定されているベース物理アドレスにＭＥＭ−Ｐ用仮想アドレス４１のページオフセットを加算することによって決定される。
【０１０８】
ＭＥＭ−Ｐ０用仮想アドレス５１は、ページディレクトリ（ＰＤ）オフセットと、ページテーブル（ＰＴ）オフセットと、ページオフセットとで構成される。ＭＥＭ−Ｐ０用に使用されるページディレクトリ５２において、所定長のページサイズ（例えば、４Ｍバイト）にて、各ページテーブル５３のベース物理アドレス等を示すページディレクトリエントリ（ＰＤＥ）が管理される。ページディレクトリエントリの位置は、ページディレクトリ５２の所定のベース物理アドレスにＭＥＭ−Ｐ０用仮想アドレス５１のＰＤオフセットを加算することによって決定される。
【０１０９】
ページディレクトリエントリによってポインタされたページテーブル（ＰＴ）５３において、所定ページサイズ（例えば、４Ｍバイト）にて、実際にプロセスによって参照される参照データが格納される各ページ５４のベース物理アドレス等を示すページテーブルエントリ（ＰＴＥ）が管理される。ページテーブルエントリの位置は、ページテーブル５３の所定のベース物理アドレスにＭＥＭ−Ｐ０用仮想アドレス５１のＰＴオフセットを加算することによって決定される。
【０１１０】
ページテーブルエントリによってポインタされたページ５４には、実際にプロセスによって参照される参照データが所定ページ単位（例えば、４Ｋバイト）で格納される。ＭＥＭ−Ｐ０領域での参照データ用のページ５４の各ページサイズは、ＭＥＭ−Ｐ領域でのページ４３の各ページサイズより小さい。参照データは、ページテーブルエントリに設定されているベース物理アドレスにＭＥＭ−Ｐ０用仮想アドレス５１のページオフセットを加算することによって決定される。
【０１１１】
次に、ページディレクトリエントリとページテーブルエントリについて図１０で説明する。図１０（Ａ）より、ページディレクトリエントリ（ＰＤＥ）は、３２ビットのサイズで、ページテーブルのベース物理アドレス、ページサイズ、ユーザ使用可否、読み取り／書き込み可否、存在有無を示すフラグ等を有する。ユーザ使用可否を示すフラグは、図７のステップＳ３３において、ＭＥＭ−Ｐ領域用のページディレクトリエントリを設定する際に、ユーザ使用可に設定される。
【０１１２】
よって、プロセッサーからのページディレクトリエントリのページテーブルのベース物理アドレスにて示される物理メモリ上の領域への直接アクセスを可能とする。この場合ページテーブルは、実際にはデータが格納されるページとなる。一方、ＭＥＭ−Ｐ０領域用のページディレクトリエントリを設定する際には、図７のステップＳ３４において、ユーザ使用不可が設定される。
【０１１３】
図１０（Ｂ）より、ページテーブルエントリ（ＰＴＥ）は、ページのベース物理アドレス、ユーザ使用可否、読み取り／書き込み可否、存在有無を示すフラグ等を有する。ページテーブルエントリは、システムコールによって、図８のフローチャートに従い、ＭＥＭ−Ｐ０領域用に設定され、ステップＳ４６にて、ユーザ使用可に設定される。
【０１１４】
上記のようなページングの手法は、Ｉｎｔｅｌ８０ｘ８６（登録商標）に基づくものであるが、ＣＰＵ１３０４によって直接アクセス可能なＭＥＭ−Ｐ領域１４へのマップと、プロセスがＩＭＨ１２２９を介してシステムコールを行なうことによって、該プロセスによる直接マップ可能なＭＥＭ−Ｐ０領域１３へのマップを行なえるように構成したところに特徴を有する。
【０１１５】
上記のようなアドレス空間及び処理によって、実現されるプロセス間でのデータ共有の一例を図１１及び図１２で説明する。図１１及び図１２は、プロセス間でデータを共有するまでの例を示す図である。
【０１１６】
図１１（Ａ）は、プロセス起動時のプロセスＡの仮想メモリ領域と物理メモリとの関係を示す図である。図１１（Ａ）より、プロセスＡの起動時は、ＭＥＭ−Ｐ領域２２２へのアクセスは可能となるが（図７のステップＳ３１）、ＭＥＭ−Ｐ０領域２２１へのアクセスはできない（図７のステップＳ３２）。
【０１１７】
次に、プロセスＡがシステムコールをして、ＭＥＭ−Ｐ０用メモリマップ部２４３によって、ＭＥＭ−Ｐ０領域の一部をマップすると、例えば、図１１（Ｂ）に示すように、領域２２１ａがプロセスＡによるアクセスが可能となる。
【０１１８】
プロセスＡ動作中にプロセスＢが起動すると、プロセスＡの起動時と同様に、ＭＥＭ−Ｐ領域２２２へのアクセスは可能となる。更に、システムコールすると、ＭＥＭ−Ｐ０用メモリマップ部２４３によって、ＭＥＭ−Ｐ０領域２２１の一部がマップされると、例えば、図１２（Ａ）に示すように、領域２２１ｂがプロセスＢによるアクセスが可能となる。
【０１１９】
この場合、プロセスＡとプロセスＢとは、ＭＥＭ−Ｐ０領域２２１内の別の領域をマップして使用している。よって、プロセスＡは、プロセスＢがマップした領域２２１ｂをアクセスすることはできないし、プロセスＢは、プロセスＡがマップした領域２２１ａをアクセスすることはできない。
【０１２０】
更に、プロセスＢがシステムコールによって、プロセスＡがマップした同一の領域２２１ａをマップする（図１２（Ｂ））。これによって、プロセスＡとプロセスＢとは、同一の物理メモリの領域をアクセスすることが可能となる。よって、プロセスＡとプロセスＢとによる領域の共有が可能となる。
【０１２１】
上記例では、２つのプロセス間でのメモリ共有について例示したが、２つ以上のプロセスによって同一領域を共有しても良い。従って、同一データをプロセス毎に別の仮想メモリ領域にマップすることによる領域の無駄を削減することができ、かつ、同一データのデータ転送を何度も行なう必要がない。
【０１２２】
【発明の効果】
以上、説明してきたように、本願発明によれば、オペレーティングシステムを介さずに、プロセッサーによるメモリ上への直接アクセスがページディレクトリエントリから可能となると共に、プロセスは、システムコールすることによって、オペレーティングシステムを介さずに、メモリ上へのマップを行なうことができ、該ページテーブルエントリからメモリ上へのアクセスを行なうことができる。
【０１２４】
さらに、本願発明によれば、上記のような画像形成装置でのメモリマップ方法を提供することができる。
【０１２５】
【図面の簡単な説明】
【図１】従来のプロセスが直接仮想メモリ領域へマップした例を示す図である。
【図２】本発明の一実施例に係る多種の画像形成機能を融合する融合機の機能構成を示すブロック図である。
【図３】図２に示した融合機のハードウェア構成を示すブロック図である。
【図４】物理メモリと仮想記憶空間との対応を示す図である。
【図５】プロセス間でのメモリ共有を実現する機能構成図である。
【図６】直接マップ直接マップ領域獲得部での処理を説明するフローチャート図である。
【図７】直接マップ仮想メモリ領域プロセス用初期化部での処理を説明するフローチャート図である。
【図８】ＭＥＭ−Ｐ０領域へのマップ処理を説明するためのフローチャート図である。
【図９】直接マップ領域での仮想アドレスとテーブルとの関係を示す図である。
【図１０】ページディレクトリエントリとページテーブルエントリを説明するための図である。
【図１１】プロセス間でデータを共有するまでの例を示す図である。
【図１２】プロセス間でデータを共有するまでの例を示す図である。
【符号の説明】
１３０      直接マップ領域獲得部、
２４０      システムコール処理部、
２４３      ＭＥＭ−Ｐ０用メモリマップ部、
１２００    融合機、              １２１０    ソフトウェア群、
１２３０    アプリケーション、    １２２０    プラットフォーム、
１２２１    ＯＳ、                １２２２    ＳＣＳ、
１２２３    ＳＲＭ、              １２２４    ＥＣＳ、
１２２５    ＭＣＳ、              １２２６    ＯＣＳ、
１２２７    ＦＣＳ、              １２２８    ＮＣＳ、
１２２９    ＩＭＨ、              １２３１    ＦＣＵＨ、
１２４０    融合機起動部、
１３００    コントローラ、        １３０１    ＡＳＩＣ、
１３０２    ＭＥＭ−Ｃ、          １３０３    ＨＤＤ、
１３０４    ＣＰＵ、              １３０５    ＮＢ、
１３０６    ＭＥＭ−Ｐ、          １３０７    ＳＢ、
１３０８    ＡＧＰ、
１３０９    ネットワークＩ／Ｆコントローラ、
１３１０    オペレーションパネル、
１３２０    ファックスコントロールユニット、
１３３０    ＵＳＢデバイス、
１３４０    ＩＥＥＥ１３９４デバイス、
１３５０    エンジン部
【図１】
0004128467.tif 000002
【図２】
0004128467.tif 000003
【図３】
0004128467.tif 000004
【図４】
0004128467.tif 000005
【図５】
0004128467.tif 000006
【図６】
0004128467.tif 000007
【図７】
0004128467.tif 000008
【図８】
0004128467.tif 000009
【図９】
0004128467.tif 000010
【図１０】
0004128467.tif 000011
【図１１】
0004128467.tif 000012
【図１２】
0004128467.tif 000013