JP2006139776A - Information processing system - Google Patents

Information processing system Download PDF

Info

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
Application number
JP2005317219A
Other languages
Japanese (ja)
Inventor
Shigeya Senda
滋也 千田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2005317219A priority Critical patent/JP2006139776A/en
Publication of JP2006139776A publication Critical patent/JP2006139776A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Facsimiles In General (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide an information processing system that can implement a variable architecture and various functions. <P>SOLUTION: The information processing system has one or more programs for information processing. Each of the programs is a process acting as a server process 202 or client process 201. Threads of the server process 202 have functions defining one or more services to be provided for threads of the client process 201. The threads of the client process 201 perform function calls for requesting the threads of the server process 202 to provide the services. <P>COPYRIGHT: (C)2006,JPO&NCIPI

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 Patent Document 1 and Patent Document 2 include a driver / software group, a manager / software group, and a utility / software group in a library, and can be a main body that controls execution of hardware resources. There wasn't.

そこで、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも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つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
特開平9−51398号公報 特開平9−91102号公報 特開2002−82806号公報
According to this multi-function peripheral, it is possible to improve the efficiency of software development by providing a platform for performing management, execution control, and image formation processing of hardware resources commonly required by at least two applications. As a result, the productivity of the entire apparatus can be improved.
JP-A-9-51398 JP-A-9-91102 JP 2002-82806 A

このような複合機では、アプリケーションの少なくとも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 Embodiment 1 of the present invention. As shown in FIG. 1, the multi-function peripheral includes a monochrome line printer (B & W LP) 101, a color line printer (Color LP) 102, a scanner 103, hardware resources such as a facsimile 104, and the platform 120. A software group 110 including an application 130 is provided.

プラットホーム120は、アプリケーション130からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。   The platform 120 interprets a processing request from the application 130 and generates a hardware resource acquisition request, and a system resource that manages one or a plurality of hardware resources and arbitrates the acquisition request from the control service. A manager (SRM) 123 and a general-purpose OS 121 are included.

コントロールサービスは、複数のサービスモジュールから形成され、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 platform 120 has an application program interface (API) that can receive a processing request from the application 130 by a predefined function.

汎用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 platform 120 and the application 130 in parallel as processes.

SRM123は、SCS122とともにシステムの制御およびリソースの管理を行うものであり、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。   The SRM 123, together with the SCS 122, controls the system and manages resources, and includes engines such as a scanner unit and a printer unit, memory, HDD files, host I / O (Centro I / F, network I / F, IEEE 1394 I / O). (F, RS232C I / F, etc.) arbitration is performed according to a request from a higher layer using hardware resources, and execution control is performed.

具体的には、この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 SCS 122 performs application management, operation unit control, system screen display, LED display, resource management, and interrupt application control. The ECS 124 controls a hardware resource engine including a monochrome line printer (B & W LP) 101, a color line printer (Color LP) 102, a scanner 103, and a facsimile 104.

MCS125は、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行うものである。OCS126は、オペレータと本体制御間の情報伝達手段となる操作パネルを制御するモジュールである。   The MCS 125 acquires and releases an image memory, uses a hard disk device (HDD), compresses and decompresses image data, and the like. The OCS 126 is a module that controls an operation panel serving as information transmission means between the operator and the main body control.

FCS127は、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供するものである。FCS127では、そのサブプロセスであるFCUハンドラ129(FCUH)が起動される。このFCUH129は、FCS127からの指令によりファクシミリ送受信の際にファクシミリエンジンのデバイスドライバを制御するものである。   FCS 127 performs facsimile transmission / reception using PSTN / ISDN network from each application layer of the system controller, registration / quotation of various facsimile data managed by BKM (backup SRAM), facsimile reading, facsimile reception printing, and fusion transmission / reception. API is provided. In the FCS 127, the FCU handler 129 (FCUH) that is the subprocess is started. The FCUH 129 controls a device driver of the facsimile engine when a facsimile is transmitted / received by a command from the FCS 127.

NCS128は、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのモジュール群であり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行うものである。   The NCS 128 is a module group for providing a service that can be commonly used for applications that require network I / O. The NCS 128 distributes data received by each protocol from the network side to each application, and distributes data from the application. It mediates when transmitting to the network side.

アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、工程検査用アプリケーションである工程検査アプリ116とを有している。   The application 130 includes a printer application 111 that is a printer application having a page description language (PDL), PCL, and postscript (PS), a copy application 112 that is a copy application, and a fax application 113 that is a facsimile application. A scanner application 114 as a scanner application, a network file application 115 as a network file application, and a process inspection application 116 as a process inspection application.

これらの各コントロールサービスとSRM123と各アプリとは、それぞれプロセスとして汎用OS上に生成されて実行される。各プロセス内部では、複数のスレッドが起動され、汎用OSの管理下でこれらのスレッドのCPU占有時間を切り替えることにより並列実行が実現されている。各アプリプロセスと各コントロールサービスプロセスとは、後述するプロセス間通信によって各種メッセージやデータの送受信および関数呼び出しを行う。   Each of these control services, SRM 123, and each application is generated and executed on a general-purpose OS as a process. In each process, a plurality of threads are activated, and parallel execution is realized by switching the CPU occupation time of these threads under the management of the general-purpose OS. Each application process and each control service process send and receive various messages and data and call functions by inter-process communication described later.

図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 server process 202 refers to a process that provides a service to the client process 201 in response to a request from the client process 201. The client process 201 is a process that receives a service from the server process 202 by making a request to the server process 202.

実施の形態1の複合機では、上述のコピーアプリ112、プリンタアプリ111、スキャナアプリ114、ファックスアプリ113などのアプリケーションプロセス、およびECS124、MCS125、FCS127、NCS128などのコントロールサービスのプロセスが主としてクライアントプロセス201となり、コントロールサービスおよびSRM123のプロセスが主としてサーバプロセス202となる。   In the MFP according to the first embodiment, the client process 201 mainly includes application processes such as the copy application 112, the printer application 111, the scanner application 114, and the fax application 113, and control service processes such as the ECS 124, MCS 125, FCS 127, and NCS 128. Thus, the process of the control service and the SRM 123 becomes the server process 202 mainly.

すなわち、各アプリがコントロールサービスからサービスの提供を受ける場合には、各アプリのプロセスがクライアントプロセス201として動作し、コントロールサービスがサーバプロセス202として動作する。また、コントロールサービス間でサービスの要求と提供を行う場合には、サービスの要求を行うコントロールサービスがクライアントプロセス201として動作し、サービスの提供を行うコントロールサービスがサーバプロセス202として動作する。   That is, when each application receives service provision from the control service, the process of each application operates as the client process 201 and the control service operates as the server process 202. When requesting and providing a service between control services, the control service that requests the service operates as the client process 201, and the control service that provides the service operates as the server process 202.

なお、これらの例に限られず、各アプリのプロセス、コントロールサービスのプロセス、SRMプロセスは、いずれもサーバプロセス202およびクライアントプロセス201となることができる。すなわち、これらのプロセスが、他のいずれかのプロセスに対しサービスを要求する場合にはクライアントプロセス201として動作する一方、他のプロセスからの要求によりサービスを提供する場合にはサーバプロセス202として動作することになる。   The application process, the control service process, and the SRM process can all be the server process 202 and the client process 201 without being limited to these examples. That is, when these processes request a service from any other process, they operate as a client process 201, and when these processes provide a service by a request from another process, they operate as a server process 202. It will be.

図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 SRM 123 process. Since each process has a plurality of threads, when it receives a request from another process, it operates as a server process 202 with the other process as a client process 201. When a service is requested from a process, the process operates as a client process 201 with the other process as a server process 202.

また、各プロセスは、同時に複数のプロセスをクライアントプロセス201としたサーバプロセス202となることも可能である。さらに、各プロセスは、同時に複数のサーバプロセス202からのサービスの提供を受けるクライアントプロセス201となることも可能である。   Each process can also be a server process 202 having a plurality of processes as client processes 201 at the same time. Further, each process can be a client process 201 that receives services from a plurality of server processes 202 at the same time.

図2に示す通り、クライアントプロセス201は、サーバプロセス202のサービスを要求するために、クライアントプロセス内のスレッドからサーバプロセス202に対して関数コールを行い、その関数戻り値を受信することによってプロセス間通信を行う。   As shown in FIG. 2, in order to request the service of the server process 202, the client process 201 makes a function call to the server process 202 from a thread in the client process and receives the function return value. Communicate.

また、クライアントプロセス201の各スレッドはメッセージをサーバプロセス202に送信することによってプロセス間通信を行う。一方、サーバプロセス202からクライアントプロセス201に対するプロセス間通信は、メッセージの送信のみで行われ、関数コールは行えないようになっている。   Each thread of the client process 201 performs interprocess communication by transmitting a message to the server process 202. On the other hand, inter-process communication from the server process 202 to the client process 201 is performed only by sending a message, and a function call cannot be performed.

このため、サーバプロセス202となりうるECS124、MCS125、FCS127、NCS128などコントロールサービスおよびSRM123には、クライアントプロセス201に対して提供するサービスが、サービスごとの後述する関数ハンドラ403としてあらかじめ実装されている。これらのサービスの要求をクライアントプロセス201から行う場合には、サーバプロセス202に対して、サービスごとに関数を呼び出すことにより(関数コールを行うことにより)、サービスの提供を受けることが可能となっている。   For this reason, the control service such as ECS 124, MCS 125, FCS 127, and NCS 128 that can be the server process 202 and the service provided to the client process 201 are pre-installed as function handlers 403 to be described later for each service. When requesting these services from the client process 201, the server process 202 can be provided with a service by calling a function for each service (by making a function call). Yes.

ここで、「メッセージ」とは、主としてサーバプロセス202とクライアントプロセス201との間でイベントや通知を行う際に送信するものであり、一意的なメッセージID、メッセージ名、メッセージ方向、メッセージ内容を含むデータである。   Here, the “message” is mainly transmitted when an event or notification is performed between the server process 202 and the client process 201, and includes a unique message ID, message name, message direction, and message content. It is data.

メッセージ方向には、「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 client process 201 to the server process 202, and “OUT” is a message from the server process 202 to the client process. This means a message to be sent to 201. “SELF” means a message to be transmitted to its own process.

また、「関数」とは、クライアントプロセス201からサーバプロセス202に対して所定の処理要求を行ったり、所定の設定要求を行う際に発行するものであり、関数コールに対し戻り値を返すものである。   The “function” is issued when a predetermined processing request is made from the client process 201 to the server process 202 or when a predetermined setting request is made, and a return value is returned to the function call. is there.

クライアントプロセス201のスレッドは、あらかじめサーバプロセス202から提供されている関数をコールする。関数コールを受けたサーバプロセス202は要求された関数に対応する処理を実行してその実行結果を関数戻り値としてクライアントプロセス201のクライアントディスパッチャ203へ送信する。また、関数戻り値は構造体となっており、かかる構造体に戻り値の他、関数を識別する関数IDが含まれている。   The thread of the client process 201 calls a function provided from the server process 202 in advance. Upon receiving the function call, the server process 202 executes processing corresponding to the requested function and transmits the execution result to the client dispatcher 203 of the client process 201 as a function return value. In addition, the function return value is a structure, and the structure includes a function ID for identifying the function in addition to the return value.

クライアントディスパッチャ203は、サーバプロセス202からのOUT方向のメッセージまたは関数戻り値の受信を監視するスレッドである。クライアントプロセス201は、一つのサーバプロセス202につき一つのクライアントディスパッチャ203を起動してサーバプロセス202と通信する。クライアントプロセス201が複数のサーバプロセス202と通信する場合には、サーバプロセス202ごとに一つのクライアントディスパッチャ203を起動する。   The client dispatcher 203 is a thread that monitors reception of an OUT-direction message or function return value from the server process 202. The client process 201 activates one client dispatcher 203 for each server process 202 to communicate with the server process 202. When the client process 201 communicates with a plurality of server processes 202, one client dispatcher 203 is activated for each server process 202.

図3はクライアントディスパッチャの詳細な構成を示す説明図である。クライアントディスパッチャ203は、そのスレッド上でメッセージハンドラ302、エラーハンドラ301およびデフォルトハンドラ303を起動する。   FIG. 3 is an explanatory diagram showing a detailed configuration of the client dispatcher. The client dispatcher 203 activates a message handler 302, an error handler 301, and a default handler 303 on the thread.

メッセージハンドラ302は、受信したメッセージに対する処理を行うものであり、メッセージIDごとに別個のメッセージハンドラ302が複数存在する。このためクライアントディスパッチャ203がメッセージを受信すると、受信したメッセージに含まれるメッセージIDを判断し、対応するメッセージIDのメッセージハンドラ302を呼び出すようになっている。メッセージハンドラ302の処理内容としては、例えば、メッセージの内容を関数コールを行ったスレッドに通知するなどの処理があるが、メッセージごとに異なった処理内容が定義されている。   The message handler 302 performs processing on the received message, and there are a plurality of separate message handlers 302 for each message ID. For this reason, when the client dispatcher 203 receives a message, it determines the message ID included in the received message and calls the message handler 302 of the corresponding message ID. The processing content of the message handler 302 includes, for example, processing such as notifying the thread that has performed the function call of the message content, but different processing content is defined for each message.

エラーハンドラ301は、クライアントディスパッチャ203の実行中にエラーが発生した場合に呼び出され、ユーザにエラー通知を行うなどのエラー処理を行う。デフォルトハンドラ303は、対応するメッセージハンドラ302が登録されていないメッセージIDのメッセージを受信した時に呼び出され、メッセージをスレッドに通知するなどの処理を行う。   The error handler 301 is called when an error occurs during execution of the client dispatcher 203, and performs error processing such as notifying the user of an error. The default handler 303 is called when a message with a message ID for which the corresponding message handler 302 is not registered is received, and performs processing such as notifying the thread of the message.

また、クライアントディスパッチャ203は、関数戻り待ちキュー304を保持しており、この関数戻り待ちキュー304を利用することによって関数戻り値および関数戻り待ち状態のスレッド305の管理を行っている。すなわち、クライアントプロセス201のスレッドは、サーバプロセス202に対し関数コールを行うが、関数コール後、関数戻り値を受信するまで関数戻り待ち状態となり以降の処理が中断される。   The client dispatcher 203 holds a function return waiting queue 304, and manages the function return value and the function return waiting thread 305 by using the function return waiting queue 304. In other words, the thread of the client process 201 makes a function call to the server process 202. After the function call, the function waits until a function return value is received, and the subsequent processing is interrupted.

クライアントディスパッチャ203は、スレッド305から関数コールが行われると、そのスレッド305の識別子(スレッドIDなど)を関数の関数IDとともに関数戻り待ちキュー304に登録する。そして、クライアントディスパッチャ203は、サーバプロセス202から関数戻り値を受信すると、その関数IDをキーとして関数戻り待ちキュー304を検索し、受信した関数戻り値の受信を待って処理が中断されているスレッド305の識別子(スレッドIDなど)を検出する。そして、クライアントディスパッチャ203は検出された識別子(スレッドID)のスレッドに受信した関数戻り値を送信する。関数戻り値を受信したスレッドは戻り待ち状態を抜け、関数コール後の処理の続行が可能となる。クライアントディスパッチャ203は、このような戻り値の通知を、関数戻り値を受信するごとに行う。   When a function call is made from the thread 305, the client dispatcher 203 registers the identifier (thread ID, etc.) of the thread 305 together with the function ID of the function in the function return waiting queue 304. When the client dispatcher 203 receives the function return value from the server process 202, the client dispatcher 203 searches the function return waiting queue 304 using the function ID as a key, and waits for the reception of the received function return value. An identifier 305 (such as a thread ID) is detected. Then, the client dispatcher 203 transmits the received function return value to the thread with the detected identifier (thread ID). The thread that has received the function return value exits the return wait state and can continue processing after the function call. The client dispatcher 203 notifies such a return value every time a function return value is received.

サーバディスパッチャ204は、クライアントプロセス201のスレッドからの関数コールおよびIN方向のメッセージを監視するスレッドである。1つのサーバディスパッチャ204は、クライアントディスパッチャ203と異なり、複数のクライアントプロセス201からの関数コールおよびメッセージを受信することができる。   The server dispatcher 204 is a thread that monitors function calls and IN-direction messages from the thread of the client process 201. Unlike the client dispatcher 203, one server dispatcher 204 can receive function calls and messages from a plurality of client processes 201.

図4はサーバディスパッチャ204の詳細な構成を示す説明図である。サーバディスパッチャ204は、そのスレッド上で、関数ハンドラ403、メッセージハンドラ402、エラーハンドラ401およびデフォルトハンドラ404を起動する。   FIG. 4 is an explanatory diagram showing a detailed configuration of the server dispatcher 204. The server dispatcher 204 activates a function handler 403, a message handler 402, an error handler 401, and a default handler 404 on the thread.

関数ハンドラ403は、関数の具体的な処理を実行するものであり、関数ごとに複数存在する。サーバディスパッチャ204は、クライアントプロセス201から関数コールを受信すると、受信した関数に対応する関数ハンドラ403を起動し、関数ハンドラ403によってクライアントプロセス201が要求した処理を実行し、その関数戻り値をクライアントプロセス201のクライアントディスパッチャ203へ送信する。   The function handler 403 executes specific processing of the function, and a plurality of function handlers 403 exist for each function. Upon receiving a function call from the client process 201, the server dispatcher 204 activates a function handler 403 corresponding to the received function, executes the processing requested by the client process 201 by the function handler 403, and sends the function return value to the client process. The message is sent to the client dispatcher 203 of 201.

メッセージハンドラ402は、受信したメッセージに対する処理を行うものであり、メッセージIDごとに複数存在する。サーバディスパッチャ204は、メッセージを受信すると受信したメッセージに含まれるメッセージIDを判断し、対応するメッセージIDのメッセージハンドラ402を呼び出すようになっている。メッセージハンドラ402の処理内容としては、例えば、メッセージの内容をスレッドに通知するなどの処理があるが、メッセージごとに異なった処理内容が定義されている。   The message handler 402 performs processing on the received message, and a plurality of message handlers exist for each message ID. When receiving a message, the server dispatcher 204 determines a message ID included in the received message, and calls the message handler 402 of the corresponding message ID. The processing content of the message handler 402 includes, for example, processing such as notifying the thread of the message content, but different processing content is defined for each message.

エラーハンドラ401は、サーバディスパッチャ204の実行中にエラーが発生した場合に呼び出され、エラー通知などのエラー処理を行う。デフォルトハンドラ404は、対応するメッセージハンドラ402が登録されていないメッセージIDのメッセージを受信した時に呼び出され、メッセージをスレッドに通知するなどの処理を行う。   The error handler 401 is called when an error occurs during the execution of the server dispatcher 204, and performs error processing such as error notification. The default handler 404 is called when a message with a message ID for which the corresponding message handler 402 is not registered is received, and performs processing such as notifying the thread of the message.

つぎに、実施の形態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 MFP 100 according to the first embodiment will be specifically described.

まず、プリンタ動作におけるプリンタアプリ111、ECS124、MCS125、SRM123のプロセス間通信について説明する。図5は、実施の形態1の複合機でプリンタ動作を行う場合のプリンタアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。図6は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。   First, the inter-process communication of the printer application 111, ECS 124, MCS 125, and SRM 123 in the printer operation will be described. FIG. 5 is an explanatory diagram showing a data sequence between processes of the printer application, ECS, MCS, and SRM in the case where the printer operation is performed by the multifunction peripheral according to the first embodiment. FIG. 6 is an explanatory diagram showing the relationship between functions and messages between each process.

図6に示すように、複合機100にはプリンタアプリプロセス111、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成される。なお、図6にはプリンタ動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機100の起動時に生成される。   As illustrated in FIG. 6, a printer application process 111, an ECS process 124, an MCS process 125, and an SRM process 123 are operating in the multifunction peripheral 100. These processes are generated when the MFP 100 is activated. FIG. 6 shows only processes used in the printer operation. Actually, other application processes and other control service processes are also generated when the MFP 100 is activated.

プリンタアプリプロセス111は、複合機の起動時に起動され、図6に示すようにプロセス内に複数のスレッドが起動している。プリンタアプリプロセス111は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124からのメッセージや関数戻り値を受信してプロセス内のスレッドに通知するクライアントディスパッチャがスレッドとして起動される。   The printer application process 111 is activated when the MFP is activated, and a plurality of threads are activated in the process as shown in FIG. The printer application process 111 is a client process that uses the ECS process 124 as a server process. Therefore, a client dispatcher that receives a message or a function return value from the ECS process 124 and notifies a thread in the process is started as a thread. Is done.

ECSプロセス124は、プリンタ動作時には、プリンタアプリプロセス111をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはプリンタアプリプロセス111からの関数コールおよびメッセージの受信とプリンタアプリプロセス111に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、MCSプロセス125またはSRMプロセス123からのメッセージおよび関数戻り値の受信および戻り値の管理を行うクライアントディスパッチャと、その他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。   The ECS process 124 becomes a server process using the printer application process 111 as a client process and a client process using the MCS process 125 and the SRM process 123 respectively as server processes during printer operation. Therefore, the ECS process 124 includes a server dispatcher thread that receives function calls and messages from the printer application process 111 and transmits messages and function return values to the printer application process 111, and the MCS process 125 or the SRM process 123. A client dispatcher that receives messages and function return values and manages return values, and a plurality of threads that perform processing related to job control and engine control are operating.

MCSプロセス125は、プリンタ動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124からの関数コールおよびメッセージの受信とECSプロセス124に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、SRMプロセス123からのメッセージおよび関数戻り値の受信および戻り値の管理を行うクライアントディスパッチャと、その他、メモリ制御またはハードディスク制御に関する処理を行う複数のスレッドが動作している。   The MCS process 125 becomes a server process using the ECS process 124 as a client process and a client process using the SRM process 123 as a server process during printer operation. Therefore, within the MCS process 125, a server dispatcher thread that receives function calls and messages from the ECS process 124 and transmits messages and function return values to the ECS process 124, and messages and function return values from the SRM process 123. A client dispatcher that performs reception and return value management and a plurality of threads that perform processing related to memory control or hard disk control are operating.

SRMプロセス123は、プリンタ動作時には、ECSプロセス124またはMCSプロセス125をクライアントプロセスとしたサーバプロセスとなっている。SRMプロセス123内にはECSプロセス124またはMCSプロセス125からの関数コールおよびメッセージの受信とECSプロセス124またはMCSプロセス125に対するメッセージおよび関数戻り値の送信を行うサーバディスパッチャのスレッドと、その他、エンジン資源制御に関する種々の処理を行う複数のスレッドが動作している。   The SRM process 123 is a server process that uses the ECS process 124 or the MCS process 125 as a client process during printer operation. Within the SRM process 123 is a server dispatcher thread that receives function calls and messages from the ECS process 124 or MCS process 125 and sends messages and function return values to the ECS process 124 or MCS process 125, and other engine resource controls. A plurality of threads that perform various processes related to the above are operating.

実施の形態1におけるプリンタアプリプロセス111では、ジョブ動作モード設定とジョブスタート要求の各関数コールを行う処理を一スレッドとしている。また、ECSプロセス124では、印刷枚数分繰り返しメモリ画像情報要求関数コールを行う処理を一スレッドとし、また資源獲得要求関数コールを行う処理を一スレッドとしている。MCSプロセス125では、メモリ取得要求関数コールを行う処理を一スレッドとしている。ただし、これらの各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。   In the printer application process 111 according to the first embodiment, processing for making function calls for job operation mode setting and job start request is made one thread. Further, in the ECS process 124, a process for repeatedly making a memory image information request function call for the number of printed sheets is set as one thread, and a process for making a resource acquisition request function call is set as one thread. In the MCS process 125, a process for making a memory acquisition request function call is one thread. However, the processing in each of these threads is an example, and can be arbitrarily determined by each program.

PCなどのホストからセントロI/F、USB I/F、ネットワークI/Fなど経由して印刷要求1があると、その印刷要求1をNCSプロセスが受けプリンタアプリプロセスに転送する(ステップS501)。プリンタアプリプロセス111は、NCSプロセスから印刷要求を受信すると新たなプリントジョブを生成し、スレッド1においてECSプロセス124に対してジョブ動作モード設定要求関数コールを行う(ステップS502)。   When there is a print request 1 from a host such as a PC via a Centro I / F, USB I / F, network I / F, etc., the NCS process receives the print request 1 and transfers it to the printer application process (step S501). Upon receiving a print request from the NCS process, the printer application process 111 generates a new print job, and makes a job operation mode setting request function call to the ECS process 124 in the thread 1 (step S502).

その後このスレッド1は関数戻り値の受信待ちとなり、クライアントディスパッチャによりスレッド1の識別子(スレッドID)が関数戻り待ちキューに登録される。ここで、ジョブ動作モードとは、スキャナ、プロッタ、フィニッシャなどを動作させるために必要なパラメータ群であり、印刷用紙サイズ、印刷部数、給紙トレイなどのプリンタ条件から生成されるジョブの動作条件を定めたものである。   Thereafter, the thread 1 waits to receive the function return value, and the identifier (thread ID) of the thread 1 is registered in the function return waiting queue by the client dispatcher. Here, the job operation mode is a group of parameters necessary for operating the scanner, plotter, finisher, and the like. The operation conditions of the job generated from the printer conditions such as the print paper size, the number of copies, and the paper feed tray are set. It is determined.

なお、以降では説明の簡略化のため、サーバプロセスに関数コールを行って関数戻り待ち状態となったスレッドの識別子(スレッド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 ECS process 124, the server dispatcher receives a job operation mode setting function call from the printer application process, and starts a job operation mode setting function handler on the thread of the server dispatcher. Then, the above-described job operation mode is set for the printer job newly generated by the job operation mode setting function handler, and a function return value (for example, normal or error occurrence) is transmitted to the client dispatcher of the printer application process 111. .

プリンタアプリプロセス111のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定関数の関数戻り値を受信して、関数戻り待ちキューから関数戻り値待ちのスレッド1を検索して、ジョブ動作モード設定関数の戻り値を抽出してスレッド1に送信する。   The client dispatcher of the printer application process 111 receives the function return value of the job operation mode setting function from the ECS process 124, searches the function return queue for the thread 1 waiting for the function return value, and sets the job operation mode setting function. The return value is extracted and transmitted to the thread 1.

なお、以降では説明の簡略化のため、クライアントディスパッチャによって、関数戻り待ち状態のスレッドの識別子(スレッド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 thread 1 receives the function return value for setting the job operation mode from the client dispatcher, the job start request function is called to the ECS process 124 in order to exit the return waiting state and make a job start request (step S503). Waiting for return.

ECSプロセス124では、サーバディスパッチャがプリンタアプリプロセス111からジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラをサーバディスパッチャのスレッド上で起動し、ジョブスタート要求関数ハンドラによってジョブの開始処理を行って関数戻り値をプリンタアプリプロセス111のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives a job start request function call from the printer application process 111, starts a job start request function handler on the server dispatcher thread, and performs job start processing by the job start request function handler. The function return value is transmitted to the client dispatcher of the printer application process 111.

プリンタアプリプロセス111のクライアントディスパッチャは、ECSプロセス124からジョブスタート要求関数の戻り値を受信して、スレッド1がクライアントディスパッチャ経由でジョブスタート要求関数の戻り値を受信する。   The client dispatcher of the printer application process 111 receives the return value of the job start request function from the ECS process 124, and the thread 1 receives the return value of the job start request function via the client dispatcher.

つぎに、ECSプロセス124では、メモリに格納されている印刷データを取得するためにスレッド3においてMCSプロセス125に対してメモリ画像情報要求メッセージを送信する(ステップS504)。   Next, the ECS process 124 transmits a memory image information request message to the MCS process 125 in the thread 3 in order to acquire print data stored in the memory (step S504).

MCSプロセス125では、サーバディスパッチャがECSプロセス124からメモリ画像情報要求メッセージを受信して、メモリ画像情報要求メッセージハンドラを起動する。そして、このメモリ画像情報要求メッセージハンドラによってメモリに格納されている画像データを取得して、画像データをECSプロセス124へ送信する(ステップS505)。   In the MCS process 125, the server dispatcher receives the memory image information request message from the ECS process 124 and activates the memory image information request message handler. Then, the image data stored in the memory is acquired by the memory image information request message handler, and the image data is transmitted to the ECS process 124 (step S505).

ECSプロセス124のクライアントディスパッチャは、MCSプロセス125から画像データを受信して、スレッド3へ受け渡す。かかるメモリ画像情報要求メッセージの送信および画像データの受信処理は、印刷ページが終了するまで繰り返し行われる(ステップS508、S509)。   The client dispatcher of the ECS process 124 receives image data from the MCS process 125 and passes it to the thread 3. The memory image information request message transmission process and the image data reception process are repeated until the print page is completed (steps S508 and S509).

一方、MCSプロセス125では、画像データのECSプロセス124への送信後、画像メモリを確保するためにスレッド5においてSRMプロセス123に対してメモリ取得要求関数コールを行って(ステップS506)、戻り待ち状態となる。SRMプロセス123では、サーバディスパッチャがMCSプロセス125からメモリ取得要求関数コールを受信し、メモリ取得要求関数ハンドラを起動して、このメモリ取得要求関数ハンドラによってプリント用に画像メモリを確保し、関数戻り値をMCSプロセス125へ送信する。   On the other hand, in the MCS process 125, after the image data is transmitted to the ECS process 124, a memory acquisition request function call is made to the SRM process 123 in the thread 5 in order to secure an image memory (step S506), and a return waiting state is established. It becomes. In the SRM process 123, the server dispatcher receives a memory acquisition request function call from the MCS process 125, activates a memory acquisition request function handler, reserves image memory for printing by this memory acquisition request function handler, and returns a function return value. Is sent to the MCS process 125.

MCSプロセス125のクライアントディスパッチャは、SRMプロセス123からメモリ取得要求関数の戻り値を受信して、スレッド5がクライアントディスパッチャ経由でこのメモリ取得要求関数の戻り値を受信する。   The client dispatcher of the MCS process 125 receives the return value of the memory acquisition request function from the SRM process 123, and the thread 5 receives the return value of this memory acquisition request function via the client dispatcher.

ECSプロセス124では、1ページ目の印刷データをMCSプロセス125から受信した後、プリンタエンジン資源を取得するためにスレッド4において、SRMプロセス123に対して資源獲得要求関数コールを行って(ステップS507)、関数戻り待ち状態となる。SRMプロセス123では、サーバディスパッチャがECSプロセス124から資源獲得要求関数コールを受信して資源獲得要求関数ハンドラを起動し、資源獲得要求関数ハンドラによってプリンタエンジンを占有し、関数戻り値をECSプロセス124へ送信する。ECSプロセス124のクライアントディスパッチャは、SRMプロセス123から資源獲得要求関数の戻り値を受信して、スレッド4がクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信する。   In the ECS process 124, after the print data of the first page is received from the MCS process 125, a resource acquisition request function call is made to the SRM process 123 in the thread 4 in order to acquire the printer engine resource (step S507). , The function returns waiting state. In the SRM process 123, the server dispatcher receives a resource acquisition request function call from the ECS process 124 and activates the resource acquisition request function handler, occupies the printer engine by the resource acquisition request function handler, and sends the function return value to the ECS process 124. Send. The client dispatcher of the ECS process 124 receives the return value of the resource acquisition request function from the SRM process 123, and the thread 4 receives the return value of the resource acquisition request function via the client dispatcher.

ECSプロセス124のスレッド3では、メモリ画像情報要求メッセージ(ステップS511)に対する通知メッセージとして「画像なし」の応答メッセージを受信した場合には(ステップS512)、すべての印刷ページのプリントが終了したものと判断し、プリンタアプリプロセス111に対し、ジョブエンド通知メッセージを送信する(ステップS513)。プリンタアプリプロセス111では、クライアントディスパッチャがこのメッセージを受信してメッセージハンドラを起動し、メッセージハンドラによってジョブエンド通知メッセージをスレッド1へ通知する。   In the thread 3 of the ECS process 124, when a response message “No image” is received as a notification message for the memory image information request message (step S511) (step S512), it is determined that printing of all print pages has been completed. The job end notification message is transmitted to the printer application process 111 (step S513). In the printer application process 111, the client dispatcher receives this message and activates the message handler, and notifies the thread 1 of the job end notification message by the message handler.

このようにプリンタ動作のプロセス間通信が行われるが、ここで、図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 print request 2 is transmitted from the NCS to the printer application process 111 during the print process for the print request 1. Will be described. (Step S521).

このとき、プリンタアプリプロセス111、ECSプロセス124、MCSプロセス125およびSRMプロセス123で、上述した関数コールと同様のプロセス間通信が行われる(ステップS522、S523、S524)。   At this time, the printer application process 111, the ECS process 124, the MCS process 125, and the SRM process 123 perform inter-process communication similar to the function call described above (steps S522, S523, and S524).

しかし、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 thread 7 of the ECS process 124 to the SRM process 123 (step S527), since the printer engine is currently occupied by print processing for the print request 1, the SRM process 123 The return value of the resource acquisition request function is not returned immediately. Therefore, the thread 7 waits for a function return value for a while and is registered in the function return waiting queue. When the printer engine is released from the occupation by the print request 1, the SRM process 123 returns the return value of the resource acquisition request function to the ECS process 124 (step S528), whereby the thread 7 of the ECS process 124 Processing for print request 2 is continued.

なお、ここでは印刷要求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 print request 2 has been described. In addition, when the memory acquisition request function call is made from the ECS process 124 to the SRM process 123, a memory shortage has already occurred due to the print job for the print request 1, and the memory cannot be acquired by the print job of the print request 2. In this case, the thread that has made the memory acquisition request function call waits in a function return waiting state until the printer operation of print request 1 is completed, and the printer operation for print request 2 is interrupted.

次に、実施の形態1の複合機100で行われるスキャナ動作において、スキャナアプリ114、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図7は、実施の形態1の複合機でスキャナ動作を行う場合のスキャナアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図8は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。   Next, inter-process communication of the scanner application 114, the ECS 124, the MCS 125, and the SRM 123 in the scanner operation performed by the multifunction peripheral 100 according to the first embodiment will be specifically described. FIG. 7 is an explanatory diagram showing a data sequence between each process of the scanner application, ECS, MCS, and SRM when the scanner operation is performed in the multi-function peripheral according to the first embodiment. FIG. 8 is an explanatory diagram showing the relationship between functions and messages between processes.

図8に示すように、複合機100にはスキャナアプリプロセス114、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらのプロセスは、複合機100の起動時に生成される。なお、図8にはスキャナ動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機100の起動時に生成される。   As illustrated in FIG. 8, the scanner application process 114, the ECS process 124, the MCS process 125, and the SRM process 123 are operating in the multifunction peripheral 100. These processes are generated when the MFP 100 is activated. FIG. 8 shows only processes used in the scanner operation, and other application processes and other control service processes are actually generated when the MFP 100 is started up.

スキャナアプリプロセス114は、複合機の起動時に起動され、図8に示すようにプロセス内に複数のスレッドが起動している。スキャナアプリプロセス114は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124に対するクライアントディスパッチャのスレッドが起動している。   The scanner application process 114 is activated when the MFP is activated, and a plurality of threads are activated in the process as shown in FIG. The scanner application process 114 is a client process that uses the ECS process 124 as a server process. For this reason, a thread of a client dispatcher for the ECS process 124 is activated.

ECSプロセス124は、スキャナ動作時には、スキャナアプリプロセス114をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス124をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはスキャナアプリプロセス114に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御またはエンジン制御に関する処理を行う複数のスレッドが動作している。   The ECS process 124 becomes a server process using the scanner application process 114 as a client process and a client process using the MCS process 125 and the SRM process 124 as server processes during the scanner operation. Therefore, in the ECS process 124, a server dispatcher thread for the scanner application process 114, a client dispatcher thread for the MCS process 125, a client dispatcher thread for the SRM process 123, and other processes related to job control or engine control. Thread is running.

MCSプロセス125は、スキャナ動作時には、スキャナアプリプロセス114およびECSプロセス124をクライアントプロセスとしたサーバプロセスとなる。このため、MCSプロセス125内にはスキャナアプリプロセス114およびECSプロセス124に対するサーバディスパッチャのスレッドとその他メモリ制御またはハードディスク制御に関する処理を行う複数のスレッドが動作している。   The MCS process 125 becomes a server process using the scanner application process 114 and the ECS process 124 as client processes during the scanner operation. Therefore, a server dispatcher thread for the scanner application process 114 and the ECS process 124 and a plurality of threads for performing processing related to memory control or hard disk control are operating in the MCS process 125.

SRMプロセス123は、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなり、このため、SRMプロセス123内にはECSプロセス124に対するサーバディスパッチャのスレッドとその他エンジン資源制御に関する処理を行う複数のスレッドが動作している。   The SRM process 123 becomes a server process using the ECS process 124 as a client process. For this reason, a server dispatcher thread for the ECS process 124 and a plurality of other threads that perform processing related to engine resource control operate in the SRM process 123. Yes.

実施の形態1におけるスキャナアプリプロセス114では、スキャナ動作時におけるジョブオープン要求関数とジョブ動作モード設定要求とジョブスタート要求の各関数コールを行う一連の処理、ファイル生成要求関数コールを行う処理、ファイル情報登録要求関数コールおよびファイルクローズ要求関数コールを行う処理をそれぞれ一スレッドとしている。   In the scanner application process 114 according to the first embodiment, a series of processes for making a function call for a job open request function, a job operation mode setting request, and a job start request at the time of scanner operation, a process for making a file generation request function call, and file information The processing for making the registration request function call and the file close request function call is made one thread each.

また、スキャナアプリプロセス114では、スキャンした画像の読み出し時におけるファイルオープン要求関数コール、作業領域確保要求関数コールおよびページオープン要求関数コールを行う処理、読み出し要求関数コールを行う処理、ページクローズ要求関数コールとページ削除要求関数コールと作業領域削除要求関数コールとファイルクローズ要求関数コールとファイル削除要求関数コールを行う一連の処理をそれぞれ一スレッドとしている。   In the scanner application process 114, a file open request function call at the time of reading a scanned image, a process for making a work area securing request function call and a page open request function call, a process for making a read request function call, a page close request function call A series of processes for performing a page deletion request function call, a work area deletion request function call, a file close request function call, and a file deletion request function call are made into one thread.

ECSプロセス124では、資源獲得要求関数コールを行う処理、原稿枚数分繰り返してページ生成要求関数コールと原稿フィードインおよびページクローズ要求関数コールを行う一連の処理をそれぞれ一スレッドとしている。ただし、これらの各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。   In the ECS process 124, a process for making a resource acquisition request function call and a series of processes for making a page generation request function call, a document feed-in function, and a page close request function call repeatedly for the number of documents are each set as one thread. However, the processing in each of these threads is an example, and can be arbitrarily determined by each program.

スキャナアプリプロセス114に対しスキャン要求があると、スキャナアプリプロセス114は、新たなスキャナジョブを生成し、スレッド1においてECSプロセス124に対してジョブオープン要求関数コールを行う(ステップS701)。その後このスレッド1は関数戻り待ち状態となり、クライアントディスパッチャによってスレッド1の識別子(スレッドID)が呼び出した関数の関数IDとともに関数戻り待ちキューに登録される。   When there is a scan request to the scanner application process 114, the scanner application process 114 generates a new scanner job and performs a job open request function call to the ECS process 124 in the thread 1 (step S701). Thereafter, the thread 1 enters a function return waiting state, and the identifier (thread ID) of the thread 1 is registered in the function return waiting queue together with the function ID of the function called by the client dispatcher.

また、スキャナアプリプロセス114では、これと並行してスレッド2によりMCSプロセス125に対しファイル生成要求関数コールを行う(ステップS702)。その後このスレッド2は関数戻り待ち状態となり、同様にスレッド2の識別子(スレッドID)が関数戻り待ちキューに登録される。   In parallel with this, the scanner application process 114 performs a file generation request function call to the MCS process 125 by the thread 2 (step S702). Thereafter, the thread 2 enters a function return waiting state, and similarly, the identifier (thread ID) of the thread 2 is registered in the function return waiting queue.

ECSプロセス124では、サーバディスパッチャがスキャナアプリプロセス114からジョブオープン要求関数コールを受信して、ジョブオープン要求関数ハンドラをサーバディスパッチャのスレッド上で起動する。そして、ジョブオープン要求関数ハンドラによりジョブをオープンして、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives a job open request function call from the scanner application process 114, and starts a job open request function handler on the server dispatcher thread. Then, the job is opened by the job open request function handler, and the function return value is transmitted to the client dispatcher of the scanner application process 114.

一方、MCSプロセス125では、サーバディスパッチャがスキャナアプリプロセス114からファイル生成要求関数コールを受信して、ファイル生成要求関数ハンドラによって、スキャンした画像を一時的に格納するファイルをハードディスク上に生成して、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。   On the other hand, in the MCS process 125, the server dispatcher receives the file generation request function call from the scanner application process 114, and generates a file on the hard disk for temporarily storing the scanned image by the file generation request function handler. The function return value is transmitted to the client dispatcher of the scanner application process 114.

スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブオープン要求関数の関数戻り値を受信するとともに、MCSプロセス125からファイル生成要求関数の戻り値を受信して、関数戻り値キューからジョブオープン要求関数戻り待ち状態のスレッド1とファイル生成要求関数戻り待ち状態のスレッド2を検出し、ジョブオープン要求関数の戻り値をスレッド1に送信し、ファイル生成要求関数の戻り値をスレッド2に送信する。   The client dispatcher of the scanner application process 114 receives the function return value of the job open request function from the ECS process 124, receives the return value of the file generation request function from the MCS process 125, and receives a job open request from the function return value queue. A thread 1 waiting for a function return and a thread 2 waiting for a file generation request function return are detected, the return value of the job open request function is transmitted to the thread 1, and the return value of the file generation request function is transmitted to the thread 2.

スレッド1は、クライアントディスパッチャからジョブオープン要求関数の戻り値を受信すると戻り待ち状態を抜け、ジョブ動作モードの設定を行うため、ECSプロセス124に対しジョブ動作モード設定要求関数を呼び出し(ステップS703)、スレッド1は関数戻り待ち状態となる。   When the thread 1 receives the return value of the job open request function from the client dispatcher, the thread 1 exits the return waiting state and calls the job operation mode setting request function to the ECS process 124 in order to set the job operation mode (step S703). Thread 1 enters a function return waiting state.

ECSプロセス124では、サーバディスパッチャがスキャナアプリプロセス114からジョブ動作モード設定要求関数コールを受信して、ジョブ動作モード設定要求関数ハンドラによってスキャナジョブに上述のジョブ動作モードを設定して関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives the job operation mode setting request function call from the scanner application process 114, sets the above-described job operation mode in the scanner job by the job operation mode setting request function handler, and sets the function return value to the scanner. It is transmitted to the client dispatcher of the application process 114.

スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定要求関数の戻り値を受信する。スレッド1はクライアントディスパッチャ経由でジョブ動作モード設定要求関数の戻り値を受信し、関数戻り待ち状態を抜ける。   The client dispatcher of the scanner application process 114 receives the return value of the job operation mode setting request function from the ECS process 124. The thread 1 receives the return value of the job operation mode setting request function via the client dispatcher, and exits the function return waiting state.

関数戻り待ち状態を抜けたスレッド1では、ジョブスタート要求関数コールをECSプロセス124に対して行い(ステップS704)、スレッド1が関数戻り待ち状態となる。ECSプロセス124では、サーバディスパッチャがジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラによってジョブの開始処理を行い、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。スキャナアプリプロセス114のクライアントディスパッチャは、ECSプロセス124からジョブスタート要求関数の戻り値を受信し、スレッド1がクライアントディスパッチャ経由でジョブスタート要求関数の関数戻り値を受信する。   In thread 1 that has left the function return wait state, a job start request function call is made to the ECS process 124 (step S704), and thread 1 enters a function return wait state. In the ECS process 124, the server dispatcher receives the job start request function call, performs job start processing by the job start request function handler, and transmits the function return value to the client dispatcher of the scanner application process 114. The client dispatcher of the scanner application process 114 receives the return value of the job start request function from the ECS process 124, and the thread 1 receives the function return value of the job start request function via the client dispatcher.

このとき、ECSプロセス124では、スキャナエンジンの資源格闘のため、スレッド3においてSRMプロセス123に対して資源獲得要求関数コールを行い(ステップS705)、関数戻り待ち状態となる。またECSプロセス124では、これと並行してスキャン画像をページ単位で格納するメモリを確保するために、スレッド4においてMCSプロセス125に対しページ生成要求関数コールを行い(ステップS706)、関数戻り待ち状態となる。この時点で、関数戻り待ちキューには、スレッド3とスレッド4の識別子(スレッドID)が呼び出した関数の関数IDとともに格納される。   At this time, the ECS process 124 makes a resource acquisition request function call to the SRM process 123 in the thread 3 due to the scanner engine resource struggle (step S705), and enters a function return waiting state. The ECS process 124 calls a page generation request function call to the MCS process 125 in the thread 4 in order to secure a memory for storing the scanned image in units of pages in parallel (step S706), and waits for a function return. It becomes. At this time, the identifiers (thread IDs) of the threads 3 and 4 are stored in the function return waiting queue together with the function ID of the called function.

SRMプロセス123では、サーバディスパッチャが資源獲得要求関数コールを受信して資源獲得要求関数ハンドラにより、スキャナエンジンを占有し関数戻り値をECSプロセス124へ送信する。MCSプロセス125では、サーバディスパッチャがページ生成要求関数コールを受信してページ生成要求関数ハンドラにより、1ページ分のメモリを確保し、確保したページをオープンし、関数戻り値をECSプロセス124へ送信する。   In the SRM process 123, the server dispatcher receives the resource acquisition request function call and occupies the scanner engine and transmits the function return value to the ECS process 124 by the resource acquisition request function handler. In the MCS process 125, the server dispatcher receives the page generation request function call, reserves one page of memory by the page generation request function handler, opens the reserved page, and transmits the function return value to the ECS process 124. .

ECSプロセス124のクライアントディスパッチャは、SRMプロセス123から資源獲得要求関数の戻り値を受信し、またMCSプロセス125からページ生成要求関数の戻り値を受信する。そして、関数戻り待ち状態のスレッド3はクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信し、スレッド4もクライアントディスパッチャ経由でページ生成要求関数の戻り値を受信する。   The client dispatcher of the ECS process 124 receives the return value of the resource acquisition request function from the SRM process 123 and receives the return value of the page generation request function from the MCS process 125. Then, the thread 3 waiting for the function return receives the return value of the resource acquisition request function via the client dispatcher, and the thread 4 also receives the return value of the page generation request function via the client dispatcher.

スレッド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 ECS process 124 receives the scan completion notification message and receives the MCS. A page close request function call is made to the process 125 (step S709), and a return wait state is entered.

MCSプロセス125では、ページクローズ要求関数コールを受信すると、ページクローズ要求関数ハンドラによってメモリ上でオープンされている1ページ分の画像メモリをクローズして関数戻り値をECSプロセス124のクライアントディスパッチャへ送信する。   When receiving the page close request function call, the MCS process 125 closes the image memory for one page opened on the memory by the page close request function handler and transmits the function return value to the client dispatcher of the ECS process 124. .

ECSプロセス124のクライアントディスパッチャは、ページクローズ要求関数の戻り値を受信し、関数戻り待ち状態のスレッド4がクライアントディスパッチャ経由でページクローズ要求関数の戻り値を受信する。スレッド4では、これにより関数戻り待ち状態を抜け、上述のページ生成要求関数コールからページクローズ要求関数コールまでの処理(ステップS706〜S709)を原稿枚数分だけ繰り返し行う。   The client dispatcher of the ECS process 124 receives the return value of the page close request function, and the thread 4 waiting for the function return receives the return value of the page close request function via the client dispatcher. As a result, the thread 4 exits the function return waiting state and repeats the above-described processing from the page generation request function call to the page close request function call (steps S706 to S709) for the number of originals.

原稿の最終ページのスキャンが終了すると、スキャナエンジンはスレッド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 scanner application process 114 receives the scan processing completion notification message and the job end notification message in order from the ECS process 124 and notifies the thread 1 of them. On the other hand, the thread 5 of the scanner application process 114 makes a file information registration request function call to the MCS process 125 (step S713), and enters a function return waiting state.

MCSプロセス125では、サーバディスパッチャがファイル情報登録要求関数コールを受信すると、ファイル情報登録要求関数ハンドラによって、一時的に生成されたすべての原稿のスキャン画像が格納されているファイルに対し、ファイル名、格納先等のファイル情報を登録し、関数戻り値をスキャナアプリプロセス114のクライアントディスパッチャへ送信する。   In the MCS process 125, when the server dispatcher receives the file information registration request function call, the file information registration request function handler executes the file name, the file name, File information such as the storage destination is registered, and the function return value is transmitted to the client dispatcher of the scanner application process 114.

スキャナアプリプロセス114のスレッド5は、ファイル情報登録要求関数の戻り値をクライアントディスパッチャ経由で受信すると、MCSプロセス125に対しファイルクローズ要求関数コールを行って(ステップS714)、関数戻り待ち状態となる。MCSプロセス125では、サーバディスパッチャでこのファイルクローズ要求関数コールを受信し、ファイルクローズ要求関数ハンドラによってスキャン画像のファイルをクローズして関数戻り値をスキャナアプリプロセス114に送信する。スキャナアプリプロセス114は、このファイルクローズ要求関数の戻り値を受信することにより、スキャン処理が終了する。   When the thread 5 of the scanner application process 114 receives the return value of the file information registration request function via the client dispatcher, it makes a file close request function call to the MCS process 125 (step S714), and enters a function return waiting state. In the MCS process 125, the file dispatch request function call is received by the server dispatcher, the file of the scan image is closed by the file close request function handler, and the function return value is transmitted to the scanner application process 114. When the scanner application process 114 receives the return value of the file close request function, the scanning process ends.

ついで、スキャナアプリプロセス114では、格納されているスキャン画像を読み出すため、次の処理を行う。まず、スレッド6において、MCSプロセス125に対し、スキャン画像のファイルをオープンするためのファイルオープン要求関数コール、作業メモリの確保のための作業領域確保要求関数コール、ページオープン要求関数コールを順次に行う(ステップS715〜S717)。なお、スレッド6は、上述と同様に、それぞれの関数コールを行った後、関数戻り待ち状態になり、関数戻り値の通知により、戻り待ち状態を抜け、次の関数コールを行う。   Next, in the scanner application process 114, the following processing is performed in order to read out the stored scan image. First, in the thread 6, a file open request function call for opening a scan image file, a work area allocation request function call for securing a working memory, and a page open request function call are sequentially performed on the MCS process 125. (Steps S715 to S717). As described above, after making each function call, the thread 6 enters a function return wait state, and exits the return wait state upon notification of a function return value, and performs the next function call.

MCSプロセス125のサーバディスパッチャは、スキャナアプリプロセス114のスレッド6からファイルオープン要求関数コール、作業領域確保要求関数コール、ページオープン要求関数コールを順に受信して、スキャン画像ファイルのオープン処理、作業メモリの確保処理、ページオープン処理をそれぞれ各関数ハンドラによって行って、各関数戻り値をスキャナアプリプロセス114に送信する。スキャナアプリプロセス114では、クライアントディスパッチャによりファイルオープン要求関数、作業領域確保要求関数、ページオープン要求関数の各戻り値を順に受信して、スレッド6がクライアントディスパッチャ経由で関数戻り値を受信する。   The server dispatcher of the MCS process 125 sequentially receives a file open request function call, a work area allocation request function call, and a page open request function call from the thread 6 of the scanner application process 114, and opens the scan image file, The secure processing and page open processing are performed by each function handler, and each function return value is transmitted to the scanner application process 114. In the scanner application process 114, the return values of the file open request function, the work area allocation request function, and the page open request function are sequentially received by the client dispatcher, and the thread 6 receives the function return value via the client dispatcher.

また、スキャナアプリプロセス114では、スレッド7において、スキャン画像ファイルからの画像データの読み出しのために読み出し要求関数コールを行い(ステップS718)、スレッド7が関数戻り待ち状態になる。さらに、スレッド8において、MCSプロセス125に対しページクローズ要求関数コールを行い(ステップS719)、スレッド8は関数戻り待ち状態になる。   In the scanner application process 114, a read request function call is performed in the thread 7 to read image data from the scanned image file (step S718), and the thread 7 enters a function return waiting state. Further, the thread 8 performs a page close request function call to the MCS process 125 (step S719), and the thread 8 enters a function return waiting state.

MCSプロセス125では、スレッド6からの要求であるページオープン処理の終了後に、スキャナアプリプロセス114のスレッド7から読み出し要求関数コールを受信し、読み出し要求関数ハンドラによってスキャナ画像ファイルから画像データを読み出し、画像データとともに関数戻り値をスキャナアプリプロセス114へ送信する。スキャナアプリプロセス114では、スレッド7が読み出し要求関数の戻り値をクライアントディスパッチャ経由で受信することにより、関数戻り待ち状態を抜け、次の読み出し要求関数コールを行い、同様に関数戻り値を受信する。   The MCS process 125 receives a read request function call from the thread 7 of the scanner application process 114 after the end of the page open process, which is a request from the thread 6, reads out image data from the scanner image file by the read request function handler, and The function return value is transmitted to the scanner application process 114 together with the data. In the scanner application process 114, when the thread 7 receives the return value of the read request function via the client dispatcher, it exits the function return wait state, makes the next read request function call, and similarly receives the function return value.

MCSプロセス125では、スレッド7からの要求である最後の読み出し要求処理が終了すると、スキャナアプリプロセス114のスレッド8から受信したページクローズ要求関数の関数ハンドラを起動して、オープンしているページデータのクローズ処理を行い、関数戻り値をスキャナアプリプロセス114へ送信する。スキャナアプリプロセス114では、スレッド8がページクローズ要求関数の戻り値をクライアントディスパッチャ経由で受信し、関数戻り待ち状態を抜ける。これにより、スレッド8では、ページ削除要求関数コール、作業領域削除要求関数コール、ファイルクローズ要求関数コール、ファイル削除要求関数コールを順に行う(ステップS720〜S723)。   In the MCS process 125, when the last read request processing, which is a request from the thread 7, is completed, the function handler of the page close request function received from the thread 8 of the scanner application process 114 is activated, and the opened page data Close processing is performed, and the function return value is transmitted to the scanner application process 114. In the scanner application process 114, the thread 8 receives the return value of the page close request function via the client dispatcher, and exits the function return waiting state. As a result, the thread 8 sequentially performs a page deletion request function call, a work area deletion request function call, a file close request function call, and a file deletion request function call (steps S720 to S723).

MCSプロセス125は、これらの関数コールを順に受信して、受信した関数コールに対応する関数ハンドラによってそれぞれ、ページデータの削除、作業メモリの削除、スキャン画像ファイルのクローズ、スキャン画像ファイルの削除の各処理を行って、各関数戻り値をスキャナアプリプロセス114に送信する。   The MCS process 125 receives these function calls in order, and deletes page data, deletes the working memory, closes the scanned image file, and deletes the scanned image file respectively by the function handler corresponding to the received function call. Processing is performed, and each function return value is transmitted to the scanner application process 114.

スキャナアプリプロセス114のスレッド8では、MCSプロセス125からの各関数戻り値をクライアントディスパッチャ経由で受信することにより、スキャン画像の読み出し処理が完了する。   In the thread 8 of the scanner application process 114, each function return value from the MCS process 125 is received via the client dispatcher, whereby the scan image reading process is completed.

次に、実施の形態1の複合機100で行われるコピー動作において、コピーアプリ112、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図9は、実施の形態1の複合機でコピー動作を行う場合のコピーアプリ、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図10は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。   Next, the interprocess communication of the copy application 112, the ECS 124, the MCS 125, and the SRM 123 in the copy operation performed by the multifunction peripheral 100 according to the first embodiment will be specifically described. FIG. 9 is an explanatory diagram showing a data sequence between processes of the copy application, ECS, MCS, and SRM when a copy operation is performed by the multifunction peripheral according to the first embodiment. FIG. 10 is an explanatory diagram showing the relationship between functions and messages between processes.

図10に示すように、複合機100にはコピーアプリプロセス112、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成される。なお、図10にはコピー動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機の起動時に生成される。   As shown in FIG. 10, a copy application process 112, an ECS process 124, an MCS process 125, and an SRM process 123 are operating in the multifunction peripheral 100. These processes are generated when the MFP 100 is activated. FIG. 10 shows only processes used in the copy operation, and in fact, other application processes and other control service processes are also generated when the MFP is activated.

コピーアプリプロセス112は、複合機100の起動時に起動され、図10に示すようにプロセス内に複数のスレッドが起動している。コピーアプリプロセス112は、ECSプロセス124をサーバプロセスとしたクライアントプロセスとなっており、このためECSプロセス124に対するクライアントディスパッチャのスレッドが起動している。   The copy application process 112 is activated when the MFP 100 is activated, and a plurality of threads are activated in the process as shown in FIG. The copy application process 112 is a client process that uses the ECS process 124 as a server process. For this reason, a client dispatcher thread for the ECS process 124 is activated.

ECSプロセス124は、コピー動作時には、コピーアプリプロセス112をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはコピーアプリプロセス112に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。   The ECS process 124 becomes a server process using the copy application process 112 as a client process and a client process using the MCS process 125 and the SRM process 123 as server processes, respectively, during a copy operation. Therefore, in the ECS process 124, a server dispatcher thread for the copy application process 112, a client dispatcher thread for the MCS process 125, a client dispatcher thread for the SRM process 123, and other processes related to job control and engine control. Thread is running.

MCSプロセス125は、コピー動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124に対するサーバディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドと、その他メモリ制御およびハードディスク制御に関する種々の処理を行う複数のスレッドが動作している。   During the copy operation, the MCS process 125 becomes a server process using the ECS process 124 as a client process and a client process using the SRM process 123 as a server process. Therefore, in the MCS process 125, a server dispatcher thread for the ECS process 124, a client dispatcher thread for the SRM process 123, and a plurality of other threads for performing various processes relating to memory control and hard disk control operate.

SRMプロセス123は、ECSプロセス124およびMCSプロセス125をクライアントプロセスとしたサーバプロセスとなり、このため、SRMプロセス123内にはECSプロセス124およびMCSプロセス125に対するサーバディスパッチャのスレッドとその他エンジンの資源制御に関する処理を行う複数のスレッドが動作している。   The SRM process 123 becomes a server process using the ECS process 124 and the MCS process 125 as client processes. Therefore, in the SRM process 123, a process related to a thread of a server dispatcher for the ECS process 124 and the MCS process 125 and other resource control of the engine. Multiple threads are running.

実施の形態1におけるコピーアプリプロセス112では、コピー時におけるジョブオープン要求関数コールとジョブ動作モード設定関数コールとジョブスタート要求関数コールを行う一連の処理、ジョブクローズ要求関数コールを行う処理をそれぞれ一スレッドとしている。   In the copy application process 112 according to the first embodiment, a series of processes for performing a job open request function call, a job operation mode setting function call, and a job start request function call at the time of copying, and a process for performing a job close request function call are performed in one thread. It is said.

ECSプロセス124では、メモリ確保要求関数コールを行う処理、資源獲得要求関数コールを行う処理、原稿フィードイン処理をそれぞれ一スレッドとしている。MCSプロセス125では、メモリ取得要求関数コールを行う処理を一スレッドとしている。なお、コピー動作時においても、これら各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。   In the ECS process 124, a process for making a memory allocation request function call, a process for making a resource acquisition request function call, and a document feed-in process are each in one thread. In the MCS process 125, a process for making a memory acquisition request function call is one thread. Note that the processing in each of these threads is an example even during the copy operation, and can be arbitrarily determined by each program.

コピー要求があると、コピーアプリプロセス112は、新たなコピージョブを生成し、スレッド1においてECSプロセス124に対してジョブオープン要求関数コールを行う(ステップS901)。これにより、スレッド1は関数戻り待ち状態となり、クライアントディスパッチャによってスレッド1の識別子(スレッドID)が呼び出したジョブオープン要求関数の関数IDとともに関数戻り待ちキューに登録される。   When there is a copy request, the copy application process 112 generates a new copy job and makes a job open request function call to the ECS process 124 in the thread 1 (step S901). As a result, the thread 1 enters a function return waiting state and is registered in the function return waiting queue together with the function ID of the job open request function called by the client dispatcher.

ECSプロセス124では、サーバディスパッチャがコピーアプリプロセス112からジョブオープン要求関数コールを受信して、ジョブオープン要求関数ハンドラをサーバディスパッチャのスレッド上で起動する。そして、ジョブオープン要求関数ハンドラによりコピージョブをオープンして、関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives a job open request function call from the copy application process 112, and starts a job open request function handler on the server dispatcher thread. Then, the copy job is opened by the job open request function handler, and the function return value is transmitted to the client dispatcher of the copy application process 112.

コピーアプリプロセス112のクライアントディスパッチャは、ECSプロセス124からジョブオープン要求関数の戻り値を受信し、関数戻り値待ちキューから関数戻り待ち状態のスレッドを検索する。そして、検索されたスレッド1にジョブオープン要求関数の戻り値を送信する。   The client dispatcher of the copy application process 112 receives the return value of the job open request function from the ECS process 124 and searches the function return value waiting queue for a thread waiting for the function return. Then, the return value of the job open request function is transmitted to the retrieved thread 1.

スレッド1は、クライアントディスパッチャからジョブオープン要求関数の戻り値を受信すると、戻り待ち状態を抜け、ジョブ動作モードの設定を行うため、ECSプロセス124に対しジョブ動作モード設定関数コールを行い(ステップS902)、関数戻り待ち状態となる。   When the thread 1 receives the return value of the job open request function from the client dispatcher, the thread 1 makes a job operation mode setting function call to the ECS process 124 in order to exit the return waiting state and set the job operation mode (step S902). , The function returns waiting state.

一方、スレッド2はジョブスタート要求関数コールをECSプロセス124に対して行い(ステップS903)、関数戻り待ち状態となる。この時点では、関数戻り待ちキューにはスレッド1の識別子(スレッドID)がジョブ動作モード設定関数の関数IDとともに登録され、またスレッド2の識別子(スレッドID)がジョブスタート要求関数の関数IDとともにクライアントディスパッチャにより登録される。   On the other hand, the thread 2 makes a job start request function call to the ECS process 124 (step S903), and enters a function return waiting state. At this time, the identifier of the thread 1 (thread ID) is registered together with the function ID of the job operation mode setting function in the function return queue, and the identifier of the thread 2 (thread ID) is registered together with the function ID of the job start request function. Registered by dispatcher.

ECSプロセス124では、サーバディスパッチャがコピーアプリプロセス112からジョブ動作モード設定関数コールを受信して、ジョブ動作モード設定関数ハンドラによってコピージョブに上述のジョブ動作モードを設定して関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。また、サーバディスパッチャはジョブスタート要求関数コールを受信して、ジョブスタート要求関数ハンドラによってジョブの開始処理を行って関数戻り値をコピーアプリプロセス112のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives the job operation mode setting function call from the copy application process 112, sets the above-described job operation mode in the copy job by the job operation mode setting function handler, and sets the function return value to the copy application process. 112 to the client dispatcher. Also, the server dispatcher receives the job start request function call, performs job start processing by the job start request function handler, and transmits a function return value to the client dispatcher of the copy application process 112.

コピーアプリプロセス112のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定関数とジョブスタート要求関数の戻り値をそれぞれ受信し、スレッド1がクライアントディスパッチャ経由でジョブ動作モード設定関数の戻り値を受信し、スレッド2もクライアントディスパッチャ経由でジョブスタート要求関数の戻り値を受信する。   The client dispatcher of the copy application process 112 receives the return values of the job operation mode setting function and the job start request function from the ECS process 124, and the thread 1 receives the return value of the job operation mode setting function via the client dispatcher. The thread 2 also receives the return value of the job start request function via the client dispatcher.

ECSプロセス124では、ジョブスタート要求関数の戻り値をコピーアプリプロセス112に送信すると、つぎにスキャン画像を格納するためのメモリを確保するために、スレッド3においてMCSプロセス125に対し必要なサイズを指定したメモリ確保要求関数コールを行い(ステップS904)、関数戻り待ち状態となる。また、これと並行してスレッド4において、スキャナエンジンとプリンタエンジンの資源獲得のため、SRMプロセス123に対して資源獲得要求関数コールを行い(ステップS906)、関数戻り待ち状態となる。   In the ECS process 124, when the return value of the job start request function is transmitted to the copy application process 112, the thread 3 specifies the necessary size for the MCS process 125 in order to secure a memory for storing the scanned image. The memory allocation request function call is made (step S904), and a function return waiting state is entered. In parallel with this, the thread 4 makes a resource acquisition request function call to the SRM process 123 to acquire the resources of the scanner engine and the printer engine (step S906), and enters a function return waiting state.

MCSプロセス125では、サーバディスパッチャがメモリ確保要求関数コールを受信すると、メモリ確保要求関数ハンドラによって指定されたサイズのメモリ上の領域を確保し、関数戻り値をECSプロセス124に送信する。一方、SRMプロセス123では、サーバディスパッチャが資源獲得要求関数コールを受信して資源獲得要求関数ハンドラにより、スキャナエンジンとプリンタエンジンとを占有し、関数戻り値をECSプロセス124へ送信する。   In the MCS process 125, when the server dispatcher receives the memory allocation request function call, the MCS process 125 allocates an area on the memory having the size specified by the memory allocation request function handler, and transmits the function return value to the ECS process 124. On the other hand, in the SRM process 123, the server dispatcher receives the resource acquisition request function call, occupies the scanner engine and the printer engine by the resource acquisition request function handler, and transmits the function return value to the ECS process 124.

ECSプロセス124のクライアントディスパッチャは、MCSプロセス125からメモリ確保要求関数の戻り値を受信するとともに、SRMプロセス123から資源獲得要求関数の戻り値を受信する。そして、スレッド3はクライアントディスパッチャ経由でメモリ確保要求関数の戻り値を受信し、スレッド4もクライアントディスパッチャ経由で資源獲得要求関数の戻り値を受信する。これにより、スレッド3とスレッド4は関数戻り待ち状態を抜ける。   The client dispatcher of the ECS process 124 receives the return value of the memory allocation request function from the MCS process 125 and receives the return value of the resource acquisition request function from the SRM process 123. The thread 3 receives the return value of the memory allocation request function via the client dispatcher, and the thread 4 also receives the return value of the resource acquisition request function via the client dispatcher. As a result, the threads 3 and 4 exit the function return waiting state.

資源獲得要求関数の戻り値を受信してスキャナエンジンとプリンタエンジンとをコピージョブで占有すると、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 process 124 feeds the document to the scanner engine in thread 5 (step S907), thereby copying. The original document scanning process is started.

スキャナエンジンでは原稿のスキャン処理が終了するとスキャン終了通知メッセージを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 ECS process 124, when the thread 5 receives the scan end notification message from the scanner engine, the thread 5 transmits a job end notification message indicating the end of scanning to the copy application process 112 (step S909). When the thread 5 receives the print end notification message from the printer engine, the thread 5 transmits a job end notification message indicating the end of printing to the copy application process 112 (step S911).

コピーアプリプロセス112では、クライアントディスパッチャが2つのジョブエンド通知メッセージを受信して、メッセージハンドラを起動してスレッド2に各ジョブエンド通知メッセージを通知する。これにより、原稿1ページ分のコピー動作が完了する。   In the copy application process 112, the client dispatcher receives two job end notification messages, activates a message handler, and notifies the thread 2 of each job end notification message. This completes the copy operation for one page of the document.

複数枚の原稿のコピーを行う場合には、さらに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 process 124, the MCS process 125, the SRM process 123, the scanner. This is performed by the engine and the printer engine (steps S913 to S916). When copying of all originals is completed and the copy application process 112 receives the last job end notification message (step S917), the thread 1 makes a job close request function call to the ECS process 124 (step S918).

ECSプロセス124では、サーバディスパッチャによりこのジョブクローズ要求関数コールを受信してジョブクローズ要求関数ハンドラによってオープン状態にあるコピージョブをクローズし、その関数戻り値をコピーアプリプロセス112に送信する。   In the ECS process 124, the job dispatch request function call is received by the server dispatcher, the copy job in the open state is closed by the job close request function handler, and the function return value is transmitted to the copy application process 112.

コピーアプリプロセス112では、クライアントディスパッチャによって、ジョブクローズ要求関数の戻り値を受信し、戻り待ち状態となっているスレッド2がクライアントディスパッチャ経由でジョブクローズ要求関数の戻り値を受信し、コピー動作が完了する。   In the copy application process 112, the return value of the job close request function is received by the client dispatcher, and the thread 2 in the return waiting state receives the return value of the job close request function via the client dispatcher, and the copy operation is completed. To do.

ここで、上述したコピー動作中に、スキャン要求をスキャナアプリプロセス114が受信した場合には、次のような処理が行われる。たとえば、コピー動作においてECSプロセス124からSRMプロセス123に対しスキャナエンジンとプリンタエンジンの資源獲得要求関数コールを行った後に、スキャナアプリプロセス114にスキャン要求があった場合を考える。   If the scanner application process 114 receives a scan request during the copying operation described above, the following processing is performed. For example, consider a case where a scanning request is made to the scanner application process 114 after making a resource acquisition request function call for the scanner engine and printer engine from the ECS process 124 to the SRM process 123 in the copying operation.

この場合、上述した図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 process 124 to the SRM process 123. However, since the scanner engine is occupied by the copy job, it is acquired by the scanner job. Can not do it.

このためスキャナジョブでは資源獲得要求関数の戻り値のECSプロセス124に対する送信を、コピージョブが完了し、スキャナエンジンが解放された後で行う。この間、スキャナジョブにおいて資源獲得要求関数コールを行ったスレッドは、関数戻り待ち状態となって待機していることになり、スキャナ動作がコピー動作完了まで中断されることになる。また、コピー動作中に、コピージョブでプリンタエンジンの占有がされた後に、プリンタアプリプロセス111にプリント要求があった場合にも、同様に、コピー動作完了までプリント動作は中断されることになる。   Therefore, in the scanner job, the return value of the resource acquisition request function is transmitted to the ECS process 124 after the copy job is completed and the scanner engine is released. During this time, the thread that has made the resource acquisition request function call in the scanner job is in a function return waiting state and is waiting, and the scanner operation is suspended until the copy operation is completed. Similarly, when a print request is made to the printer application process 111 after the printer engine is occupied by a copy job during the copy operation, the print operation is similarly suspended until the copy operation is completed.

なお、コピー動作中のスキャナ動作について、スキャナジョブでスキャナエンジンの獲得ができない場合の例をあげて説明したが、この他、スキャナジョブにおいて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 ECS process 124 to the MCS process 125 in the scanner job. Even if the page is not generated due to insufficient memory because the copy job is using memory, the thread that made the page generation request function call will be in a function return waiting state and the copy operation will be completed. Until the scanner operation is interrupted.

次に、実施の形態1の複合機で行われるファクシミリ送信動作において、ファックスアプリ113、FCS127、ECS124、MCS125、SRM123のプロセス間通信について具体的に説明する。図11は、実施の形態1の複合機でコピー動作を行う場合のファックスアプリ、FCS、ECS、MCS、SRMの各プロセス間のデータシーケンスを示す説明図である。また、図12は、各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。   Next, the interprocess communication of the fax application 113, the FCS 127, the ECS 124, the MCS 125, and the SRM 123 in the facsimile transmission operation performed by the multifunction machine of the first embodiment will be specifically described. FIG. 11 is an explanatory diagram showing a data sequence between each process of the fax application, FCS, ECS, MCS, and SRM when a copying operation is performed in the multifunction machine of the first embodiment. FIG. 12 is an explanatory diagram showing the relationship between functions and messages between processes.

図12に示すように、複合機100にはファックスアプリプロセス113、FCSプロセス127、FCUHプロセス129、ECSプロセス124、MCSプロセス125およびSRMプロセス123が動作している。これらプロセスは、複合機100の起動時に生成されるようになっている。なお、図12にはファックス送信動作において使用されるプロセスのみを図示しており、実際には他のアプリプロセスおよび他のコントロールサービスのプロセスも複合機の起動時に生成される。   As illustrated in FIG. 12, a fax application process 113, an FCS process 127, an FCUH process 129, an ECS process 124, an MCS process 125, and an SRM process 123 are operating in the multifunction peripheral 100. These processes are generated when the MFP 100 is activated. FIG. 12 shows only processes used in the fax transmission operation, and actually other application processes and other control service processes are also generated when the multifunction peripheral is activated.

ファックスアプリプロセス113は、複合機100の起動時に起動され、図12に示すようにプロセス内に複数のスレッドが起動している。ファックスアプリプロセス113は、FCSプロセス127をサーバプロセスとしたクライアントプロセスとなっており、このためFCSプロセス127に対するクライアントディスパッチャのスレッドが起動している。   The fax application process 113 is activated when the MFP 100 is activated, and a plurality of threads are activated in the process as shown in FIG. The fax application process 113 is a client process that uses the FCS process 127 as a server process. For this reason, a client dispatcher thread for the FCS process 127 is activated.

FCSプロセス127は、ファクシミリ送信動作時には、ファックスアプリプロセス113をクライアントプロセスとしたサーバプロセスとなるとともに、ECSプロセス124およびFCUHプロセス129をサーバプロセスとしたクライアントプロセスとなる。このため、FCSプロセス127内にはファックスアプリプロセス113に対するサーバディスパッチャのスレッドと、ECSプロセス124に対するクライアントディスパッチャのスレッドと、FCUSプロセス129に対するクライアントディスパッチャのスレッドと、その他ファクシミリ通信制御に関する処理を行う複数のスレッドが動作している。   The FCS process 127 becomes a server process using the fax application process 113 as a client process and a client process using the ECS process 124 and the FCUH process 129 as server processes during a facsimile transmission operation. Therefore, in the FCS process 127, a server dispatcher thread for the fax application process 113, a client dispatcher thread for the ECS process 124, a client dispatcher thread for the FCUS process 129, and other processes related to facsimile communication control are performed. The thread is working.

FCUHプロセス129は、FCSプロセス127のサブプロセスであり、ファクシミリ送信動作時に、SRMプロセス123およびFCS127をクライアントプロセスとしたサーバプロセスとなる。このため、FCUHプロセス129内にはSRMプロセス123およびFCS127に対するサーバディスパッチャのスレッドと、その他ファクシミリデバイスドライバに対する指令などの処理を行う複数のスレッドが動作している。   The FCUH process 129 is a sub-process of the FCS process 127, and becomes a server process using the SRM process 123 and the FCS 127 as client processes during facsimile transmission operation. For this reason, a server dispatcher thread for the SRM process 123 and the FCS 127 and a plurality of threads for performing processing such as instructions for the facsimile device driver are operating in the FCUH process 129.

ECSプロセス124は、ファクシミリ送信動作時には、FCSプロセス127をクライアントプロセスとしたサーバプロセスとなるとともに、MCSプロセス125およびSRMプロセス123をそれぞれサーバプロセスとしたクライアントプロセスとなる。このため、ECSプロセス124内にはFCSプロセス127に対するサーバディスパッチャのスレッドと、MCSプロセス125に対するクライアントディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドとその他ジョブ制御およびエンジン制御に関する処理を行う複数のスレッドが動作している。   During the facsimile transmission operation, the ECS process 124 becomes a server process using the FCS process 127 as a client process and a client process using the MCS process 125 and the SRM process 123 as server processes, respectively. For this reason, the ECS process 124 includes a server dispatcher thread for the FCS process 127, a client dispatcher thread for the MCS process 125, a client dispatcher thread for the SRM process 123, and a plurality of other processes related to job control and engine control. The thread is working.

MCSプロセス125は、ファクシミリ送信動作時には、ECSプロセス124をクライアントプロセスとしたサーバプロセスとなるとともに、SRMプロセス123をサーバプロセスとしたクライアントプロセスとなる。このため、MCSプロセス125内にはECSプロセス124に対するサーバディスパッチャのスレッドと、SRMプロセス123に対するクライアントディスパッチャのスレッドと、その他メモリ制御およびハードディスク制御に関する処理を行う複数のスレッドが動作している。   The MCS process 125 becomes a server process using the ECS process 124 as a client process and a client process using the SRM process 123 as a server process during a facsimile transmission operation. Therefore, in the MCS process 125, a server dispatcher thread for the ECS process 124, a client dispatcher thread for the SRM process 123, and a plurality of threads that perform processing related to memory control and hard disk control are operating.

SRMプロセス123は、ECSプロセス124およびMCSプロセス125をクライアントプロセスとしたサーバプロセスとなるとともに、FCUHプロセス129をサーバプロセスとしたクライアントプロセスとなる。このため、SRMプロセス123内にはECSプロセス124およびMCSプロセス125に対するサーバディスパッチャのスレッドと、FCUHプロセス129をサーバプロセスとしたクライアントディスパッチャと、その他エンジン資源制御に関する処理を行う複数のスレッドが動作している。   The SRM process 123 is a server process that uses the ECS process 124 and the MCS process 125 as client processes, and a client process that uses the FCUH process 129 as a server process. Therefore, a server dispatcher thread for the ECS process 124 and the MCS process 125, a client dispatcher using the FCUH process 129 as a server process, and a plurality of other threads that perform processing related to engine resource control operate in the SRM process 123. Yes.

実施の形態1におけるファックスアプリ113では、送信スタート要求関数コールを行う処理、送信モード変更要求を行う処理をそれぞれ一スレッドとしている。FSCプロセス127では、ファックス送信動作時におけるジョブ動作モード設定関数コールとジョブスタート要求関数コールを行う一連の処理、スキャンパラメータ要求メッセージを受信してスキャンパラメータを送信する処理、EOM(次ページ有り),EOF(次ページ無し)などの次ページ情報メッセージを通知する処理をそれぞれ一スレッドとしている。   In the fax application 113 according to the first embodiment, a process for making a transmission start request function call and a process for making a transmission mode change request are each in one thread. In the FSC process 127, a series of processing for performing a job operation mode setting function call and a job start request function call during fax transmission operation, processing for receiving a scan parameter request message and transmitting scan parameters, EOM (with next page), Each thread performs a process of notifying a next page information message such as EOF (no next page).

ECSプロセス124では、メモリ確保要求関数コールと資源獲得要求関数コールを行う一連の処理、スキャン・フィードインプロセス生成指示メッセージを送信する処理をそれぞれ一スレッドとしている。MCSプロセス125では、メモリ確保要求関数コールを行う処理、その他メッセージを送信する処理を一スレッドとしている。   In the ECS process 124, a series of processes for making a memory allocation request function call and a resource acquisition request function call, and a process for transmitting a scan / feed-in process generation instruction message are each handled as one thread. In the MCS process 125, processing for making a memory allocation request function call and processing for transmitting other messages are set as one thread.

SRMプロセス123では、フィードスタートメッセージとフィードイン終了メッセージとスタンプ実行指示メッセージを送信する一連の処理、スキャン・フィードインプロセス実行処理をそれぞれ一スレッドとしている。FCUH129では、EOM,EOFなどの次ページ情報メッセージを送信する処理を一スレッドとしている。なお、ファクシミリ送信動作時においても、これら各スレッドにおける処理は一例であり、各プログラムで任意に定めることができる。   In the SRM process 123, a series of processes for transmitting a feed start message, a feed-in end message, and a stamp execution instruction message, and a scan / feed-in process execution process are each set as one thread. In the FCUH 129, processing for transmitting a next page information message such as EOM or EOF is set as one thread. It should be noted that the processing in each thread is an example even during the facsimile transmission operation, and can be arbitrarily determined by each program.

ファクシミリ送信要求があると、ファックスアプリプロセス113は、新たなファクシミリ送信ジョブを生成し、スレッド1からFCSプロセス127に対して送信スタート要求関数コールを行い(ステップS1101)、スレッド1が関数戻り待ち状態となる。FCSプロセス127では、サーバディスパッチャがファックスアプリプロセス113から送信スタート要求関数コールを受信して、送信スタート要求関数ハンドラを起動し、送信スタート要求関数ハンドラのスレッド3によってMCSプロセス125に対してジョブ動作モード設定要求関数コールを行い(ステップS1102)、スレッド3が関数戻り待ち状態となる。   When there is a facsimile transmission request, the fax application process 113 generates a new facsimile transmission job, performs a transmission start request function call from the thread 1 to the FCS process 127 (step S1101), and the thread 1 waits for a function return. It becomes. In the FCS process 127, the server dispatcher receives the transmission start request function call from the fax application process 113, activates the transmission start request function handler, and uses the thread 3 of the transmission start request function handler to execute the job operation mode for the MCS process 125. A setting request function call is performed (step S1102), and the thread 3 enters a function return waiting state.

ECSプロセス124では、サーバディスパッチャがFCSプロセス127からジョブ動作モード設定要求関数コールを受信して、ジョブ動作モード設定要求関数ハンドラによってファクシミリ送信ジョブに上述の動作モードを設定して関数戻り値をFCSプロセス127のクライアントディスパッチャへ送信する。   In the ECS process 124, the server dispatcher receives the job operation mode setting request function call from the FCS process 127, sets the above operation mode to the facsimile transmission job by the job operation mode setting request function handler, and sets the function return value to the FCS process. 127 to the client dispatcher.

FCSプロセス127のクライアントディスパッチャは、ECSプロセス124からジョブ動作モード設定要求関数の戻り値を受信し、スレッド3はクライアントディスパッチャ経由でこの戻り値を受信する。これにより、スレッド3は関数戻り待ち状態を抜け、ついでECSプロセス124に対しジョブスタート要求関数コールを行い(ステップS1103)、スレッド3は関数戻り待ち状態となる。   The client dispatcher of the FCS process 127 receives the return value of the job operation mode setting request function from the ECS process 124, and the thread 3 receives this return value via the client dispatcher. As a result, the thread 3 exits the function return waiting state, and then makes a job start request function call to the ECS process 124 (step S1103), and the thread 3 enters the function return waiting state.

このジョブスタート要求関数コールを受信したMCSプロセス125は、ジョブスタート要求関数ハンドラによって、MCS125に対しメモリ確保要求関数コールを行い(ステップS1104)、SRMプロセス123に対し資源獲得要求関数コールを行う(ステップS1106)。これらの関数コールを受信したMCSプロセス125、SRMプロセス123の処理およびECSプロセス124における各関数の戻り値の受信に伴う処理は、コピー動作時の処理と同様であるので説明を省略する。   The MCS process 125 that has received this job start request function call makes a memory allocation request function call to the MCS 125 by the job start request function handler (step S1104), and makes a resource acquisition request function call to the SRM process 123 (step S1104). S1106). The processing of the MCS process 125 and SRM process 123 that have received these function calls and the processing accompanying reception of the return value of each function in the ECS process 124 are the same as the processing at the time of the copy operation, and thus the description thereof is omitted.

ECSプロセス124では、スキャナエンジンの資源獲得関数の戻り値を受信したら、スレッド7においてFCSプロセス127に対しスキャナパラメータ確定要求メッセージを送信する(ステップS1107)。ここで、スキャナパラメータとは、たとえばファイン、ノーマルなどのスキャン濃度や原稿サイズ等である。FCSプロセス127では、このスキャナパラメータ確定要求メッセージを受信すると、スレッド4においてスキャナパラメータをECSプロセス124に対してメッセージとして送信する(ステップS1108)。   When the ECS process 124 receives the return value of the resource acquisition function of the scanner engine, the thread 7 sends a scanner parameter confirmation request message to the FCS process 127 (step S1107). Here, the scanner parameters are, for example, fine and normal scan densities, document sizes, and the like. When the FCS process 127 receives this scanner parameter confirmation request message, the thread 4 transmits the scanner parameter as a message to the ECS process 124 (step S1108).

ECSプロセス124では、スキャナパラメータメッセージをサーバディスパッチャが受信して、スキャンパラメータ確定要求メッセージを送信したスレッド7に通知し、スレッド7はSRMプロセス123に対してスキャン・フィードインプロセスの生成指示メッセージを送信する(ステップS1109)。SRMプロセス123は、スキャン・フィードインプロセスの生成指示メッセージを受信すると、スレッド11によりスキャン・フィードインプロセスを生成して実行させる(ステップS1110)。   In the ECS process 124, the server dispatcher receives the scanner parameter message and notifies the thread 7 that has transmitted the scan parameter confirmation request message, and the thread 7 transmits a scan / feed-in process generation instruction message to the SRM process 123. (Step S1109). Upon receiving the scan / feed-in process generation instruction message, the SRM process 123 generates and executes a scan / feed-in process by the thread 11 (step S1110).

ついでFCUHプロセス129に対して原稿のフィードインスタートメッセージを送信する(ステップS1111)。FCUHプロセス129がフィードインスタートメッセージを受信して、原稿フィードインが開始され、これにより原稿のスキャンおよび指定宛先への送信が開始する。   Next, a document feed-in start message is transmitted to the FCUH process 129 (step S1111). The FCUH process 129 receives a feed-in start message and starts document feed-in, whereby document scanning and transmission to a designated destination are started.

原稿のスキャンが開始されると、次ページの原稿があるか否かを示す、次ページ原稿有無通知メッセージがスキャナエンジンから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 ECS process 124 transmits the received scan end message to the FCS process 127 together with the presence of the next page document (step S1114). On the other hand, when the document scan is completed, the SRM process 123 instructs the FCUH process 129 to end the feed-in (step S1115), thereby completing the document feed-in.

ここで、ファックスアプリプロセス113がFCSプロセス127に対して送信モード変更要求関数コールを行った場合には(ステップS1105)、ECSプロセス124は、スレッド6においてスキャンパラメータ確定要求メッセージをFCSプロセス127に対して送信し、これに対し上述のようにFCSプロセス127は、スキャンパラメータメッセージをECSプロセス124に送信する(ステップS1118)。ECSプロセス124では、スキャンパラメータメッセージを受信すると、次ページ目のスキャン・フィードインプロセスの実行をSRMプロセス123に指示して、実行が開始する(ステップS1119、S1120)。   When the fax application process 113 makes a transmission mode change request function call to the FCS process 127 (step S1105), the ECS process 124 sends a scan parameter confirmation request message to the FCS process 127 in the thread 6. In response to this, as described above, the FCS process 127 transmits a scan parameter message to the ECS process 124 (step S1118). Upon receiving the scan parameter message, the ECS process 124 instructs the SRM process 123 to execute the scan / feed-in process for the next page and starts the execution (steps S1119 and S1120).

一方、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 FCS process 127 transmits an EOM message (with the next page in a different transmission mode) to the FCUH process 129 in the thread 5 (step S1121) and receives this. The FCUH process 129 transmits the EOM to the designated destination by the thread 13 (step S1122).

FCUHプロセス129が指定宛先から受信正常の通知を受けた場合には(ステップS1123)、SRMプロセス123に対して送信成功メッセージを送信し(ステップS1124)、これを受信したSRMプロセス123はECSプロセス124に対してプロセス正常終了メッセージを送信する(ステップS1125)。さらにこれを受信したECSプロセス124はFCSプロセス127に対し1ページ目のスキャン処理完了通知メッセージを送信する(ステップS1126)。そして、送信成功メッセージを受信したSRMプロセス123は指示により、送信日時、発信元等のスタンプを指定宛先へ送信する旨をスキャナエンジンに指示する(ステップS1127)。   When the FCUH process 129 receives a normal reception notification from the designated destination (step S1123), it transmits a transmission success message to the SRM process 123 (step S1124), and the SRM process 123 that has received the message transmits the ECS process 124. A process normal end message is transmitted to (step S1125). Further, the ECS process 124 that has received this transmits a scan processing completion notification message for the first page to the FCS process 127 (step S1126). Then, the SRM process 123 that has received the successful transmission message instructs the scanner engine to transmit a stamp such as the transmission date and time and the transmission source to the designated destination according to the instruction (step S1127).

SRMプロセス123は、2ページ目の原稿のフィードインを開始するため、FCUHプロセス129に対して原稿のフィードインスタートメッセージを送信する(ステップS1128)。FCUHプロセス129はフィードインスタートメッセージを受信して、原稿フィードインが開始され、これにより2ページ目の原稿のスキャンおよび指定宛先への送信が開始する。   The SRM process 123 transmits a document feed-in start message to the FCUH process 129 in order to start the document feed-in for the second page (step S1128). The FCUH process 129 receives a feed-in start message and starts document feed-in, whereby scanning of the document on the second page and transmission to a designated destination is started.

原稿のスキャンが開始されると、次ページ原稿有無通知メッセージがスキャナエンジンから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 process 124. Notification is made (step S1129). When scanning of the document is completed, a scan end message is transmitted from the scanner engine to the ECS process 124 (step S1130).

ECSプロセス124のスレッド9は、受信したスキャン終了メッセージを次ページ原稿無の旨とともにFCSプロセス127へ送信する(ステップS1131)。一方、スキャンが終了すると、SRMプロセス123ではスレッド13がFCUHプロセス129に対してフィードイン終了を指示し(ステップS1132)、これにより原稿フィードインが終了する。   The thread 9 of the ECS process 124 transmits the received scan end message to the FCS process 127 together with the fact that there is no next page document (step S1131). On the other hand, when the scanning is completed, in the SRM process 123, the thread 13 instructs the FCUH process 129 to end the feed-in (step S1132), thereby completing the document feed-in.

2ページの指定宛先へのファクシミリ送信が完了すると、FCSプロセス127では、スレッド5がEOFメッセージ(次ページ無し)をFCUHプロセス129へ送信し(ステップS1124)、これを受信したFCUHプロセス129はスレッド13によりEOFを指定宛先へ送信する。   When the facsimile transmission to the designated destination of page 2 is completed, in the FCS process 127, the thread 5 transmits an EOF message (no next page) to the FCUH process 129 (step S1124), and the FCUH process 129 that has received the thread 13 To send the EOF to the designated destination.

FCUHプロセス129が指定宛先から受信正常の通知を受けた場合には(ステップS1135)、スレッド13によりSRMプロセス123に対して送信成功メッセージを送信し(ステップS1136)、これを受信したSRMプロセス123は、スレッド12によりECSプロセス124に対してプロセス正常終了メッセージを送信する(ステップS1137)。   When the FCUH process 129 receives a normal reception notification from the designated destination (step S1135), the thread 13 transmits a transmission success message to the SRM process 123 (step S1136). The thread 12 transmits a process normal end message to the ECS process 124 (step S1137).

さらにこれを受信したECSプロセス124は、スレッド9によりFCSプロセス127に対し2ページ目のスキャン処理完了通知メッセージを送信する(ステップS1138)。また、送信成功メッセージを受信したSRMプロセス123は、スレッド12により、送信日時、発信元等のスタンプの指定宛先へ送信の指示を行う(ステップS1139)。   Further, the ECS process 124 that has received this transmits a scan processing completion notification message for the second page to the FCS process 127 by the thread 9 (step S1138). In addition, the SRM process 123 that has received the successful transmission message instructs the thread 12 to transmit to the designated destination of the stamp such as the transmission date and time and the transmission source (step S1139).

そして、ECSプロセス124は、FCSプロセス127にジョブエンド通知メッセージを送信し(ステップS1140)、FCSプロセス127では、このジョブエンド通知メッセージをクライアントディスパッチャで受信することにより全ての原稿のファックス送信動作が完了する。   Then, the ECS process 124 transmits a job end notification message to the FCS process 127 (step S1140), and the FCS process 127 receives the job end notification message by the client dispatcher, thereby completing the fax transmission operation for all documents. To do.

このように、実施の形態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 application 130 and the platform 120, a wide variety of functions called complex services can be realized.

また、実施の形態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 MFP 100 according to the first embodiment, the relationship between the server process and the client process has been conceptually described. Therefore, in the second embodiment, the server process and the client process will be described more specifically. Note that the configuration of the MFP 100 according to the second embodiment is the same as that in FIG.

図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 client process 1600 refers to a process such as the SCS 122 that receives a service from the server processes 1610 and 1620 by making a request to the server processes 1610 and 1620. The server processes 1610 and 1620 are processes such as ECS 124 that provide services to the client process 1600 in response to a request from the client process 1600.

図13に示すとおり、クライアントプロセス1600には複数のスレッド1601が起動している。クライアントプロセス1600は、複数のスレッド1601を有することから、複数のサーバプロセス1610,1620に対して同時にサービスを要求できる。   As shown in FIG. 13, a plurality of threads 1601 are activated in the client process 1600. Since the client process 1600 has a plurality of threads 1601, a service can be requested to a plurality of server processes 1610 and 1620 at the same time.

また、クライアントプロセス1600は、サーバプロセス1610,1620のサービスを要求するために、スレッド1601からサーバプロセス1610,1620に対して関数コールを行い、その関数戻り値を受信することによってプロセス間通信を行う。   Further, the client process 1600 performs a function call from the thread 1601 to the server processes 1610 and 1620 in order to request the services of the server processes 1610 and 1620, and performs inter-process communication by receiving the function return values. .

クライアントプロセス1600のスレッド1601は、あらかじめサーバプロセス1610,1620から提供されている関数をコールする。関数は、クライアントスタブ1602に定義されている。また、クライアントディスパッチャ1603は関数戻り値の受信を監視するスレッドである。   The thread 1601 of the client process 1600 calls a function provided from the server processes 1610 and 1620 in advance. The function is defined in the client stub 1602. The client dispatcher 1603 is a thread that monitors reception of a function return value.

クライアントプロセス1600は、サーバプロセス1610,1620ごとにクライアントディスパッチャ1603を起動してサーバプロセス1610,1620と通信する。そして、関数コールを受けたサーバプロセス1610,1620は要求された関数に対応する処理を以下のように実行する。   The client process 1600 starts the client dispatcher 1603 for each of the server processes 1610 and 1620 and communicates with the server processes 1610 and 1620. Then, the server processes 1610 and 1620 that have received the function call execute processing corresponding to the requested function as follows.

例えばサーバプロセス1610のサーバディスパッチャ1611は、サーバスケルトン1612にコーディングされている複数のスレッド1613から、要求された関数に対応するスレッド1613を選択する。ここで選択されるスレッド1613は、実施の形態1で説明した関数ハンドラ403に相当する。サーバプロセス1610のスレッド1613は、要求された処理を実行してその実行結果を関数戻り値としてクライアントプロセス1600に送信する。   For example, the server dispatcher 1611 of the server process 1610 selects a thread 1613 corresponding to the requested function from a plurality of threads 1613 coded in the server skeleton 1612. The thread 1613 selected here corresponds to the function handler 403 described in the first embodiment. The thread 1613 of the server process 1610 executes the requested processing and transmits the execution result to the client process 1600 as a function return value.

次に、実施の形態2にかかるクライアントプロセス1600と、サーバプロセス1610,1620とを生成する生成方法について説明する。図14は、実施の形態2のクライアントプロセスとサーバプロセスとを生成する画像形成装置用通信プログラム生成装置(以下、「スタブジェネレータ」という。)の機能的構成を示すブロック図である。スタブジェネレータは、メッセージファイルからヘッダと、クライアントスタブと、サーバスケルトンを自動生成するものである。   Next, a generation method for generating the client process 1600 and the server processes 1610 and 1620 according to the second embodiment will be described. FIG. 14 is a block diagram showing a functional configuration of an image forming apparatus communication program generating apparatus (hereinafter referred to as “stub generator”) that generates a client process and a server process according to the second embodiment. The stub generator automatically generates a header, a client stub, and a server skeleton from a message file.

図14に示すように、スタブジェネレータは、メッセージファイル1701を入力する入力部1702と、メッセージファイル1701に記述された内容の構文チェックを行う構文解析部1703と、メッセージファイル1701の記述内容から、ヘッダ1706とクライアントスタブ1707と、サーバスケルトン1705とを生成してハードディスク等の記憶媒体に格納するコード生成部1704とを備えている。   As shown in FIG. 14, the stub generator generates an header from an input unit 1702 that inputs a message file 1701, a syntax analysis unit 1703 that checks the syntax of the contents described in the message file 1701, and the description contents of the message file 1701. 1706, a client stub 1707, and a code generator 1704 that generates a server skeleton 1705 and stores it in a storage medium such as a hard disk.

まず、スタブジェネレータに入力されるメッセージファイル1701と、スタブジェネレータで生成されるヘッダ1706、クライアントスタブ1707およびサーバスケルトン1705について説明する。   First, the message file 1701 input to the stub generator, the header 1706 generated by the stub generator, the client stub 1707, and the server skeleton 1705 will be described.

メッセージファイル1701は、プロセス間通信の通信内容をC言語などのソースコードで記述したソースファイルである。図15は、メッセージファイルの記述例を示す説明図である。図15に示すように、メッセージファイル1701には、別のメッセージファイルや、C言語記述のインクルードヘッダを宣言するインクルード宣言と、サーバプロセスとクライアントプロセスの間で送受信するメッセージを記述したメッセージ記述と、クライアントプロセスからサーバプロセスに対して発行する関数の宣言などが記述されている。   A message file 1701 is a source file in which communication contents of inter-process communication are described in a source code such as C language. FIG. 15 is an explanatory diagram of a description example of a message file. As shown in FIG. 15, the message file 1701 includes another message file, an include declaration for declaring an include header of a C language description, a message description describing a message transmitted and received between the server process and the client process, The declaration of the function issued from the client process to the server process is described.

メッセージは、主としてサーバプロセスとクライアントプロセスとの間でイベ
ントや通知を行う際に発行するものであり、メッセージファイル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 message file 1701, a message name, a message ID, a message direction, and a message content are described. It is supposed to be.

メッセージ方向には、「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 message file 1701, only the function name, function type, and argument are described, and the processing contents of the function are not described.

クライアントスタブ1707は、クライアントプログラムから呼び出される関数のサーバプロセスに対する発行を記述したソースファイルである。クライアントスタブ1707をコンパイルしてライブラリ化し、クライアントプログラムとリンクすることにより、クライアントプログラムからの関数コールがクライアントスタブ1707を介してサーバプロセスへ発行されるようになっている。   The client stub 1707 is a source file describing the issuance of a function called from the client program to the server process. By compiling the client stub 1707 into a library and linking with the client program, a function call from the client program is issued to the server process via the client stub 1707.

図16はスタブジェネレータにより生成されるクライアントスタブ1707の一例を示す説明図である。図16に示すように、クライアントスタブ1707には、後述するサーバスケルトン1705に登録された関数ハンドラを呼び出すことにより、関数コールが行われるようになっている。サーバスケルトン1705は、クライアントスタブ1707から呼び出された関数ハンドラとメッセージハンドラを登録したソースファイルである。   FIG. 16 is an explanatory diagram showing an example of a client stub 1707 generated by the stub generator. As shown in FIG. 16, a function call is performed on the client stub 1707 by calling a function handler registered in a server skeleton 1705 described later. The server skeleton 1705 is a source file in which a function handler called from the client stub 1707 and a message handler are registered.

図17は、スタブジェネレータにより生成されるサーバスケルトン1705の一例を示す説明図である。図17に示すように、サーバスケルトン1705にはクライアントスタブ1707に記述された関数に対応した関数ハンドラが登録されている。   FIG. 17 is an explanatory diagram showing an example of the server skeleton 1705 generated by the stub generator. As shown in FIG. 17, function handlers corresponding to the functions described in the client stub 1707 are registered in the server skeleton 1705.

関数ハンドラでは引数の受け渡し部のみが記述され、処理内容を記述する実装記述部は空欄の状態で生成されている。この実装記述部には、クライアントプログラムからクライアントスタブ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 client stub 1707 can be freely described by the developer of the server program. The header 1706 is a source file describing definitions and declarations common to the server skeleton 1705 and the client stub 1707.

図18はスタブジェネレータにより生成されるヘッダ1706の一例を示す説明図である。図18に示すように、ヘッダ1706には、メッセージファイル1701に記述されたインクルード宣言、メッセージID、メッセージの構造体などのメッセージ宣言、関数宣言および関数ハンドラ宣言などが記述された状態で生成されるようになっている。   FIG. 18 is an explanatory diagram showing an example of the header 1706 generated by the stub generator. As shown in FIG. 18, the header 1706 is generated in a state where an include declaration described in the message file 1701, a message ID, a message declaration such as a message structure, a function declaration, a function handler declaration, and the like are described. It is like that.

次に、スタブジェネレータによるサーバスケルトン1705、クライアントスタブ1707およびヘッダ1706の生成処理について説明する。図19は、サーバスケルトン、クライアントスタブおよびヘッダの生成処理のフローチャートである。   Next, generation processing of the server skeleton 1705, the client stub 1707, and the header 1706 by the stub generator will be described. FIG. 19 is a flowchart of a server skeleton, client stub, and header generation process.

スタブジェネレータの構文解析部1703は、メッセージファイル1701に記述された関数宣言、メッセージ定義、インクルード宣言、C言語記述の文法チェックを行い(ステップS1801)、さらにメッセージファイル1701に定義されている関数名およびメッセージ定義の中のメッセージID、メッセージ名の一意性の判断を行う(ステップS1802)。   The syntax analysis unit 1703 of the stub generator performs a grammar check on the function declaration, message definition, include declaration, and C language description described in the message file 1701 (step S1801), and further, the function name and the function name defined in the message file 1701 The uniqueness of the message ID and message name in the message definition is determined (step S1802).

そして、関数宣言、メッセージ定義、インクルード宣言の記述に文法エラーがあった場合、あるいは関数名、メッセージ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 header 1706, a server skeleton 1705, and a client stub 1707 from the description content of the message file 1701. Specifically, the include declaration and C language description of the message file 1701 are transferred as they are to the header 1706, and the message structure described in the message definition of the message file 1701 is copied to the header 1706 (step S1805).

また、コード生成部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 client stub 1707 for each function declaration described in the message file 1701, and the function call message generation call and the function handler are included in the processing of the function. Each system call for calling and return value release is described (step S1807). A function return value waiting system call that waits for a return value of the issued function is internally issued for the function handler call.

このようにスタブジェネレータにより、クライアントスタブ1707とサーバスケルトン1705とヘッダ1706を生成したら、次にサーバオブジェクトおよびクライアントオブジェクトを完成させる。   When the client stub 1707, the server skeleton 1705, and the header 1706 are generated by the stub generator in this manner, the server object and the client object are then completed.

サーバプログラムの開発者は、サーバスケルトン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 server skeleton 1705 using an editor or the like, and compiles the server skeleton 1705 together with the header 1706 to Create a stub object. In addition, a function handler registered in the server skeleton 1705 is declared, a message handler that transmits / receives a message described in the message file 1701 to / from a client process, an error handler that performs error processing, server initialization, a server dispatcher Create and compile a server source file that describes the issuance of system calls such as startup, and link with the server stub object to complete the server program.

一方、クライアントスタブ1707はヘッダ1706とともにコンパイルしてクライアントスタブオブジェクトを生成する。サーバプロセスごとにクライアントスタブオブジェクトを生成し、生成した複数のクライアントスタブオブジェクトをライブラリとする。   On the other hand, the client stub 1707 is compiled with the header 1706 to generate a client stub object. A client stub object is generated for each server process, and the plurality of generated client stub objects are used as a library.

また、関数の発行、関数ハンドラの宣言、エラー処理を行うエラーハンドラの宣言、クライアントプロセスとの間でメッセージファイル1701に記述されたメッセージの送受信を行うメッセージハンドラ、およびクライアントプロセスの初期化やクライアントディスパッチャ起動等のシステムコールの発行を記述したクライアントプログラムを作成してコンパイルし、スタブのライブラリとリンクすることによりクライアントプログラムを完成させる。   Also, function issuance, function handler declaration, error handler declaration for error handling, message handler for sending and receiving messages described in the message file 1701 with the client process, and initialization of the client process and client dispatcher A client program describing the issuance of system calls such as activation is created and compiled, and the client program is completed by linking with a stub library.

図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 client stub 1707 and the server skeleton 1705 by describing the function declaration in the message file 1701. In addition, since the implementation description part of the generated server skeleton 1705 is blank, the program developer can easily change the processing contents of the function as necessary.

このため複合機100に可変性をもたせることができるとともに、多種多様な機能を実現させることができる。さらに、サードベンダーなどの他社がクライアントプログラムの開発を行う場合でも、クライアントプログラムには提供される関数コールを記述するだけでプロセス間通信が可能となるので、内部の通信プロトコルの隠蔽性を保つことが可能となる。   For this reason, the multifunction device 100 can be provided with variability and various functions can be realized. In addition, even when a third-party vendor or other company develops a client program, inter-process communication is possible simply by describing the function call provided in the client program, so the internal communication protocol is concealed. Is possible.

また、実施の形態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 MFP 100 according to the first embodiment, an application process that is a client process operates in the same MFP as each control service that is a server process. In the MFP 100 according to the third embodiment, each control service provides a service using an application process of another MFP connected to a network as a client process.

図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 network 1340 such as a LAN. In FIG. 21, two MFPs 1300a and 1300b are connected via a network 1340. However, a configuration in which three or more MFPs are connected via a network 1340 may be used.

図21に示すように、ネットワーク1340上の各複合機1300a,1300bは、実施の形態1の複合機と同様の構成となっている。このため、これらの構成について詳細な説明は省略する。   As shown in FIG. 21, each multifunction device 1300a, 1300b on the network 1340 has the same configuration as the multifunction device of the first embodiment. For this reason, detailed description about these structures is abbreviate | omitted.

実施の形態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 copy application 1312, the printer application 1311, the scanner application 1314, and the fax application 1313, and the control of the ECS 1324, the MCS 1325, the FCS 1327, the NCS 1328, and the like. The service process is a control process or a client process using the SRM 1323 as a server process. In addition, a control process such as ECS 1324, MCS 1325, FCS 1327, NCS 1328, etc. operating inside another multifunction peripheral connected to the network is used as the server process. Client process.

また、実施の形態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 copy application 1312, a printer application 1311, a scanner application 1314, or a fax application 1313 operating in another multifunction peripheral connected to the network. It also becomes a process.

実施の形態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, SRM 1323, and each application are generated and executed on a general-purpose OS as processes, as in the case of the MFP 100 of the first embodiment. A plurality of threads are activated in each process, and parallel execution is realized by switching the CPU occupation time of these threads under the management of the general-purpose OS.

また、実施の形態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 MFP 100 of the first embodiment, and also receives function return values and OUT direction messages from other MFPs connected to the network 1340. Monitoring.

このため、ネットワーク上の他の複合機のプロセスとプロセス間通信を行えるように、クライアントプロセスから発行する関数の形式およびメッセージの形式は、ネットワークアドレスなどの情報を指定できるような形式で提供される。   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 multi-function device 100 of the first embodiment, but further from the thread of the client process operating in another multi-function device connected to the network 1340. The function calls and messages in the IN direction are also monitored.

サーバプロセスでは、関数コールをサーバディスパッチャで受信したときに実行される関数ハンドラが、ネットワーク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 network 1340. It can be specified. The message sent from the server process can also specify a network address.

次に、このように構成された実施の形態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 network 1340 in the multifunction machines 1300a and 1300b according to the third embodiment configured as described above will be described. FIG. 22 is an explanatory diagram illustrating a data sequence between processes of the printer application and the ECS when a printer operation is performed using two multifunction peripherals connected to the network according to the third embodiment.

プリンタアプリプロセス1311が印刷要求を受信した場合には(ステップS1401)、実施の形態1において図5を用いて説明したとおり、複合機1300aのプリンタアプリプロセス1311のスレッドがECSプロセス1324に対して、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを順次行う。   When the printer application process 1311 receives the print request (step S1401), as described with reference to FIG. 5 in the first embodiment, the thread of the printer application process 1311 of the multi-function peripheral 1300a sends the thread to the ECS process 1324. A job operation mode setting function call and a job start request function call are sequentially performed.

実施の形態3では、このとき、複合機1300aのプリンタアプリプロセス1311が、ネットワーク1340を介して接続された他の複合機1300bのネットワークアドレスを指定し、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを行っている(ステップS1402、S1404)。   In the third embodiment, at this time, the printer application process 1311 of the multifunction device 1300a designates the network address of another multifunction device 1300b connected via the network 1340, and the job operation mode setting function call and the job start request function A call is made (steps S1402 and S1404).

これにより、ジョブ動作モード設定関数コール、ジョブスタート要求関数コールは、自己の複合機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 ECS process 1324 of the MFP 1300b designated by the network address instead of the ECS process 1324 of the MFP 1300a. Then, the thread that made each function call waits for a function return.

複合機1300bのECSプロセス1324では、サーバディスパッチャがネットワーク1340を介してジョブ動作モード設定関数コール、ジョブスタート要求関数コールをそれぞれ受信し、各関数ハンドラによってプリンタジョブの動作モード設定、プリンタジョブの開始処理を行う。そして、ジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を、複合機1300aのネットワークアドレスを指定して送信する(ステップS1403、S1405)。   In the ECS process 1324 of the MFP 1300b, the server dispatcher receives a job operation mode setting function call and a job start request function call via the network 1340, and sets the printer job operation mode and printer job start processing by each function handler. I do. Then, the return value of the job operation mode setting function and the return value of the job open function are transmitted by designating the network address of the multifunction peripheral 1300a (steps S1403 and S1405).

複合機1300aのプリンタアプリプロセス1311では、クライアントディスパッチャによって複合機1300bのECSプロセス1324からのジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を受信する。そして、実施の形態1の複合機と同様に、関数戻り待ち状態のスレッドを関数戻り待ちキューから抽出して、ジョブ動作モード設定関数の戻り値とジョブオープン関数の戻り値のそれぞれを抽出されたスレッドに送信する。   In the printer application process 1311 of the multifunction device 1300a, the return value of the job operation mode setting function and the return value of the job open function from the ECS process 1324 of the multifunction device 1300b are received by the client dispatcher. Then, as in the case of the MFP of the first embodiment, the function return waiting state thread is extracted from the function return waiting queue, and the return value of the job operation mode setting function and the return value of the job open function are extracted. Send to thread.

これ以降のECSプロセス1324、MCSプロセス1325、SRMプロセス123との間のプロセス間通信は同一複合機内部で行われるものであり、実施の形態1で説明したプリンタ動作と同様である。これにより、複合機1300aにおける印刷要求に対して、実際のプリント処理が複合機1300bで行われることになる。   The subsequent inter-process communication with the ECS process 1324, the MCS process 1325, and the SRM process 123 is performed inside the same multifunction peripheral, and is the same as the printer operation described in the first embodiment. Thus, in response to a print request in the multifunction device 1300a, the actual print processing is performed in the multifunction device 1300b.

複合機1300bにおけるプリント処理が終了すると、複合機1300bのECSプロセス1324はジョブエンド通知メッセージをプリンタアプリプロセスに送信する。このとき、ECSプロセス1324のサーバディスパッチャは、ネットワーク1340上の複合機1300aのネットワークアドレスを指定してジョブエンド通知メッセージを送信する(ステップS1406)。   When the print processing in the multifunction device 1300b is completed, the ECS process 1324 of the multifunction device 1300b transmits a job end notification message to the printer application process. At this time, the server dispatcher of the ECS process 1324 designates the network address of the MFP 1300a on the network 1340 and transmits a job end notification message (step S1406).

複合機1300aのプリンタアプリプロセス1311では、クライアントディスパッチャによって、ネットワークを介して送信されてきたジョブエンド通知メッセージを受信し、これによりプリンタ動作を完了する。   In the printer application process 1311 of the multifunction peripheral 1300a, the client dispatcher receives a job end notification message transmitted via the network, thereby completing the printer operation.

このように、実施の形態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 ECS process 1324 that operates in the multifunction device 1300b, and is generated in the multifunction device 1300a. In response to the request, the other multifunction device 1300b on the network 1340 can perform print processing, so that various functions can be realized using not only the requested multifunction device but also the multifunction device on the network.

例えば、複合機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 ECS process 1324 in the network. If processing such as switching to a function call to the ECS process 1324 of another multifunction device 1300b on 1340 is performed, it is possible to prevent time from starting printing and to improve usability.

なお、実施の形態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 network 1340 has been described by giving an example of the printer operation. However, in the scanner operation, the copy operation, and the facsimile transmission operation, the complex operation is performed. Inter-process communication between the scanner application process 1314, the copy application process 1312, the fax application process 1313, and the ECS process 1324 in the apparatus 1300a is performed in the same manner as in the case of the printer operation.

また、実施の形態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 ECS process 1324, and the network 1340 has been described. However, control services other than the application process and the ECS process 1324 and the system resource manager (SRM) ) The inter-process communication 1323 is performed in the same manner as the communication between the application process and the ECS process 1324.

さらに、実施の形態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 ECS process 1324 in another MFP on the network 1340 directly perform inter-process communication, but the applications of different MFPs via the NCS 1328. The process and the ECS process 1324 may be configured to communicate with each other.

すなわち、NCS1328において、アプリプロセスからの関数コールやメッセージを一旦受信して、ネットワーク1340上の他の複合機1300bのネットワークアドレスを指定した上で、関数コールやメッセージを複合機1300bのNCSプロセス1328へ送信するように構成することも可能である。   That is, the NCS 1328 temporarily receives a function call or message from the application process, designates the network address of another multifunction device 1300b on the network 1340, and then sends the function call or message to the NCS process 1328 of the multifunction device 1300b. It can also be configured to transmit.

この場合には、アプリプロセスやECSプロセス1324において、ネットワークアドレスに関する処理の追加が不要となり、モジュール間の独立性がより高まるので、複合機により可変性を持たせることができるという利点がある。
(実施の形態4)
実施の形態3にかかる複合機1300a,1300bでは、ネットワーク1340に接続された他の複合機のアプリプロセスをクライアントプロセスとして各コントロールサービスがサービスを提供していた。この実施の形態4にかかる複合機は、ネットワークに接続された他の複合機のコントロールサービスをクライアントプロセスとして、各コントロールサービスがサービスを提供するものである。
In this case, in the application process and the ECS process 1324, it is not necessary to add processing related to the network address, and the independence between the modules is further increased. Therefore, there is an advantage that variability can be provided by the multifunction peripheral.
(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 network 1340 as a client process. In the MFP according to the fourth embodiment, each control service provides a service using the control service of another MFP connected to the network as a client process.

実施の形態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 network 1340 such as a LAN. Since each multifunction device 1300a, 1300b on the network 1340 in the fourth embodiment has the same configuration as the multifunction device in the first embodiment, detailed description of these configurations is omitted.

実施の形態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 copy application 1312, a printer application 1311, a scanner application 1314, and a fax application 1313, and control services such as an ECS 1324, MCS1325, FCS1327, and NCS1328 are mainly used. Is a client process using the control service or SRM 1323 as a server process, and further, a control service such as ECS 1324, MCS 1325, FCS 1327, and NCS 1328 operating inside another multifunction peripheral connected to the network is referred to as a server process. Client process.

また、実施の形態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 ECS 1324, MCS 1325, FCS 1327, and NCS 1328 and the process of SRM 1323 are mainly the application service or control service or SRM 1323 as a client process. It is also a server process that uses a control service operating inside another multifunction peripheral connected to the network as a client process.

実施の形態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 network 1340 or server processes such as SRM 1323.

コントロールサービスなどのクライアントプロセスで起動されるクライアントディスパッチャは、実施の形態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 network 1340, similarly to the multi-function peripherals 1300a and 1300b of the third embodiment. The function return value and the reception of the message in the OUT direction are also monitored.

このため、ネットワーク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 network 1340. 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 network 1340 Direction messages are also monitored.

実施の形態4においても、サーバプロセスおよびクライアントプロセスとなるECS1324、MCS1325、FCS1327、NCS1328などのコントロールサービスおよびSRM1323では、関数コールをサーバディスパッチャで受信したときに実行される関数ハンドラが、関数コールしたクライアントプロセスの存在する複合機のネットワークアドレスなどを指定できるようになっている。また、サーバプロセスから送信するメッセージもネットワークアドレスなどを指定できるようになっている。   Also in the fourth embodiment, in the control service such as ECS 1324, MCS 1325, FCS 1327, NCS 1328 and SRM 1323 which are server processes and client processes, the function handler executed when the function call is received by the server dispatcher is the client that made the function call. You can specify the network address of the multifunction device where the process exists. The message sent from the server process can also specify a network address.

次に、このように構成された実施の形態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 network 1340 in the multifunction machines 1300a and 1300b according to the fourth embodiment configured as described above will be described. FIG. 23 is an explanatory diagram showing a data sequence among FCS, ECS, and MCS processes when a facsimile transmission operation is performed using two multifunction peripherals connected to the network of the fourth embodiment.

FCSプロセス1327がファックスアプリプロセス1313から送信スタート要求を受信した場合には(ステップS1501)、複合機1300aのFCSプロセス1327のスレッドが、ネットワーク1340に接続された他の複合機1300bのネットワークアドレスを指定して、ジョブ動作モード設定関数コールとジョブスタート要求関数コールを順次行う(ステップS1502、S1504)。   When the FCS process 1327 receives a transmission start request from the fax application process 1313 (step S1501), the thread of the FCS process 1327 of the MFP 1300a specifies the network address of another MFP 1300b connected to the network 1340. Then, the job operation mode setting function call and the job start request function call are sequentially performed (steps S1502 and S1504).

これにより、ジョブ動作モード設定関数コール、ジョブスタート要求関数コールは、ネットワークアドレスで指定された複合機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 ECS process 1324 operating on the multifunction peripheral 1300b specified by the network address.

複合機1300bのECSプロセス1324では、サーバディスパッチャがネットワーク1340を介してジョブ動作モード設定関数コール、ジョブスタート要求関数コールをそれぞれ受信し、各関数ハンドラによってプリンタジョブの動作モード設定、プリンタジョブの開始処理を行う。そして、ジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を、複合機1300aのネットワークアドレスを指定して送信する(ステップS1503、S1505)。   In the ECS process 1324 of the MFP 1300b, the server dispatcher receives a job operation mode setting function call and a job start request function call via the network 1340, and sets the printer job operation mode and printer job start processing by each function handler. I do. Then, the return value of the job operation mode setting function and the return value of the job open function are transmitted by designating the network address of the MFP 1300a (steps S1503 and S1505).

複合機1300aのFCSプロセス1327では、クライアントディスパッチャによって複合機1300bのECSプロセス1324からのジョブ動作モード設定関数の戻り値およびジョブオープン関数の戻り値を受信する。そして、実施の形態1の複合機と同様に、関数戻り待ち状態のスレッドを関数戻り待ちキューから抽出して、ジョブ動作モード設定関数の戻り値とジョブオープン関数の戻り値のそれぞれを抽出されたスレッドに送信する。   In the FCS process 1327 of the MFP 1300a, the return value of the job operation mode setting function and the return value of the job open function from the ECS process 1324 of the MFP 1300b are received by the client dispatcher. Then, as in the case of the MFP of the first embodiment, the function return waiting state thread is extracted from the function return waiting queue, and the return value of the job operation mode setting function and the return value of the job open function are extracted. Send to thread.

複合機1300bのECSプロセス1324は、MCSプロセス1325に対してメモリ確保要求関数コールを行い(ステップS1505)、またSRMプロセス123に対してスキャナエンジンの資源獲得要求関数コールを行う(ステップS1506)。かかる関数コールに対するMCSプロセス1325およびSRMプロセス1323の処理は、実施の形態1で説明したとおりである。   The ECS process 1324 of the MFP 1300b makes a memory allocation request function call to the MCS process 1325 (step S1505), and makes a scanner engine resource acquisition request function call to the SRM process 123 (step S1506). The processing of the MCS process 1325 and the SRM process 1323 for such a function call is as described in the first embodiment.

複合機1300bのECSプロセス1324では、スキャナエンジンの資源獲得関数の戻り値を受信したら、複合機1300aのネットワークアドレスを指定したスキャンパラメータ要求メッセージを、複合機1300aのFCSプロセス1327にネットワークを介して送信する(ステップS1507)。   When the ECS process 1324 of the MFP 1300b receives the return value of the scanner engine resource acquisition function, it sends a scan parameter request message specifying the network address of the MFP 1300a to the FCS process 1327 of the MFP 1300a via the network. (Step S1507).

複合機1300aのFCSプロセス1327では、このスキャナパラメータ確定要求メッセージを受信すると、スキャナパラメータのメッセージを、複合機1300bのネットワークアドレスを指定することにより、複合機1300bのECSプロセス1324に対してネットワークを介して送信する(ステップS1508)。ECSプロセス1324では、サーバディスパッチャがスキャナパラメータメッセージをネットワークを介して受信する。   When the FCS process 1327 of the MFP 1300a receives this scanner parameter confirmation request message, the scanner parameter message is sent to the ECS process 1324 of the MFP 1300b via the network by designating the network address of the MFP 1300b. (Step S1508). In the ECS process 1324, the server dispatcher receives the scanner parameter message over the network.

これ以降のプロセス間通信は、同一複合機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 ECS process 1324 of the multifunction device 1300b designates the network address of the multifunction device 1300a on the network 1340 and sends a scan end notification message to the FCS process of the multifunction device 1300a. It transmits to 1327 (step S1509).

複合機1300aのFCSプロセス1327では、クライアントディスパッチャによって、ネットワーク1340を介して送信されてきたスキャン終了通知メッセージを受信し、これによりファクシミリ送信動作を完了する。   In the FCS process 1327 of the MFP 1300a, the client dispatcher receives the scan end notification message transmitted via the network 1340, thereby completing the facsimile transmission operation.

このように、実施の形態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 FCS process 1327 operating on the MFP 1300a connected to the network and the ECS process 1324 operating on the MFP 1300b. Since a facsimile transmission process can be performed by another multifunction device 1300b on the network 1340 in response to a request generated by the device 1300a, various functions can be realized by using not only the requested multifunction device but also the multifunction device on the network 1340. can do.

例えば、複合機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 FCS process 1327 determines this and makes a function call to the ECS process 1324. If processing such as switching to a function call to the ECS process 1324 of another multifunction device 1300b on the network 1340 is performed, facsimile transmission can be performed immediately, and usability of the multifunction device can be improved.

なお、実施の形態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 network 1340 has been described by giving an example of the facsimile transmission operation. However, in the scanner operation, the copy operation, and the print operation, the complex operation is also performed. The inter-process communication between the control service in the machine 1300a and the control service in the multifunction machine 1300b is performed in the same manner.

また、実施の形態4の複合機では、FCSプロセス1327とECSプロセス1324とのネットワーク1340を介したプロセス間通信に説明したが、他のコントロールサービス間のネットワーク1340を介したプロセス間通信も、FCSプロセス1327とECSプロセス1324の通信と同様に行われる。   In the MFP according to the fourth embodiment, the interprocess communication between the FCS process 1327 and the ECS process 1324 via the network 1340 has been described. This is performed in the same manner as the communication between the process 1327 and the ECS process 1324.

さらに、実施の形態4の複合機では、FCSアプリプロセス1327とネットワーク1340上の別の複合機内のECSプロセス1324とが直接プロセス間通信を行っているが、この場合も、NCSプロセス1328を介して異なる複合機のコントロールサービス間の通信を行うように構成しても良い。   Further, in the MFP of the fourth embodiment, the FCS application process 1327 and the ECS process 1324 in another MFP on the network 1340 perform direct interprocess communication. In this case as well, the NCS process 1328 is used. You may comprise so that communication between the control services of a different multifunction device may be performed.

以上、実施の形態1〜4の複合機において使用した関数、メッセージはすべて一例であり、とくにこれらに限定されるものではなく、任意の関数やメッセージを定義して使用することができる。   As described above, the functions and messages used in the MFPs of Embodiments 1 to 4 are all examples, and are not particularly limited to these, and arbitrary functions and messages can be defined and used.

本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。   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.

この発明の実施の形態の画像形成装置(複合機)の構成を示すブロック図である。1 is a block diagram illustrating a configuration of an image forming apparatus (multifunction machine) according to an embodiment of the present invention. 実施の形態1の複合機におけるサーバプロセスとクライアントプロセスの関係を示すブロック図である。3 is a block diagram illustrating a relationship between a server process and a client process in the multifunction machine according to the first embodiment. FIG. 実施の形態1の複合機で動作するクライアントプロセスの構成を示すブロック図である。FIG. 3 is a block diagram illustrating a configuration of a client process that operates on the multifunction peripheral according to the first embodiment. 実施の形態1の複合機で動作するサーバプロセスの構成を示すブロック図である。3 is a block diagram illustrating a configuration of a server process that operates in the multifunction peripheral according to the first embodiment. FIG. 実施の形態1の複合機でプリンタ動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間のデータシーケンスを示す説明図である。FIG. 6 is an explanatory diagram illustrating a data sequence between processes of an application, a control service, and a system resource service when a printer operation is performed in the multifunction peripheral according to the first embodiment. 実施の形態1の複合機でプリンタ動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。FIG. 6 is an explanatory diagram illustrating a function and a message transmission / reception relationship between processes of an application, a control service, and a system resource service when a printer operation is performed in the multifunction peripheral according to the first embodiment. 実施の形態1の複合機でスキャナ動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間のデータシーケンスを示す説明図である。6 is an explanatory diagram illustrating a data sequence between processes of an application, a control service, and a system resource service when a scanner operation is performed in the multifunction peripheral according to the first embodiment. FIG. 実施の形態1の複合機でスキャナ動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。FIG. 6 is an explanatory diagram illustrating a function and a message transmission / reception relationship between processes of an application, a control service, and a system resource service when a scanner operation is performed in the multifunction peripheral according to the first embodiment. 実施の形態1の複合機でコピー動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間のデータシーケンスを示す説明図である。6 is an explanatory diagram illustrating a data sequence between processes of an application, a control service, and a system resource service when a copying operation is performed in the multifunction peripheral according to the first embodiment. FIG. 実施の形態1の複合機でコピー動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。FIG. 6 is an explanatory diagram illustrating a relationship between a function and a message transmission / reception among processes of an application, a control service, and a system resource service when a copying operation is performed in the multifunction peripheral according to the first embodiment. 実施の形態1の複合機でファクシミリ送信動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間のデータシーケンスを示す説明図である。6 is an explanatory diagram illustrating a data sequence between processes of an application, a control service, and a system resource service when a facsimile transmission operation is performed in the multifunction machine according to the first embodiment. FIG. 実施の形態1の複合機でファックス送信動作を行う場合のアプリケーション、コントロールサービスおよびシステムリソースサービスの各プロセス間の関数およびメッセージの送受信の関係を示す説明図である。FIG. 6 is an explanatory diagram illustrating functions and message transmission / reception relationships between processes of an application, a control service, and a system resource service when a facsimile transmission operation is performed in the multifunction peripheral according to the first embodiment. 実施の形態2の複合機100上で動作するサーバプロセスとクライアントプロセスの関係を詳細に示すブロック図である。6 is a block diagram illustrating in detail a relationship between a server process and a client process operating on the multifunction peripheral 100 according to the second embodiment. FIG. 実施の形態2のクライアントプロセスとサーバプロセスとを生成する画像形成装置用通信プログラム生成装置(スタブジェネレータ)の機能的構成を示すブロック図である。10 is a block diagram illustrating a functional configuration of a communication program generation apparatus (stub generator) for an image forming apparatus that generates a client process and a server process according to Embodiment 2. FIG. メッセージファイルの記述例を示す説明図である。It is explanatory drawing which shows the example of a description of a message file. スタブジェネレータにより生成されるクライアントスタブの一例を示す説明図である。It is explanatory drawing which shows an example of the client stub produced | generated by the stub generator. スタブジェネレータにより生成されるサーバスケルトンの一例を示す説明図である。It is explanatory drawing which shows an example of the server skeleton produced | generated by a stub generator. スタブジェネレータにより生成されるヘッダの一例を示す説明図である。It is explanatory drawing which shows an example of the header produced | generated by a stub generator. サーバスケルトン、クライアントスタブおよびヘッダの生成処理のフローチャートである。It is a flowchart of a production | generation process of a server skeleton, a client stub, and a header. クライアントプログラムから関数コールを行った場合におけるサーバプログラムとの呼び出しおよび応答のシーケンスを示す説明図である。It is explanatory drawing which shows the sequence of a call and a response with a server program when a function call is performed from a client program. 実施の形態2にかかる複合機の構成を示すブロック図である。3 is a block diagram illustrating a configuration of a multifunction machine according to a second embodiment; FIG. 実施の形態2のネットワークに接続された2つの複合機を利用してプリンタ動作を行う場合のプリンタアプリとECSプロセス間のデータシーケンスを示す説明図である。FIG. 10 is an explanatory diagram showing a data sequence between a printer application and an ECS process when a printer operation is performed using two multifunction peripherals connected to the network according to the second embodiment. 実施の形態3のネットワークに接続された2つの複合機を利用してファクシミリ送信動作を行う場合のFCSとECSとMCSのプロセス間のデータシーケンスを示す説明図である。FIG. 10 is an explanatory diagram illustrating a data sequence between FCS, ECS, and MCS processes when a facsimile transmission operation is performed using two multifunction peripherals connected to the network according to the third embodiment.

符号の説明Explanation of symbols

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, 1300b MFP 101, 1301 Monochrome line printer 102, 1302 Color line printer 103, 1303 Scanner 104, 1304 Facsimile 110, 1310 Software group 111, 1311 Printer application 112, 1312 Copy application 113, 1313 Fax application 114, 1314 Scanner application 115, 1315 Net file application 116, 1316 Process inspection application 120, 1320 Platform 121, 1321 General-purpose 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 Application 201, 1600 Client process 202, 1610, 1620 Server process 203, 1603 Client dispatcher 204, 1611 Server dispatcher 1601, 1613, 1623 Thread 1602 Client stub 1612, 1622 Server skeleton

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.
前記プログラムは、前記サーバプロセスへの関数呼び出しに対する関数戻り値を受信すると、受信した関数戻り値を前記関数呼び出しを行ったスレッドに受け渡すクライアント監視手段を備えたことを特徴とする請求項1記載の情報処理装置。   2. The program according to claim 1, further comprising client monitoring means for receiving a function return value for a function call to the server process and delivering the received function return value to a thread that has made the function call. Information processing device. 前記クライアント監視手段は、スレッドで実現されることを特徴とする請求項2記載の情報処理装置。   The information processing apparatus according to claim 2, wherein the client monitoring unit is realized by a thread. 前記クライアント監視手段は、関数の呼び出し後に関数戻り値待ち状態のスレッドの識別子を一時的に格納する関数戻り待ちキューをさらに備え、前記サーバプロセスから前記関数戻り値を受信したときに、受信した関数戻り値を、前記関数戻り待ちキューに格納された識別子の前記スレッドに送信することを特徴とする請求項2又は3記載の情報処理装置。   The client monitoring means further includes a function return waiting queue for temporarily storing an identifier of a thread waiting for a function return value after the function is called, and the function received when the function return value is received from the server process. 4. The information processing apparatus according to claim 2, wherein a return value is transmitted to the thread having the identifier stored in the function return waiting queue. 前記サーバプロセスおよび前記クライアントプロセスは、さらにイベントまたは通知に関するメッセージの送信,受信または送受信の何れかを行うことを特徴とする請求項2乃至4いずれか一項記載の情報処理装置。   The information processing apparatus according to claim 2, wherein the server process and the client process further perform any one of transmission, reception, and transmission / reception of a message related to an event or a notification. 前記クライアント監視手段は、さらにサーバプロセスからのメッセージの受信を監視するものであることを特徴とする請求項5記載の情報処理装置。   6. The information processing apparatus according to claim 5, wherein the client monitoring unit further monitors reception of a message from a server process. 前記クライアント監視手段は、受信したメッセージに基づいた処理を実行するメッセージハンドラをさらに備えたことを特徴とする請求項6記載の情報処理装置。   The information processing apparatus according to claim 6, wherein the client monitoring unit further includes a message handler that executes processing based on the received message. 前記サーバプロセスは、前記クライアントプロセスからの関数呼び出しを監視するサーバ監視手段を備えたことを特徴とする請求項1乃至いずれか一項記載の情報処理装置。 The server process, the information processing apparatus of any one of claims 1 to 7, characterized in that it comprises a server monitoring means for monitoring the function call from the client process. 前記サーバ監視手段は、複数のクライアントプロセスからの関数呼び出しを監視することを特徴とする請求項8に記載の情報処理装置。   The information processing apparatus according to claim 8, wherein the server monitoring unit monitors function calls from a plurality of client processes. 前記サーバ監視手段は、前記クライアントプロセスから関数呼び出しを受信したときに、呼び出された関数に対応した処理を実行する関数ハンドラを備えたことを特徴とする請求項8又は9記載の情報処理装置。   The information processing apparatus according to claim 8, wherein the server monitoring unit includes a function handler that executes a process corresponding to the called function when a function call is received from the client process. 前記サーバ監視手段は、さらに前記クライアントプロセスからのメッセージの受信を監視することを特徴とする請求項8乃至10いずれか一項記載の情報処理装置。   The information processing apparatus according to claim 8, wherein the server monitoring unit further monitors reception of a message from the client process. 前記サーバ監視手段は、前記クライアントプロセスから受信したメッセージに基づいた処理を実行するメッセージハンドラをさらに備えたことを特徴とする請求項11記載の情報処理装置。   The information processing apparatus according to claim 11, wherein the server monitoring unit further includes a message handler that executes processing based on a message received from the client 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.
前記サーバプロセスが備える一または複数のスレッドは、前記他の情報処理装置のクライアントプロセスのスレッドに提供するサービスを実行することを特徴とする請求項13記載の情報処理装置。   The information processing apparatus according to claim 13, wherein the one or more threads included in the server process execute a service provided to a thread of a client process of the other information processing apparatus. 前記サーバプロセスは、前記他の情報処理装置のクライアントプロセスからの関数呼び出しを監視するサーバ監視手段を備えたことを特徴とする請求項13又は14記載の情報処理装置。   15. The information processing apparatus according to claim 13, wherein the server process includes server monitoring means for monitoring a function call from a client process of the other information processing apparatus. 前記サーバ監視手段は、さらに前記他の情報処理装置のクライアントプロセスからのメッセージの受信を監視することを特徴とする請求項15記載の情報処理装置。   The information processing apparatus according to claim 15, wherein the server monitoring unit further monitors reception of a message from a client process of the other information processing apparatus. 前記サーバプロセスは、さらに前記他の情報処理装置のクライアントプロセスに対しメッセージを送信することを特徴とする請求項13乃至16いずれか一項記載の情報処理装置。   The information processing apparatus according to claim 13, wherein the server process further transmits a message to a client process of the other information processing apparatus.
JP2005317219A 2001-08-27 2005-10-31 Information processing system Pending JP2006139776A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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