JP2006139776A - Information processing system - Google Patents
Information processing system Download PDFInfo
- Publication number
- JP2006139776A JP2006139776A JP2005317219A JP2005317219A JP2006139776A JP 2006139776 A JP2006139776 A JP 2006139776A JP 2005317219 A JP2005317219 A JP 2005317219A JP 2005317219 A JP2005317219 A JP 2005317219A JP 2006139776 A JP2006139776 A JP 2006139776A
- Authority
- JP
- Japan
- Prior art keywords
- function
- client
- server
- thread
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Facsimiles In General (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
Description
本発明は、情報処理装置に係り、特に複数のプロセスがプロセス間通信を行う情報処理装置に関する。 The present invention relates to an information processing apparatus, and more particularly to an information processing apparatus in which a plurality of processes perform interprocess communication.
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を1つの筐体内に収納した画像形成装置(以下、「複合機」という。)が一般的に知られている。この複合機は、1つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する3種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。 2. Description of the Related Art In recent years, an image forming apparatus (hereinafter, referred to as “multifunction machine”) in which functions of apparatuses such as a printer, a copy machine, a facsimile machine, and a scanner are housed in a single housing is generally known. This multifunction device is provided with a display unit, a printing unit, an imaging unit, and the like in one casing, and is provided with three types of software respectively corresponding to a printer, a copying machine, and a facsimile machine. It operates as a copy, scanner or facsimile machine.
従来の複合機では、内部にプリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェア(汎用OSを含む)をそれぞれ別個に設ける構成となっており、各ソフトウェアの開発に多大の時間を要する。 A conventional multi-function machine has a configuration in which software (including a general-purpose OS) corresponding to a printer, a copy, a scanner, and a facsimile machine is provided separately, and development of each software requires a lot of time.
このため、出願人は、ハードウェア・インターフェースをドライブするドライバと呼ばれるソフトウェア群と、メモリ/タイマなどの共通なハードウェア資産を効率良く使用するためのマネージャ・ソフトウェア群や各アプリケーションで共通に使用できるシステム・ユーティリティ・ソフトウェア群と、これらのドライバ・ソフトウェア群,マネージャ・ソフトウェア群,ユーティリティ・ソフトウェア群を使用するプリンタ/スキャナ/FAX送信/FAX受信などの実アプリケーションとを備えた複合機(例えば特許文献1又は特許文献2参照)を発明した。 For this reason, the applicant can use the software group called the driver that drives the hardware interface, the manager software group for efficiently using the common hardware assets such as the memory / timer, and each application. A multi-function machine comprising a system utility software group and a real application such as a printer / scanner / fax transmission / fax reception using these driver software group, manager software group, and utility software group (for example, patent literature) 1 or Patent Document 2).
しかしながら、特許文献1及び特許文献2に記載されている複合機は、ドライバ・ソフトウェア群,マネージャ・ソフトウェア群,ユーティリティ・ソフトウェア群がライブラリで構成されており、ハードウェア資源を実行制御する主体となり得なかった。
However, the multifunction peripherals described in
そこで、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた複合機(例えば特許文献3参照)を発明した。 Accordingly, the applicant has a plurality of applications that have hardware resources used in image forming processing such as a display unit, a printing unit, and an imaging unit, and perform processing unique to each user service such as a printer, copy, or facsimile. When installing and providing user services by interposing between these applications and hardware resources, management, execution control and image formation processing of hardware resources that are shared by at least two of the applications are performed. Invented a multi-function machine (see, for example, Patent Document 3) having a platform composed of various control services.
なお、ユーザサービスとはユーザに提供する画像形成に係るサービスをいう。また、コントロールサービスとはアプリケーションに画像形成に係るハードウェア資源を提供するサービスをいう。 The user service is a service related to image formation provided to the user. The control service refers to a service that provides hardware resources related to image formation to an application.
この複合機によれば、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
このような複合機では、アプリケーションの少なくとも2つが共通的に必要とするサービスを提供するコントロールサービスを有する構成となっているため、機能変更、機能追加、または将来的なハードウェア資源の追加、変更などに柔軟に対応すべく、アプリケーションごとあるいはコントロールサービスごとの追加、変更を容易に行えることが望まれる。また、複合サービスを提供する際に、各アプリケーションと各コントロールサービス間、あるいは各コントロールサービス間でサービスやデータの授受を円滑に行うことが必要となってくる。 Such a multi-function peripheral has a control service that provides services that are commonly required by at least two of the applications. Therefore, it is possible to change functions, add functions, or add or change hardware resources in the future. It is desirable to be able to easily add or change for each application or control service in order to respond flexibly to the above. Further, when providing a composite service, it is necessary to smoothly exchange services and data between each application and each control service or between each control service.
すなわち、複合機は、プリンタ、コピー、ファクシミリ、スキャナなど多種の機能を備えたものであるが、その一部の機能に故障あるいは仕様変更などが生じた場合に、全てのアプリケーションまたは全てのコントロールサービスのモジュールを修正しなければならないと、作業の労力が過大となる。 In other words, a multifunction device has a variety of functions such as printers, copiers, facsimiles, scanners, etc., but if some of the functions fail or specification changes occur, all applications or all control services If you have to modify these modules, the work effort will be excessive.
また、将来的に、複合機に新たな機能を追加する場合でも一部の機能の追加のために全てのコントロールサービスや全てのアプリケーションのモジュール変更が必要となると、プログラム開発の労力が過大となってしまう。このため、複合機上で動作する各アプリケーションやコントロールサービスのモジュールは互いにサービスやデータの送受信を実現としながらも、モジュール間の独立性を維持していることが必要となってくる。 Also, even if new functions are added to the MFP in the future, if it is necessary to change all control services and all application modules to add some functions, the program development effort will be excessive. End up. For this reason, it is necessary for each application and control service module operating on the multifunction peripheral to maintain the independence between the modules while realizing the transmission and reception of services and data with each other.
すなわち、アプリケーションや各コントロールサービスごとに独立性がないと、必要なアプリケーションや必要なコントロールサービスのみを提供することが困難となり、機能変更や機能追加などに柔軟に対応できるような複合機の構成に可変性を持たせることができない。 In other words, if there is no independence for each application and each control service, it will be difficult to provide only the necessary applications and necessary control services, and the configuration of the MFP will be able to flexibly respond to function changes and additions. Cannot have variability.
また、各アプリケーションや各コントロールサービスごとに独立性がないと、アプリケーションやコントロールサービスごとの設計および構築が困難になり、多種多様な機能を提供することができない。 Also, if each application and each control service is not independent, it becomes difficult to design and construct each application and control service, and a wide variety of functions cannot be provided.
この発明は上記に鑑みてなされたもので、可変性のあるアーキテクチャおよび多種多様な機能を実現できる情報処理装置を得ることを目的とする。 The present invention has been made in view of the above, and an object thereof is to obtain an information processing apparatus capable of realizing a variable architecture and various functions.
上記目的を達成するため、本発明は、情報処理を行う一または複数のプログラムを有する情報処理装置であって、前記プログラムのそれぞれは、サーバプロセスまたはクライアントプロセスとして動作する一または複数のスレッドを含むプロセスであり、前記サーバプロセスのスレッドは、前記クライアントプロセスのスレッドに提供する一または複数のサービスを定義した関数を有しており、前記クライアントプロセスのスレッドは、前記サーバプロセスのスレッドにサービスの提供を要求する際に関数呼び出しを行うことを特徴とする。 In order to achieve the above object, the present invention is an information processing apparatus having one or more programs for performing information processing, each of the programs including one or more threads operating as a server process or a client process. The server process thread has a function that defines one or more services to be provided to the client process thread, and the client process thread provides a service to the server process thread. It is characterized in that a function call is made when requesting.
この本発明によれば、一または複数のプログラムの相互間で、関数呼び出しによるプロセス間通信を実現することができる。このため、各プログラムの間の独立性を維持しながら互いにサービスやデータの授受をプロセス間通信によって実現することができ、機能的に多様性のある情報処理装置を提供することができる。 According to the present invention, inter-process communication by function call can be realized between one or a plurality of programs. For this reason, service and data can be exchanged with each other by inter-process communication while maintaining independence between the programs, and an information processing apparatus with various functions can be provided.
また、プログラムの一部のモジュールにのみ変更がある場合や、必要に応じてプログラムを追加する場合でも、サーバプロセスとなるモジュール側で関数を実装し、クライアントプロセスとなるモジュール側で関数呼び出しを行うというインタフェースを確保しておけば、サービスやデータの授受が可能となる。 Even if only a part of the program module is changed, or when a program is added as necessary, the function is implemented on the module side that is the server process, and the function is called on the module side that is the client process. If the interface is secured, services and data can be exchanged.
このため、プログラムの追加または変更を容易に実現することができ、可変性を持った情報処理装置を構成することができる。 For this reason, addition or change of a program can be easily realized, and an information processing apparatus having variability can be configured.
さらに、プログラムのそれぞれは、サーバプロセスまたはクライアントプロセスとして動作するプロセスであるため、複数のプログラムをそれぞれ別個のプロセスとして動作させることにより、他のプログラムのプロセスが停止した場合でも動作中の他のプロセスは影響を受けない。 Furthermore, since each of the programs is a process that operates as a server process or a client process, by operating a plurality of programs as separate processes, other processes that are operating even when the processes of other programs are stopped Is not affected.
このため、一部のプロセスが停止した場合でも他の複合サービスを続行して提供することができ、すべての複合サービスが提供不可能になることを防止することができる。 For this reason, even when some processes are stopped, it is possible to continue to provide other composite services, and it is possible to prevent all composite services from becoming unavailable.
ここで、「サーバプロセス」とは、他のプロセスからの要求により、要求されたサービスを提供するプロセスをいい、サービスを提供する限り、どのプログラムもサーバプロセスとして動作することができる。 Here, the “server process” refers to a process that provides a requested service in response to a request from another process, and any program can operate as a server process as long as the service is provided.
また、「クライアントプロセス」とは、このようなサーバプロセスからサービスの提供を受けるプロセスをいい、サービスの提供を受ける限り、どのプログラムもクライアントプロセスとして動作することができる。 The “client process” refers to a process that receives a service from such a server process, and any program can operate as a client process as long as the service is received.
「関数」とは、サーバプロセスに対するサービスの処理要求やサーバプロセスによる所定の設定値の設定要求に対し、サーバプロセス側で要求された処理や設定を実行するものである。 The “function” is to execute processing and setting requested by the server process in response to a service processing request to the server process and a predetermined setting value setting request by the server process.
また、本発明は、情報処理を行う一または複数のプログラムとを有する情報処理装置であって、前記プログラムのそれぞれは、サーバプロセスまたはクライアントプロセスとして動作する一または複数のスレッドを含むプロセスであり、前記サーバプロセスは、ネットワークに接続された他の情報処理装置で動作するクライアントプロセスに対するサーバプロセスとして動作し、サーバプロセスのスレッドとして前記他の情報処理装置のクライアントプロセスのスレッドに提供する一または複数のサービスを定義した関数を有していることを特徴とする。 Further, the present invention is an information processing apparatus having one or a plurality of programs for performing information processing, each of the programs is a process including one or a plurality of threads that operate as a server process or a client process, The server process operates as a server process for a client process that operates on another information processing apparatus connected to a network, and provides one or a plurality of server processes as a thread of a server process to a thread of a client process of the other information processing apparatus It has a function that defines a service.
この本発明によれば、プログラムはネットワーク上の他の情報処理装置で動作するプロセスをクライアントとしたサーバプロセスとして関数呼び出しを利用したプロセス間通信を実現することができ、同一の情報処理装置内のプロセスだけでなく、ネットワーク上の情報処理装置に対してもサービスの提供が可能となり、多種多様な機能を実現することができる。 According to the present invention, the program can realize inter-process communication using a function call as a server process using a process operating on another information processing apparatus on the network as a client. Services can be provided not only to processes but also to information processing apparatuses on the network, and various functions can be realized.
この本発明において、サーバプロセスとなるプログラムが動作している情報処理装置はプログラムを搭載可能であれば、その構成は限定されるものではない。すなわち、当該情報処理装置は、サービスを提供するプログラムが1つでも搭載されていれば良い。 In the present invention, the configuration of the information processing apparatus in which the program serving as the server process is operating is not limited as long as the program can be installed. That is, the information processing apparatus only needs to have one program that provides a service.
本発明によれば、プログラムの間の独立性を維持しながら互いにサービスやデータの授受をプロセス間通信によって行うことができ、多種多様な機能を実現することが可能である。 According to the present invention, services and data can be exchanged with each other by inter-process communication while maintaining independence between programs, and various functions can be realized.
以下に添付図面を参照して、この発明にかかる画像形成装置の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、この発明の実施の形態1である画像形成装置(以下、「複合機」という)の構成を示すブロック図である。図1に示すように、複合機は、白黒ラインプリンタ(B&W LP)101と、カラーラインプリンタ(Color LP)102と、スキャナ103と、ファクシミリ104などのハードウェアリソースなどを有するとともに、プラットホーム120とアプリケーション130とから構成されるソフトウェア群110を備えている。
Exemplary embodiments of an image forming apparatus according to the present invention are explained in detail below with reference to the accompanying drawings.
(Embodiment 1)
FIG. 1 is a block diagram showing a configuration of an image forming apparatus (hereinafter referred to as “multifunction machine”) according to
プラットホーム120は、アプリケーション130からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。
The
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、OCS(オペレーションパネルコントロールサービス)126と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128とから構成される。なお、このプラットホーム120は、あらかじめ定義された関数により前記アプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
The control service is formed of a plurality of service modules, and includes an SCS (system control service) 122, an ECS (engine control service) 124, an MCS (memory control service) 125, an OCS (operation panel control service) 126, and an FCS. (Fax Control Service) 127 and NCS (Network Control Service) 128. The
汎用OS121は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。
The general-purpose OS 121 is a general-purpose operating system such as UNIX (registered trademark), and executes the software of the
SRM123は、SCS122とともにシステムの制御およびリソースの管理を行うものであり、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
The SRM 123, together with the
具体的には、このSRM123は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(たとえば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。 Specifically, the SRM 123 determines whether the requested hardware resource is available (whether it is not used by another request), and if it is available, the requested hardware resource is used. Tell the upper layer that it is possible. The SRM 123 also schedules the use of hardware resources in response to requests from higher layers, and directly implements the request contents (for example, paper conveyance and image forming operation, memory allocation, file generation, etc. by the printer engine). .
SCS122はアプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御を行うものである。ECS124は、白黒ラインプリンタ(B&W LP)101、カラーラインプリンタ(Color LP)102、スキャナ103、ファクシミリ104からなるハードウェアリソースのエンジンを制御するものである。
The
MCS125は、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行うものである。OCS126は、オペレータと本体制御間の情報伝達手段となる操作パネルを制御するモジュールである。
The
FCS127は、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供するものである。FCS127では、そのサブプロセスであるFCUハンドラ129(FCUH)が起動される。このFCUH129は、FCS127からの指令によりファクシミリ送受信の際にファクシミリエンジンのデバイスドライバを制御するものである。
NCS128は、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのモジュール群であり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行うものである。
The
アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、工程検査用アプリケーションである工程検査アプリ116とを有している。
The
これらの各コントロールサービスとSRM123と各アプリとは、それぞれプロセスとして汎用OS上に生成されて実行される。各プロセス内部では、複数のスレッドが起動され、汎用OSの管理下でこれらのスレッドのCPU占有時間を切り替えることにより並列実行が実現されている。各アプリプロセスと各コントロールサービスプロセスとは、後述するプロセス間通信によって各種メッセージやデータの送受信および関数呼び出しを行う。
Each of these control services,
図2は、実施の形態1の複合機上で動作するサーバプロセスとクライアントプロセスの関係を示すブロック図である。ここで、サーバプロセス202とは、クライアントプロセス201からの要求によりクライアントプロセス201に対しサービスを提供するプロセスをいう。クライアントプロセス201とは、サーバプロセス202に対して要求を行うことにより、サーバプロセス202からサービスの提供を受けるプロセスをいう。
FIG. 2 is a block diagram illustrating a relationship between a server process and a client process that operate on the multifunction peripheral according to the first embodiment. Here, the
実施の形態1の複合機では、上述のコピーアプリ112、プリンタアプリ111、スキャナアプリ114、ファックスアプリ113などのアプリケーションプロセス、およびECS124、MCS125、FCS127、NCS128などのコントロールサービスのプロセスが主としてクライアントプロセス201となり、コントロールサービスおよびSRM123のプロセスが主としてサーバプロセス202となる。
In the MFP according to the first embodiment, the
すなわち、各アプリがコントロールサービスからサービスの提供を受ける場合には、各アプリのプロセスがクライアントプロセス201として動作し、コントロールサービスがサーバプロセス202として動作する。また、コントロールサービス間でサービスの要求と提供を行う場合には、サービスの要求を行うコントロールサービスがクライアントプロセス201として動作し、サービスの提供を行うコントロールサービスがサーバプロセス202として動作する。
That is, when each application receives service provision from the control service, the process of each application operates as the
なお、これらの例に限られず、各アプリのプロセス、コントロールサービスのプロセス、SRMプロセスは、いずれもサーバプロセス202およびクライアントプロセス201となることができる。すなわち、これらのプロセスが、他のいずれかのプロセスに対しサービスを要求する場合にはクライアントプロセス201として動作する一方、他のプロセスからの要求によりサービスを提供する場合にはサーバプロセス202として動作することになる。
The application process, the control service process, and the SRM process can all be the
図2に示すとおり、これらのアプリ、コントロールサービスおよびSRM123のプロセスには、いずれも複数のスレッドが起動している。そして、各プロセスは、複数のスレッドを有することから、他のプロセスからの要求を受けた場合に、当該他のプロセスをクライアントプロセス201としたサーバプロセス202として動作するが、これと同時に、他のプロセスに対してサービスを要求する場合に当該他のプロセスをサーバプロセス202としたクライアントプロセス201として動作する。
As shown in FIG. 2, a plurality of threads are activated in any of these applications, the control service, and the
また、各プロセスは、同時に複数のプロセスをクライアントプロセス201としたサーバプロセス202となることも可能である。さらに、各プロセスは、同時に複数のサーバプロセス202からのサービスの提供を受けるクライアントプロセス201となることも可能である。
Each process can also be a
図2に示す通り、クライアントプロセス201は、サーバプロセス202のサービスを要求するために、クライアントプロセス内のスレッドからサーバプロセス202に対して関数コールを行い、その関数戻り値を受信することによってプロセス間通信を行う。
As shown in FIG. 2, in order to request the service of the
また、クライアントプロセス201の各スレッドはメッセージをサーバプロセス202に送信することによってプロセス間通信を行う。一方、サーバプロセス202からクライアントプロセス201に対するプロセス間通信は、メッセージの送信のみで行われ、関数コールは行えないようになっている。
Each thread of the
このため、サーバプロセス202となりうるECS124、MCS125、FCS127、NCS128などコントロールサービスおよびSRM123には、クライアントプロセス201に対して提供するサービスが、サービスごとの後述する関数ハンドラ403としてあらかじめ実装されている。これらのサービスの要求をクライアントプロセス201から行う場合には、サーバプロセス202に対して、サービスごとに関数を呼び出すことにより(関数コールを行うことにより)、サービスの提供を受けることが可能となっている。
For this reason, the control service such as
ここで、「メッセージ」とは、主としてサーバプロセス202とクライアントプロセス201との間でイベントや通知を行う際に送信するものであり、一意的なメッセージID、メッセージ名、メッセージ方向、メッセージ内容を含むデータである。
Here, the “message” is mainly transmitted when an event or notification is performed between the
メッセージ方向には、「IN」、「OUT」、「SELF」があり、「IN」がクライアントプロセス201からサーバプロセス202に対して送信するメッセージを意味し、「OUT」がサーバプロセス202からクライアントプロセス201に対して送信するメッセージを意味する。また、「SELF」は、自分自身のプロセスに対して送信するメッセージを意味する。
In the message direction, there are “IN”, “OUT”, and “SELF”, “IN” means a message transmitted from the
また、「関数」とは、クライアントプロセス201からサーバプロセス202に対して所定の処理要求を行ったり、所定の設定要求を行う際に発行するものであり、関数コールに対し戻り値を返すものである。
The “function” is issued when a predetermined processing request is made from the
クライアントプロセス201のスレッドは、あらかじめサーバプロセス202から提供されている関数をコールする。関数コールを受けたサーバプロセス202は要求された関数に対応する処理を実行してその実行結果を関数戻り値としてクライアントプロセス201のクライアントディスパッチャ203へ送信する。また、関数戻り値は構造体となっており、かかる構造体に戻り値の他、関数を識別する関数IDが含まれている。
The thread of the
クライアントディスパッチャ203は、サーバプロセス202からのOUT方向のメッセージまたは関数戻り値の受信を監視するスレッドである。クライアントプロセス201は、一つのサーバプロセス202につき一つのクライアントディスパッチャ203を起動してサーバプロセス202と通信する。クライアントプロセス201が複数のサーバプロセス202と通信する場合には、サーバプロセス202ごとに一つのクライアントディスパッチャ203を起動する。
The
図3はクライアントディスパッチャの詳細な構成を示す説明図である。クライアントディスパッチャ203は、そのスレッド上でメッセージハンドラ302、エラーハンドラ301およびデフォルトハンドラ303を起動する。
FIG. 3 is an explanatory diagram showing a detailed configuration of the client dispatcher. The
メッセージハンドラ302は、受信したメッセージに対する処理を行うものであり、メッセージIDごとに別個のメッセージハンドラ302が複数存在する。このためクライアントディスパッチャ203がメッセージを受信すると、受信したメッセージに含まれるメッセージIDを判断し、対応するメッセージIDのメッセージハンドラ302を呼び出すようになっている。メッセージハンドラ302の処理内容としては、例えば、メッセージの内容を関数コールを行ったスレッドに通知するなどの処理があるが、メッセージごとに異なった処理内容が定義されている。
The
エラーハンドラ301は、クライアントディスパッチャ203の実行中にエラーが発生した場合に呼び出され、ユーザにエラー通知を行うなどのエラー処理を行う。デフォルトハンドラ303は、対応するメッセージハンドラ302が登録されていないメッセージIDのメッセージを受信した時に呼び出され、メッセージをスレッドに通知するなどの処理を行う。
The
また、クライアントディスパッチャ203は、関数戻り待ちキュー304を保持しており、この関数戻り待ちキュー304を利用することによって関数戻り値および関数戻り待ち状態のスレッド305の管理を行っている。すなわち、クライアントプロセス201のスレッドは、サーバプロセス202に対し関数コールを行うが、関数コール後、関数戻り値を受信するまで関数戻り待ち状態となり以降の処理が中断される。
The
クライアントディスパッチャ203は、スレッド305から関数コールが行われると、そのスレッド305の識別子(スレッドIDなど)を関数の関数IDとともに関数戻り待ちキュー304に登録する。そして、クライアントディスパッチャ203は、サーバプロセス202から関数戻り値を受信すると、その関数IDをキーとして関数戻り待ちキュー304を検索し、受信した関数戻り値の受信を待って処理が中断されているスレッド305の識別子(スレッドIDなど)を検出する。そして、クライアントディスパッチャ203は検出された識別子(スレッドID)のスレッドに受信した関数戻り値を送信する。関数戻り値を受信したスレッドは戻り待ち状態を抜け、関数コール後の処理の続行が可能となる。クライアントディスパッチャ203は、このような戻り値の通知を、関数戻り値を受信するごとに行う。
When a function call is made from the
サーバディスパッチャ204は、クライアントプロセス201のスレッドからの関数コールおよびIN方向のメッセージを監視するスレッドである。1つのサーバディスパッチャ204は、クライアントディスパッチャ203と異なり、複数のクライアントプロセス201からの関数コールおよびメッセージを受信することができる。
The
図4はサーバディスパッチャ204の詳細な構成を示す説明図である。サーバディスパッチャ204は、そのスレッド上で、関数ハンドラ403、メッセージハンドラ402、エラーハンドラ401およびデフォルトハンドラ404を起動する。
FIG. 4 is an explanatory diagram showing a detailed configuration of the
関数ハンドラ403は、関数の具体的な処理を実行するものであり、関数ごとに複数存在する。サーバディスパッチャ204は、クライアントプロセス201から関数コールを受信すると、受信した関数に対応する関数ハンドラ403を起動し、関数ハンドラ403によってクライアントプロセス201が要求した処理を実行し、その関数戻り値をクライアントプロセス201のクライアントディスパッチャ203へ送信する。
The
メッセージハンドラ402は、受信したメッセージに対する処理を行うものであり、メッセージIDごとに複数存在する。サーバディスパッチャ204は、メッセージを受信すると受信したメッセージに含まれるメッセージIDを判断し、対応するメッセージIDのメッセージハンドラ402を呼び出すようになっている。メッセージハンドラ402の処理内容としては、例えば、メッセージの内容をスレッドに通知するなどの処理があるが、メッセージごとに異なった処理内容が定義されている。
The
エラーハンドラ401は、サーバディスパッチャ204の実行中にエラーが発生した場合に呼び出され、エラー通知などのエラー処理を行う。デフォルトハンドラ404は、対応するメッセージハンドラ402が登録されていないメッセージIDのメッセージを受信した時に呼び出され、メッセージをスレッドに通知するなどの処理を行う。
The
つぎに、実施の形態1の複合機100で実際に行われるプリンタ動作、スキャナ動作、コピー動作およびファクシミリ送信動作におけるプロセス間通信について具体的に説明する。
Next, the interprocess communication in the printer operation, the scanner operation, the copy operation, and the facsimile transmission operation that is actually performed in the
まず、プリンタ動作におけるプリンタアプリ111、ECS124、MCS125、SRM123のプロセス間通信について説明する。図5は、実施の形態1の複合機でプリンタ動作を行う場合のプリンタアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。図6は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。
First, the inter-process communication of the
図6に示すように、複合機100にはプリンタアプリプロセス111、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成される。なお、図6にはプリンタ動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機100の起動時に生成される。
As illustrated in FIG. 6, a
プリンタアプリプロセス111は、複合機の起動時に起動され、図6に示すようにプロセス内に複数のスレッドが起動している。プリンタアプリプロセス111は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124からのメッセージや関数戻り値を受信してプロセス内のスレッドに通知するクライアントディスパッチャがスレッドとして起動される。
The
ECSプロセス124は、プリンタ動作時には、プリンタアプリプロセス111をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはプリンタアプリプロセス111からの関数コールおよびメッセージの受信とプリンタアプリプロセス111に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、MCSプロセス125またはSRMプロセス123からのメッセージおよび関数戻り値の受信および戻り値の管理を行うクライアントディスパッチャと、その他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。
The
MCSプロセス125は、プリンタ動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124からの関数コールおよびメッセージの受信とECSプロセス124に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、SRMプロセス123からのメッセージおよび関数戻り値の受信および戻り値の管理を行うクライアントディスパッチャと、その他、メモリ制御またはハードディスク制御に関する処理を行う複数のスレッドが動作している。
The
SRMプロセス123は、プリンタ動作時には、ECSプロセス124またはMCSプロセス125をクライアントプロセスとしたサーバプロセスとなっている。SRMプロセス123内にはECSプロセス124またはMCSプロセス125からの関数コールおよびメッセージの受信とECSプロセス124またはMCSプロセス125に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、その他、エンジン資源制御に関する種々の処理を行う複数のスレッドが動作している。
The
実施の形態1におけるプリンタアプリプロセス111では、ジョブ動作モード設定とジョブスタート要求の各関数コールを行う処理を一スレッドとしている。また、ECSプロセス124では、印刷枚数分繰り返しメモリ画像情報要求関数コールを行う処理を一スレッドとし、また資源獲得要求関数コールを行う処理を一スレッドとしている。MCSプロセス125では、メモリ取得要求関数コールを行う処理を一スレッドとしている。ただし、これらの各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。
In the
PCなどのホストからセントロI/F、USB I/F、ネットワークI/Fなど経由して印刷要求1があると、その印刷要求1をNCSプロセスが受けプリンタアプリプロセスに転送する(ステップS501)。プリンタアプリプロセス111は、NCSプロセスから印刷要求を受信すると新たなプリントジョブを生成し、スレッド1においてECSプロセス124に対してジョブ動作モード設定要求関数コールを行う(ステップS502)。
When there is a
その後このスレッド1は関数戻り値の受信待ちとなり、クライアントディスパッチャによりスレッド1の識別子(スレッドID)が関数戻り待ちキューに登録される。ここで、ジョブ動作モードとは、スキャナ、プロッタ、フィニッシャなどを動作させるために必要なパラメータ群であり、印刷用紙サイズ、印刷部数、給紙トレイなどのプリンタ条件から生成されるジョブの動作条件を定めたものである。
Thereafter, the
なお、以降では説明の簡略化のため、サーバプロセスに関数コールを行って関数戻り待ち状態となったスレッドの識別子(スレッドID)が、クライアントディスパッチャによって、関数IDとともに関数戻り待ちキューに登録されることを、単に「スレッドが関数戻り待ち状態になる」と表現する。 For the sake of simplification of description, the identifier (thread ID) of a thread that has made a function call waiting state by making a function call to the server process is registered in the function return waiting queue together with the function ID by the client dispatcher. This is simply expressed as “the thread is waiting for a function return”.
ECSプロセス124では、サーバディスパッチャがプリンタアプリプロセスからジョブ動作モード設定関数コールを受信して、ジョブ動作モード設定関数ハンドラをサーバディスパッチャのスレッド上で起動する。そして、ジョブ動作モード設定関数ハンドラにより新たに生成されたプリンタジョブに対して上述のジョブ動作モードを設定し、関数戻り値(例えば、正常またはエラー発生)をプリンタアプリプロセス111のクライアントディスパッチャへ送信する。
In the
プリンタアプリプロセス111のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定関数の関数戻り値を受信して、関数戻り待ちキューから関数戻り値待ちのスレッド1を検索して、ジョブ動作モード設定関数の戻り値を抽出してスレッド1に送信する。
The client dispatcher of the
なお、以降では説明の簡略化のため、クライアントディスパッチャによって、関数戻り待ち状態のスレッドの識別子(スレッドID)が関数戻り待ちキューから検索され、検索された識別子(スレッドID)のスレッドがクライアントディスパッチャから関数戻り値を受信することを、単に「スレッドがクライアントディスパッチャ経由で関数戻り値を受信する」と表現する。 For the sake of simplification of description, the identifier of the thread waiting for function return (thread ID) is retrieved from the function return queue by the client dispatcher, and the thread with the retrieved identifier (thread ID) is retrieved from the client dispatcher. Receiving a function return value is simply expressed as “a thread receives a function return value via a client dispatcher”.
スレッド1では、クライアントディスパッチャからジョブ動作モード設定の関数戻り値を受信すると、戻り待ち状態を抜け、ジョブの開始要求を行うため、ECSプロセス124に対しジョブスタート要求関数を呼び出し(ステップS503)、関数戻り待ち状態となる。
When the
ECSプロセス124では、サーバディスパッチャがプリンタアプリプロセス111からジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラをサーバディスパッチャのスレッド上で起動し、ジョブスタート要求関数ハンドラによってジョブの開始処理を行って関数戻り値をプリンタアプリプロセス111のクライアントディスパッチャへ送信する。
In the
プリンタアプリプロセス111のクライアントディスパッチャは、ECSプロセス124からジョブスタート要求関数の戻り値を受信して、スレッド1がクライアントディスパッチャ経由でジョブスタート要求関数の戻り値を受信する。
The client dispatcher of the
つぎに、ECSプロセス124では、メモリに格納されている印刷データを取得するためにスレッド3においてMCSプロセス125に対してメモリ画像情報要求メッセージを送信する(ステップS504)。
Next, the
MCSプロセス125では、サーバディスパッチャがECSプロセス124からメモリ画像情報要求メッセージを受信して、メモリ画像情報要求メッセージハンドラを起動する。そして、このメモリ画像情報要求メッセージハンドラによってメモリに格納されている画像データを取得して、画像データをECSプロセス124へ送信する(ステップS505)。
In the
ECSプロセス124のクライアントディスパッチャは、MCSプロセス125から画像データを受信して、スレッド3へ受け渡す。かかるメモリ画像情報要求メッセージの送信および画像データの受信処理は、印刷ページが終了するまで繰り返し行われる(ステップS508、S509)。
The client dispatcher of the
一方、MCSプロセス125では、画像データのECSプロセス124への送信後、画像メモリを確保するためにスレッド5においてSRMプロセス123に対してメモリ取得要求関数コールを行って(ステップS506)、戻り待ち状態となる。SRMプロセス123では、サーバディスパッチャがMCSプロセス125からメモリ取得要求関数コールを受信し、メモリ取得要求関数ハンドラを起動して、このメモリ取得要求関数ハンドラによってプリント用に画像メモリを確保し、関数戻り値をMCSプロセス125へ送信する。
On the other hand, in the
MCSプロセス125のクライアントディスパッチャは、SRMプロセス123からメモリ取得要求関数の戻り値を受信して、スレッド5がクライアントディスパッチャ経由でこのメモリ取得要求関数の戻り値を受信する。
The client dispatcher of the
ECSプロセス124では、1ページ目の印刷データをMCSプロセス125から受信した後、プリンタエンジン資源を取得するためにスレッド4において、SRMプロセス123に対して資源獲得要求関数コールを行って(ステップS507)、関数戻り待ち状態となる。SRMプロセス123では、サーバディスパッチャがECSプロセス124から資源獲得要求関数コールを受信して資源獲得要求関数ハンドラを起動し、資源獲得要求関数ハンドラによってプリンタエンジンを占有し、関数戻り値をECSプロセス124へ送信する。ECSプロセス124のクライアントディスパッチャは、SRMプロセス123から資源獲得要求関数の戻り値を受信して、スレッド4がクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信する。
In the
ECSプロセス124のスレッド3では、メモリ画像情報要求メッセージ(ステップS511)に対する通知メッセージとして「画像なし」の応答メッセージを受信した場合には(ステップS512)、すべての印刷ページのプリントが終了したものと判断し、プリンタアプリプロセス111に対し、ジョブエンド通知メッセージを送信する(ステップS513)。プリンタアプリプロセス111では、クライアントディスパッチャがこのメッセージを受信してメッセージハンドラを起動し、メッセージハンドラによってジョブエンド通知メッセージをスレッド1へ通知する。
In the thread 3 of the
このようにプリンタ動作のプロセス間通信が行われるが、ここで、図5に示すように、印刷要求1に対するプリント処理中に、別の印刷要求2がNCSからプリンタアプリプロセス111へ送信された場合について説明する。(ステップS521)。
In this way, the inter-process communication of the printer operation is performed. Here, as shown in FIG. 5, when another
このとき、プリンタアプリプロセス111、ECSプロセス124、MCSプロセス125およびSRMプロセス123で、上述した関数コールと同様のプロセス間通信が行われる(ステップS522、S523、S524)。
At this time, the
しかし、ECSプロセス124のスレッド7からSRMプロセス123に対して資源獲得要求関数コールを行った場合(ステップS527)、現在プリンタエンジンが印刷要求1に対するプリント処理に占有されているため、SRMプロセス123は直ちに資源獲得要求関数の戻り値を返さない。このため、このスレッド7はしばらく関数戻り値待ちの状態となり、関数戻り待ちキューに登録された状態となる。そして、印刷要求1による占有からプリンタエンジンが解放された時点で、SRMプロセス123は資源獲得要求関数の戻り値をECSプロセス124に返し(ステップS528)、これにより、ECSプロセス124のスレッド7が、印刷要求2に対する処理を続行することになる。
However, when a resource acquisition request function call is made from the
なお、ここでは印刷要求2に対するプリンタジョブにおいて、プリンタエンジンの獲得ができない場合の例を説明した。この他、ECSプロセス124からSRMプロセス123に対してメモリ取得要求関数コールを行ったときに、すでに印刷要求1に対するプリントジョブが原因でメモリ不足が生じ、印刷要求2のプリントジョブでメモリを取得できない場合には、メモリ取得要求関数コールを行ったスレッドが印刷要求1のプリンタ動作完了まで関数戻り待ち状態のまま待機し、印刷要求2に対するプリンタ動作が中断する。
Here, an example in which the printer engine cannot be acquired in the printer job for the
次に、実施の形態1の複合機100で行われるスキャナ動作において、スキャナアプリ114、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図7は、実施の形態1の複合機でスキャナ動作を行う場合のスキャナアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図8は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。
Next, inter-process communication of the
図8に示すように、複合機100にはスキャナアプリプロセス114、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらのプロセスは、複合機100の起動時に生成される。なお、図8にはスキャナ動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機100の起動時に生成される。
As illustrated in FIG. 8, the
スキャナアプリプロセス114は、複合機の起動時に起動され、図8に示すようにプロセス内に複数のスレッドが起動している。スキャナアプリプロセス114は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124に対するクライアントディスパッチャのスレッドが起動している。
The
ECSプロセス124は、スキャナ動作時には、スキャナアプリプロセス114をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス124をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはスキャナアプリプロセス114に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御またはエンジン制御に関する処理を行う複数のスレッドが動作している。
The
MCSプロセス125は、スキャナ動作時には、スキャナアプリプロセス114およびECSプロセス124をクライアントプロセスとしたサーバプロセスとなる。このため、MCSプロセス125内にはスキャナアプリプロセス114およびECSプロセス124に対するサーバディスパッチャのスレッドとその他メモリ制御またはハードディスク制御に関する処理を行う複数のスレッドが動作している。
The
SRMプロセス123は、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなり、このため、SRMプロセス123内にはECSプロセス124に対するサーバディスパッチャのスレッドとその他エンジン資源制御に関する処理を行う複数のスレッドが動作している。
The
実施の形態1におけるスキャナアプリプロセス114では、スキャナ動作時におけるジョブオープン要求関数とジョブ動作モード設定要求とジョブスタート要求の各関数コールを行う一連の処理、ファイル生成要求関数コールを行う処理、ファイル情報登録要求関数コールおよびファイルクローズ要求関数コールを行う処理をそれぞれ一スレッドとしている。
In the
また、スキャナアプリプロセス114では、スキャンした画像の読み出し時におけるファイルオープン要求関数コール、作業領域確保要求関数コールおよびページオープン要求関数コールを行う処理、読み出し要求関数コールを行う処理、ページクローズ要求関数コールとページ削除要求関数コールと作業領域削除要求関数コールとファイルクローズ要求関数コールとファイル削除要求関数コールを行う一連の処理をそれぞれ一スレッドとしている。
In the
ECSプロセス124では、資源獲得要求関数コールを行う処理、原稿枚数分繰り返してページ生成要求関数コールと原稿フィードインおよびページクローズ要求関数コールを行う一連の処理をそれぞれ一スレッドとしている。ただし、これらの各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。
In the
スキャナアプリプロセス114に対しスキャン要求があると、スキャナアプリプロセス114は、新たなスキャナジョブを生成し、スレッド1においてECSプロセス124に対してジョブオープン要求関数コールを行う(ステップS701)。その後このスレッド1は関数戻り待ち状態となり、クライアントディスパッチャによってスレッド1の識別子(スレッドID)が呼び出した関数の関数IDとともに関数戻り待ちキューに登録される。
When there is a scan request to the
また、スキャナアプリプロセス114では、これと並行してスレッド2によりMCSプロセス125に対しファイル生成要求関数コールを行う(ステップS702)。その後このスレッド2は関数戻り待ち状態となり、同様にスレッド2の識別子(スレッドID)が関数戻り待ちキューに登録される。
In parallel with this, the
ECSプロセス124では、サーバディスパッチャがスキャナアプリプロセス114からジョブオープン要求関数コールを受信して、ジョブオープン要求関数ハンドラをサーバディスパッチャのスレッド上で起動する。そして、ジョブオープン要求関数ハンドラによりジョブをオープンして、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。
In the
一方、MCSプロセス125では、サーバディスパッチャがスキャナアプリプロセス114からファイル生成要求関数コールを受信して、ファイル生成要求関数ハンドラによって、スキャンした画像を一時的に格納するファイルをハードディスク上に生成して、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。
On the other hand, in the
スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブオープン要求関数の関数戻り値を受信するとともに、MCSプロセス125からファイル生成要求関数の戻り値を受信して、関数戻り値キューからジョブオープン要求関数戻り待ち状態のスレッド1とファイル生成要求関数戻り待ち状態のスレッド2を検出し、ジョブオープン要求関数の戻り値をスレッド1に送信し、ファイル生成要求関数の戻り値をスレッド2に送信する。
The client dispatcher of the
スレッド1は、クライアントディスパッチャからジョブオープン要求関数の戻り値を受信すると戻り待ち状態を抜け、ジョブ動作モードの設定を行うため、ECSプロセス124に対しジョブ動作モード設定要求関数を呼び出し(ステップS703)、スレッド1は関数戻り待ち状態となる。
When the
ECSプロセス124では、サーバディスパッチャがスキャナアプリプロセス114からジョブ動作モード設定要求関数コールを受信して、ジョブ動作モード設定要求関数ハンドラによってスキャナジョブに上述のジョブ動作モードを設定して関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。
In the
スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定要求関数の戻り値を受信する。スレッド1はクライアントディスパッチャ経由でジョブ動作モード設定要求関数の戻り値を受信し、関数戻り待ち状態を抜ける。
The client dispatcher of the
関数戻り待ち状態を抜けたスレッド1では、ジョブスタート要求関数コールをECSプロセス124に対して行い(ステップS704)、スレッド1が関数戻り待ち状態となる。ECSプロセス124では、サーバディスパッチャがジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラによってジョブの開始処理を行い、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブスタート要求関数の戻り値を受信し、スレッド1がクライアントディスパッチャ経由でジョブスタート要求関数の関数戻り値を受信する。
In
このとき、ECSプロセス124では、スキャナエンジンの資源格闘のため、スレッド3においてSRMプロセス123に対して資源獲得要求関数コールを行い(ステップS705)、関数戻り待ち状態となる。またECSプロセス124では、これと並行してスキャン画像をページ単位で格納するメモリを確保するために、スレッド4においてMCSプロセス125に対しページ生成要求関数コールを行い(ステップS706)、関数戻り待ち状態となる。この時点で、関数戻り待ちキューには、スレッド3とスレッド4の識別子(スレッドID)が呼び出した関数の関数IDとともに格納される。
At this time, the
SRMプロセス123では、サーバディスパッチャが資源獲得要求関数コールを受信して資源獲得要求関数ハンドラにより、スキャナエンジンを占有し関数戻り値をECSプロセス124へ送信する。MCSプロセス125では、サーバディスパッチャがページ生成要求関数コールを受信してページ生成要求関数ハンドラにより、1ページ分のメモリを確保し、確保したページをオープンし、関数戻り値をECSプロセス124へ送信する。
In the
ECSプロセス124のクライアントディスパッチャは、SRMプロセス123から資源獲得要求関数の戻り値を受信し、またMCSプロセス125からページ生成要求関数の戻り値を受信する。そして、関数戻り待ち状態のスレッド3はクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信し、スレッド4もクライアントディスパッチャ経由でページ生成要求関数の戻り値を受信する。
The client dispatcher of the
スレッド4は、関数戻り値を受信することによって戻り待ち状態を抜け、つぎにスキャナエンジンに対して原稿フィードインの指示メッセージを送信して(ステップS707)、スキャナによる原稿の読み取り動作を開始させる。1ページ分の原稿読み動作が終了すると、ECSプロセス124に対しスキャナエンジンからスキャン完了通知メッセージが送信されるので(ステップS708)、ECSプロセス124のスレッド4はこのスキャン完了通知メッセージを受信してMCSプロセス125に対しページクローズ要求関数コールを行って(ステップS709)、戻り待ち状態となる。
Upon receiving the function return value, the thread 4 exits the return waiting state, and then transmits a document feed-in instruction message to the scanner engine (step S707), thereby starting the document reading operation by the scanner. When the document reading operation for one page is completed, a scan completion notification message is transmitted from the scanner engine to the ECS process 124 (step S708). Therefore, the thread 4 of the
MCSプロセス125では、ページクローズ要求関数コールを受信すると、ページクローズ要求関数ハンドラによってメモリ上でオープンされている1ページ分の画像メモリをクローズして関数戻り値をECSプロセス124のクライアントディスパッチャへ送信する。
When receiving the page close request function call, the
ECSプロセス124のクライアントディスパッチャは、ページクローズ要求関数の戻り値を受信し、関数戻り待ち状態のスレッド4がクライアントディスパッチャ経由でページクローズ要求関数の戻り値を受信する。スレッド4では、これにより関数戻り待ち状態を抜け、上述のページ生成要求関数コールからページクローズ要求関数コールまでの処理(ステップS706〜S709)を原稿枚数分だけ繰り返し行う。
The client dispatcher of the
原稿の最終ページのスキャンが終了すると、スキャナエンジンはスレッド4に対しスキャン処理完了通知メッセージを送信する(ステップS710)。スレッド4ではこのスキャン処理完了通知メッセージをスキャナアプリプロセス114に対して送信し(ステップS711)、さらにジョブエンド通知メッセージも送信する(ステップS712)。 When scanning of the last page of the document is completed, the scanner engine transmits a scan processing completion notification message to the thread 4 (step S710). The thread 4 transmits this scan processing completion notification message to the scanner application process 114 (step S711), and further transmits a job end notification message (step S712).
スキャナアプリプロセス114のクライアントディスパッチャは、スキャン処理完了通知メッセージとジョブエンド通知メッセージとを順にECSプロセス124から受信し、スレッド1に通知する。一方、スキャナアプリプロセス114のスレッド5は、MCSプロセス125に対してファイル情報登録要求関数コールを行って(ステップS713)、関数戻り待ち状態となる。
The client dispatcher of the
MCSプロセス125では、サーバディスパッチャがファイル情報登録要求関数コールを受信すると、ファイル情報登録要求関数ハンドラによって、一時的に生成されたすべての原稿のスキャン画像が格納されているファイルに対し、ファイル名、格納先等のファイル情報を登録し、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。
In the
スキャナアプリプロセス114のスレッド5は、ファイル情報登録要求関数の戻り値をクライアントディスパッチャ経由で受信すると、MCSプロセス125に対しファイルクローズ要求関数コールを行って(ステップS714)、関数戻り待ち状態となる。MCSプロセス125では、サーバディスパッチャでこのファイルクローズ要求関数コールを受信し、ファイルクローズ要求関数ハンドラによってスキャン画像のファイルをクローズして関数戻り値をスキャナアプリプロセス114に送信する。スキャナアプリプロセス114は、このファイルクローズ要求関数の戻り値を受信することにより、スキャン処理が終了する。
When the thread 5 of the
ついで、スキャナアプリプロセス114では、格納されているスキャン画像を読み出すため、次の処理を行う。まず、スレッド6において、MCSプロセス125に対し、スキャン画像のファイルをオープンするためのファイルオープン要求関数コール、作業メモリの確保のための作業領域確保要求関数コール、ページオープン要求関数コールを順次に行う(ステップS715〜S717)。なお、スレッド6は、上述と同様に、それぞれの関数コールを行った後、関数戻り待ち状態になり、関数戻り値の通知により、戻り待ち状態を抜け、次の関数コールを行う。
Next, in the
MCSプロセス125のサーバディスパッチャは、スキャナアプリプロセス114のスレッド6からファイルオープン要求関数コール、作業領域確保要求関数コール、ページオープン要求関数コールを順に受信して、スキャン画像ファイルのオープン処理、作業メモリの確保処理、ページオープン処理をそれぞれ各関数ハンドラによって行って、各関数戻り値をスキャナアプリプロセス114に送信する。スキャナアプリプロセス114では、クライアントディスパッチャによりファイルオープン要求関数、作業領域確保要求関数、ページオープン要求関数の各戻り値を順に受信して、スレッド6がクライアントディスパッチャ経由で関数戻り値を受信する。
The server dispatcher of the
また、スキャナアプリプロセス114では、スレッド7において、スキャン画像ファイルからの画像データの読み出しのために読み出し要求関数コールを行い(ステップS718)、スレッド7が関数戻り待ち状態になる。さらに、スレッド8において、MCSプロセス125に対しページクローズ要求関数コールを行い(ステップS719)、スレッド8は関数戻り待ち状態になる。
In the
MCSプロセス125では、スレッド6からの要求であるページオープン処理の終了後に、スキャナアプリプロセス114のスレッド7から読み出し要求関数コールを受信し、読み出し要求関数ハンドラによってスキャナ画像ファイルから画像データを読み出し、画像データとともに関数戻り値をスキャナアプリプロセス114へ送信する。スキャナアプリプロセス114では、スレッド7が読み出し要求関数の戻り値をクライアントディスパッチャ経由で受信することにより、関数戻り待ち状態を抜け、次の読み出し要求関数コールを行い、同様に関数戻り値を受信する。
The
MCSプロセス125では、スレッド7からの要求である最後の読み出し要求処理が終了すると、スキャナアプリプロセス114のスレッド8から受信したページクローズ要求関数の関数ハンドラを起動して、オープンしているページデータのクローズ処理を行い、関数戻り値をスキャナアプリプロセス114へ送信する。スキャナアプリプロセス114では、スレッド8がページクローズ要求関数の戻り値をクライアントディスパッチャ経由で受信し、関数戻り待ち状態を抜ける。これにより、スレッド8では、ページ削除要求関数コール、作業領域削除要求関数コール、ファイルクローズ要求関数コール、ファイル削除要求関数コールを順に行う(ステップS720〜S723)。
In the
MCSプロセス125は、これらの関数コールを順に受信して、受信した関数コールに対応する関数ハンドラによってそれぞれ、ページデータの削除、作業メモリの削除、スキャン画像ファイルのクローズ、スキャン画像ファイルの削除の各処理を行って、各関数戻り値をスキャナアプリプロセス114に送信する。
The
スキャナアプリプロセス114のスレッド8では、MCSプロセス125からの各関数戻り値をクライアントディスパッチャ経由で受信することにより、スキャン画像の読み出し処理が完了する。
In the thread 8 of the
次に、実施の形態1の複合機100で行われるコピー動作において、コピーアプリ112、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図9は、実施の形態1の複合機でコピー動作を行う場合のコピーアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図10は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。
Next, the interprocess communication of the
図10に示すように、複合機100にはコピーアプリプロセス112、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成される。なお、図10にはコピー動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機の起動時に生成される。
As shown in FIG. 10, a
コピーアプリプロセス112は、複合機100の起動時に起動され、図10に示すようにプロセス内に複数のスレッドが起動している。コピーアプリプロセス112は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124に対するクライアントディスパッチャのスレッドが起動している。
The
ECSプロセス124は、コピー動作時には、コピーアプリプロセス112をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはコピーアプリプロセス112に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。
The
MCSプロセス125は、コピー動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124に対するサーバディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドと、その他メモリ制御およびハードディスク制御に関する種々の処理を行う複数のスレッドが動作している。
During the copy operation, the
SRMプロセス123は、ECSプロセス124およびMCSプロセス125をクライアントプロセスとしたサーバプロセスとなり、このため、SRMプロセス123内にはECSプロセス124およびMCSプロセス125に対するサーバディスパッチャのスレッドとその他エンジンの資源制御に関する処理を行う複数のスレッドが動作している。
The
実施の形態1におけるコピーアプリプロセス112では、コピー時におけるジョブオープン要求関数コールとジョブ動作モード設定関数コールとジョブスタート要求関数コールを行う一連の処理、ジョブクローズ要求関数コールを行う処理をそれぞれ一スレッドとしている。
In the
ECSプロセス124では、メモリ確保要求関数コールを行う処理、資源獲得要求関数コールを行う処理、原稿フィードイン処理をそれぞれ一スレッドとしている。MCSプロセス125では、メモリ取得要求関数コールを行う処理を一スレッドとしている。なお、コピー動作時においても、これら各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。
In the
コピー要求があると、コピーアプリプロセス112は、新たなコピージョブを生成し、スレッド1においてECSプロセス124に対してジョブオープン要求関数コールを行う(ステップS901)。これにより、スレッド1は関数戻り待ち状態となり、クライアントディスパッチャによってスレッド1の識別子(スレッドID)が呼び出したジョブオープン要求関数の関数IDとともに関数戻り待ちキューに登録される。
When there is a copy request, the
ECSプロセス124では、サーバディスパッチャがコピーアプリプロセス112からジョブオープン要求関数コールを受信して、ジョブオープン要求関数ハンドラをサーバディスパッチャのスレッド上で起動する。そして、ジョブオープン要求関数ハンドラによりコピージョブをオープンして、関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。
In the
コピーアプリプロセス112のクライアントディスパッチャは、ECSプロセス124からジョブオープン要求関数の戻り値を受信し、関数戻り値待ちキューから関数戻り待ち状態のスレッドを検索する。そして、検索されたスレッド1にジョブオープン要求関数の戻り値を送信する。
The client dispatcher of the
スレッド1は、クライアントディスパッチャからジョブオープン要求関数の戻り値を受信すると、戻り待ち状態を抜け、ジョブ動作モードの設定を行うため、ECSプロセス124に対しジョブ動作モード設定関数コールを行い(ステップS902)、関数戻り待ち状態となる。
When the
一方、スレッド2はジョブスタート要求関数コールをECSプロセス124に対して行い(ステップS903)、関数戻り待ち状態となる。この時点では、関数戻り待ちキューにはスレッド1の識別子(スレッドID)がジョブ動作モード設定関数の関数IDとともに登録され、またスレッド2の識別子(スレッドID)がジョブスタート要求関数の関数IDとともにクライアントディスパッチャにより登録される。
On the other hand, the
ECSプロセス124では、サーバディスパッチャがコピーアプリプロセス112からジョブ動作モード設定関数コールを受信して、ジョブ動作モード設定関数ハンドラによってコピージョブに上述のジョブ動作モードを設定して関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。また、サーバディスパッチャはジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラによってジョブの開始処理を行って関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。
In the
コピーアプリプロセス112のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定関数とジョブスタート要求関数の戻り値をそれぞれ受信し、スレッド1がクライアントディスパッチャ経由でジョブ動作モード設定関数の戻り値を受信し、スレッド2もクライアントディスパッチャ経由でジョブスタート要求関数の戻り値を受信する。
The client dispatcher of the
ECSプロセス124では、ジョブスタート要求関数の戻り値をコピーアプリプロセス112に送信すると、つぎにスキャン画像を格納するためのメモリを確保するために、スレッド3においてMCSプロセス125に対し必要なサイズを指定したメモリ確保要求関数コールを行い(ステップS904)、関数戻り待ち状態となる。また、これと並行してスレッド4において、スキャナエンジンとプリンタエンジンの資源獲得のため、SRMプロセス123に対して資源獲得要求関数コールを行い(ステップS906)、関数戻り待ち状態となる。
In the
MCSプロセス125では、サーバディスパッチャがメモリ確保要求関数コールを受信すると、メモリ確保要求関数ハンドラによって指定されたサイズのメモリ上の領域を確保し、関数戻り値をECSプロセス124に送信する。一方、SRMプロセス123では、サーバディスパッチャが資源獲得要求関数コールを受信して資源獲得要求関数ハンドラにより、スキャナエンジンとプリンタエンジンとを占有し、関数戻り値をECSプロセス124へ送信する。
In the
ECSプロセス124のクライアントディスパッチャは、MCSプロセス125からメモリ確保要求関数の戻り値を受信するとともに、SRMプロセス123から資源獲得要求関数の戻り値を受信する。そして、スレッド3はクライアントディスパッチャ経由でメモリ確保要求関数の戻り値を受信し、スレッド4もクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信する。これにより、スレッド3とスレッド4は関数戻り待ち状態を抜ける。
The client dispatcher of the
資源獲得要求関数の戻り値を受信してスキャナエンジンとプリンタエンジンとをコピージョブで占有すると、ECSプロセス124では、スレッド5においてスキャナエンジンに対して原稿フィードインを行い(ステップS907)、これによりコピー動作の原稿スキャン処理を開始する。
When the return value of the resource acquisition request function is received and the scanner engine and printer engine are occupied by the copy job, the
スキャナエンジンでは原稿のスキャン処理が終了するとスキャン終了通知メッセージをECSプロセス124のスレッド5に送信し(ステップS908)、プリンタエンジンによってスキャン画像のプリント処理を開始する。そして、プリンタエンジンではスキャン画像のプリント処理が終了すると、ECSプロセス124のスレッド5に印刷終了通知メッセージを送信する(ステップS910)。 When the scanning process of the document is completed, the scanner engine transmits a scanning end notification message to the thread 5 of the ECS process 124 (step S908), and the printing process of the scanned image is started by the printer engine. When the print processing of the scanned image is completed, the printer engine transmits a print end notification message to the thread 5 of the ECS process 124 (step S910).
ECSプロセス124では、スレッド5がスキャナエンジンからスキャン終了通知メッセージを受信すると、コピーアプリプロセス112に対しスキャン終了の旨のジョブエンド通知メッセージを送信する(ステップS909)。また、スレッド5がプリンタエンジンから印刷終了通知メッセージを受信すると、コピーアプリプロセス112に対し印刷終了の旨のジョブエンド通知メッセージを送信する(ステップS911)。
In the
コピーアプリプロセス112では、クライアントディスパッチャが2つのジョブエンド通知メッセージを受信して、メッセージハンドラを起動してスレッド2に各ジョブエンド通知メッセージを通知する。これにより、原稿1ページ分のコピー動作が完了する。
In the
複数枚の原稿のコピーを行う場合には、さらにECSプロセス124に対しジョブスタート要求関数コールを行うと(ステップS912)、上述と同様の動作がECSプロセス124、MCSプロセス125、SRMプロセス123、スキャナエンジンおよびプリンタエンジンで行われる(ステップS913〜S916)。すべての原稿のコピーが終了し、コピーアプリプロセス112が最後のジョブエンド通知メッセージを受信すると(ステップS917)、スレッド1はECSプロセス124に対しジョブクローズ要求関数コールを行う(ステップS918)。
When copying a plurality of documents, if a job start request function call is further made to the ECS process 124 (step S912), the same operations as described above are performed by the
ECSプロセス124では、サーバディスパッチャによりこのジョブクローズ要求関数コールを受信してジョブクローズ要求関数ハンドラによってオープン状態にあるコピージョブをクローズし、その関数戻り値をコピーアプリプロセス112に送信する。
In the
コピーアプリプロセス112では、クライアントディスパッチャによって、ジョブクローズ要求関数の戻り値を受信し、戻り待ち状態となっているスレッド2がクライアントディスパッチャ経由でジョブクローズ要求関数の戻り値を受信し、コピー動作が完了する。
In the
ここで、上述したコピー動作中に、スキャン要求をスキャナアプリプロセス114が受信した場合には、次のような処理が行われる。たとえば、コピー動作においてECSプロセス124からSRMプロセス123に対しスキャナエンジンとプリンタエンジンの資源獲得要求関数コールを行った後に、スキャナアプリプロセス114にスキャン要求があった場合を考える。
If the
この場合、上述した図7におけるスキャナ動作において、ECSプロセス124からSRMプロセス123に対しスキャナエンジンの資源獲得要求関数コールが行われるが、スキャナエンジンがコピージョブで占有されているため、スキャナジョブで獲得することができない。
In this case, in the scanner operation in FIG. 7 described above, the scanner engine resource acquisition request function call is made from the
このためスキャナジョブでは資源獲得要求関数の戻り値のECSプロセス124に対する送信を、コピージョブが完了し、スキャナエンジンが解放された後で行う。この間、スキャナジョブにおいて資源獲得要求関数コールを行ったスレッドは、関数戻り待ち状態となって待機していることになり、スキャナ動作がコピー動作完了まで中断されることになる。また、コピー動作中に、コピージョブでプリンタエンジンの占有がされた後に、プリンタアプリプロセス111にプリント要求があった場合にも、同様に、コピー動作完了までプリント動作は中断されることになる。
Therefore, in the scanner job, the return value of the resource acquisition request function is transmitted to the
なお、コピー動作中のスキャナ動作について、スキャナジョブでスキャナエンジンの獲得ができない場合の例をあげて説明したが、この他、スキャナジョブにおいてECSプロセス124からMCSプロセス125に対し、ページ生成要求関数コールを行ったときに、コピージョブにおいてメモリ使用中のため、メモリ不足でぺージ生成をできないような場合にも、ページ生成要求関数コールを行ったスレッドが関数戻り待ち状態となって、コピー動作完了までスキャナ動作が中断する。
The scanner operation during the copy operation has been described with reference to an example in which the scanner job cannot be acquired by the scanner job. In addition, a page generation request function call is made from the
次に、実施の形態1の複合機で行われるファクシミリ送信動作において、ファックスアプリ113、FCS127、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図11は、実施の形態1の複合機でコピー動作を行う場合のファックスアプリ、FCS、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図12は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。
Next, the interprocess communication of the
図12に示すように、複合機100にはファックスアプリプロセス113、FCSプロセス127、FCUHプロセス129、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成されるようになっている。なお、図12にはファックス送信動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機の起動時に生成される。
As illustrated in FIG. 12, a
ファックスアプリプロセス113は、複合機100の起動時に起動され、図12に示すようにプロセス内に複数のスレッドが起動している。ファックスアプリプロセス113は、FCSプロセス127をサーバプロセスとしたクライアントプロセスとなっており、このためFCSプロセス127に対するクライアントディスパッチャのスレッドが起動している。
The
FCSプロセス127は、ファクシミリ送信動作時には、ファックスアプリプロセス113をクライアントプロセスとしたサーバプロセスとなるとともに、ECSプロセス124およびFCUHプロセス129をサーバプロセスとしたクライアントプロセスとなる。このため、FCSプロセス127内にはファックスアプリプロセス113に対するサーバディスパッチャのスレッドと、ECSプロセス124に対するクライアントディスパッチャのスレッドと、FCUSプロセス129に対するクライアントディスパッチャのスレッドと、その他ファクシミリ通信制御に関する処理を行う複数のスレッドが動作している。
The
FCUHプロセス129は、FCSプロセス127のサブプロセスであり、ファクシミリ送信動作時に、SRMプロセス123およびFCS127をクライアントプロセスとしたサーバプロセスとなる。このため、FCUHプロセス129内にはSRMプロセス123およびFCS127に対するサーバディスパッチャのスレッドと、その他ファクシミリデバイスドライバに対する指令などの処理を行う複数のスレッドが動作している。
The
ECSプロセス124は、ファクシミリ送信動作時には、FCSプロセス127をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはFCSプロセス127に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。
During the facsimile transmission operation, the
MCSプロセス125は、ファクシミリ送信動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124に対するサーバディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドと、その他メモリ制御およびハードディスク制御に関する処理を行う複数のスレッドが動作している。
The
SRMプロセス123は、ECSプロセス124およびMCSプロセス125をクライアントプロセスとしたサーバプロセスとなるとともに、FCUHプロセス129をサーバプロセスとしたクライアントプロセスとなる。このため、SRMプロセス123内にはECSプロセス124およびMCSプロセス125に対するサーバディスパッチャのスレッドと、FCUHプロセス129をサーバプロセスとしたクライアントディスパッチャと、その他エンジン資源制御に関する処理を行う複数のスレッドが動作している。
The
実施の形態1におけるファックスアプリ113では、送信スタート要求関数コールを行う処理、送信モード変更要求を行う処理をそれぞれ一スレッドとしている。FSCプロセス127では、ファックス送信動作時におけるジョブ動作モード設定関数コールとジョブスタート要求関数コールを行う一連の処理、スキャンパラメータ要求メッセージを受信してスキャンパラメータを送信する処理、EOM(次ページ有り),EOF(次ページ無し)などの次ページ情報メッセージを通知する処理をそれぞれ一スレッドとしている。
In the
ECSプロセス124では、メモリ確保要求関数コールと資源獲得要求関数コールを行う一連の処理、スキャン・フィードインプロセス生成指示メッセージを送信する処理をそれぞれ一スレッドとしている。MCSプロセス125では、メモリ確保要求関数コールを行う処理、その他メッセージを送信する処理を一スレッドとしている。
In the
SRMプロセス123では、フィードスタートメッセージとフィードイン終了メッセージとスタンプ実行指示メッセージを送信する一連の処理、スキャン・フィードインプロセス実行処理をそれぞれ一スレッドとしている。FCUH129では、EOM,EOFなどの次ページ情報メッセージを送信する処理を一スレッドとしている。なお、ファクシミリ送信動作時においても、これら各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。
In the
ファクシミリ送信要求があると、ファックスアプリプロセス113は、新たなファクシミリ送信ジョブを生成し、スレッド1からFCSプロセス127に対して送信スタート要求関数コールを行い(ステップS1101)、スレッド1が関数戻り待ち状態となる。FCSプロセス127では、サーバディスパッチャがファックスアプリプロセス113から送信スタート要求関数コールを受信して、送信スタート要求関数ハンドラを起動し、送信スタート要求関数ハンドラのスレッド3によってMCSプロセス125に対してジョブ動作モード設定要求関数コールを行い(ステップS1102)、スレッド3が関数戻り待ち状態となる。
When there is a facsimile transmission request, the
ECSプロセス124では、サーバディスパッチャがFCSプロセス127からジョブ動作モード設定要求関数コールを受信して、ジョブ動作モード設定要求関数ハンドラによってファクシミリ送信ジョブに上述の動作モードを設定して関数戻り値をFCSプロセス127のクライアントディスパッチャへ送信する。
In the
FCSプロセス127のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定要求関数の戻り値を受信し、スレッド3はクライアントディスパッチャ経由でこの戻り値を受信する。これにより、スレッド3は関数戻り待ち状態を抜け、ついでECSプロセス124に対しジョブスタート要求関数コールを行い(ステップS1103)、スレッド3は関数戻り待ち状態となる。
The client dispatcher of the
このジョブスタート要求関数コールを受信したMCSプロセス125は、ジョブスタート要求関数ハンドラによって、MCS125に対しメモリ確保要求関数コールを行い(ステップS1104)、SRMプロセス123に対し資源獲得要求関数コールを行う(ステップS1106)。これらの関数コールを受信したMCSプロセス125、SRMプロセス123の処理およびECSプロセス124における各関数の戻り値の受信に伴う処理は、コピー動作時の処理と同様であるので説明を省略する。
The
ECSプロセス124では、スキャナエンジンの資源獲得関数の戻り値を受信したら、スレッド7においてFCSプロセス127に対しスキャナパラメータ確定要求メッセージを送信する(ステップS1107)。ここで、スキャナパラメータとは、たとえばファイン、ノーマルなどのスキャン濃度や原稿サイズ等である。FCSプロセス127では、このスキャナパラメータ確定要求メッセージを受信すると、スレッド4においてスキャナパラメータをECSプロセス124に対してメッセージとして送信する(ステップS1108)。
When the
ECSプロセス124では、スキャナパラメータメッセージをサーバディスパッチャが受信して、スキャンパラメータ確定要求メッセージを送信したスレッド7に通知し、スレッド7はSRMプロセス123に対してスキャン・フィードインプロセスの生成指示メッセージを送信する(ステップS1109)。SRMプロセス123は、スキャン・フィードインプロセスの生成指示メッセージを受信すると、スレッド11によりスキャン・フィードインプロセスを生成して実行させる(ステップS1110)。
In the
ついでFCUHプロセス129に対して原稿のフィードインスタートメッセージを送信する(ステップS1111)。FCUHプロセス129がフィードインスタートメッセージを受信して、原稿フィードインが開始され、これにより原稿のスキャンおよび指定宛先への送信が開始する。
Next, a document feed-in start message is transmitted to the FCUH process 129 (step S1111). The
原稿のスキャンが開始されると、次ページの原稿があるか否かを示す、次ページ原稿有無通知メッセージがスキャナエンジンからECSプロセスに対して送信される。図11の例では、次ページ原稿有通知メッセージが通知されている(ステップS1112)。そして、原稿のスキャンを終了すると、スキャナエンジンからECSプロセス124に対してスキャン終了メッセージが送信される(ステップS1113)。 When scanning of a document is started, a next page document presence / absence notification message indicating whether or not there is a document of the next page is transmitted from the scanner engine to the ECS process. In the example of FIG. 11, a next page document presence notification message is notified (step S1112). When the scanning of the document is finished, a scan end message is transmitted from the scanner engine to the ECS process 124 (step S1113).
ECSプロセス124は、受信したスキャン終了メッセージを次ページ原稿有の旨とともにFCSプロセス127へ送信する(ステップS1114)。一方、原稿スキャンが終了すると、SRMプロセス123はFCUHプロセス129に対してフィードイン終了を指示し(ステップS1115)、これにより原稿フィードインが終了する。
The
ここで、ファックスアプリプロセス113がFCSプロセス127に対して送信モード変更要求関数コールを行った場合には(ステップS1105)、ECSプロセス124は、スレッド6においてスキャンパラメータ確定要求メッセージをFCSプロセス127に対して送信し、これに対し上述のようにFCSプロセス127は、スキャンパラメータメッセージをECSプロセス124に送信する(ステップS1118)。ECSプロセス124では、スキャンパラメータメッセージを受信すると、次ページ目のスキャン・フィードインプロセスの実行をSRMプロセス123に指示して、実行が開始する(ステップS1119、S1120)。
When the
一方、1ページの指定宛先へのファクシミリ送信が完了すると、FCSプロセス127は、スレッド5においてEOMメッセージ(異なる送信モードで次ページ有り)をFCUHプロセス129へ送信し(ステップS1121)、これを受信したFCUHプロセス129はスレッド13によりEOMを指定宛先へ送信する(ステップS1122)。
On the other hand, when the facsimile transmission to the designated destination of one page is completed, the
FCUHプロセス129が指定宛先から受信正常の通知を受けた場合には(ステップS1123)、SRMプロセス123に対して送信成功メッセージを送信し(ステップS1124)、これを受信したSRMプロセス123はECSプロセス124に対してプロセス正常終了メッセージを送信する(ステップS1125)。さらにこれを受信したECSプロセス124はFCSプロセス127に対し1ページ目のスキャン処理完了通知メッセージを送信する(ステップS1126)。そして、送信成功メッセージを受信したSRMプロセス123は指示により、送信日時、発信元等のスタンプを指定宛先へ送信する旨をスキャナエンジンに指示する(ステップS1127)。
When the
SRMプロセス123は、2ページ目の原稿のフィードインを開始するため、FCUHプロセス129に対して原稿のフィードインスタートメッセージを送信する(ステップS1128)。FCUHプロセス129はフィードインスタートメッセージを受信して、原稿フィードインが開始され、これにより2ページ目の原稿のスキャンおよび指定宛先への送信が開始する。
The
原稿のスキャンが開始されると、次ページ原稿有無通知メッセージがスキャナエンジンからECSプロセスに対して送信され、図11の例では、次ページ原稿有無通知メッセージが通知され、ECSプロセス124のスレッド9に通知されている(ステップS1129)。そして、原稿のスキャンが終了すると、スキャナエンジンからECSプロセス124に対してスキャン終了メッセージが送信される(ステップS1130)。
When scanning of a document is started, a next page document presence / absence notification message is transmitted from the scanner engine to the ECS process. In the example of FIG. 11, a next page document presence / absence notification message is notified and is sent to the thread 9 of the
ECSプロセス124のスレッド9は、受信したスキャン終了メッセージを次ページ原稿無の旨とともにFCSプロセス127へ送信する(ステップS1131)。一方、スキャンが終了すると、SRMプロセス123ではスレッド13がFCUHプロセス129に対してフィードイン終了を指示し(ステップS1132)、これにより原稿フィードインが終了する。
The thread 9 of the
2ページの指定宛先へのファクシミリ送信が完了すると、FCSプロセス127では、スレッド5がEOFメッセージ(次ページ無し)をFCUHプロセス129へ送信し(ステップS1124)、これを受信したFCUHプロセス129はスレッド13によりEOFを指定宛先へ送信する。
When the facsimile transmission to the designated destination of
FCUHプロセス129が指定宛先から受信正常の通知を受けた場合には(ステップS1135)、スレッド13によりSRMプロセス123に対して送信成功メッセージを送信し(ステップS1136)、これを受信したSRMプロセス123は、スレッド12によりECSプロセス124に対してプロセス正常終了メッセージを送信する(ステップS1137)。
When the
さらにこれを受信したECSプロセス124は、スレッド9によりFCSプロセス127に対し2ページ目のスキャン処理完了通知メッセージを送信する(ステップS1138)。また、送信成功メッセージを受信したSRMプロセス123は、スレッド12により、送信日時、発信元等のスタンプの指定宛先へ送信の指示を行う(ステップS1139)。
Further, the
そして、ECSプロセス124は、FCSプロセス127にジョブエンド通知メッセージを送信し(ステップS1140)、FCSプロセス127では、このジョブエンド通知メッセージをクライアントディスパッチャで受信することにより全ての原稿のファックス送信動作が完了する。
Then, the
このように、実施の形態1の複合機では、各アプリプロセスなどクライアントとなるプロセスが、ECSプロセス、MCSプロセス、SRMプロセスなどのサーバとなるプロセスに対し、関数コールによってサービスを要求し、またメッセージの送受信を行うことでプロセス間通信を実現することができる。このため、アプリケーション130とプラットホーム120という特殊な構成を有する複合機において、複合サービスという多種多様な機能を実現することができる。
As described above, in the MFP according to the first embodiment, a client process such as each application process requests a service by a function call to a process such as an ECS process, an MCS process, and an SRM process, and a message. Communication between processes can be realized by transmitting and receiving. For this reason, in a multifunction peripheral having a special configuration of the
また、実施の形態1の複合機では、関数コールによるサービス要求の結果としての関数戻り値をクライアントディスパッチャにより監視して受信することにより、プロセス内のスレッド間の同期制御を容易に行うことができる。このため、アプリプロセス、複数のコントロールサービスの一部のモジュールのみに変更がある場合でも、関数コールとその関数戻り値の制御を確実に設計しておけば他のプロセスとのインタフェースの変更は不要となるので、各アプリごと、各コントロールサービスごとの機能変更などに対応することが容易に行え、複合機の構成に可変性を持たせることが可能となる。 Further, in the multi function device of the first embodiment, the function return value as a result of the service request by the function call is monitored and received by the client dispatcher, so that the synchronous control between the threads in the process can be easily performed. . For this reason, even if there is a change in only some modules of the application process or multiple control services, it is not necessary to change the interface with other processes if the function call and control of the function return value are designed securely. Therefore, it is possible to easily cope with a function change for each application and each control service, and it is possible to make the configuration of the multifunction device variable.
さらに、実施の形態1の複合機では、スレッドにより並列実行を可能としながら、スレッドに親和性のある関数コールとその関数戻り値の制御によりプロセス間通信におけるスレッド間の同期制御を行っているので、並列処理の切り替え時のオーバヘッドを極力少なくして、複合サービス提供時の処理速度を向上させることができる。
(実施の形態2)
実施の形態1にかかる複合機100では、サーバプロセスとクライアントプロセスとの関係を概念的に説明した。そこで、この実施の形態2では、サーバプロセスおよびクライアントプロセスをより具体的に説明する。なお、実施の形態2にかかる複合機100の構成は、図1と同様であるため説明を省略する。
Further, in the multi-function device of the first embodiment, while performing parallel execution by threads, synchronous control between threads in interprocess communication is performed by controlling function calls having affinity to threads and control of their function return values. The overhead at the time of switching the parallel processing can be reduced as much as possible to improve the processing speed when providing the composite service.
(Embodiment 2)
In the
図13は、実施の形態2の複合機100上で動作するサーバプロセスとクライアントプロセスの関係を詳細に示すブロック図である。ここで、クライアントプロセス1600は、サーバプロセス1610,1620に対して要求を行うことにより、サーバプロセス1610,1620からサービスの提供を受ける例えばSCS122などのプロセスをいう。また、サーバプロセス1610,1620は、クライアントプロセス1600からの要求によりクライアントプロセス1600に対しサービスを提供する例えばECS124などのプロセスをいう。
FIG. 13 is a block diagram illustrating in detail the relationship between a server process and a client process that operate on the multifunction peripheral 100 according to the second embodiment. Here, the
図13に示すとおり、クライアントプロセス1600には複数のスレッド1601が起動している。クライアントプロセス1600は、複数のスレッド1601を有することから、複数のサーバプロセス1610,1620に対して同時にサービスを要求できる。
As shown in FIG. 13, a plurality of
また、クライアントプロセス1600は、サーバプロセス1610,1620のサービスを要求するために、スレッド1601からサーバプロセス1610,1620に対して関数コールを行い、その関数戻り値を受信することによってプロセス間通信を行う。
Further, the
クライアントプロセス1600のスレッド1601は、あらかじめサーバプロセス1610,1620から提供されている関数をコールする。関数は、クライアントスタブ1602に定義されている。また、クライアントディスパッチャ1603は関数戻り値の受信を監視するスレッドである。
The
クライアントプロセス1600は、サーバプロセス1610,1620ごとにクライアントディスパッチャ1603を起動してサーバプロセス1610,1620と通信する。そして、関数コールを受けたサーバプロセス1610,1620は要求された関数に対応する処理を以下のように実行する。
The
例えばサーバプロセス1610のサーバディスパッチャ1611は、サーバスケルトン1612にコーディングされている複数のスレッド1613から、要求された関数に対応するスレッド1613を選択する。ここで選択されるスレッド1613は、実施の形態1で説明した関数ハンドラ403に相当する。サーバプロセス1610のスレッド1613は、要求された処理を実行してその実行結果を関数戻り値としてクライアントプロセス1600に送信する。
For example, the
次に、実施の形態2にかかるクライアントプロセス1600と、サーバプロセス1610,1620とを生成する生成方法について説明する。図14は、実施の形態2のクライアントプロセスとサーバプロセスとを生成する画像形成装置用通信プログラム生成装置(以下、「スタブジェネレータ」という。)の機能的構成を示すブロック図である。スタブジェネレータは、メッセージファイルからヘッダと、クライアントスタブと、サーバスケルトンを自動生成するものである。
Next, a generation method for generating the
図14に示すように、スタブジェネレータは、メッセージファイル1701を入力する入力部1702と、メッセージファイル1701に記述された内容の構文チェックを行う構文解析部1703と、メッセージファイル1701の記述内容から、ヘッダ1706とクライアントスタブ1707と、サーバスケルトン1705とを生成してハードディスク等の記憶媒体に格納するコード生成部1704とを備えている。
As shown in FIG. 14, the stub generator generates an header from an
まず、スタブジェネレータに入力されるメッセージファイル1701と、スタブジェネレータで生成されるヘッダ1706、クライアントスタブ1707およびサーバスケルトン1705について説明する。
First, the
メッセージファイル1701は、プロセス間通信の通信内容をC言語などのソースコードで記述したソースファイルである。図15は、メッセージファイルの記述例を示す説明図である。図15に示すように、メッセージファイル1701には、別のメッセージファイルや、C言語記述のインクルードヘッダを宣言するインクルード宣言と、サーバプロセスとクライアントプロセスの間で送受信するメッセージを記述したメッセージ記述と、クライアントプロセスからサーバプロセスに対して発行する関数の宣言などが記述されている。
A
メッセージは、主としてサーバプロセスとクライアントプロセスとの間でイベ
ントや通知を行う際に発行するものであり、メッセージファイル1701のメッセージ記述としては、メッセージ名と、メッセージIDと、メッセージ方向、メッセージ内容を記述するようになっている。
A message is issued mainly when an event or notification is performed between a server process and a client process. As a message description of the
メッセージ方向には、「IN」、「OUT」、「SELF」がある。「IN」は、クライアントプロセスからサーバプロセスに対して送信するメッセージを意味する。「OUT」は、サーバプロセスからクライアントプロセスに対して送信するメッセージを意味する。また、「SELF」は自分自身のプロセスに対して送信するメッセージを意味する。 The message direction includes “IN”, “OUT”, and “SELF”. “IN” means a message transmitted from the client process to the server process. “OUT” means a message transmitted from the server process to the client process. “SELF” means a message to be transmitted to its own process.
関数は、クライアントプロセスからサーバプロセスに処理要求や設定要求を行
う際に発行するものである。メッセージファイル1701の関数宣言には、関数名と、関数の型と、引数のみを記述し、関数の処理内容は記述しないようになっている。
The function is issued when a processing request or a setting request is issued from the client process to the server process. In the function declaration of the
クライアントスタブ1707は、クライアントプログラムから呼び出される関数のサーバプロセスに対する発行を記述したソースファイルである。クライアントスタブ1707をコンパイルしてライブラリ化し、クライアントプログラムとリンクすることにより、クライアントプログラムからの関数コールがクライアントスタブ1707を介してサーバプロセスへ発行されるようになっている。
The
図16はスタブジェネレータにより生成されるクライアントスタブ1707の一例を示す説明図である。図16に示すように、クライアントスタブ1707には、後述するサーバスケルトン1705に登録された関数ハンドラを呼び出すことにより、関数コールが行われるようになっている。サーバスケルトン1705は、クライアントスタブ1707から呼び出された関数ハンドラとメッセージハンドラを登録したソースファイルである。
FIG. 16 is an explanatory diagram showing an example of a
図17は、スタブジェネレータにより生成されるサーバスケルトン1705の一例を示す説明図である。図17に示すように、サーバスケルトン1705にはクライアントスタブ1707に記述された関数に対応した関数ハンドラが登録されている。
FIG. 17 is an explanatory diagram showing an example of the
関数ハンドラでは引数の受け渡し部のみが記述され、処理内容を記述する実装記述部は空欄の状態で生成されている。この実装記述部には、クライアントプログラムからクライアントスタブ1707を介して発行される関数の処理内容を、サーバプログラムの開発者が自在に記述できるようになっている。ヘッダ1706は、サーバスケルトン1705とクライアントスタブ1707で共通の定義、宣言などを記述したソースファイルである。
In the function handler, only the argument passing part is described, and the implementation description part describing the processing contents is generated in a blank state. In this implementation description section, the processing contents of the function issued from the client program via the
図18はスタブジェネレータにより生成されるヘッダ1706の一例を示す説明図である。図18に示すように、ヘッダ1706には、メッセージファイル1701に記述されたインクルード宣言、メッセージID、メッセージの構造体などのメッセージ宣言、関数宣言および関数ハンドラ宣言などが記述された状態で生成されるようになっている。
FIG. 18 is an explanatory diagram showing an example of the
次に、スタブジェネレータによるサーバスケルトン1705、クライアントスタブ1707およびヘッダ1706の生成処理について説明する。図19は、サーバスケルトン、クライアントスタブおよびヘッダの生成処理のフローチャートである。
Next, generation processing of the
スタブジェネレータの構文解析部1703は、メッセージファイル1701に記述された関数宣言、メッセージ定義、インクルード宣言、C言語記述の文法チェックを行い(ステップS1801)、さらにメッセージファイル1701に定義されている関数名およびメッセージ定義の中のメッセージID、メッセージ名の一意性の判断を行う(ステップS1802)。
The
そして、関数宣言、メッセージ定義、インクルード宣言の記述に文法エラーがあった場合、あるいは関数名、メッセージID、メッセージ名のいずれかが重複している場合には、ユーザに構文エラーである旨のメッセージを通知し処理を終了する(ステップS1803、S1804)。 If there is a syntax error in the description of the function declaration, message definition, or include declaration, or if any of the function name, message ID, or message name is duplicated, a message to the user that it is a syntax error And the process ends (steps S1803 and S1804).
構文解析後、コード生成部1704は、メッセージファイル1701の記述内容から、ヘッダ1706と、サーバスケルトン1705と、クライアントスタブ1707を生成する。具体的には、メッセージファイル1701のインクルード宣言とC言語記述とをヘッダ1706にそのまま転記し、メッセージファイル1701のメッセージ定義に記述されているメッセージ構造体をヘッダ1706にコピーする(ステップS1805)。
After the syntax analysis, the code generation unit 1704 generates a
また、コード生成部1704は、メッセージファイル1701の関数宣言から関数ハンドラ名を自動生成し(例えば、関数名abcの場合、関数ハンドラ名をabc_handlerとして生成する)、生成された関数ハンドラ名をサーバスケルトン1705内に登録する。 In addition, the code generation unit 1704 automatically generates a function handler name from the function declaration of the message file 1701 (for example, in the case of the function name abc, the function handler name is generated as abc_handler), and the generated function handler name is the server skeleton. Register in 1705.
そして、関数ハンドラの処理内に、引数受け渡しの記述を行うとともに、戻り値領域の生成システムコールの発行を記述する。関数ハンドラの実際の処理内容を記述する実装記述部の欄を空欄とし、その実装記述部の後に、戻り値送信と戻り値領域解放の各システムコールの発行を記述する(ステップS1806)。 In the function handler process, argument passing is described and issue of a return value area generation system call is described. The field of the implementation description part describing the actual processing contents of the function handler is left blank, and after the implementation description part, the issue of each system call for return value transmission and return value area release is described (step S1806).
また、コード生成部1704は、メッセージファイル1701に記述された関数宣言ごとに、関数名と引数の記述をクライアントスタブ1707に登録し、その関数の処理内に、関数コールメッセージ生成コールと関数ハンドラの呼び出しと戻り値解放の各システムコールを記述する(ステップS1807)。なお、関数ハンドラ呼び出しには、発行した関数の戻り値の待ち受ける関数戻り値待ちシステムコールが内部的に発行されるようになっている。
In addition, the code generation unit 1704 registers the function name and argument description in the
このようにスタブジェネレータにより、クライアントスタブ1707とサーバスケルトン1705とヘッダ1706を生成したら、次にサーバオブジェクトおよびクライアントオブジェクトを完成させる。
When the
サーバプログラムの開発者は、サーバスケルトン1705の関数ハンドラの実装記述部(空欄)に、関数ハンドラで行うべき処理内容をエディタなどを利用して記述し、サーバスケルトン1705をヘッダ1706とともにコンパイルしてサーバスタブオブジェクトを生成する。また、サーバスケルトン1705に登録した関数ハンドラを宣言するとともに、クライアントプロセスとの間でメッセージファイル1701に記述されたメッセージの送受信を行うメッセージハンドラ、エラー処理を行うエラーハンドラ、サーバの初期化、サーバディスパッチャ起動等のシステムコールの発行を記述したサーバソースファイルを作成してコンパイルし、サーバスタブオブジェクトとリンクして、サーバプログラムを完成させる。
The developer of the server program describes the processing contents to be performed by the function handler in the function handler implementation description section (blank) of the
一方、クライアントスタブ1707はヘッダ1706とともにコンパイルしてクライアントスタブオブジェクトを生成する。サーバプロセスごとにクライアントスタブオブジェクトを生成し、生成した複数のクライアントスタブオブジェクトをライブラリとする。
On the other hand, the
また、関数の発行、関数ハンドラの宣言、エラー処理を行うエラーハンドラの宣言、クライアントプロセスとの間でメッセージファイル1701に記述されたメッセージの送受信を行うメッセージハンドラ、およびクライアントプロセスの初期化やクライアントディスパッチャ起動等のシステムコールの発行を記述したクライアントプログラムを作成してコンパイルし、スタブのライブラリとリンクすることによりクライアントプログラムを完成させる。
Also, function issuance, function handler declaration, error handler declaration for error handling, message handler for sending and receiving messages described in the
図20は、クライアントプログラムから関数コールを行った場合におけるサーバプログラムとの呼び出しおよび応答のシーケンスを示す説明図である。なお、サーバプログラムとクライアントプログラムは実際は実行可能形式のオブジェクトファイルであるが、図20では、説明の都合上いずれもソースコードで表示している。 FIG. 20 is an explanatory diagram showing a calling and response sequence with the server program when a function call is made from the client program. The server program and the client program are actually executable object files, but in FIG. 20, both are displayed in source code for convenience of explanation.
クライアントプログラムからサーバプログラムに対して、たとえばOpen関数をコールすると、クライアントスタブオブジェクトで定義されたOpenが呼び出される(ステップS1901)。そして、このスタブのOpenの処理の中で、Openの関数ハンドラOpen_handlerがサーバプログラムに対してコールされる(ステップS1902)。 For example, when an Open function is called from the client program to the server program, Open defined in the client stub object is called (step S1901). Then, in the stub Open process, the Open function handler Open_handler is called to the server program (step S1902).
サーバプログラムでは、クライアントスタブオブジェクトから関数ハンドラOpen_handlerの発行を受け取って、サーバスタブオブジェクトに登録されているOpen_handlerの実装記述部に記述されている処理を実行し(ステップS1903)、その実行結果をクライアントスタブへ戻り値として返す(ステップS1904)。クライアントプログラムでは、この戻り値をクライアントスタブから受け取って(ステップS1905)、次の処理へ移行する。 The server program receives the issuance of the function handler Open_handler from the client stub object, executes the process described in the implementation description part of the Open_handler registered in the server stub object (step S1903), and outputs the execution result to the client stub. Is returned as a return value (step S1904). The client program receives this return value from the client stub (step S1905), and proceeds to the next processing.
このように実施の形態2のスタブジェネレータでは、メッセージファイル1701に関数宣言を記述することによりクライアントスタブ1707とサーバスケルトン1705を容易に生成することができる。しかも生成されるサーバスケルトン1705の実装記述部は空欄となっているので、プログラム開発者は必要に応じて関数の処理内容を容易に変更するができる。
As described above, the stub generator of the second embodiment can easily generate the
このため複合機100に可変性をもたせることができるとともに、多種多様な機能を実現させることができる。さらに、サードベンダーなどの他社がクライアントプログラムの開発を行う場合でも、クライアントプログラムには提供される関数コールを記述するだけでプロセス間通信が可能となるので、内部の通信プロトコルの隠蔽性を保つことが可能となる。
For this reason, the
また、実施の形態2のスタブジェネレータでは、プロセス間通信を関数コールで実現しているので、ジョブの並列実行をスレッドで実現した場合でも、高速なプロセス間通信が可能となる。また、関数からの戻り値によってスレッド間の同期をとることができるので、同期のための処理プログラムを別途作成する必要がなくなり、プログラム開発の労力を低減することができる。
(実施の形態3)
実施の形態1にかかる複合機100は、クライアントプロセスとなるアプリプロセスが、サーバプロセスとなる各コントロールサービスと同一複合機内部で動作していた。この実施の形態3にかかる複合機100は、ネットワークに接続された他の複合機のアプリプロセスをクライアントプロセスとして各コントロールサービスがサービスを提供するものである。
In the stub generator of the second embodiment, since inter-process communication is realized by function calls, high-speed inter-process communication is possible even when parallel execution of jobs is realized by threads. Further, since the threads can be synchronized by the return value from the function, it is not necessary to separately create a processing program for synchronization, and the labor for program development can be reduced.
(Embodiment 3)
In the
図21は、実施の形態3にかかる複合機の構成を示すブロック図である。図21に示すように、実施の形態3では複数の複合機1300a,1300bがLANなどのネットワーク1340によって接続された構成となっている。なお、図21では、2台の複合機1300a,1300bがネットワーク1340で接続された構成となっているが、3台以上の複合機をネットワーク1340で接続した構成でもよい。
FIG. 21 is a block diagram of the configuration of the multifunction machine according to the third embodiment. As shown in FIG. 21, the third embodiment has a configuration in which a plurality of multifunction peripherals 1300a and 1300b are connected by a
図21に示すように、ネットワーク1340上の各複合機1300a,1300bは、実施の形態1の複合機と同様の構成となっている。このため、これらの構成について詳細な説明は省略する。
As shown in FIG. 21, each multifunction device 1300a, 1300b on the
実施の形態3の複合機では、実施の形態1と同様に、主としてコピーアプリ1312、プリンタアプリ1311、スキャナアプリ1314、ファックスアプリ1313などのアプリケーションのプロセス、およびECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスのプロセスが、コントロールサービスまたはSRM1323をサーバプロセスとしたクライアントプロセスとなるが、さらにネットワークに接続された他の複合機内部で動作しているECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスをサーバプロセスとしたクライアントプロセスとなる。
In the MFP of the third embodiment, as in the first embodiment, application processes such as the
また、実施の形態3の複合機では、実施の形態1と同様に、主としてECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスおよびSRM1323のプロセスが、アプリケーションのプロセスまたはコントロールサービスもしくはSRM1323のプロセスをクライアントプロセスとしたサーバプロセスとなるが、さらにネットワークに接続された他の複合機内部で動作しているコピーアプリ1312、プリンタアプリ1311、スキャナアプリ1314、ファックスアプリ1313などのアプリケーションのプロセスをクライアントプロセスとしたサーバプロセスにもなる。
In the MFP of the third embodiment, as in the first embodiment, the control service such as ECS1324, MCS1325, FCS1327, and NCS1328 and the SRM1323 process are mainly the application process or the control service or the SRM1323 process as the client process. The server process uses a client process that is an application process such as a
実施の形態3の複合機におけるこれらサーバプロセスとクライアントプロセスの関係、およびサーバプロセス、クライアントプロセスの各構成は実施の形態1の複合機で説明した図2および図3と同様であるので詳細な説明は省略する。 The relationship between the server process and the client process and the configuration of the server process and the client process in the multifunction device of the third embodiment are the same as those in FIGS. 2 and 3 described in the multifunction device of the first embodiment. Is omitted.
各コントロールサービスとSRM1323と各アプリとは、実施の形態1の複合機100と同様に、それぞれプロセスとして汎用OS上に生成されて実行される。各プロセス内部には、複数のスレッドが起動され、汎用OSの管理下でこれらのスレッドのCPU占有時間を切り替えることにより並列実行が実現されている。
Each control service,
また、実施の形態3の複合機1300a,1300bでは、アプリケーションなどのクライアントプロセスは、コントロールサービスなどのサーバプロセスのサービスを要求するために、クライアントプロセス内のスレッドからサーバプロセスに対して関数コールを行い、その関数戻り値を受信すること、およびスレッドからメッセージをサーバプロセスに送信することによってプロセス間通信を行う。そして、さらにネットワーク上の他の複合機で動作するサーバプロセスに対して関数コールおよびメッセージの送信も行えるようになっている。 In the MFPs 1300a and 1300b according to the third embodiment, a client process such as an application makes a function call to a server process from a thread in the client process in order to request a service of a server process such as a control service. Receive inter-process communication by receiving the function return value and sending a message from the thread to the server process. Furthermore, function calls and messages can be sent to server processes operating on other multifunction devices on the network.
一方、コントロールサービスなどのサーバプロセスでは、クライアントプロセスに対するプロセス間通信はメッセージの送信のみで行われる。さらにサーバプロセスでは、ネットワーク上の他の複合機で動作するプロセスをクライアントプロセスとして、このネットワーク上のクライアントプロセスに対してメッセージの送信も可能となっている。 On the other hand, in a server process such as a control service, interprocess communication with a client process is performed only by sending a message. Further, in the server process, it is possible to send a message to a client process on the network by using a process operating on another multifunction device on the network as a client process.
クライアントプロセスで起動されるクライアントディスパッチャは実施の形態1の複合機100と同様の構成をしており、さらにネットワーク1340に接続された他の複合機からの関数戻り値およびOUT方向のメッセージの受信も監視している。
The client dispatcher activated by the client process has the same configuration as that of the
このため、ネットワーク上の他の複合機のプロセスとプロセス間通信を行えるように、クライアントプロセスから発行する関数の形式およびメッセージの形式は、ネットワークアドレスなどの情報を指定できるような形式で提供される。 For this reason, the function format and message format issued from the client process are provided in a format that can specify information such as the network address so that inter-process communication can be performed with other multifunction devices on the network. .
サーバプロセスで起動されるサーバディスパッチャも、実施の形態1の複合機100におけるサーバプロセスと同様の構成をしているが、さらにネットワーク1340に接続された他の複合機で動作するクライアントプロセスのスレッドからの関数コールおよびIN方向のメッセージも監視している。
The server dispatcher activated by the server process has the same configuration as that of the server process in the
サーバプロセスでは、関数コールをサーバディスパッチャで受信したときに実行される関数ハンドラが、ネットワーク1340上のクライアントプロセスに関数戻り値を返すために、関数コールしたプロセスの存在する複合機のネットワークアドレスなどを指定できるようになっている。また、サーバプロセスから送信するメッセージもネットワークアドレスなどを指定できるようになっている。
In the server process, the function handler executed when the function call is received by the server dispatcher returns the function return value to the client process on the
次に、このように構成された実施の形態3にかかる複合機1300a,1300bにおいて、ネットワーク1340上の異なる複合機を利用してプリント動作を行う場合のプロセス間通信について説明する。図22は、実施の形態3のネットワークに接続された2つの複合機を利用してプリンタ動作を行う場合のプリンタアプリ、ECSのプロセス間のデータシーケンスを示す説明図である。
Next, inter-process communication in the case of performing a printing operation using different multifunction machines on the
プリンタアプリプロセス1311が印刷要求を受信した場合には(ステップS1401)、実施の形態1において図5を用いて説明したとおり、複合機1300aのプリンタアプリプロセス1311のスレッドがECSプロセス1324に対して、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを順次行う。
When the
実施の形態3では、このとき、複合機1300aのプリンタアプリプロセス1311が、ネットワーク1340を介して接続された他の複合機1300bのネットワークアドレスを指定し、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを行っている(ステップS1402、S1404)。
In the third embodiment, at this time, the
これにより、ジョブ動作モード設定関数コール、ジョブスタート要求関数コールは、自己の複合機1300aのECSプロセス1324ではなく、ネットワークアドレスで指定された複合機1300bのECSプロセス1324に対して送信される。そして、それぞれの関数コールを行ったスレッドは関数戻り待ち状態になる。
As a result, the job operation mode setting function call and the job start request function call are transmitted to the
複合機1300bのECSプロセス1324では、サーバディスパッチャがネットワーク1340を介してジョブ動作モード設定関数コール、ジョブスタート要求関数コールをそれぞれ受信し、各関数ハンドラによってプリンタジョブの動作モード設定、プリンタジョブの開始処理を行う。そして、ジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を、複合機1300aのネットワークアドレスを指定して送信する(ステップS1403、S1405)。
In the
複合機1300aのプリンタアプリプロセス1311では、クライアントディスパッチャによって複合機1300bのECSプロセス1324からのジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を受信する。そして、実施の形態1の複合機と同様に、関数戻り待ち状態のスレッドを関数戻り待ちキューから抽出して、ジョブ動作モード設定関数の戻り値とジョブオープン関数の戻り値のそれぞれを抽出されたスレッドに送信する。
In the
これ以降のECSプロセス1324、MCSプロセス1325、SRMプロセス123との間のプロセス間通信は同一複合機内部で行われるものであり、実施の形態1で説明したプリンタ動作と同様である。これにより、複合機1300aにおける印刷要求に対して、実際のプリント処理が複合機1300bで行われることになる。
The subsequent inter-process communication with the
複合機1300bにおけるプリント処理が終了すると、複合機1300bのECSプロセス1324はジョブエンド通知メッセージをプリンタアプリプロセスに送信する。このとき、ECSプロセス1324のサーバディスパッチャは、ネットワーク1340上の複合機1300aのネットワークアドレスを指定してジョブエンド通知メッセージを送信する(ステップS1406)。
When the print processing in the multifunction device 1300b is completed, the
複合機1300aのプリンタアプリプロセス1311では、クライアントディスパッチャによって、ネットワークを介して送信されてきたジョブエンド通知メッセージを受信し、これによりプリンタ動作を完了する。
In the
このように、実施の形態3では、ネットワークに接続された複合機1300aで動作するアプリプロセスと、複合機1300bで動作するECSプロセス1324との間でプロセス間通信を行って、複合機1300aで発生した要求に対しネットワーク1340上の他の複合機1300bでプリント処理を行えるので、要求の生じた複合機のみならずネットワーク上の複合機を利用して多種多様な機能を実現することができる。
As described above, in the third embodiment, inter-process communication is performed between the application process that operates in the multifunction device 1300a connected to the network and the
例えば、複合機1300aで印刷要求が生じたときに、複合機1300aのプリンタエンジンが他のジョブに占有されている場合には、プリンタアプリプロセスでこれを判断してECSプロセス1324に対する関数コールをネットワーク1340上の他の複合機1300bのECSプロセス1324への関数コールへ切り替える等の処理を行えば、プリント開始までに時間を要することを防止でき、ユーザビリティの向上を図ることができる。
For example, when a print request is generated in the multifunction device 1300a, if the printer engine of the multifunction device 1300a is occupied by another job, the printer application process determines this and makes a function call to the
なお、実施の形態3では、プリンタ動作の例をあげてネットワーク1340に接続された2つの複合機1300a,1300bにおけるプロセス間通信について説明したが、スキャナ動作、コピー動作、ファクシミリ送信動作においても、複合機1300a内のスキャナアプリプロセス1314、コピーアプリプロセス1312、ファックスアプリプリセス1313と、ECSプロセス1324とのプロセス間通信もプリンタ動作の場合と同様に行われる。
In the third embodiment, the inter-process communication in the two multifunction peripherals 1300a and 1300b connected to the
また、実施の形態3の複合機1300a,1300bでは、アプリプロセスとECSプロセス1324とネットワーク1340を介したプロセス間通信に説明したが、アプリプロセスとECSプロセス1324以外のコントロールサービスおよびシステムリソースマネージャ(SRM)1323のプロセス間通信も、アプリプロセスとECSプロセス1324間の通信と同様に行われる。
In the MFPs 1300a and 1300b according to the third embodiment, the interprocess communication via the application process, the
さらに、実施の形態3の複合機1300a,1300bでは、アプリプロセスとネットワーク1340上の別の複合機内のECSプロセス1324とが直接プロセス間通信を行っているが、NCS1328を介して異なる複合機のアプリプロセスとECSプロセス1324とが通信を行うように構成しても良い。
Further, in the MFPs 1300a and 1300b according to the third embodiment, the application process and the
すなわち、NCS1328において、アプリプロセスからの関数コールやメッセージを一旦受信して、ネットワーク1340上の他の複合機1300bのネットワークアドレスを指定した上で、関数コールやメッセージを複合機1300bのNCSプロセス1328へ送信するように構成することも可能である。
That is, the
この場合には、アプリプロセスやECSプロセス1324において、ネットワークアドレスに関する処理の追加が不要となり、モジュール間の独立性がより高まるので、複合機により可変性を持たせることができるという利点がある。
(実施の形態4)
実施の形態3にかかる複合機1300a,1300bでは、ネットワーク1340に接続された他の複合機のアプリプロセスをクライアントプロセスとして各コントロールサービスがサービスを提供していた。この実施の形態4にかかる複合機は、ネットワークに接続された他の複合機のコントロールサービスをクライアントプロセスとして、各コントロールサービスがサービスを提供するものである。
In this case, in the application process and the
(Embodiment 4)
In the MFPs 1300a and 1300b according to the third embodiment, each control service provides a service using an application process of another MFP connected to the
実施の形態4では、図21に示す実施の形態3の複合機1300a,1300bと同様に、複数の複合機がLANなどのネットワーク1340によって接続された構成となっている。実施の形態4におけるネットワーク1340上の各複合機1300a,1300bは、実施の形態1の複合機と同様の構成であるため、これらの構成について詳細な説明は省略する。
In the fourth embodiment, similarly to the multifunction machines 1300a and 1300b of the third embodiment shown in FIG. 21, a plurality of multifunction machines are connected by a
実施の形態4の複合機では、実施の形態1と同様に、主としてコピーアプリ1312、プリンタアプリ1311、スキャナアプリ1314、ファックスアプリ1313などのアプリケーションプロセス、およびECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスのプロセスが、コントロールサービスまたはSRM1323をサーバプロセスとしたクライアントプロセスとなるが、さらにネットワークに接続された他の複合機内部で動作しているECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスをサーバプロセスとしたクライアントプロセスとなる。
In the MFP of the fourth embodiment, as in the first embodiment, application processes such as a
また、実施の形態4の複合機では、実施の形態1と同様に、主としてECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスおよびSRM1323のプロセスが、アプリケーションサービスまたはコントロールサービスもしくはSRM1323をクライアントプロセスとしたサーバプロセスとなるが、さらにネットワークに接続された他の複合機内部で動作しているコントロールサービスをクライアントプロセスとしたサーバプロセスにもなる。
In the MFP of the fourth embodiment, as in the first embodiment, the control service such as
実施の形態4の複合機1300a,1300bにおけるこれらサーバプロセスとクライアントプロセスの関係、およびサーバプロセス、クライアントプロセスの各構成は実施の形態1の複合機で説明した図2および図3、および実施の形態3と同様であるので詳細な説明は省略する。 The relationship between the server process and the client process in the MFPs 1300a and 1300b according to the fourth embodiment, and the configurations of the server process and the client process are described with reference to FIGS. 3 is the same as in FIG.
実施の形態4の複合機1300a,1300bでは、コントロールサービスがクライアントプロセスとなる場合に、他のコントロールサービスなどのサーバプロセスのサービスを要求するために、クライアントプロセス内のスレッドからサーバプロセスに対して関数コールを行い、その関数戻り値を受信すること、およびスレッドからメッセージをサーバプロセスに送信することによってプロセス間通信を行う。そして、さらにネットワーク1340上の他の複合機で動作する他のコントロールサービスまたはSRM1323などのサーバプロセスに対して関数コールおよびメッセージの送信も行えるようになっている。
In the MFPs 1300a and 1300b according to the fourth embodiment, when the control service is a client process, a function from a thread in the client process is requested to the server process in order to request a service of a server process such as another control service. Interprocess communication is performed by making a call, receiving the function return value, and sending a message from the thread to the server process. Furthermore, function calls and messages can be transmitted to other control services operating on other multifunction devices on the
コントロールサービスなどのクライアントプロセスで起動されるクライアントディスパッチャは、実施の形態3の複合機1300a,1300bと同様に、ネットワーク1340に接続された他の複合機で動作するコントロールサービスまたはSRM1323(サーバプロセス)からの関数戻り値およびOUT方向のメッセージの受信も監視している。
A client dispatcher activated by a client process such as a control service is sent from a control service or SRM 1323 (server process) that operates in another multi-function peripheral connected to the
このため、ネットワーク1340上の他の複合機のプロセスとプロセス間通信を行えるように、クライアントプロセスから発行する関数の形式およびメッセージの形式は、ネットワークアドレスなどの情報を指定できるような形式で提供される。
For this reason, the function format and message format issued from the client process are provided in such a format that information such as a network address can be specified so that inter-process communication can be performed with other MFP processes on the
サーバプロセスで起動されるサーバディスパッチャも、実施の形態3の複合機1300a,1300bにおけるサーバプロセスと同様に、ネットワーク1340に接続された他の複合機で動作するクライアントプロセスのスレッドからの関数コールおよびIN方向のメッセージも監視している。
The server dispatcher activated by the server process is similar to the server process in the multifunction peripherals 1300a and 1300b of the third embodiment, and the function call and IN from the thread of the client process operating in another multifunction peripheral connected to the
実施の形態4においても、サーバプロセスおよびクライアントプロセスとなるECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスおよびSRM1323では、関数コールをサーバディスパッチャで受信したときに実行される関数ハンドラが、関数コールしたクライアントプロセスの存在する複合機のネットワークアドレスなどを指定できるようになっている。また、サーバプロセスから送信するメッセージもネットワークアドレスなどを指定できるようになっている。
Also in the fourth embodiment, in the control service such as
次に、このように構成された実施の形態4にかかる複合機1300a,1300bにおいて、ネットワーク1340上の異なる複合機を利用してファクシミリ送信動作を行う場合のプロセス間通信について説明する。図23は、実施の形態4のネットワークに接続された2つの複合機を利用してファクシミリ送信動作を行う場合のFCSとECSとMCSのプロセス間のデータシーケンスを示す説明図である。
Next, inter-process communication in the case of performing a facsimile transmission operation using different multifunction machines on the
FCSプロセス1327がファックスアプリプロセス1313から送信スタート要求を受信した場合には(ステップS1501)、複合機1300aのFCSプロセス1327のスレッドが、ネットワーク1340に接続された他の複合機1300bのネットワークアドレスを指定して、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを順次行う(ステップS1502、S1504)。
When the
これにより、ジョブ動作モード設定関数コール、ジョブスタート要求関数コールは、ネットワークアドレスで指定された複合機1300bで動作するECSプロセス1324に対してネットワークを介して送信される。
As a result, the job operation mode setting function call and the job start request function call are transmitted via the network to the
複合機1300bのECSプロセス1324では、サーバディスパッチャがネットワーク1340を介してジョブ動作モード設定関数コール、ジョブスタート要求関数コールをそれぞれ受信し、各関数ハンドラによってプリンタジョブの動作モード設定、プリンタジョブの開始処理を行う。そして、ジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を、複合機1300aのネットワークアドレスを指定して送信する(ステップS1503、S1505)。
In the
複合機1300aのFCSプロセス1327では、クライアントディスパッチャによって複合機1300bのECSプロセス1324からのジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を受信する。そして、実施の形態1の複合機と同様に、関数戻り待ち状態のスレッドを関数戻り待ちキューから抽出して、ジョブ動作モード設定関数の戻り値とジョブオープン関数の戻り値のそれぞれを抽出されたスレッドに送信する。
In the
複合機1300bのECSプロセス1324は、MCSプロセス1325に対してメモリ確保要求関数コールを行い(ステップS1505)、またSRMプロセス123に対してスキャナエンジンの資源獲得要求関数コールを行う(ステップS1506)。かかる関数コールに対するMCSプロセス1325およびSRMプロセス1323の処理は、実施の形態1で説明したとおりである。
The
複合機1300bのECSプロセス1324では、スキャナエンジンの資源獲得関数の戻り値を受信したら、複合機1300aのネットワークアドレスを指定したスキャンパラメータ要求メッセージを、複合機1300aのFCSプロセス1327にネットワークを介して送信する(ステップS1507)。
When the
複合機1300aのFCSプロセス1327では、このスキャナパラメータ確定要求メッセージを受信すると、スキャナパラメータのメッセージを、複合機1300bのネットワークアドレスを指定することにより、複合機1300bのECSプロセス1324に対してネットワークを介して送信する(ステップS1508)。ECSプロセス1324では、サーバディスパッチャがスキャナパラメータメッセージをネットワークを介して受信する。
When the
これ以降のプロセス間通信は、同一複合機1300b内部で行われるものであり、実施の形態1で説明したファクシミリ送信と同様である。これにより、複合機1300aにおけるファクシミリ送信スタート要求に対して、複合機1300bでファクシミリ送信が行われることになる。複合機1300bにおけるスキャンおよびファクシミリ送信処理が終了すると、複合機1300bのECSプロセス1324のサーバディスパッチャは、ネットワーク1340上の複合機1300aのネットワークアドレスを指定してスキャン終了通知メッセージを複合機1300aのFCSプロセス1327に送信する(ステップS1509)。
The subsequent inter-process communication is performed within the same multifunction device 1300b, and is the same as the facsimile transmission described in the first embodiment. Thus, in response to a facsimile transmission start request in the multifunction device 1300a, the multifunction device 1300b performs facsimile transmission. When the scanning and facsimile transmission processing in the multifunction device 1300b is completed, the server dispatcher of the
複合機1300aのFCSプロセス1327では、クライアントディスパッチャによって、ネットワーク1340を介して送信されてきたスキャン終了通知メッセージを受信し、これによりファクシミリ送信動作を完了する。
In the
このように、実施の形態4の複合機では、ネットワークに接続された複合機1300aで動作するFCSプロセス1327と、複合機1300bで動作するECSプロセス1324との間でプロセス間通信を行って、複合機1300aで発生した要求に対しネットワーク1340上の他の複合機1300bでファクシミリ送信処理を行えるので、要求の生じた複合機のみならずネットワーク1340上の複合機を利用して多種多様な機能を実現することができる。
As described above, in the MFP according to the fourth embodiment, inter-process communication is performed between the
例えば、複合機1300aでファクシミリ送信要求が生じたときに、複合機1300aのファクシミリエンジンがファクシミリ受信ジョブに占有されている場合には、FCSプロセス1327でこれを判断してECSプロセス1324に対する関数コールをネットワーク1340上の他の複合機1300bのECSプロセス1324への関数コールへ切り替える等の処理を行えば、ファクシミリ送信を直ちに行うことができ、複合機のユーザビリティの向上を図ることができる。
For example, when a facsimile transmission request is generated in the multifunction device 1300a, if the facsimile engine of the multifunction device 1300a is occupied by a facsimile reception job, the
なお、実施の形態4では、ファクシミリ送信動作の例をあげてネットワーク1340に接続された2つの複合機1300a,1300bにおけるプロセス間通信について説明したが、スキャナ動作、コピー動作、プリント動作においても、複合機1300a内のコントロールサービスと複合機1300b内のコントロールサービスのプロセス間通信も同様に行われる。
In the fourth embodiment, the inter-process communication in the two multifunction devices 1300a and 1300b connected to the
また、実施の形態4の複合機では、FCSプロセス1327とECSプロセス1324とのネットワーク1340を介したプロセス間通信に説明したが、他のコントロールサービス間のネットワーク1340を介したプロセス間通信も、FCSプロセス1327とECSプロセス1324の通信と同様に行われる。
In the MFP according to the fourth embodiment, the interprocess communication between the
さらに、実施の形態4の複合機では、FCSアプリプロセス1327とネットワーク1340上の別の複合機内のECSプロセス1324とが直接プロセス間通信を行っているが、この場合も、NCSプロセス1328を介して異なる複合機のコントロールサービス間の通信を行うように構成しても良い。
Further, in the MFP of the fourth embodiment, the
以上、実施の形態1〜4の複合機において使用した関数、メッセージはすべて一例であり、とくにこれらに限定されるものではなく、任意の関数やメッセージを定義して使用することができる。
As described above, the functions and messages used in the MFPs of
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。 The present invention is not limited to the specifically disclosed embodiments, and various modifications and changes can be made without departing from the scope of the claims.
100,1300a,1300b 複合機
101,1301 白黒ラインプリンタ
102,1302 カラーラインプリンタ
103,1303 スキャナ
104,1304 ファクシミリ
110,1310 ソフトウェア群
111,1311 プリンタアプリ
112,1312 コピーアプリ
113,1313 ファックスアプリ
114,1314 スキャナアプリ
115,1315 ネットファイルアプリ
116,1316 工程検査アプリ
120,1320 プラットホーム
121,1321 汎用OS
122,1322 SCS
123,1323 SRM
124,1324 ECS
125,1325 MCS
126,1326 OCS
127,1327 FCS
128,1328 NCS
129,1329 FCUH
130,1330 アプリケーション
201,1600 クライアントプロセス
202,1610,1620 サーバプロセス
203,1603 クライアントディスパッチャ
204,1611 サーバディスパッチャ
1601,1613,1623 スレッド
1602 クライアントスタブ
1612,1622 サーバスケルトン
100, 1300a,
122,1322 SCS
123, 1323 SRM
124,1324 ECS
125,1325 MCS
126,1326 OCS
127,1327 FCS
128,1328 NCS
129, 1329 FCUH
130, 1330
Claims (17)
前記プログラムのそれぞれは、サーバプロセスまたはクライアントプロセスとして動作する一または複数のスレッドを含むプロセスであり、
前記サーバプロセスのスレッドは、前記クライアントプロセスのスレッドに提供する一または複数のサービスを定義した関数を有しており、
前記クライアントプロセスのスレッドは、前記サーバプロセスのスレッドにサービスの提供を要求する際に関数呼び出しを行うことを特徴とする情報処理装置。 An information processing apparatus having one or more programs for performing information processing,
Each of the programs is a process including one or more threads operating as a server process or a client process,
The server process thread has a function that defines one or more services to be provided to the client process thread;
The information processing apparatus according to claim 1, wherein the thread of the client process calls a function when requesting provision of a service to the thread of the server process.
前記プログラムのそれぞれは、サーバプロセスまたはクライアントプロセスとして動作する一または複数のスレッドを含むプロセスであり、
前記サーバプロセスは、ネットワークに接続された他の情報処理装置で動作するクライアントプロセスに対するサーバプロセスとして動作し、サーバプロセスのスレッドとして前記他の情報処理装置のクライアントプロセスのスレッドに提供する一または複数のサービスを定義した関数を有していることを特徴とする情報処理装置。 An information processing apparatus having one or more programs for performing information processing,
Each of the programs is a process including one or more threads operating as a server process or a client process,
The server process operates as a server process for a client process that operates on another information processing apparatus connected to a network, and provides one or a plurality of server processes as a thread of a server process to a thread of a client process of the other information processing apparatus An information processing apparatus having a function that defines a service.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317219A JP2006139776A (en) | 2001-08-27 | 2005-10-31 | Information processing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001257045 | 2001-08-27 | ||
JP2005317219A JP2006139776A (en) | 2001-08-27 | 2005-10-31 | Information processing system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002244000A Division JP2003177931A (en) | 2001-08-27 | 2002-08-23 | Image forming device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006139776A true JP2006139776A (en) | 2006-06-01 |
Family
ID=36620528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005317219A Pending JP2006139776A (en) | 2001-08-27 | 2005-10-31 | Information processing system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006139776A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008236610A (en) * | 2007-03-23 | 2008-10-02 | Kyocera Mita Corp | Image forming apparatus, image forming method, and application program |
JP2009071611A (en) * | 2007-09-13 | 2009-04-02 | Ricoh Co Ltd | Image forming apparatus, data processing method in image forming apparatus, and data processing program |
-
2005
- 2005-10-31 JP JP2005317219A patent/JP2006139776A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008236610A (en) * | 2007-03-23 | 2008-10-02 | Kyocera Mita Corp | Image forming apparatus, image forming method, and application program |
JP2009071611A (en) * | 2007-09-13 | 2009-04-02 | Ricoh Co Ltd | Image forming apparatus, data processing method in image forming apparatus, and data processing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7318083B2 (en) | Information processing system | |
JP3405159B2 (en) | Printing equipment | |
US8584137B2 (en) | Image processing system for judging whether a partial job should be processed by an own device or another device | |
JP2002084383A (en) | Apparatus and method for image formation and program | |
KR20060046266A (en) | Job processing method, recording medium, program and system | |
JP2002082806A (en) | Device and method for forming image and program | |
JP6066006B2 (en) | Image forming apparatus | |
JP2004114674A (en) | Image forming apparatus and method of securing memory region | |
JP2007299378A (en) | Image processor, control method of image processor, control program and storage medium | |
JP2012048501A (en) | Peripheral device control system, peripheral device, information processor, and control method | |
JP4052901B2 (en) | Device having inter-process communication function | |
JP2006139776A (en) | Information processing system | |
JP4350728B2 (en) | Image forming apparatus and interprocess communication method | |
JP4052902B2 (en) | Image forming apparatus and interprocess communication method | |
JP2003177931A (en) | Image forming device | |
JPH10143450A (en) | Device and method for processing job | |
JP2005287042A (en) | Apparatus, method and program for image formation | |
JP2006202332A (en) | Proxy print processing device and method, program, and storage medium | |
JP4500326B2 (en) | Inter-process communication program and image information processing apparatus | |
JP2000151756A (en) | Network system and data transferring method | |
JP3509815B2 (en) | Printing system, image forming apparatus, and job management method | |
JP6406067B2 (en) | Image forming output control apparatus, image processing system, and image processing program | |
JP2007305143A (en) | Information processor and information processing method | |
JP2006005963A (en) | Information processor and information processing method | |
JP2005304016A (en) | Image forming device, method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070116 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070315 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070529 |