(57)【特許請求の範囲】
【請求項１】
印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置であって、
アドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報と、前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と、前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報を記憶する記憶手段と、
前記コントロールサービスと前記アプリケーションとの間に介在して動作し、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ管理情報から指定された前記属性情報に対応付けられた共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信する調停手段と、
を備えたことを特徴とする画像形成装置。
【請求項２】
前記調停手段は、前記アプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記調停手段は、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、
前記調停手段は、前記アプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記使用目的は、画像形成処理で使用される画像データの共有を示すものであることを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記使用目的は、ユーザごとに前記アプリケーションの利用の可否を記録した認証データの共有を示すものであることを特徴とする請求項４に記載の画像形成装置。
【請求項７】
前記使用目的は、前記アプリケーションの使用状況を記録した履歴データの共有を示すものであることを特徴とする請求項４に記載の画像形成装置。
【請求項８】
前記コントロールサービスをサーバとしたクライアントプロセスとして動作し、かつ前記アプリケーションをクライアントとしたサーバプロセスとして動作する仮想アプリケーションサービスをさらに備え、
前記調停手段は、前記仮想アプリケーションサービスに含まれることを特徴とする請求項１〜７のいずれか一つに記載の画像形成装置。
【請求項９】
印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置であって、
アドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報と、前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と、前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報を記憶する記憶手段と、
前記コントロールサービスと前記アプリケーションとの間に介在して動作し、前記アプリケーションごとに別個に起動され、前記コントロールサービスをサーバとしたクライアントプロセスとして動作し、かつ前記アプリケーションをクライアントとしたサーバプロセスとして動作し、対応するアプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ管理情報から指定された前記属性情報に対応付けられた共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信する仮想アプリケーションサービス
を備えたことを特徴とする画像形成装置。
【請求項１０】
前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする請求項９に記載の画像形成装置。
【請求項１１】
前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする請求項１０に記載の画像形成装置。
【請求項１２】
前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、
前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする請求項１１に記載の画像形成装置。
【請求項１３】
印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置のアドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報を調停する共有メモリ調停方法であって、
前記コントロールサービスと前記アプリケーションとの間に介在して動作する調停手段によって実行され、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ識別情報と前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報から指定された前記属性情報に対応付けられた前記共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信する調停ステップ
を含むことを特徴とする共有メモリ調停方法。
【請求項１４】
前記調停ステップは、前記アプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項１３に記載の共有メモリ調停方法。
【請求項１５】
前記調停ステップは、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項１３または１４に記載の共有メモリ調停方法。
【請求項１６】
前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、
前記調停ステップは、前記アプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする請求項１５に記載の共有メモリ調停方法。
【請求項１７】
前記使用目的は、画像形成処理で使用される画像データの共有を示すものであることを特徴とする請求項１６に記載の共有メモリ調停方法。
【請求項１８】
前記使用目的は、ユーザごとに前記アプリケーションの利用の可否を記録した認証データの共有を示すものであることを特徴とする請求項１６に記載の共有メモリ調停方法。
【請求項１９】
前記使用目的は、前記アプリケーションの使用状況を記録した履歴データの共有を示すものであることを特徴とする請求項１６に記載の共有メモリ調停方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを提供するアプリケーションなどの複数プロセスで利用される共有メモリ領域を調停することができる画像形成装置および共有メモリ調停方法に関するものである。
【０００２】
【従来の技術】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
このような従来の複合機では、プリンタ、コピー、ファクシミリ、スキャナなどの各機能単位で、ハードウェア資源にアクセスする機能を持ち合わせており、複合機内部で動作するプロセス数も比較的少ないものとなっている。
【０００４】
また、このような従来の複合機では、複数のアプリケーションや他のプログラムが共通に使用するデータを格納する領域として、アドレス空間上に共有メモリ領域が確保される場合がある。このような共有メモリ領域の確保、解放、調停は、複合機に搭載されたＯＳ（オペレーションシステム）に依存することが一般的である。
【０００５】
そして、アドレス空間に共有メモリ領域を生成したり、すでに生成された共有メモリ領域を取得するアプリケーションは、共有メモリ領域に固有の識別情報である共有メモリキーを指定して、共有メモリ領域の生成要求または取得要求をＯＳに対して行い、それを受けたＯＳは指定された共有メモリ領域の生成を行って生成した共有メモリ領域を共有メモリキーに対応させたり、または共有メモリキーの共有メモリ領域を検索してその先頭アドレスを、アプリケーションに通知する。このように、従来の複合機では、共有メモリ領域を使用するアプリケーションは、共有メモリキーの値を意識してプログラム開発を行う必要があった。
【０００６】
【発明が解決しようとする課題】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（複合機）を発明した。
【０００７】
この複合機によれば、アプリケーションの少なくとも２つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
【０００８】
このような新規な複合機では、アプリケーションの少なくとも２つが共通的に必要とするサービスを提供するコントロールサービスをアプリケーションと別個に設けた構成となっており、多数のプロセスが協調的に動作しているため、各プロセスごとに共有メモリキーの値を意識したプログラム開発を行わなければならないとすると、共有メモリキーの値を重複しないようにプログラミングする必要が生じてきて、プログラム開発が困難となる。また、共有メモリキーの値が重複した場合には、その調停をＯＳ側で行わなければならず、ＯＳの負担により処理効率が低下してしまう。このような問題は、動作するプロセス数および開発するプログラム数の少ない従来の複合機では問題にならなかった新規な課題である。
【０００９】
また、かかる新規な複合機は、アプリケーションとコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが新規なアプリケーションを開発して複合機に搭載可能な構成となっている。このため、複合機には、その出荷時に搭載されるコピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるアプリケーションの他、従来の複合機と異なり、ユーザやサードベンダが開発した新規アプリケーションなど、アプリケーションが多数起動可能となっている。コピー、プリンタ、ファクシミリ、スキャナなどの複合機であらかじめ提供されるアプリケーションの場合、予め共有メモリキーの値が重複しないように調整しておくことも可能である。しかしながら、第三者が開発する新規アプリケーションの場合には、既存のアプリケーションやコントロールサービスなどとの間で共有メモリキーの重複を回避するようにプログラム開発を行うことは困難であるという従来の複合機では問題にならなかった新規な課題が生じてくる。
【００１０】
この発明は上記に鑑みてなされたもので、新規アプリケーションのプログラム開発を効率的に行え、かつ画像形成処理の処理効率の向上を図ることができる画像形成装置および共有メモリ調停方法を得ることを目的とする。
【００１７】
【課題を解決するための手段】
上記目的および課題を達成するために、請求項１にかかる発明は、印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置であって、アドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報と、前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と、前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報を記憶する記憶手段と、前記コントロールサービスと前記アプリケーションとの間に介在して動作し、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ管理情報から指定された前記属性情報に対応付けられた共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信する調停手段と、を備えたことを特徴とする。
【００１８】
この請求項１の発明によれば、アプリケーションから共有メモリ識別情報の取得要求を受けた場合に、調停手段によって、共有メモリ管理情報に基づいて共有メモリ識別情報を決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００１９】
また、請求項２にかかる発明は、請求項１に記載の画像形成装置において、前記調停手段は、前記アプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００２０】
この請求項２の発明によれば、アプリケーションから共有メモリ領域の共有相手である他のプロセスを指定した共有メモリ識別情報の取得要求を受けた場合に、調停手段によって、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００２１】
また、請求項３にかかる発明は、請求項１または２に記載の画像形成装置において、前記調停手段は、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００２２】
この請求項３の発明によれば、アプリケーションから属性情報を指定した共有メモリ識別情報の取得要求を受けた場合に、調停手段によって、指定された属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００２３】
また、請求項４にかかる発明は、請求項３に記載の画像形成装置において、前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、前記調停手段は、前記アプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００２４】
この請求項４の発明によれば、アプリケーションから使用目的を指定した共有メモリ識別情報の取得要求を受けた場合に、調停手段によって、指定された使用目的の属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００２５】
また、請求項５にかかる発明は、請求項４に記載の画像形成装置において、前記使用目的は、画像形成処理で使用される画像データの共有を示すものであることを特徴とする。
【００２６】
この請求項５の発明によれば、使用目的は画像形成処理で使用される画像データの共有を示すものであるので、アプリケーションが画像データのための共有メモリ領域を取得する場合には、画像データの共有を使用目的として指定して取得要求を行えば、画像データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００２７】
また、請求項６にかかる発明は、請求項４に記載の画像形成装置において、前記使用目的は、ユーザごとに前記アプリケーションの利用の可否を記録した認証データの共有を示すものであることを特徴とする。
【００２８】
この請求項６の発明によれば、使用目的はユーザごとにアプリケーションの利用の可否を記録した認証データの共有を示すものであるので、アプリケーションが認証データのための共有メモリ領域を取得する場合には、認証データの共有を使用目的として指定して取得要求を行えば、認証データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００２９】
また、請求項７にかかる発明は、請求項４に記載の画像形成装置において、前記使用目的は、前記アプリケーションの使用状況を記録した履歴データの共有を示すものであることを特徴とする。
【００３０】
この請求項７の発明によれば、使用目的はアプリケーションの使用状況を記録した履歴データの共有を示すものであるので、アプリケーションが他のアプリケーションの履歴データのための共有メモリ領域を取得する場合には、当該履歴データの共有を使用目的として指定して取得要求を行えば、履歴データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００３１】
また、請求項８にかかる発明は、請求項１〜７のいずれか一つに記載の画像形成装置において、前記コントロールサービスをサーバとしたクライアントプロセスとして動作し、かつ前記アプリケーションをクライアントとしたサーバプロセスとして動作する仮想アプリケーションサービスをさらに備え、前記調停手段は、前記仮想アプリケーションサービスに含まれることを特徴とする。
【００３２】
この請求項８にかかる発明によれば、調停手段は仮想アプリケーションサービスに含まれており、この仮想アプリケーションサービスは、コントロールサービスをサーバとしたクライアントプロセスとして動作し、かつアプリケーションをクライアントとしたサーバプロセスとして動作するので、アプリケーションに対して共有メモリの調停というサービスを提供するだけでなく、コントロールサービスから例えば、共有メモリの調停の結果に伴うサービスの提供を受けることができ、アプリケーションを利用するユーザの利便性を向上させることができる。
【００３３】
また、請求項９にかかる発明は、印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置であって、アドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報と、前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と、前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報を記憶する記憶手段と、前記コントロールサービスと前記アプリケーションとの間に介在して動作し、前記アプリケーションごとに別個に起動され、前記コントロールサービスをサーバとしたクライアントプロセスとして動作し、かつ前記アプリケーションをクライアントとしたサーバプロセスとして動作し、対応するアプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ管理情報から指定された前記属性情報に対応付けられた共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信する仮想アプリケーションサービスを備えたことを特徴とする。
【００３４】
この請求項９にかかる発明によれば、仮想アプリケーションサービスはアプリケーションごとに別個に起動されるので、複数のアプリケーションに対する共有メモリの調停処理を、各アプリケーションに対応する仮想アプリケーションサービスで並列に実行することができ、アプリケーションに対する共有メモリ調停処理を効率的に行うことができる。
【００３５】
また、この請求項９にかかる発明によれば、各仮想アプリケーションサービスによって、仮想アプリケーションに対応するアプリケーションから共有メモリ識別情報の取得要求を受けた場合に、共有メモリ管理情報に基づいて共有メモリ識別情報を決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の属性情報を対応するアプリケーションに送信することで、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００３６】
また、請求項１０にかかる発明は、請求項９に記載の画像形成装置において、前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする。
【００３７】
この請求項１０にかかる発明によれば、仮想アプリケーションサービスによって、対応するアプリケーションから共有メモリ領域の共有相手である他のプロセスを指定した共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を対応するアプリケーションに送信することで、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００３８】
また、請求項１１にかかる発明は、請求項１０に記載の画像形成装置において、前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする。
【００３９】
この請求項１１にかかる発明によれば、仮想アプリケーションサービスによって、対応するアプリケーションから属性情報を指定した共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、対応するアプリケーションに送信することで、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００４０】
また、請求項１２にかかる発明は、請求項１１に記載の画像形成装置において、前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、前記仮想アプリケーションサービスは、前記対応するアプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記対応するアプリケーションに送信することを特徴とする。
【００４１】
この請求項１２にかかる発明によれば、仮想アプリケーションサービスによって、対応するアプリケーションから使用目的を指定した共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、前記対応するアプリケーションに送信することで、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００４８】
また、請求項１３にかかる発明は、印刷部または撮像部を有するハードウェア資源と、前記ハードウェア資源を利用した画像形成処理にかかる複数のアプリケーションのプロセスと、オペレーティングシステムと、前記オペレーティングシステム上で動作し、複数の前記アプリケーションからアクセスされて前記ハードウェア資源の制御を行う複数のコントロールサービスのプロセスとを備えた画像形成装置のアドレス空間上に確保される共有メモリ領域に固有の共有メモリ識別情報を調停する共有メモリ調停方法であって、前記コントロールサービスと前記アプリケーションとの間に介在して動作する調停手段によって実行され、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、前記共有メモリ識別情報と前記共有メモリ領域を割り当てられたプロセスに固有のプロセス識別情報と前記共有メモリ領域の属性情報とを対応付けて保持する共有メモリ管理情報から指定された前記属性情報に対応付けられた前記共有メモリ識別情報を検索して決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信する調停ステップを含むことを特徴とする。
【００４９】
この請求項１３にかかる発明によれば、アプリケーションから共有メモリ識別情報の取得要求を受けた場合に、調停ステップによって、共有メモリ管理情報に基づいて共有メモリ識別情報を決定し、決定された共有メモリ識別情報および決定された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００５０】
また、請求項１４にかかる発明は、請求項１３に記載の共有メモリ調停方法において、前記調停ステップは、前記アプリケーションから前記共有メモリ領域の共有相手である他のプロセスを指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００５１】
この請求項１４にかかる発明によれば、アプリケーションから共有メモリ領域の共有相手である他のプロセスを指定した共有メモリ識別情報の取得要求を受けた場合に、調停ステップによって、指定された他のプロセスのプロセス識別情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００５２】
また、請求項１５にかかる発明は、請求項１３または１４に記載の共有メモリ調停方法において、前記調停ステップは、前記アプリケーションから前記属性情報を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００５３】
この請求項１５にかかる発明によれば、アプリケーションから属性情報を指定した共有メモリ識別情報の取得要求を受けた場合に、調停ステップによって、指定された属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００５４】
また、請求項１６にかかる発明は、請求項１５に記載の共有メモリ調停方法において、前記共有メモリ管理情報は、前記属性情報として前記共有メモリ領域の使用目的を含み、前記調停ステップは、前記アプリケーションから前記使用目的を指定した前記共有メモリ識別情報の取得要求を受けた場合に、指定された使用目的の属性情報に対応する共有メモリ識別情報を前記共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の前記属性情報を、前記取得要求を行った前記アプリケーションに送信することを特徴とする。
【００５５】
この請求項１６にかかる発明によれば、アプリケーションから使用目的を指定した共有メモリ識別情報の取得要求を受けた場合に、調停ステップによって、指定された使用目的の属性情報に対応する共有メモリ識別情報を共有メモリ管理情報から検索して、検索された共有メモリ識別情報および検索された共有メモリ識別情報の属性情報を、取得要求を行ったアプリケーションに送信することで、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができる。
【００５６】
また、請求項１７にかかる発明は、請求項１６に記載の共有メモリ調停方法において、前記使用目的は、画像形成処理で使用される画像データの共有を示すものであることを特徴とする。
【００５７】
この請求項１７にかかる発明によれば、使用目的は画像形成処理で使用される画像データの共有を示すものであるので、アプリケーションが画像データのための共有メモリ領域を取得する場合には、画像データの共有を使用目的として指定して取得要求を行えば、画像データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００５８】
また、請求項１８にかかる発明は、請求項１６に記載の共有メモリ調停方法において、前記使用目的は、ユーザごとに前記アプリケーションの利用の可否を記録した認証データの共有を示すものであることを特徴とする。
【００５９】
この請求項１８にかかる発明によれば、使用目的はユーザごとにアプリケーションの利用の可否を記録した認証データの共有を示すものであるので、アプリケーションが認証データのための共有メモリ領域を取得する場合には、認証データの共有を使用目的として指定して取得要求を行えば、認証データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００６０】
また、請求項１９にかかる発明は、請求項１６に記載の共有メモリ調停方法において、前記使用目的は、前記アプリケーションの使用状況を記録した履歴データの共有を示すものであることを特徴とする。
【００６１】
この請求項１９にかかる発明によれば、使用目的はアプリケーションの使用状況を記録した履歴データの共有を示すものであるので、アプリケーションが他のアプリケーションの履歴データのための共有メモリ領域を取得する場合には、当該履歴データの共有を使用目的として指定して取得要求を行えば、履歴データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができる。
【００６２】
【発明の実施の形態】
（実施の形態１）
図１は、この発明の実施の形態１である画像形成装置（以下、「複合機」という）の構成を示すブロック図である。図１に示すように、複合機１００は、白黒ラインプリンタ（B&W LP）１０１と、カラーラインプリンタ（Color LP）１０２と、スキャナ、ファクシミリ、ハードディスク、メモリ、ネットワークインタフェースなどのハードウェアリソース１０３を有するとともに、プラットホーム１２０とアプリケーション１３０と仮想アプリケーションサービス（ＶＡＳ：Ｖｅｒｔｉａｌ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ）１４０から構成されるソフトウェア群１１０とを備えている。
【００６３】
仮想アプリケーションサービス（ＶＡＳ）１４０は、アプリケーション１３０とプラットホーム１２０の間に配置される。ＶＡＳ１４０は、アドレス空間上に確保される共有メモリ領域を識別する共有メモリ識別情報としての共有メモリキーの調停を行うものである。具体的には、アプリケーション１３０から共有メモリキーの取得要求メッセージを受信して、後述する共有メモリ管理ファイルの内容を参照して、該当する共有メモリキーを決定し、決定した共有メモリキーを取得要求メッセージを送信したアプリケーション１３０に送信するようになっている。また、ＶＡＳ１４０は、アプリケーション１３０が起動されたときにアプリ登録処理を行う。
【００６４】
プラットホーム１２０は、アプリケーション１３０からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００６５】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００６６】
汎用ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００６７】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００６８】
具体的には、このＳＲＭ１２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００６９】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００７０】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（B&W LP）１０１、カラーラインプリンタ（Color LP）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０３のエンジンの制御を行う。
【００７１】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００７２】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００７３】
ＮＣＳ１２８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ftpd、httpd、lpd、snmpd、telnetd、smtpdなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【００７４】
ＯＣＳ１２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）の制御を行う。ＯＣＳ１２６は、オペレーションパネルからキー押下をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ１２２に送信するＯＣＳプロセスの部分と、アプリケーション１３０またはコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたＯＣＳライブラリの部分とから構成される。このＯＣＳライブラリは、アプリケーション１３０およびコントロールサービスの各モジュールにリンクされて実装されている。なお、ＯＣＳ１２６のすべてをプロセスとして動作させるように構成しても良く、あるいはＯＣＳ１２６のすべてをＯＣＳライブラリとして構成しても良い。
【００７５】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６とを有している。これらの各アプリは、その起動時にＶＡＳ１４０に対して自プロセスのプロセスＩＤとともにアプリ登録要求メッセージを送信し、アプリ登録要求メッセージを受信したＶＡＳ１４０によって、起動したアプリに対する登録処理が行われる。
【００７６】
また、アプリケーション１３０の各アプリは、共有メモリキー取得要求関数呼び出し、共有メモリキー解放要求関数呼び出し、共有メモリキー削除要求関数呼び出しをＶＡＳ１４０に行い、各要求関数呼び出しを受けたＶＡＳ１４０が各要求関数に応じた処理を実行してその結果を戻り値として関数呼び出しを行ったアプリに送信するようになっている。このため、各アプリには、これらの要求関数を登録したＶＡＳ関数ライブラリをリンクしており、各アプリから各要求関数の呼び出しが可能となっている。
【００７７】
アプリケーション１３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００７８】
このように、実施の形態１にかかる複合機１００には、複数のアプリケーション１３０および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション１３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。また、複合機１００には、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に新規アプリ１１７，１１８を開発して搭載することが可能となっている。図１では、この新規アプリ１１７，１１８を搭載した例を示している。
【００７９】
なお、実施の形態１にかかる複合機１００では、複数のアプリケーション１３０のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション１３０とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション１３０は、アプリケーションごとに追加または削除することができる。
【００８０】
図２は、実施の形態１にかかる複合機１００のＶＡＳ１４０の構成と、ＶＡＳ１４０と各アプリ、コントロールサービス層１５０および汎用ＯＳ１２１との関係を示すブロック図である。なお、図２では、アプリケーション１３０の例として、プリンタアプリ１１１、コピーアプリ１１２、新規アプリ１１７，１１８を示しているが、他のアプリでも同様の構成である。なお、図２では、ＲＡＭ２１０のアドレス空間２１２上に共有メモリ領域２１１を確保した例を示しているが、ハードディスクを使用した仮想記憶方式を利用して、仮想アドレス空間上に共有メモリ領域を確保するように構成した例にも本発明を適用できることは言うまでもない。
【００８１】
仮想アプリケーションサービス（ＶＡＳ）１４０のプロセスには、ディスパッチャ１４４と、制御スレッド１４３と、共有メモリキー調停スレッド１４１とが動作している。
【００８２】
ディスパッチャ１４４は、アプリケーション１３０やコントロールサービスからのメッセージ受信や各種関数の呼び出しを監視し、受信したメッセージに応じて制御スレッド１４３、共有メモリキー調停スレッド１４１に処理要求メッセージを行うものである。
【００８３】
実施の形態１の複合機１００では、ディスパッチャ１４４は、各アプリの起動時に、アプリからアプリ登録要求メッセージを受信したとき、受信したアプリ登録要求メッセージを制御スレッド１４３に送信するようになっている。また、ディスパッチャ１４４は、各アプリから共有メモリキー取得要求関数呼び出しを受けたときに、共有メモリキー取得要求メッセージを関数呼び出しの際の引数（第１引数：作成または取得、第２引数：アプリＩＤ）とともに共有メモリキー調停スレッド１４１に送信する。また、ディスパッチャ１４４は、各アプリから共有メモリキー解放要求関数呼び出しを受けたときに、共有メモリキー解放要求メッセージを関数呼び出しの際の引数（第１引数：共有メモリキー）とともに共有メモリキー調停スレッド１４１に送信する。さらに、ディスパッチャ１４４は、各アプリから共有メモリキー削除要求関数呼び出しを受けたときに、共有メモリキー削除要求メッセージを関数呼び出しの際の引数（第１引数：共有メモリキー）とともに共有メモリキー調停スレッド１４１に送信する。
【００８４】
制御スレッド１４３は、ディスパッチャ１４４からアプリ登録要求メッセージを受信してアプリ登録処理を行う。ここで、アプリ登録処理とは、ＲＡＭ２１０にアプリ登録テーブル（図示せず）を生成し、アプリ登録要求メッセージを送信したアプリの識別情報であるアプリＩＤをアプリ登録テーブルに記録する処理をいう。
【００８５】
共有メモリキー調停スレッド１４１は、本発明における調停手段を構成するものであり、共有メモリキーの調停処理を行うものである。具体的には、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー取得要求メッセージを受信した場合、ＨＤ（ハードディスク）２００に格納されている共有メモリ管理ファイル２０１の内容を参照し、共有メモリキーを決定する。そして、決定した共有メモリキーを取得要求を行ったアプリに送信する。また、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー解放要求メッセージを受信した場合、共有メモリ管理ファイル２０１の中の指定された共有メモリキーのレコードから要求を行ったアプリのアプリＩＤを削除する。さらに、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー削除要求メッセージを受信した場合、共有メモリ管理ファイル２０１の中の指定された共有メモリキーのレコードを削除する。なお、この共有メモリキーの調停処理の詳細については後述する。
【００８６】
上記ＶＡＳ１４０のプログラムは、ソフトウェア開発キット（ＳＤＫ：Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）等の一部または全部として、ＣＤ−ＲＯＭまたはＦＤなどの記憶媒体に実行可能な形式またはインストール可能な形式のファイルで提供される。また、このような実行可能な形式またはインストール可能な形式のＶＡＳ１４０のプログラムファイルを、ネットワーク経由で取得可能な方法で提供するようにしても良い。
【００８７】
図３は、ＨＤ２００に格納される共有メモリ管理ファイル２０１の内容の一例を示す説明図である。共有メモリ管理ファイル２０１はデータベース形式のファイルとなっており、図３に示すように、共有メモリ領域２１１の識別情報を示す共有メモリキーと、アプリケーションに固有の識別情報であるアプリＩＤと、アプリのプロセスに固有の識別情報であるプロセスＩＤとが対応づけられて一レコードとして記録されている。
【００８８】
共有メモリキーは、アドレス空間２１２上に確保される共有メモリ領域２１１を識別するものであり、本発明における共有メモリ識別情報を構成する。かかる共有メモリキーは、確保される共有メモリ領域２１１ごとに固有の値を有するものとなっている。各アプリは、この共有メモリキーを指定して汎用ＯＳ１２１で提供される共有メモリ領域取得のシステムコールを発行することによって、共有メモリ領域２１１の作成または取得を行う。
【００８９】
アプリＩＤは、対応する共有メモリキーで識別される共有メモリ領域２１１を使用するアプリの識別情報である。従って、共有メモリ領域２１１を作成したり、取得したすべてのアプリのアプリＩＤが、一つの共有メモリキーに対して記録される。
【００９０】
プロセスＩＤは、アプリＩＤのアプリのプロセスの識別情報である。アプリが単一プロセスからなる場合には、一つのアプリＩＤに対し一つのプロセスＩＤが対応するが、アプリが複数プロセスから構成される場合には、図３に示すように、一つのアプリＩＤに対して複数のプロセスＩＤが対応して記録される。ここで、アプリＩＤおよびプロセスＩＤは、本発明におけるプロセス識別情報を構成する。
【００９１】
次に、このように構成された複合機１００のＶＡＳ１４０による共有メモリキーの調停処理について説明する。まず、調停処理に先立って、アプリ起動時に制御スレッド１４３によるアプリ登録処理が行われる。各アプリはその起動時にＶＡＳ１４０に対してアプリ登録要求メッセージをプロセス間通信によって送信する。ＶＡＳ１４０のディスパッチャ１４４がアプリ登録要求メッセージを受信すると、アプリ登録要求メッセージをそのアプリのプロセスＩＤとともに制御スレッド１４３に受け渡す。制御スレッド１４３は、アプリ登録要求メッセージをプロセスＩＤをディスパッチャ１４４から受信すると、アプリＩＤを決定し、アプリ登録テーブル（図示せず）にアプリＩＤを記録することにより、アプリ登録を行う。なお、アプリＩＤは、コピーアプリ１１２、プリンタアプリ１１１など既存のアプリケーションについては、予め定められており、各アプリＩＤをＶＡＳ１４０が内部で保持している。また、サードベンダなどが開発した新規アプリ１１７，１１８については、最初の起動時におけるアプリ登録処理の中で決定される。
【００９２】
図４は、プリンタアプリ１１１および新規アプリ１１７による共有メモリ領域２１１の取得処理におけるプリンタアプリ１１１、新規アプリ１１７、ＶＡＳ１４０、汎用ＯＳ１２１間のメッセージのやりとりおよび関数呼び出しを示すシーケンス図である。図４では、プリンタアプリ１１１によって共有メモリ領域２１１を確保（作成）し、新規アプリ１１７によってプリンタアプリ１１１のアプリＩＤを指定した共有メモリキー取得要求を行い、新規アプリ１１７が取得した共有メモリキーで共有メモリ領域２１１の取得を行う例を示している。なお、ここでは、コピーアプリ１１２と新規アプリ１１７間の共有を例にあげているが、プリンタアプリ１１１やコピーアプリ１１２などの既存アプリ同士、あるいは新規アプリ１１７，１１８同士の間でメモリ領域を共有することも勿論可能である。
【００９３】
まず、プリンタアプリ１１１は、共有メモリ領域２１１を作成するために、ＶＡＳ１４０に対して共有メモリキー取得要求を行う（ステップＳ４０１）。ここで、共有メモリキー取得要求は、共有メモリキー取得要求関数の呼び出しとその戻り値の受信というプロセス間通信で行う。また、共有メモリキー取得要求関数は、第１引数と第２引数の指定がなされる。第１引数は、共有メモリ領域２１１の「作成」（確保）か、すでに確保されている共有メモリ領域２１１の取得（割当て）かを指定するものであり、第２引数は、第１引数が「取得」の場合に、共有相手のアプリケーション１３０のアプリＩＤを指定するものである。図４のステップＳ４０１では、新規アプリ１１７が新たに共有メモリ領域２１１を確保するため、第１引数に「作成」を指定して、共有メモリキー取得要求関数呼び出しを行う。
【００９４】
ＶＡＳ１４０は、共有メモリキー取得要求関数呼び出しをディスパッチャ１４４で受信し、ディスパッチャ１４４は共有メモリキー取得要求メッセージを共有メモリキー調停スレッド１４１に送信する。共有メモリキー調停スレッド１４１は、共有メモリキー取得要求メッセージを受信すると、共有メモリキーを決定する調停処理を行って（ステップＳ４０２）、決定した共有メモリキーを共有メモリキー取得要求関数呼び出しを行ったプリンタアプリ１１１に関数戻り値として送信する（ステップＳ４０３）。なお、本実施の形態では、共有メモリキー取得要求を関数呼び出しとその戻り値受信というプロセス間通信によって行っているが、この他メッセージ送信等を利用したプロセス間通信で行っても良い。
【００９５】
次に、共有メモリキーをＶＡＳ１４０から受信したプリンタアプリ１１１は、受信した共有メモリキーを引数として、汎用ＯＳ１２１で提供される共有メモリ確保のｓｈｇｅｔシステムコールを発行する（ステップＳ４０４）。このシステムコールによって共有メモリ領域２１１が汎用ＯＳ１２１によって確保され、共有メモリキーの資源ＩＤが通知される（ステップＳ４０５）。以降、プリンタアプリ１１１は、この資源ＩＤと新規作成フラグを指定して各システムコールを発行する。次に、プリンタアプリ１１１は、資源ＩＤを指定してｓｈａｔｔシステムコールを発行し、プリンタアプリ１１１のプロセスにおけるアドレス空間２１２上の共有メモリ領域２１１のアドレスを取得する（ステップＳ４０６）。これによって、プリンタアプリ１１１は、生成された共有メモリ領域２１１へのアクセスが可能となり、所望のデータを書き込む等の処理を行う。
【００９６】
一方、新規アプリ１１７は、プリンタアプリ１１１によって確保された共有メモリ領域２１１にアクセスするために、まずＶＡＳ１４０に対し共有メモリキー取得要求関数呼び出しを行う。このときの第１引数には「取得」を指定し、第２引数には共有相手であるプリンタアプリ１１１のアプリＩＤを指定する（ステップＳ４０７）。
【００９７】
ＶＡＳ１４０は、共有メモリキー取得要求関数呼び出しをディスパッチャ１４４で受信し、ディスパッチャ１４４は共有メモリキー取得要求メッセージを、共有メモリキー取得要求関数の第１引数および第２引数とともに、共有メモリキー調停スレッド１４１に送信する。共有メモリキー調停スレッド１４１は、共有メモリキー取得要求メッセージを受信すると、指定されたアプリＩＤが設定されている共有メモリキーを決定する調停処理を行って（ステップＳ４０８）、決定した共有メモリキーを共有メモリキー取得要求関数呼び出しを行った新規アプリ１１７に関数戻り値として送信する（ステップＳ４０９）。
【００９８】
次に、共有メモリキーをＶＡＳ１４０から受信した新規アプリ１１７は、受信した共有メモリキーを引数として、共有メモリ確保のｓｈｇｅｔシステムコールを発行する（ステップＳ４１０）。このシステムコールによってプリンタアプリ１１１によって確保された共有メモリ領域２１１が選定され、共有メモリキーの資源ＩＤが通知される（ステップＳ４１１）。次に、新規アプリ１１７は、資源ＩＤを指定してｓｈａｔｔシステムコールを発行し、新規アプリ１１７のプロセスにおけるアドレス空間２１２上の共有メモリ領域２１１のアドレスを取得する（ステップＳ４１２）。これによって、新規アプリ１１７は、プリンタアプリ１１１によって確保された共有メモリ領域２１１へのアクセスが可能となり、所望のデータを読み出す等の処理を行う。
【００９９】
新規アプリ１１７が共有メモリ領域２１１へのアクセスがすべて終了し、アクセス不要となった場合には、ＶＡＳ１４０に対して、ステップＳ４０９で取得した共有メモリキーを指定して、共有メモリキー解放要求関数の呼び出しを行う（ステップＳ４１３）。
【０１００】
ＶＡＳ１４０は、共有メモリキー解放要求関数呼び出しをディスパッチャ１４４で受信し、ディスパッチャ１４４は共有メモリキー解放要求メッセージを、共有メモリキー解放要求関数の引数とともに共有メモリキー調停スレッド１４１に送信する。共有メモリキー調停スレッド１４１は、共有メモリキー解放要求メッセージを受信すると、指定された共有メモリキーのレコードの中から共有メモリキー解放要求関数呼び出しを行った新規アプリ１１７のアプリＩＤを削除し（ステップＳ４１４）、その結果通知を新規アプリ１１７に送信する（ステップＳ４１５）。そして、新規アプリ１１７は、共有メモリ領域２１１の解放を行うｓｈｄｅｔシステムコールを資源ＩＤを引数として発行し（ステップＳ４１６）、汎用ＯＳ１２１によって新規アプリ１１７の共有メモリ領域２１１のアドレスが解放される。
【０１０１】
一方、プリンタアプリ１１１では、必要に応じて、共有メモリ領域２１１の削除を行うため、ステップＳ４０３で取得した共有メモリキーを指定して共有メモリキー削除要求関数の呼び出しを行う（ステップＳ４１７）。
【０１０２】
ＶＡＳ１４０は、共有メモリキー削除要求関数呼び出しをディスパッチャ１４４で受信し、ディスパッチャ１４４は共有メモリキー削除要求メッセージを、共有メモリキー削除要求関数の引数とともに共有メモリキー調停スレッド１４１に送信する。共有メモリキー調停スレッド１４１は、共有メモリキー削除要求メッセージを受信すると、共有メモリ管理ファイル２０１の中で指定された共有メモリキーのレコードを削除し（ステップＳ４１８）、その結果通知をプリンタアプリ１１１に送信する（ステップＳ４１９）。そして、プリンタアプリ１１１は、共有メモリ領域２１１の削除を行うｓｈｃｔｌシステムコールを資源ＩＤを引数として発行し（ステップＳ４２０）、汎用ＯＳ１２１によって共有メモリ領域２１１が削除される。
【０１０３】
図５は、ＶＡＳ１４０の共有メモリキー調停スレッド１４１による共有メモリキー調停の処理手順を示すフローチャートである。共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から要求メッセージおよびすべての引数を受信すると（ステップＳ５０１）、受信した要求メッセージが共有メモリキー取得要求メッセージか、共有メモリキー解放要求メッセージか、共有メモリキー削除要求メッセージかを判断する（ステップＳ５０２）。
【０１０４】
要求メッセージが共有メモリキー取得要求メッセージの場合には、さらにアプリからの関数呼び出しの際に指定された第１引数が「作成」か「取得」を判断する（ステップＳ５０３）。そして、第１引数が「作成」の場合には、共有メモリ管理ファイル２０１を参照して、当該ファイルに記録されている共有メモリキーの値以外の値の中で最小の値を共有メモリキーと決定する（ステップＳ５０４）。そして、決定された共有メモリキーのレコードと取得要求を行ったアプリのアプリＩＤおよびプロセスＩＤを一レコードとして、共有メモリ管理ファイル２０１に追加記録する（ステップＳ５０５）。そして、決定された共有メモリキーを共有メモリキー取得要求関数呼び出しを行ったアプリに送信する（ステップＳ５０９）。これらのステップＳ５０４およびＳ５０５の処理は、図４に示すステップＳ４０２の調停処理で行われる。
【０１０５】
一方、ステップＳ５０３において、第１引数が「取得」の場合には、共有メモリ管理ファイル２０１を参照して、アプリからの関数呼び出しの際の第２引数で指定されたアプリＩＤを含む共有メモリキーのレコードを検索する（ステップＳ５０６）。検索の結果、指定されたアプリＩＤを含む共有メモリキーのレコードが存在するか否かを判断し（ステップＳ５０７）、存在する場合には（ステップＳ５０７：Ｙｅｓ）、検索されたすべての共有メモリキーのレコードに対し、指定されたアプリＩＤを追加する（ステップＳ５０８）。そして、決定したすべての共有メモリキーを共有メモリキー取得要求関数呼び出しを行ったアプリに送信する（ステップＳ５０９）。これらのステップＳ５０６〜Ｓ５０８の処理は、図４に示すステップＳ４０２の調停処理で行われる。一方、検索結果で指定されたアプリＩＤを含む共有メモリキーのレコードが存在しなかった場合には（ステップＳ５０７：Ｎｏ）、その旨のエラーメッセージをアプリに送信する（ステップＳ５１０）。
【０１０６】
ステップＳ５０２において、要求メッセージが共有メモリキー解放要求メッセージの場合には、共有メモリ管理ファイル２０１の中の、共有メモリキー解放要求関数呼び出しの際に指定された共有メモリキーのレコードから共有メモリキー解放要求関数呼び出しを行ったアプリのアプリＩＤを削除する（ステップＳ５１１）。そして、その処理結果通知メッセージを共有メモリキー解放要求関数呼び出しを行ったアプリに送信する（ステップＳ５１２）。このステップＳ５１１の処理は、図４に示すステップＳ４０８の調停処理で行われる。
【０１０７】
また、ステップＳ５０２において、要求メッセージが共有メモリキー削除要求メッセージの場合には、共有メモリ管理ファイル２０１の中の、共有メモリキー削除要求関数呼び出しの際に指定された共有メモリキーのレコードを削除する（ステップＳ５１３）。そして、その処理結果通知メッセージを共有メモリキー削除要求関数呼び出しを行ったアプリに送信する（ステップＳ５１４）。このステップＳ５１３の処理は、図４に示すステップＳ４１８の調停処理で行われる。
【０１０８】
このように実施の形態１にかかる複合機１００では、ＶＡＳ１４０が各アプリから共有メモリキー取得要求を受けたときに、共有メモリ管理ファイル２０１に基づいて共有メモリキーを決定し、決定された共有メモリキーを取得要求を行ったアプリに送信することで、各アプリはＶＡＳ１４０で決定された共有メモリキーを利用して汎用ＯＳ１２１に共有メモリ領域２１１の取得などのシステムコールを発行すれば良いので、共有メモリキーの内容を意識したアプリのプログラム開発を行う必要がなくなり、アプリのプログラム開発を効率的に行うことができる。また、ＶＡＳ１４０によって、共有メモリキーを重複させずに決定できるので、共有メモリキーが重複した場合の調停処理を汎用ＯＳ１２１が行う必要がなくなり、全体として画像形成処理の処理効率の向上を図ることができる。
【０１０９】
また、実施の形態１にかかる複合機１００では、各アプリから共有メモリ領域２１１の共有相手である他のアプリのアプリＩＤを引数に指定した共有メモリキー取得要求関数呼び出しを受けたときに、ＶＡＳ１４０によって、指定された他のアプリＩＤに対応付けられた共有メモリキーを共有メモリ管理ファイル２０１から検索して、検索された共有メモリキーを関数呼び出しを行ったアプリに送信しているので、共有相手のアプリを指定した共有メモリ領域２１１の取得を行うことができ、新規アプリ１１７，１１８のプログラム開発を効率的に行うことができる。
【０１１０】
（実施の形態２）
実施の形態１にかかる複合機１００では、アプリが共有メモリキーの取得要求を行う場合、ＶＡＳ１４０に対して共有相手となるアプリＩＤを指定することができたが、この実施の形態２にかかる複合機１００では、さらに共有メモリ領域２１１の使用目的などの属性を指定して共有メモリキーの取得要求を行えるものである。
【０１１１】
実施の形態２にかかる複合機１００の機能的構成、ＶＡＳ１４０の構成については、実施の形態１で説明した図１および図２と同様である。図６は、実施の形態２にかかる複合機１００で使用する共有メモリ管理ファイル２０１の内容の一例を示す説明図である。図６に示すように、共有メモリ管理ファイル２０１の各レコードには、共有メモリキー、アプリＩＤ、プロセスＩＤの他、使用目的、パーミッションなどの属性情報が含まれている。
【０１１２】
使用目的には、「画像データ」、「認証データ」、「履歴データ」が設定されるようになっている。「画像データ」は、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理で使用される画像データを共有メモリ領域２１１に格納することを示すものである。「認証データ」は、ユーザごとに各アプリの利用の可否を記録した認証データを共有メモリ領域２１１に格納することを示すものである。「履歴データ」は、各アプリの使用状況を経時的に記録した履歴データを共有メモリ領域２１１に格納することを示すものである。なお、使用目的としては、この他のデータを設定できるように構成することも可能である。
【０１１３】
パーミッションには、共有メモリ領域２１１に対するアプリのアクセス権が設定される。具体的には、パーミッションには、「読み込み可能」、「書き込み可能」、「実行可能」、「権限なし」の設定が行われる。
【０１１４】
各アプリは、ＶＡＳ１４０に対して共有メモリキー取得要求関数を呼び出す際に、関数の第３引数として使用目的を上記３項目の中から一または複数指定することができるようになっている。また、第４引数として、パーミッションを上記４項目の中から一または複数指定できるようになっている。この場合、ＶＡＳ１４０の共有メモリキー調停スレッド１４１によって、第３引数で指定された使用目的を有する共有メモリ領域２１１の共有メモリキーが検索され、取得要求を行ったアプリに関数戻り値として共有メモリキーと、この共有メモリの上記属性情報が通知される。
【０１１５】
次に、以上のように構成された実施の形態２にかかる複合機１００のＶＡＳ１４０による共有メモリキーの調停処理について説明する。図７は、ＶＡＳ１４０の共有メモリキー調停スレッド１４１による共有メモリキー調停の処理手順を示すフローチャートである。共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から要求メッセージおよびすべての引数を受信すると（ステップＳ７０１）、受信した要求メッセージが共有メモリキー取得要求メッセージか、共有メモリキー解放要求メッセージか、共有メモリキー削除要求メッセージかを判断する（ステップＳ７０２）。
【０１１６】
要求メッセージが共有メモリキー解放要求メッセージの場合、および共有メモリキー削除要求メッセージの場合の処理は、実施の形態１におけるＶＡＳ１４０の処理と同様であるので説明を省略する。
【０１１７】
要求メッセージが共有メモリキー取得要求メッセージの場合には、アプリからの関数呼び出しの際に指定された第１引数が「作成」か「取得」を判断する（ステップＳ７０３）。そして、第１引数が「作成」の場合には、共有メモリ管理ファイル２０１を参照して、当該ファイルに記録されている共有メモリキーの値以外の値の中で最小の値を共有メモリキーと決定する（ステップＳ７１３）。そして、決定された共有メモリキーのレコードと取得要求を行ったアプリのアプリＩＤ、プロセスＩＤ、共有メモリキー取得要求関数呼び出しの際の第３引数および第４引数で指定された属性情報（使用目的、パーミッション）を一レコードとして、共有メモリ管理ファイル２０１に追加記録する（ステップＳ７１４）。そして、決定された共有メモリキーおよびその属性情報を共有メモリキー取得要求関数呼び出しを行ったアプリに送信する（ステップＳ７１１）。
【０１１８】
一方、ステップＳ７０３において、第１引数が「取得」の場合には、さらに、第２引数にアプリＩＤの指定があるか否かを判断する（ステップＳ７０４）。アプリＩＤが指定されている場合には（ステップＳ７０４：Ｙｅｓ）、共有メモリ管理ファイル２０１を参照して、指定されたアプリＩＤを含む共有メモリキーのレコードを検索する（ステップＳ７０５）。なお、ステップＳ７０４において、第２引数のアプリＩＤの指定がない場合には、ステップＳ７０７で第３引数の使用目的の指定判断を行う。
【０１１９】
検索の結果、指定されたアプリＩＤを含む共有メモリキーのレコードが存在するか否かを判断し（ステップＳ７０６）、存在する場合には（ステップＳ７０６：Ｙｅｓ）、さらに、第３引数に使用目的の指定があるか否かを判断する（ステップＳ７０７）。使用目的が指定されている場合には（ステップＳ７０７：Ｙｅｓ）、共有メモリ管理ファイル２０１を参照して、指定された使用目的を含む共有メモリキーのレコードを検索する（ステップＳ７０８）。検索の結果、指定された使用目的を含む共有メモリキーのレコードが存在するか否かを判断し（ステップＳ７０９）、存在する場合には（ステップＳ７０９：Ｙｅｓ）、検索されたすべての共有メモリキーのレコードに対し、指定されたアプリＩＤ、指定された属性情報（使用目的、パーミッション）を追加する（ステップＳ７１０）。そして、決定したすべての共有メモリキーとその属性情報を共有メモリキー取得要求関数呼び出しを行ったアプリに送信する（ステップＳ７１１）。
【０１２０】
なお、ステップＳ７０６およびステップＳ７０９の検索結果で指定されたアプリＩＤを含む共有メモリキーのレコードが存在しなかった場合には（ステップＳ７０６：Ｎｏ、ステップＳ７０９：Ｎｏ）、その旨のエラーメッセージをアプリに送信する（ステップＳ７１２）。
【０１２１】
このように共有メモリキーを取得したアプリによる共有メモリ領域２１１の確保、アドレス解放、領域削除などの各処理のシーケンスは、実施の形態１において説明した図４に示すシーケンスと同様である。
【０１２２】
このように実施の形態２にかかる複合機１００では、ＶＡＳ１４０が各アプリから共有メモリ領域２１１の使用目的という属性情報を指定した共有メモリキー取得要求関数呼び出しを受けたときに、ＶＡＳ１４０によって、指定された使用目的に対応する共有メモリキーを共有メモリ管理ファイル２０１から検索して、検索された共有メモリキーおよび検索された共有メモリキーに対する属性情報を、関数呼び出しを行ったアプリに送信しているので、共有メモリ領域２１１の使用目的などの属性情報を指定した共有メモリ領域２１１の取得を行うことができ、新規アプリ１１７，１１８のプログラム開発を効率的に行うことができる。
【０１２３】
なお、実施の形態１および２にかかる複合機１００では、ＶＡＳ１４０が全てのアプリケーション１３０から各種要求関数呼び出しを受けて共有メモリキーの調停処理を行っているが、一部のアプリに対してのみ各種関数呼び出しによって共有メモリキーの調停処理を行うように構成しても良い。例えば、新規アプリ１１７，１１８などサードベンダなどの第三者が開発したアプリにのみＶＡＳ関数ライブラリをリンクし、新規アプリ１１７，１１８に対してのみ共有メモリキーの決定や送信を行い、プリンタアプリ１１１やコピーアプリ１１２などの既存のアプリに対してはこのようなサービスを行わないように構成しても良い。
【０１２４】
（実施の形態３）
実施の形態１および２にかかる複合機１００は、ＶＡＳ１４０が全アプリケーションに対して１つのみ存在するものであった。この実施の形態３にかかる複合機では、各アプリごとに一つのＶＡＳが起動し、各ＶＡＳは対応するアプリに対してのみリソース使用情報取得およびアプリ起動判断を行うものである。
【０１２５】
図８は、実施の形態３にかかる複合機８００の構成を示すブロック図である。図８に示すように、複合機８００では、複数の仮想アプリケーションサービス（ＶＡＳ）８４１〜８４８がアプリケーション１３０の各アプリごとに動作している点が、実施の形態１および２にかかる複合機１００と異なっている。
【０１２６】
ＶＡＳ８４１〜８４８は、プリンタアプリ１１１、コピーアプリ１１２、ファックスアプリ１１３、スキャナアプリ１１４、ネットファイルアプリ１１５、工程検査アプリ１１６、新規アプリ１１７および１１８に対応して、共有メモリキーの調停処理を行うようになっている。
【０１２７】
図９は、実施の形態３にかかる複合機８００のＶＡＳ８４１〜８４８の構成と、ＶＡＳ８４１〜８４８と各アプリ、コントロールサービス層１５０および汎用ＯＳ１２１との関係を示すブロック図である。なお、図９では、アプリケーション１３０として、プリンタアプリ１１１、コピーアプリ１１２、新規アプリ１１７，１１８の例を示し、さらにこれら各アプリに対応したＶＡＳ８４１、８４２、８４７および８４８を例として示しているが、他のアプリの場合も同様の構成である。
【０１２８】
また、実施の形態３にかかる複合機８００では、実施の形態１および２の複合機１００と異なり、図９に示すように、各仮想アプリケーションサービス（ＶＡＳ）８４１〜８４８と各アプリとの間にはＶＡＳ制御プロセス（デーモン）８０１が動作している。
【０１２９】
ＶＡＳ制御プロセス（デーモン）８０１は、各アプリからアプリ登録要求メッセージを受信してアプリ登録処理を行うとともに、アプリ登録要求を行ったアプリに対応したＶＡＳ８４１〜８４８を生成する。また、各アプリから共有メモリキー取得要求関数呼び出しを受けたときに、共有メモリキー取得要求メッセージを関数呼び出しの際の引数（作成または取得、アプリＩＤ）とともにＶＡＳ８４１〜８４８に送信する。また、ディスパッチャ１４４は、各アプリから共有メモリキー解放要求関数呼び出しを受けたときに、共有メモリキー解放要求メッセージを関数呼び出しの際の引数（共有メモリキー）とともにＶＡＳ８４１〜８４８に送信する。さらに、ディスパッチャ１４４は、各アプリから共有メモリキー削除要求関数呼び出しを受けたときに、共有メモリキー削除要求メッセージを関数呼び出しの際の引数（共有メモリキー）とともにＶＡＳ８４１〜８４８に送信する。
【０１３０】
ＶＡＳ８４１〜８４８のプロセスには、ディスパッチャ１４４と、共有メモリキー調停スレッド１４１が動作している。ディスパッチャ１４４は、アプリケーション１３０やコントロールサービスからのメッセージ受信や関数呼び出しを監視し、受信したメッセージ、関数呼び出しに応じて共有メモリキー調停スレッド１４１あるいはその他のスレッドに処理要求を行うものである。実施の形態３の複合機８００では、ディスパッチャ１４４は、ＶＡＳ制御プロセス８０１から、各関数呼び出しの際の全引数とともに、共有メモリキー取得要求メッセージ、共有メモリキー解放要求メッセージ、共有メモリキー削除要求メッセージを受信し、受信した各メッセージを全引数とともに共有メモリキー調停スレッド１４１に送信するようになっている。
【０１３１】
共有メモリキー調停スレッド１４１は、本発明における調停手段を構成するものであり、実施の形態１の複合機１００と同様に、共有メモリキーの調停処理を行う。具体的には、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー取得要求メッセージを受信した場合、ＨＤ２００に格納されている共有メモリ管理ファイル２０１の内容を参照し、共有メモリキーを決定する。そして、決定した共有メモリキーを取得要求を行ったアプリに送信する。また、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー解放要求メッセージを受信した場合、共有メモリ管理ファイル２０１の中の指定された共有メモリキーのレコードから要求を行ったアプリのアプリＩＤを削除する。さらに、共有メモリキー調停スレッド１４１は、ディスパッチャ１４４から共有メモリキー削除要求メッセージを受信した場合、共有メモリ管理ファイル２０１の中の指定された共有メモリキーのレコードを削除する。
【０１３２】
ＶＡＳ８４１〜８４８の共有メモリキー調停スレッド１４１によって実行される共有メモリキー調停処理については、実施の形態１の複合機１００における共有メモリキー調停処理と同様である。
【０１３３】
このように実施の形態３にかかる複合機８００によれば、実施の形態１および２にかかる複合機１００と同様に、アプリのプログラム開発を効率的に行うことができ、また画像形成処理の処理効率を向上させることができる。
【０１３４】
また、実施の形態３にかかる複合機８００では、ＶＡＳ８４１〜８４８は起動されるアプリケーション１３０ごとに別個に起動されるので、複数のアプリケーション１３０の起動判断処理を、各アプリケーション１３０に対応するＶＡＳ８４１〜８４８で並列に実行することができ、共有メモリキーの調停処理を効率的に行うことができる。
【０１３５】
なお、実施の形態３にかかる複合機８００では、全てのアプリごとに別個にＶＡＳ８４１〜８４８を起動していたが、一部のアプリに対してのみＶＡＳを起動するように構成しても良い。例えば、新規アプリ１１７，１１８などサードベンダなどの第三者が開発したアプリに対してのみＶＡＳ８４７，８４８を起動して共有メモリキーの決定や送信処理を行い、プリンタアプリ１１１やコピーアプリ１１２などの既存のアプリに対してはこのようなサービスを行わないように構成することができる。
【０１３６】
実施の形態１〜３にかかる複合機１００、８００では、共有相手となる他のアプリのアプリＩＤを指定して共有メモリキー取得要求関数呼び出しが行われたときに、ＶＡＳが共有メモリキーの調停処理を行っているが、この他、共有相手がコントロールサービスやその他プロセスである場合には、ＶＡＳはそのコントロールサービスまたはプロセスの固有情報を指定した共有メモリキー取得要求関数呼び出しを受けて、共有メモリキーの調停処理を行うように構成しても良い。
【０１３７】
なお、実施の形態１〜３にかかる複合機１００、８００では、アプリの識別情報としてアプリＩＤを用いているが、各アプリを識別可能な情報であればよく、アプリ名やプロセスＩＤを用いることが可能である。
【０１４１】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４２】
また、請求項２にかかる発明によれば、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４３】
また、請求項３にかかる発明によれば、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４４】
また、請求項４にかかる発明によれば、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４５】
また、請求項５にかかる発明によれば、アプリケーションが画像データのための共有メモリ領域を取得する場合には、画像データの共有を使用目的として指定して取得要求を行えば、画像データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４６】
また、請求項６にかかる発明によれば、アプリケーションが認証データのための共有メモリ領域を取得する場合には、認証データの共有を使用目的として指定して取得要求を行えば、認証データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４７】
また、請求項７にかかる発明によれば、アプリケーションが他のアプリケーションの履歴データのための共有メモリ領域を取得する場合には、当該履歴データの共有を使用目的として指定して取得要求を行えば、履歴データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１４８】
また、請求項８にかかる発明によれば、アプリケーションに対して共有メモリの調停というサービスを提供するだけでなく、コントロールサービスから例えば、共有メモリの調停の結果に伴うサービスの提供を受けることができ、アプリケーションを利用するユーザの利便性を向上させることができるという効果を奏する。
【０１４９】
また、請求項９にかかる発明によれば、複数のアプリケーションに対する共有メモリの調停処理を、各アプリケーションに対応する仮想アプリケーションサービスで並列に実行することができ、アプリケーションに対する共有メモリ調停処理を効率的に行うことができるという効果を奏する。また、この請求項９にかかる発明によれば、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５０】
また、請求項１０にかかる発明によれば、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５１】
また、請求項１１にかかる発明によれば、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５２】
また、請求項１２にかかる発明によれば、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５６】
また、請求項１３にかかる発明によれば、共有メモリ領域の属性情報を利用して共有メモリ識別情報の決定を行うことができ、属性情報を意識した新規アプリケーションのプログラム開発を行う必要がなくなり、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５７】
また、請求項１４にかかる発明によれば、さらに共有相手のプロセスを指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５８】
また、請求項１５にかかる発明によれば、共有メモリ領域の属性を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１５９】
また、請求項１６にかかる発明によれば、共有メモリ領域の使用目的を指定した共有メモリ領域の取得を行うことができ、新規アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１６０】
また、請求項１７にかかる発明によれば、アプリケーションが画像データのための共有メモリ領域を取得する場合には、画像データの共有を使用目的として指定して取得要求を行えば、画像データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１６１】
また、請求項１８にかかる発明によれば、アプリケーションが認証データのための共有メモリ領域を取得する場合には、認証データの共有を使用目的として指定して取得要求を行えば、認証データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【０１６２】
また、請求項１９にかかる発明によれば、アプリケーションが他のアプリケーションの履歴データのための共有メモリ領域を取得する場合には、当該履歴データの共有を使用目的として指定して取得要求を行えば、履歴データが格納されている共有メモリ領域の共有メモリ識別情報を取得できるので、アプリケーションのプログラム開発を効率的に行うことができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１にかかる複合機の構成を示すブロック図である。
【図２】実施の形態１にかかる複合機のＶＡＳの構成と、ＶＡＳと各アプリ、コントロールサービス層および汎用ＯＳとの関係を示すブロック図である。
【図３】実施の形態１にかかる複合機における共有メモリ管理ファイルの内容の一例を示す説明図である。
【図４】各アプリによる共有メモリ領域の取得処理における各アプリ、ＶＡＳ、汎用ＯＳ間のメッセージのやりとりおよび関数呼び出しを示すシーケンス図である。
【図５】実施の形態１にかかる複合機におけるＶＡＳの共有メモリキー調停スレッドによる共有メモリキー調停の処理手順を示すフローチャートである。
【図６】実施の形態２にかかる複合機における共有メモリ管理ファイルの内容の一例を示す説明図である。
【図７】実施の形態２にかかる複合機におけるＶＡＳの共有メモリキー調停スレッドによる共有メモリキー調停の処理手順を示すフローチャートである。
【図８】実施の形態３にかかる複合機の構成を示すブロック図である。
【図９】実施の形態３にかかる複合機のＶＡＳの構成と、ＶＡＳと各アプリ、コントロールサービス層および汎用ＯＳとの関係を示すブロック図である。
【符号の説明】
１００  複合機
１０１  白黒ラインプリンタ
１０２  カラーラインプリンタ
１０３  ハードウェアリソース
１１０  ソフトウェア群
１１１  プリンタアプリ
１１２  コピーアプリ
１１３  ファックスアプリ
１１４  スキャナアプリ
１１５  ネットファイルアプリ
１１６  工程検査アプリ
１１７，１１８  新規アプリ
１２０  プラットホーム
１２１  汎用ＯＳ
１２２  ＳＣＳ
１２３  ＳＲＭ
１２４  ＥＣＳ
１２５  ＭＣＳ
１２６  ＯＣＳ
１２７  ＦＣＳ
１２８  ＮＣＳ
１３０  アプリケーション
１４０，８４１〜８４８  仮想アプリケーションサービス（ＶＡＳ）
１４１  共有メモリキー調停スレッド
１４３  制御スレッド
１４４  ディスパッチャ
１５０  コントロールサービス層
２００  ハードディスク（ＨＤ）
２０１  共有メモリ管理ファイル
２１０  ＲＡＭ
２１１  共有メモリ領域
２１２  アドレス空間
８００  複合機
８０１  ＶＡＳ制御プロセス
【図１】
0004253466.tif 000002
【図２】
0004253466.tif 000003
【図３】
0004253466.tif 000004
【図４】
0004253466.tif 000005
【図５】
0004253466.tif 000006
【図６】
0004253466.tif 000007
【図７】
0004253466.tif 000008
【図８】
0004253466.tif 000009
【図９】
0004253466.tif 000010