JP2017058952A - 情報処理装置、その制御方法及びプログラム - Google Patents

情報処理装置、その制御方法及びプログラム Download PDF

Info

Publication number
JP2017058952A
JP2017058952A JP2015183180A JP2015183180A JP2017058952A JP 2017058952 A JP2017058952 A JP 2017058952A JP 2015183180 A JP2015183180 A JP 2015183180A JP 2015183180 A JP2015183180 A JP 2015183180A JP 2017058952 A JP2017058952 A JP 2017058952A
Authority
JP
Japan
Prior art keywords
thread
new
program
extended
information processing
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.)
Granted
Application number
JP2015183180A
Other languages
English (en)
Other versions
JP2017058952A5 (ja
JP6771874B2 (ja
Inventor
岳史 木暮
Takeshi Kogure
岳史 木暮
祥弘 塚田
Yoshihiro Tsukada
祥弘 塚田
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015183180A priority Critical patent/JP6771874B2/ja
Priority to DE112016004212.4T priority patent/DE112016004212T5/de
Priority to PCT/JP2016/076358 priority patent/WO2017047476A1/en
Priority to CN201680052887.6A priority patent/CN108027752B/zh
Priority to US15/752,720 priority patent/US11397603B2/en
Publication of JP2017058952A publication Critical patent/JP2017058952A/ja
Publication of JP2017058952A5 publication Critical patent/JP2017058952A5/ja
Application granted granted Critical
Publication of JP6771874B2 publication Critical patent/JP6771874B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Facsimiles In General (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】余裕の無い実行環境であっても、非同期処理を実行することができる情報処理装置を提供する。【解決手段】VMが1つのスレッドのみしか利用できない実行環境を搭載するMFPにおいて、拡張アプリケーション207aが起動する際、VMスレッド205aと、VMスレッド205aを利用するVM203aが生成され、さらに、拡張アプリケーション207aからの要求に基づいてVMスレッド205aとは別に新たなVMスレッド205bが生成され、新たなVMスレッド205bを利用する新たなVM203bが生成される。【選択図】図2

Description

本発明は、情報処理装置、その制御方法及びプログラムに関し、特に、非同期処理を実行する情報処理装置、その制御方法及びプログラムに関する。
機能を拡張するために拡張プログラムをアドインする情報処理装置としての画像形成装置が知られている。このような画像形成装置は基本的な機能を実現するための制御プログラムの実行環境の他に、拡張プログラムを実行するための実行環境を有する。
具体的には、画像形成装置では、オペレーティングシステム(OS)上に、画像形成装置のプリンタ部、FAX部やスキャナ部を制御するための制御プログラムと、拡張プログラムの実行環境である拡張プログラム実行プラットフォームとが動作する。拡張プログラム実行プラットフォーム上には、拡張プログラムシステムサービスと拡張プログラムが動作する(例えば、特許文献1参照。)。
例えば、拡張プログラムを実行することによって外部装置に格納される画像データを取得して印刷する印刷処理を行う場合、外部装置との通信処理と、User Interface(UI)処理とを同期して実行することがある。このとき、外部装置通信処理の実行中にUI処理は中断されるため、外部装置通信処理の実行に何らかの要因で時間を要すると、UI処理が実行されず、UIを介した入力等を随時受け付けることができない。そこで、通常、印刷処理では、通信処理とUI処理を非同期で実行する。このとき、外部装置通信処理の実行中であってもUI処理は中断されないため、通信処理でトラブルが生じても、UI処理が実行され、その結果、UIを介した入力等を随時受け付けることができる。
通信処理とUI処理を非同期で実行、すなわち、非同期処理を実行するには、拡張プログラムにおいて複数のOSのスレッドを利用する必要がある。ここで、余裕のある実行環境、例えば、Java(登録商標)を利用可能な実行環境を搭載可能な画像形成装置では、拡張プログラムを実行する仮想マシン(Virtual Machine:VM)が複数のOSのスレッドを利用することができる。その結果、余裕のある実行環境を搭載可能な画像形成装置では、非同期処理を実行することができる。
特開2014−75088号公報
しかしながら、メモリ等が十分に備えられていない余裕の無い実行環境、例えば、Luaの利用を前提とする実行環境を搭載する画像形成装置では、VMが複数のOSのスレッドを利用することができず、非同期処理を実行することができないという問題がある。
本発明の目的は、余裕の無い実行環境であっても、非同期処理を実行することができる情報処理装置、その制御方法及びプログラムを提供することにある。
上記目的を達成するために、本発明の情報処理装置は、拡張プログラムを実行するVMを有し、該VMが1つのスレッドのみしか利用できない情報処理装置であって、前記拡張プログラムの実行に応じて新たなスレッドを生成するスレッド生成手段と、前記新たなスレッドを利用する新たなVMを生成するVM生成手段とを備えることを特徴とする。
本発明によれば、余裕の無い実行環境であっても非同期処理を実行することができる。
本発明の実施の形態に係る情報処理装置としてのMFPの主要部の構成を概略的に示すブロック図である。 図1のMFPにおける拡張アプリケーションの実行環境の一例を説明するためのブロック図である。 図2におけるOS上において拡張アプリケーションを起動する場合の処理の流れを説明するための図である。 図3におけるステップS304で生成されるスレッド管理情報の構成の一例を説明するための図である。 図2におけるOS上において拡張アプリケーションから新たなVMスレッドを生成する場合の処理の流れを説明するための図である。 図5のステップS501において送出されるスレッド情報の構成の一例を説明するための図である。 図1のMFPを含む印刷システムの機器構成の一例を説明するための図である。 図7における外部装置に格納されている画像データを取得して印刷するための拡張アプリケーションを実行するときの処理の流れを説明するための図である。 図8のステップS803において表示される操作画面の一例を示す図である。 図8のステップS802やステップS813において2つのVMの間で実行されるメッセージ送信処理を説明するための図である。 図10のステップS1002の各VM及び拡張VMシステムサービスの間における処理の流れを説明するための図である。 外部装置としてのホストPCに格納された拡張アプリケーションをMFPにインストールするときの処理の流れを説明するための図である。
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。本実施の形態では情報処理装置としての画像形成装置、例えば、MFP(Multifunction Peripheral)に本発明を適用した場合について説明する。しかしながら、本発明は画像形成装置であるプリンタに適用してもよく、さらには、画像形成機能を備えない情報処理装置、例えば、サーバ、PCやスマート家電機器に適用してもよい。具体的には、拡張プログラムがアドインされて非同期処理を実行する情報処理装置であれば、本発明を適用することができる。また、本実施の形態に記載されている構成要素はあくまで例示に過ぎず、本発明の範囲は本実施の形態に記載されている構成要素によって限定されることはない。
まず、本発明の第1の実施の形態について説明する。
図1は、本実施の形態に係る情報処理装置としてのMFPの主要部の構成を概略的に示すブロック図である。本実施の形態では、MFP100が余裕の無い実行環境、例えば、Luaを利用する実行環境しか搭載せず、VMが1つのスレッドのみしか利用できないことを前提とする。
図1において、MFP100はコントローラユニット101を備え、コントローラユニット101には、画像入力デバイスであるスキャナ102や画像出力デバイスであるプリンタ103だけでなく、操作部104も接続される。コントローラユニット101は、スキャナ102で読み取られた画像データをプリンタ103によって印刷出力するコピー機能を実現する制御を行う。また、コントローラユニット101はCPU105、ROM106、RAM107及びストレージ108を有し、CPU105は、ROM106に格納されているブートプログラムによってOSを起動する。CPU105は起動したOS上でストレージ108に格納されているプログラムを実行して各種処理を実行する。RAM107は、CPU105の作業領域を提供し、さらに、画像データを一時記憶するための画像メモリ領域を提供する。ストレージ108はプログラムや画像データを格納する。
さらに、コントローラユニット101は、操作部I/F(操作部インターフェース)109、ネットワークI/F(ネットワークインターフェース)110、USBホストI/F111、画像バスI/F(画像バスインターフェース)112を有する。CPU105にはROM106、RAM107及びストレージ108だけでなく操作部I/F109、ネットワークI/F110、USBホストI/F111及び画像バスI/F112がシステムバス114を介して接続される。操作部I/F109は、タッチパネルを有する操作部104とのインターフェースであり、操作部104の画面に表示する画像データを操作部104へ出力する。また、操作部I/F109は、操作部104においてユーザによって入力された情報をCPU105に送出する。ネットワークI/F110は、MFP100をLANに接続するためのインターフェースである。USBホストI/F111は、データを格納する外部記憶装置であるUSBストレージ113と通信するためのインターフェースであり、ストレージ108に格納されているデータをUSBストレージ113へ記憶させるために送出する。また、USBホストI/F111は、USBストレージ113に格納されているデータを受け取り、受け取ったデータをCPU105に伝送する。USBストレージ113は、USBホストI/F111に対して着脱可能である。なお、USBホストI/F111には、USBストレージ113を含む複数のUSBデバイスが接続可能である。画像バスI/F112は、システムバス114と、画像データを高速で転送する画像バス115とを接続し、且つデータ形式を変換するバスブリッジである。画像バス115は、PCIバスまたはIEEE1394等によって構成される。画像バス115にはデバイスI/F116、スキャナ画像処理部117及びプリンタ画像処理部118が接続される。デバイスI/F116には、スキャナ102及びプリンタ103が接続され、デバイスI/F116は画像データの同期系/非同期系の変換を行う。スキャナ画像処理部117は入力画像データを補正し、加工し、又は編集する。プリンタ画像処理部118はプリント出力画像データに対してプリンタ103に応じた補正、解像度変換等を行う。
図2は、図1のMFPにおける拡張アプリケーション(拡張プログラム)の実行環境の一例を説明するためのブロック図である。本実施の形態では、ストレージ108に格納されているプログラムを、CPU105がRAM107にロードして実行することにより、OS上に以下説明する図2の各モジュールが実現される。
図2において、CPU105によって起動されたOS201上には、プリンタ機能、FAX機能やスキャナ機能を実現するためのネイティブプログラム202と、VM203とが動作している。VM203は拡張アプリケーションを制御するプログラムを理解して実行するモジュールであり、拡張アプリケーションは必ずVM203上で動作する。ネイティブプログラム202内には、プリンタ103やスキャナ102等の画像処理ユニットを制御するためのネイティブスレッド204と、VM203を動作させるためのVMスレッド205とが存在する。本実施の形態では、VM203として3つのVM203a、VM203b及びVM203cが生成されている。また、VMスレッド205として、VM203a、VM203b及びVM203cの合計数に対応する数である3つのVMスレッド205a、VMスレッド205b及びVMスレッド205cが生成されている。VMシステムサービス206は各拡張アプリケーション207a,207bによって共通に利用されるユーティリティライブラリであり、複数の機能を提供する。各拡張アプリケーション207a,207bは、自身を実行するために必要な機能をVMシステムサービス206から選択する。MFP100では、各拡張アプリケーション207a,207bからVMシステムサービス206が提供する各機能を呼び出すことにより、拡張アプリケーションを開発する手間を省き、さらに、MFP100の各モジュールへアクセスすることができる。VMシステムサービス206はモジュールとして標準VMシステムサービス208と拡張VMシステムサービス209を有する。標準VMシステムサービス208は、例えば、ファイルシステムの「open」、「close」、「read」や「write」という基本的なサービスを提供し、VM203がVMとして機能するための最低限の機能を実現させる。拡張VMシステムサービス209は、MFP100の各モジュールへのアクセス機能や、OSの各機能を実現する。
VM203は各拡張アプリケーション207a,207bを解釈して実行する。VM203は、拡張アプリケーションのスレッド毎に生成される。図2の実行環境では、非同期処理を実行する拡張アプリケーション207aのために2つのVMスレッド205a,205bが生成され、各VMスレッド205a,205bに対応して2つのVM203a,VM203bが生成される。また、同期処理を実行する拡張アプリケーション207bのために1つのVMスレッド205cが生成され、VMスレッド205cに対応して1つのVM203cが生成される。
図1に戻り、MFP100の操作部104の画面には、各拡張アプリケーション207a,207bを示すアイコンが表示される。ユーザによるいずれかのアイコンの選択が操作部104を介して操作部I/F109によって検知されると、操作部I/F109はその旨をCPU105に送信する。その旨を受け取ったCPU105はユーザによって選択された拡張アプリケーション207a又は拡張アプリケーション207bを起動する。
図3は、図2におけるOS上において拡張アプリケーションを起動する場合の処理の流れを説明するための図である。
まず、ネイティブスレッド204に拡張アプリケーション起動要求が通知され(ステップS301)、ネイティブスレッド204は続くステップS302においてVMスレッド生成処理を行う。このとき、ネイティブスレッド204はOS201に対してVMスレッド生成要求を送出する。スレッド生成要求を受けたOS201(スレッド生成手段)はVMスレッド205を生成する(ステップS303)。次いで、生成されたVMスレッド205(VM生成手段、スレッド管理情報生成手段)は後述するスレッド管理情報400(図4参照。)を生成し(ステップS304)、さらに、VMスレッド205上で動作する(を利用する)VM203を生成させる(ステップS305)。生成されたVM203は拡張アプリケーションの読み込みを実行して標準VMシステムサービス208に読み込み要求を送出する(ステップS306)。読み込み要求を受けた標準VMシステムサービス208は拡張アプリケーションを実行するためのデータ(以下、「拡張アプリケーションデータ」という。)をVM203に読み込ませる(ステップS307)。次いで、VM203は読み込んだ拡張アプリケーションデータに基づいて拡張アプリケーションを実行する(ステップS308)。すなわち、図3の処理では、拡張アプリケーションを起動する場合にネイティブスレッド204とは別の新たなVMスレッド205が生成され、さらに、VMスレッド205を利用するVM203が生成される。
図4は、図3におけるステップS304で生成されるスレッド管理情報の構成の一例を説明するための図である。
スレッド管理情報400は拡張アプリケーションを起動する際に生成されたVMスレッド205を管理するために用いられる。スレッド管理情報400は、アプリケーションID401、スレッドID402及びキューID403を有する。アプリケーションID401は生成されたVMスレッド205に対応するアプリケーションを識別するための識別番号である。スレッドID402は各VMスレッド205を識別するための識別番号である。キューID403は各VMスレッド205に対応するメッセージを格納するキューを識別するための識別番号である。図4のスレッド管理情報の構成の一例では、OS201上において、アプリケーションAに対応し、キューIDがキュー1であるVMスレッド1と、アプリケーションAに対応し、キューIDがキュー2であるVMスレッド2とが生成されている。さらに、アプリケーションBに対応し、キューIDがキュー3であるVMスレッド3とが生成されている。
図5は、図2におけるOS上において拡張アプリケーションから新たなVMスレッドを生成する場合の処理の流れを説明するための図である。図5の処理を実行する際、図4の処理が実行されてVMスレッド205a及びVM203aが生成されていることを前提とする。
まず、VM203aは拡張アプリケーション207aから要求されてスレッド生成処理を行い(ステップS501)、拡張VMシステムサービス209に対して新たなVMスレッド205(205b)の生成を要求するスレッド生成要求を送出する。このとき、スレッド生成要求として図6に示すスレッド情報600を送出する。スレッド情報600は、新たなVMスレッド205bの生成後に実行される拡張アプリケーション207bの実行ファイルの情報601と、拡張アプリケーション207bにおいて実行される実行関数の情報602とを指定する。さらに、スレッド情報600は、VMスレッド205bの優先度の情報603と、VMスレッド205bのスタックサイズの情報604とを指定する。
図5に戻り、スレッド情報600を受け取った拡張VMシステムサービス209はVMスレッド生成処理を行い、OS201へスレッド生成要求を送出する(ステップS502)。ステップS502で送出されるスレッド生成要求は、スレッド情報600における優先度の情報603とスタックサイズの情報604に見合うリソースのVMスレッド205bの生成を要求する。次いで、OS201は、スレッド生成要求で要求された優先度やスタックサイズに見合うVMスレッド205bを生成する(ステップS503)。生成されたVMスレッド205bはスレッド管理情報400を生成し(ステップS504)、さらに、VMスレッド205b上で動作する(を利用する)新たなVM203bを生成させる(ステップS505)。次いで、生成されたVM203bは拡張アプリケーションの読み込みを実行して標準VMシステムサービス208に読み込み要求を送出する(ステップS506)。読み込み要求を受けた標準VMシステムサービス208は拡張アプリケーションデータをVM203bに読み込ませる(ステップS507)。具体的には、スレッド情報600の実行ファイルの情報601が指定するファイルをVM203bに読み込ませる。次いで、VM203bは読み込んだ拡張アプリケーションデータに基づいて拡張アプリケーションを実行する(ステップS308)。具体的には、スレッド情報600の実行関数の情報602が指定する関数を実行する。
図5の処理によれば、VMスレッド205aとは別に新たなVMスレッド205bが拡張アプリケーション207bの実行に応じて生成され、さらに、新たなVMスレッド205bを利用する新たなVM203bが生成される。したがって、実質的に複数のスレッド(VMスレッド205a及びVMスレッド205b)を利用することができる。その結果、VMが1つのスレッドのみしか利用できない余裕の無い実行環境であっても、非同期処理を実行することができる。
図7は、図1のMFPを含む印刷システムの機器構成の一例を説明するための図である。
図7において、印刷システム700は、MFP100、ネットワークルータ701及び外部装置702を備える。MFP100には外部装置702に格納されている画像データを取得して印刷するための拡張アプリケーションがインストールされている。ネットワークルータ701はMFP100と外部装置702の通信を仲介する。外部装置702は画像データを格納し、MFP100からの画像取得要求に応じてMFP100へ画像データを送出する。なお、外部装置702はイントラネット上に存在しても、インターネット上に存在してもよい。
図8は、図7における外部装置に格納されている画像データを取得して印刷するための拡張アプリケーションを実行するときの処理の流れを説明するための図である。図8の処理を実行する際、図4の処理が実行されてVMスレッド205a及びVM203aが生成されていることを前提とする。
まず、VM203aは、図5の処理を実行して拡張アプリケーションの実行に応じたVMスレッド205bを生成し、さらに、VM203bを生成する(ステップS801)。生成されたVMスレッド205bは画像データを取得するための処理のスレッドとしてVM203bによって利用される。次いで、VM203aはVM203bに対して画像データの取得を要求する印刷画像取得処理を行い(ステップS802)、図9に示す操作画面を表示する操作画面表示を行う(ステップS803)。さらに、VM203aは他のスレッドからのイベントを待つイベント待ち処理を行う(ステップS804)。次いで、VM203aは何らかのイベントを受け取ると、当該受け取ったイベントの種別を判別する(ステップS805)。ステップS805の判別の結果、受け取ったイベントが画像データの取得の完了を示していれば、ステップS806に進み、取得した画像データを印刷する印刷処理を行う。受け取ったイベントがキャンセルの要求を示していれば、VM203aはVM203bに対して終了要求を送出する終了処理を行い(ステップS807)、その後、VM203aは処理を終了する。
ステップS801の実行の結果、生成されたVM203bは他のスレッドからのイベントを待つイベント待ち処理を行い(ステップS811)、何らかのイベントを受け取ると、当該受け取ったイベントの種別を判別する(ステップS812)。ステップS812の判別の結果、受け取ったイベントが終了の要求を示していれば、VM203bは処理を終了する。受け取ったイベントが画像データの取得の要求を示していれば、ステップS813に進み、外部装置702から画像データを取得し、さらに、画像データの取得完了後に画像取得完了通知をVM203aに送出する画像データ取得処理を行う。その後、VM203bは処理をステップS811に戻す。
図10は、図8のステップS802やステップS813において2つのVMの間で実行されるメッセージ送信処理を説明するための図である。
まず、VM203a及びVM203b(メッセージ送信手段)はスレッド管理情報400を参照する。その後、VM203a及びVM203bは、送信元のVMスレッドに対応するアプリケーションの識別番号と送信先のVMスレッドに対応するアプリケーションの識別番号とを比較する(ステップS1001)。例えば、ステップS802では、送信元であるVM203aが利用するVMスレッド205aに対応するアプリケーションの識別番号と、送信先であるVM203bが利用するVMスレッド205bに対応するアプリケーションの識別番号とが比較される。ステップS1001の判別の結果、比較される2つのアプリケーションの識別番号が同じである場合、VM203aやVM203bがメッセージを送信する送信処理を行う(ステップS1002)。ステップS1002の送信処理ではスレッド管理情報400から送信先のキューID403を取得し、取得したキューID403に対応するキューにメッセージを格納し、当該キューを送出する。例えば、ステップS802では、VM203aがメッセージとして画像データの取得要求をキューに格納して当該キューをVM203bへ送出する。その後、VM203a及びVM203bは処理を終了する。ステップS1001の判別の結果、比較される2つのアプリケーションの識別番号が互いに異なる場合、メッセージの送信を行わずにエラーを操作部104の画面等に表示する送信エラー処理を行う(ステップS1003)。その後、VM203a及びVM203bは処理を終了する。
図10の処理によれば、VM203aが利用するVMスレッド205aに対応するアプリケーションの識別番号と、VM203bが利用するVMスレッド205bに対応するアプリケーションの識別番号とが比較される。そして、比較される2つのアプリケーションの識別番号が互いに異なる場合、VM203a及びVM203bの間でメッセージの送信が行われない。これにより、VM203aが利用するVMスレッド205aに対応するアプリケーションの識別番号と、VM203bが利用するVMスレッド205bに対応するアプリケーションの識別番号とが同一である場合のみ、メッセージの送信が実行される。その結果、いずれのアプリケーションもがメッセージの送信に基づいて制限無く実行されるのを防止することができる。すなわち、実行を所望しないアプリケーションが実行されるのを防止することができる。
図11は、図10のステップS1002の各VM及び拡張VMシステムサービスの間における処理の流れを説明するための図である。図11の処理は、ステップS802におけるメッセージ送信を前提とする。
まず、送信元であるVM203aからメッセージを送信するために拡張VMシステムサービス209へメッセージ送信依頼を送出する(ステップS1101)。このとき、VM203aは、送信先であるVM203bが利用するVMスレッド205bのスレッドIDと、送信したいメッセージ(画像データの取得要求)とを一緒に拡張VMシステムサービス209へ送出する。次いで、拡張VMシステムサービス209は、メッセージ送信依頼を受け取ると、図10の処理を実行する(ステップS1102)。その後、送信先であるVM203bはメッセージを受け取るために拡張VMシステムサービス209へメッセージ要求を送出する(ステップS1103)。このとき、VM203bは、自身が利用するVMスレッド205bのスレッドIDを拡張VMシステムサービス209へ送出する。拡張VMシステムサービス209は、メッセージ要求を送出したVM203bが利用するVMスレッド205bのスレッドIDを取得し、スレッド管理情報400に基づいて取得したスレッドID402に対応するキューID403を確認する。次いで、拡張VMシステムサービス209は、確認されたキューID403のキューに格納されているメッセージを取得するメッセージ受信処理を行う(ステップS1104)。
図12は、外部装置としてのホストPCに格納された拡張アプリケーションをMFPにインストールするときの処理の流れを説明するための図である。
まず、ホストPC1200がMFP100に対してインストール画面表示要求を送出する(ステップS1201)。MFP100は、インストール画面表示要求を受け付け(ステップS1211)、さらに、インストール画面表示用HTMLコンテンツを送信する(ステップS1212)。ホストPC1200は、受信したインストール画面表示用HTMLコンテンツをホストPC1200が有する表示部の画面に表示する(ステップS1202)。さらに、ホストPC1200は、MFP100へインストールされる拡張アプリケーションを圧縮してMFP100へインストールファイルとしてアップロードする(ステップS1203)。MFP100は、アップロードされたインストールファイルを受信し(ステップS1213)、さらに、圧縮されたインストールファイルを展開する(ステップS1214)。次いで、MFP100は、展開されたインストールファイルのプログラムコードをバイトコード化し(ステップS1215)、バイトコード化されたプログラムコードの自身への書込を開始する(ステップS1216)。次いで、MFP100は、インストールファイルのインストールが完了したか否かを判別し(ステップS1217)、インストールが完了すれば、インストール完了通知をホストPC1200に送信する(ステップS1218)。インストール完了通知を受信したホストPC1200は、インストール完了画面を表示部の画面に表示する(ステップS1204)。その後、ホストPC1200及びMFP100は処理を終了する。
図12の処理によれば、インストールファイルのプログラムコードがバイトコード化され、バイトコード化されたプログラムコードがMFP100へ書き込まれる。すなわち、インストールファイルのプログラムコードがデバイス依存のコードであるバイトコードに変換されるため、プログラムコードの書込先がどのようなデバイスであっても、プログラムコードは当該デバイスに書込可能なコードに変換される。その結果、実行環境(デバイス)に関係なく拡張アプリケーションをインストールすることができる。
以上、本発明について実施の形態を用いて説明したが、本発明は上述した実施の形態に限定されるものではない。
本発明は、上述の実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 MFP
105 CPU
201 OS
203 VM
205 VMスレッド
206 VMシステムサービス
207a,207b 拡張アプリケーション
400 スレッド管理情報

Claims (5)

  1. 拡張プログラムを実行するVMを有し、該VMが1つのスレッドのみしか利用できない情報処理装置であって、
    前記拡張プログラムの実行に応じて新たなスレッドを生成するスレッド生成手段と、
    前記新たなスレッドを利用する新たなVMを生成するVM生成手段とを備えることを特徴とする情報処理装置。
  2. 前記スレッド生成手段はオペレーティングシステム(OS)であり、
    前記VMが前記新たなスレッドの生成を要求し、前記OSが前記新たなスレッドの生成の要求に応じて前記新たなスレッドを生成することを特徴とする請求項1記載の情報処理装置。
  3. 少なくとも1つの前記スレッドを管理するためのスレッド管理情報を生成するスレッド管理情報生成手段と、
    前記VM及び前記新たなVMの間でメッセージの送信を行うメッセージ送信手段とをさらに備え、
    前記スレッド管理情報は各前記スレッドに対応するアプリケーションの識別番号を少なくとも有し、
    前記VM及び前記新たなVMが利用する各前記スレッドに対応する各前記アプリケーションの識別番号が互いに異なる場合、前記メッセージ送信手段は前記メッセージの送信を行わないことを特徴とする請求項1又は2記載の情報処理装置。
  4. 拡張プログラムを実行するVMを有し、該VMが1つのスレッドのみしか利用できない情報処理装置の制御方法であって、
    前記拡張プログラムの実行に応じて新たなスレッドを生成するスレッド生成ステップと、
    前記新たなスレッドを利用する新たなVMを生成するVM生成ステップとを有することを特徴とする情報処理装置の制御方法。
  5. 拡張プログラムを実行するVMを有し、該VMが1つのスレッドのみしか利用できない情報処理装置の制御方法をコンピュータに実行させるプログラムにおいて、
    前記制御方法は、
    前記拡張プログラムの実行に応じて新たなスレッドを生成するスレッド生成ステップと、
    前記新たなスレッドを利用する新たなVMを生成するVM生成ステップとを有することを特徴とするプログラム。
JP2015183180A 2015-09-16 2015-09-16 情報処理装置、その制御方法及びプログラム Active JP6771874B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015183180A JP6771874B2 (ja) 2015-09-16 2015-09-16 情報処理装置、その制御方法及びプログラム
DE112016004212.4T DE112016004212T5 (de) 2015-09-16 2016-09-01 Informationsverarbeitungsvorrichtung, Steuerungsverfahren für diese und Programm
PCT/JP2016/076358 WO2017047476A1 (en) 2015-09-16 2016-09-01 Information processing apparatus, control method therefor, and program
CN201680052887.6A CN108027752B (zh) 2015-09-16 2016-09-01 信息处理装置、用于信息处理装置的控制方法、和程序
US15/752,720 US11397603B2 (en) 2015-09-16 2016-09-01 Information processing apparatus, control method therefor, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015183180A JP6771874B2 (ja) 2015-09-16 2015-09-16 情報処理装置、その制御方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2017058952A true JP2017058952A (ja) 2017-03-23
JP2017058952A5 JP2017058952A5 (ja) 2018-10-25
JP6771874B2 JP6771874B2 (ja) 2020-10-21

Family

ID=58289178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015183180A Active JP6771874B2 (ja) 2015-09-16 2015-09-16 情報処理装置、その制御方法及びプログラム

Country Status (5)

Country Link
US (1) US11397603B2 (ja)
JP (1) JP6771874B2 (ja)
CN (1) CN108027752B (ja)
DE (1) DE112016004212T5 (ja)
WO (1) WO2017047476A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018205888A (ja) * 2017-05-31 2018-12-27 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023027468A (ja) * 2021-08-17 2023-03-02 富士フイルムビジネスイノベーション株式会社 情報処理装置、情報処理システム、およびプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH075088A (ja) 1993-06-18 1995-01-10 Kumamoto Pref Gov ヤング率測定装置
US6453392B1 (en) * 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US7680877B2 (en) 2006-12-18 2010-03-16 Ricoh Company, Ltd. Implementing a web service application on a device with multiple threads
US8468533B2 (en) * 2008-04-28 2013-06-18 Panasonic Corporation Virtual machine control device, method, and program wherein a switching task used to switch to the highest priority virtual machines is the highest priority task in the current virtual machine and the virtual machine that is the switching target
US20110154327A1 (en) * 2009-09-11 2011-06-23 Kozat Ulas C Method and apparatus for data center automation
JP5742125B2 (ja) * 2010-07-21 2015-07-01 富士通株式会社 プログラム、情報生成装置及び情報生成方法
JP5653151B2 (ja) * 2010-09-17 2015-01-14 キヤノン株式会社 クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
US9495183B2 (en) * 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8832690B1 (en) * 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US9183015B2 (en) * 2011-12-19 2015-11-10 Vmware, Inc. Hibernate mechanism for virtualized java virtual machines
JP5955148B2 (ja) * 2012-07-27 2016-07-20 キヤノン株式会社 画像形成装置及び仮想マシンプログラム
US9128899B1 (en) * 2012-07-31 2015-09-08 Google Inc. Predictive failover planning
WO2014043416A1 (en) * 2012-09-12 2014-03-20 Genesys Telecommunications Laboratories, Inc. System and method for dynamic configuration of contact centers via templates
JP6091142B2 (ja) 2012-10-05 2017-03-08 キヤノン株式会社 画像形成装置、制御方法、およびそのプログラム。
US9098427B2 (en) * 2012-12-17 2015-08-04 Intel Corporation Controlling access to groups of memory pages in a virtualized environment
US9444841B2 (en) 2013-02-14 2016-09-13 Vmware, Inc. Method and apparatus for application awareness in a network
US10037237B2 (en) * 2013-03-28 2018-07-31 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for fault management in infrastructure as a service clouds
US10386900B2 (en) * 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
US10282222B2 (en) * 2014-10-13 2019-05-07 Vmware, Inc. Cloud virtual machine defragmentation for hybrid cloud infrastructure
US9858101B2 (en) * 2014-11-13 2018-01-02 Red Hat Israel, Ltd. Virtual machine input/output thread management
CN104598298A (zh) * 2015-02-04 2015-05-06 上海交通大学 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018205888A (ja) * 2017-05-31 2018-12-27 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム
JP7030426B2 (ja) 2017-05-31 2022-03-07 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム

Also Published As

Publication number Publication date
WO2017047476A1 (en) 2017-03-23
US11397603B2 (en) 2022-07-26
DE112016004212T5 (de) 2018-06-14
CN108027752A (zh) 2018-05-11
JP6771874B2 (ja) 2020-10-21
CN108027752B (zh) 2021-10-29
US20190042291A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
JP5857611B2 (ja) 情報処理装置、システム、プログラム
US20110261401A1 (en) Server apparatus, and terminal apparatus
JP7501761B2 (ja) アプリケーションプログラム
JP5047067B2 (ja) 情報処理装置、データ出力システム、データ生成プログラム及びその記録媒体
JP2012088838A (ja) 情報処理装置、情報処理装置を制御する制御方法、およびそのプログラム
JP5200639B2 (ja) 画像形成装置、情報処理方法、及びプログラム
JP4154316B2 (ja) 画像処理システム、制御方法、画像処理装置、プログラムおよび記憶媒体
JP2016164767A (ja) 情報処理装置、制御方法、制御プログラム
JP6771874B2 (ja) 情報処理装置、その制御方法及びプログラム
JP2019070969A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP2007214853A (ja) 画像処理装置
JP7146361B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、プログラム
US20180173479A1 (en) Image forming apparatus capable of mounting application and method for controlling the same
JP2014032652A (ja) 印刷処理システム
JP2006338268A (ja) データ処理装置、ネットワークインターフェース基板及びアプリケーションプログラム登録方法
US8922823B2 (en) Information processing apparatus and storage medium with the function of adding a cover letter to a print job
JP6768544B2 (ja) 情報処理装置、制御方法およびプログラム
JP5020131B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US8627318B2 (en) Image forming apparatus, method of acquiring identification information, and non-transitory computer readable medium
JP6987530B2 (ja) 画像形成装置、情報処理方法及びプログラム
JP4221020B2 (ja) 画像処理装置
JP2004086354A (ja) 画像処理装置
KR20080113957A (ko) 잡 컨트롤 장치 및 복합장치 그리고 그들의 동작 방법
JP7085920B2 (ja) 印刷制御プログラム、情報処理装置とその制御方法、およびプログラム
JP4498460B2 (ja) ネットワーク装置及びその制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200930

R151 Written notification of patent or utility model registration

Ref document number: 6771874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151