(57)【特許請求の範囲】
【請求項１】
画像形成装置であって、
ユーザ操作を受け付けるための入力部と、
複数のプログラムを格納する記憶部と、
前記画像形成装置への起動指令に応答して、前記複数のプログラムのうち１または複数のプログラムからなる第１のプログラム群を予め定められた順序で読み込んで起動する第１のプログラム実行部と、
前記起動指令に応答して、前記複数のプログラムのうち前記第１のプログラム群に含まれるプログラムとは異なる、１または複数のプログラムからなる第２のプログラム群を予め定められた順序で読み込んで起動する第２のプログラム実行部とを備え、
前記第２のプログラム実行部は、
前記第２のプログラム群の起動後にユーザ操作が入力されると、当該入力されたユーザ操作に従う処理の実行に必要なプログラムを特定するとともに、前記第１のプログラム実行部により前記必要なプログラムのすべての起動が完了しているかを判断する判断手段と、
前記第１のプログラム群に含まれる前記必要なプログラムのうち起動していないプログラムがあると、前記第１のプログラム群を起動する処理の進行度合いに基づいて、前記第１のプログラム実行部において前記必要なプログラムのすべての起動が完了するまでに要する第１の時間を算出するとともに、前記第２のプログラム実行部において前記必要なプログラムのうち起動していないプログラムの起動が完了するまでに要する第２の時間を算出する算出手段と、
前記第２の時間が前記第１の時間に比較して短いときに、前記第１のプログラム実行部に代わって、前記第１のプログラム群に含まれる前記必要なプログラムのうち起動していないプログラムを起動する起動手段とを含む、画像形成装置。
【請求項２】
前記第２のプログラム群は、前記入力部からのユーザ操作を受け付ける処理を実行するプログラムを含む、請求項１に記載の画像形成装置。
【請求項３】
前記記憶部は、前記複数のプログラムに含まれる各プログラムについて、前記第１のプログラム実行部での起動に要する起動時間と、前記第２のプログラム実行部での起動に要する起動時間とを格納し、
前記算出手段は、前記記憶部に格納された情報を参照して、前記第１および第２の時間を算出する、請求項１または２に記載の画像形成装置。
【請求項４】
前記算出手段は、前記予め定められた第１のプログラム群を起動する順序に基づいて前記第１のプログラム実行部により前記必要なプログラムをすべて起動するまでに要する時間と、前記第１のプログラム群の処理開始からの経過時間と、の差に基づいて、前記第１の時間を算出する、請求項３に記載の画像形成装置。
【請求項５】
前記算出手段は、前記記憶部に格納された情報を参照して、前記必要なプログラムのうち起動していないプログラムの前記第２のプログラム実行部での起動に要する時間から前記第２の時間を算出する、請求項３または４に記載の画像形成装置。
【請求項６】
前記複数のプログラムのうちいずれかのプログラムが前記第１または第２のプログラム実行部により起動されると、前記記憶部に格納されている対応する起動時間を、当該起動に要した時間に基づいて更新する更新手段をさらに備える、請求項３〜５のいずれか１項に記載の画像形成装置。
【請求項７】
前記第１および第２のプログラム実行部が前記複数のプログラムを起動するためのワークエリアをさらに備え、
前記判断手段は、前記ワークエリアに展開されているデータに基づいて、前記必要なプログラムのすべての起動が完了しているかを判断する、請求項１〜６のいずれか１項に記載の画像形成装置。
【請求項８】
前記第１のプログラム実行部は、前記第１のプログラム群に含まれる各プログラムを起動する前に、これから起動するプログラムの起動が完了しているかを判断し、前記起動するプログラムの起動が完了していると判断した場合に、当該起動するプログラムの起動を省略する、請求項１〜７のいずれか１項に記載の画像形成装置。
【請求項９】
前記第２のプログラム実行部は、前記起動手段により起動されたプログラムの実行を前記第１のプログラム実行部に引き渡す手段をさらに含む、請求項１〜８のいずれか１項に記載の画像形成装置。
【請求項１０】
第１および第２のプログラム実行部を備える画像形成装置の起動処理を管理する管理プログラムであって、
前記管理プログラムは、前記第２のプログラム実行部に、
前記画像形成装置への起動指令に応答して、記憶された複数のプログラムのうち前記第１のプログラム実行部によって予め定められた順で実行される第１のプログラム群に含まれるプログラムとは異なる、１または複数のプログラムからなる第２のプログラム群を予め定められた順序で読み込んで起動するステップと、
前記第２のプログラム群の起動後にユーザ操作が入力されると、当該入力されたユーザ操作に従う処理の実行に必要なプログラムを特定するとともに、前記第１のプログラム実行部により前記必要なプログラムのすべての起動が完了しているかを判断するステップと、
前記第１のプログラム群に含まれる前記必要なプログラムのうち起動していないプログラムがあると、前記第１のプログラム群を起動する処理の進行度合いに基づいて、前記第１のプログラム実行部において前記必要なプログラムのすべての起動が完了するまでに要する第１の時間を算出するとともに、前記第２のプログラム実行部において前記必要なプログラムのうち起動していないプログラムの起動が完了するまでに要する第２の時間を算出するステップと、
前記第２の時間が前記第１の時間に比較して短いときに、前記第１のプログラム実行部に代わって、前記第１のプログラム群に含まれる前記必要なプログラムのうち起動していないプログラムを起動するステップとを実行させる、管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、画像形成装置に関し、より特定的には、複数のプログラム実行部を備える画像形成装置に関する。
【背景技術】
【０００２】
近年、画像形成装置の中には、処理速度を向上させるために、マルチコアプロセッサを備えた機種が増えてきている。当該機種の中には、起動に必要な処理を複数のプロセッサコアに割り当てることによって、電源投入から立ち上げまでの起動時間を短縮しようとするものもある。
【０００３】
画像形成装置の起動時間を短縮する技術について、特開２０１３−１６９８２号公報（特許文献１）は、所定の時間以内で終了する応答待機期間が発生するデバイスについて、設定されたスレッド継続時間内においては、応答待機期間が発生してもスレッドを切り替えない構成を採用することで、オーバヘッドの発生頻度を少なくし、デバイスの初期化処理の完了までの時間を短縮する技術を開示する。
【０００４】
また、特開２０１０−１１１２５号公報（特許文献２）は、複数の制御部を備え、第２の制御部は、予備動作プログラムの他に、複数のアプリケーションプログラムの一部のアプリケーションプログラムを起動し、第１の制御部で起動する複数のアプリケーションプログラムの起動完了を待たずに、一部のアプリケーションプログラムの起動が完了した段階で、一部のアプリケーションプログラムにより実現される画像処理機能を使用可能状態にする技術を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１６９８２号公報
【特許文献２】特開２０１０−１１１２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１および特許文献２に示される技術は、予め定められたデバイス／アプリケーションプログラムの初期化を行なう構成を採用している。したがって、これらの技術は、起動直後にユーザが実行したいアプリケーションが予め定められたデバイス／アプリケーションに含まれない場合、起動時間を短縮することができないという問題がある。
【０００７】
本開示は、上記のような問題を解決するためになされたものであって、ある局面における目的は、ユーザの指定するアプリケーションプログラムの起動時間を短縮することができる画像形成装置を提供することである。
【課題を解決するための手段】
【０００８】
画像形成装置は、ユーザ操作を受け付けるための入力部と、複数のプログラムを格納する記憶部と、画像形成装置への起動指令に応答して、複数のプログラムのうち１または複数のプログラムからなる第１のプログラム群を予め定められた順序で読み込んで起動する第１のプログラム実行部と、起動指令に応答して、複数のプログラムのうち第１のプログラム群に含まれるプログラムとは異なる、１または複数のプログラムからなる第２のプログラム群を予め定められた順序で読み込んで起動する第２のプログラム実行部とを備える。第２のプログラム実行部は、第２のプログラム群の起動後にユーザ操作が入力されると、当該入力されたユーザ操作に従う処理の実行に必要なプログラムを特定するとともに、第１のプログラム実行部により必要なプログラムのすべての起動が完了しているかを判断する判断手段と、第１のプログラム群に含まれる必要なプログラムのうち起動していないプログラムがあると、第１のプログラム群を起動する処理の進行度合いに基づいて、第１のプログラム実行部において必要なプログラムのすべての起動が完了するまでに要する第１の時間を算出するとともに、第２のプログラム実行部において必要なプログラムのうち起動していないプログラムの起動が完了するまでに要する第２の時間を算出する算出手段と、第２の時間が第１の時間に比較して短いときに、第１のプログラム実行部に代わって、第１のプログラム群に含まれる必要なプログラムのうち起動していないプログラムを起動する起動手段とを含む。
【０００９】
好ましくは、第２のプログラム群は、入力部からのユーザ操作を受け付ける処理を実行するプログラムを含む。
【００１０】
好ましくは、記憶部は、複数のプログラムに含まれる各プログラムについて、第１のプログラム実行部での起動に要する起動時間と、第２のプログラム実行部での起動に要する起動時間とを格納する。算出手段は、記憶部に格納された情報を参照して、第１および第２の時間を算出する。
【００１１】
さらに好ましくは、算出手段は、予め定められた第１のプログラム群を起動する順序に基づいて第１のプログラム実行部により必要なプログラムをすべて起動するまでに要する時間と、第１のプログラム群の処理開始からの経過時間と、の差に基づいて、第１の時間を算出する。
【００１２】
好ましくは、算出手段は、記憶部に格納された情報を参照して、必要なプログラムのうち起動していないプログラムの第２のプログラム実行部での起動に要する時間から第２の時間を算出する。
【００１３】
好ましくは、複数のプログラムのうちいずれかのプログラムが第１または第２のプログラム実行部により起動されると、記憶部に格納されている対応する起動時間を、当該起動に要した時間に基づいて更新する更新手段をさらに備える。
【００１４】
好ましくは、第１および第２のプログラム実行部が複数のプログラムを起動するためのワークエリアをさらに備える。判断手段は、ワークエリアに展開されているデータに基づいて、必要なプログラムのすべての起動が完了しているかを判断する。
【００１５】
好ましくは、第１のプログラム実行部は、第１のプログラム群に含まれる各プログラムを起動する前に、これから起動するプログラムの起動が完了しているかを判断し、起動するプログラムの起動が完了していると判断した場合に、当該起動するプログラムの起動を省略する。
【００１６】
好ましくは、第２のプログラム実行部は、起動手段により起動されたプログラムの実行を第１のプログラム実行部に引き渡す手段をさらに含む。
【００１７】
別の局面に従うと、管理プログラムは、第１および第２のプログラム実行部を備える画像形成装置の起動処理を管理する。管理プログラムは、第２のプログラム実行部に、画像形成装置への起動指令に応答して、記憶された複数のプログラムのうち第１のプログラム実行部によって予め定められた順で実行される第１のプログラム群に含まれるプログラムとは異なる、１または複数のプログラムからなる第２のプログラム群を予め定められた順序で読み込んで起動するステップと、第２のプログラム群の起動後にユーザ操作が入力されると、当該入力されたユーザ操作に従う処理の実行に必要なプログラムを特定するとともに、第１のプログラム実行部により必要なプログラムのすべての起動が完了しているかを判断するステップと、第１のプログラム群に含まれる必要なプログラムのうち起動していないプログラムがあると、第１のプログラム群を起動する処理の進行度合いに基づいて、第１のプログラム実行部において必要なプログラムのすべての起動が完了するまでに要する第１の時間を算出するとともに、第２のプログラム実行部において必要なプログラムのうち起動していないプログラムの起動が完了するまでに要する第２の時間を算出するステップと、第２の時間が第１の時間に比較して短いときに、第１のプログラム実行部に代わって、第１のプログラム群に含まれる必要なプログラムのうち起動していないプログラムを起動するステップとを実行させる。
【発明の効果】
【００１８】
一実施形態に従う画像形成装置は、ユーザの指定するアプリケーションプログラムの起動時間を短縮することができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態に従う画像形成装置を説明する図である。
【図２】実施形態に従う画像形成装置のシステム構成を説明する図である。
【図３】実施形態に従うアプリケーションの起動制御について説明する図である。
【図４】実施形態に従うアプリケーションの起動制御について説明する図である。
【図５】実施形態に従うサブＯＳにおけるアプリケーションの起動制御を説明するフローチャートである。
【図６】実施形態に従うパネル操作とアプリケーションとの関連付けを説明する図である。
【図７】実施形態に従うサブＣＰＵコアの機能構成を説明するブロック図である。
【図８】実施形態に従う各アプリケーションの起動時間を説明する図である。
【図９】実施形態に従う各アプリケーションの起動終了時間を説明する図である。
【図１０】実施形態に従うメインＯＳにおけるアプリケーションの起動制御を説明するフローチャートである。
【発明を実施するための形態】
【００２０】
本発明に基づいた画像形成装置について、以下、図を参照しながら説明する。なお、以下に説明する実施形態において、個数、量などに言及する場合、特に記載がある場合を除き、本発明の範囲は必ずしもその個数、量などに限定されない。また、同一の部品、相当部品に対しては、同一符号を付し、重複する説明は繰り返さない場合がある。また、実施形態における構成を適宜組み合わせて用いることは当初から予定されていることである。
【００２１】
（Ａ．概要）
一般的に、画像形成装置は、起動する際に、複数のプログラム群をシーケンシャルに起動する。ユーザは、アプリケーションプログラム（以下、「アプリケーション」とも称する。）の実行指示を画像形成装置に入力しても、当該アプリケーションの起動が完了していない場合、起動完了まで待たなければならない。
【００２２】
そこで、本実施形態に従う画像形成装置は、メインＣＰＵ（Central Processing Unit）コアおよびサブＣＰＵコアを含むマルチコアプロセッサを搭載する。メインＣＰＵコアは、起動指示の入力を受けると、複数のプログラム群をシーケンシャルに起動する。サブＣＰＵコアは、ユーザからアプリケーションの実行指示の入力を受けると、当該アプリケーションの起動をメインＣＰＵコア、サブＣＰＵコアのどちらで実行した方が早いかを判断する。サブＣＰＵコアは、メインＣＰＵコアで起動するよりも自らが起動した方が早いと判断した場合、当該アプリケーションを起動する。
【００２３】
その結果、当該画像形成装置は、ユーザから入力されたアプリケーションの実行開始時間を短縮することができる。以下、当該概要を実現するための構成、制御について説明を行なう。
【００２４】
（Ｂ．画像形成装置１の構成）
（ｂ１．外観構成）
図１は、本実施形態に従う画像形成装置１の外観構成を説明する図である。図１（ａ）を参照して、画像形成装置１は、画像読取装置１０１と、操作パネル１０３と、プリントエンジン１０５と、給紙カセット１０７と、排出部１０９とを備える。
【００２５】
画像読取装置１０１は、原稿を読み取って画像データを後述する制御部１０へ出力する画像読み取り部である。
【００２６】
図１（ｂ）を参照して、操作パネル１０３は、画像形成装置１を操作するための装置であって、タッチパネル１０３Ａと物理ボタン群１０３Ｂとを含む。ユーザはタッチパネル１０３Ａおよび物理ボタン群１０３Ｂを操作して、画像形成装置に対してアプリケーションの実行指示の入力を行なう。タッチパネル１０３Ａは、ユーザ操作に応答した各種情報および／または各種操作を受け付けるためのメニュー画面などをユーザに対して表示するとともに、ユーザによりタッチ操作された位置を取得し、当該取得した位置に応じた入力情報を取得する。
【００２７】
プリントエンジン１０５は、画像データを用紙（記録材）に形成する。給紙カセット１０７は、印刷指示の入力に応答して、用紙を搬送路（不図示）を介してプリントエンジン１０５に供給する。プリントエンジン１０５によって画像データが形成された用紙は、排出部１０９へと排出される。
【００２８】
（ｂ２．内部構成）
図２（ａ）は、画像形成装置１の主要なハードウェア構成を説明するブロック図である。図２（ａ）を参照して、画像形成装置１は、制御部１０を含む。制御部１０は、ＣＰＵ１２と、ＲＯＭ（Read  Only  Memory）１４と、Ｓ−ＲＡＭ（Static  Random  Access  Memory）１６と、ＮＶ−ＲＡＭ（不揮発性メモリー）１８とを含む。
【００２９】
ＣＰＵ１２は、メインＣＰＵコア１２Ａと、サブＣＰＵコア１２Ｂとを含み、装置全体を制御する。ＲＯＭ１４は、各種の制御プログラムを格納する。Ｓ−ＲＡＭ１６は、ＣＰＵ１２のワークエリアとして機能する。ＮＶ−ＲＡＭ１８は、画像形成に関わる各種の設定を記憶する。ＮＶ−ＲＡＭ１８は、後述する関連アプリテーブルＴａ１と、起動時間テーブルＴａ２と、完了時間テーブルＴａ３とを有する。
【００３０】
制御部１０には、バスを介して、記憶装置２０と、タイマ２２と、画像読取装置１０１と、操作パネル１０３と、プリントエンジン１０５と、定着装置２６と、プリンターコントローラ２８と、ネットワークＩ／Ｆ（インターフェース）３０とが接続されている。
【００３１】
記憶装置２０は、画像読取装置１０１で読み取った画像データ等を保存する。記憶装置２０は、本実施形態において、一例として、ハードディスク（hard disk drive：ＨＤＤ）とする。タイマ２２は、時間をカウントする。ネットワークＩ／Ｆ３０は、通信ネットワークを介して接続された他の装置（不図示）との間で各種の情報を送受信する。定着装置２６は、トナー画像を加熱および加圧し用紙に定着させる。プリンターコントローラ２８は、当該ネットワークＩ／Ｆ３０により受信したプリントデータから複写画像を生成する。
【００３２】
なお、画像形成装置１は、一例として、電子写真方式を採用しているがこれに限定されるものではない。画像形成装置は、たとえば、いわゆるインクジェット方式により画像を形成するものであってもよい。
【００３３】
（ｂ３．ＲＯＭ１４に含まれるプログラム）
図２（ｂ）は、ＲＯＭ１４に含まれるプログラムを説明する図である。図２（ｂ）を参照して、ＲＯＭ１４は、メインＯＳ（Operating System）５０と、サブＯＳ６０を含み、さらに後述する定着アプリケーション、エンジンアプリケーション等の複数のアプリケーションを格納している。
【００３４】
メインＯＳ５０は、メインＣＰＵコア１２Ａによって実行され、１または複数のプログラムからなるプログラム群を予め定められた順で読み込んで起動するプログラム実行部として機能する。
【００３５】
サブＯＳ６０は、サブＣＰＵコア１２Ｂによって実行され、メインＯＳ５０で実行されるプログラム群とは異なる１または複数のプログラムからなるプログラム群を予め定められた順で読み込んで起動するプログラム実行部として機能する。
【００３６】
なお、メインＯＳとサブＯＳは、それぞれ異なるメインＣＰＵコアとサブＣＰＵコアによって実行されるとしたが、これに限られない。別の局面において、シングルコアプロセッサを搭載する画像形成装置であっても、当該シングルコアを仮想的に分割して複数の仮想コアを構成し、これら複数の仮想コアによってメインＯＳとサブＯＳをそれぞれ実行するように構成されてもよい。
【００３７】
（Ｃ．アプリケーションの起動制御）
以下、図３を用いてマルチコアプロセッサを搭載する画像形成装置のアプリケーションの起動制御について説明する。
【００３８】
（ｃ１．関連技術）
関連する画像形成装置１Ａは、メインＣＰＵコア１２ＡによってメインＯＳ５０Ａを実行し、サブＣＰＵコア１２ＢによってサブＯＳ６０Ａを実行するとする。
【００３９】
図３（ａ）は、関連する画像形成装置１Ａにおけるアプリケーションの起動制御について説明する図である。図３（ａ）を参照して、ステップＳ０において、画像形成装置１Ａに電源供給が開始される。ステップＳ１０において、サブＣＰＵコア１２Ｂは、ＢＩＯＳ（Basic Input Output System）およびサブＯＳ６０Ａの起動を行なうブートプログラムを起動する。
【００４０】
ステップＳ２０において、メインＣＰＵコア１２Ａは、ＢＩＯＳおよびメインＯＳ５０Ａの起動を行なうブートプログラムを起動する。メインＣＰＵコア１２Ａは、ブートプログラムの起動完了が、サブＣＰＵ１２Ｂの行なうブートプログラムの起動完了よりも遅い。その理由は、メインＣＰＵコア１２Ａは、画像形成装置１の動作を統括して制御するためである。より具体的には、メインＣＰＵコア１２Ａは、ＲＯＭ１４等のメモリチェック等の初期動作が、サブＣＰＵコア１２Ｂに比して長いためである。
【００４１】
ステップＳ１２において、サブＯＳ６０Ａは、パネルアプリケーションの起動を行なう。パネルアプリケーションは、操作パネル１０３を用いたユーザの入力（操作）を受け付け可能な状態にする。本実施形態において、一例として、パネルアプリケーションは、図１（ｂ）に示される画面を表示する。
【００４２】
一方、メインＯＳ５０Ａは、ステップＳ２２〜ステップＳ３０にかけて、複数のアプリケーションを予め定められた順に起動する。本実施形態において、一例として、メインＯＳ５０Ａは、定着アプリケーション、エンジンアプリケーション、スキャンアプリケーション、ＨＤＤアプリケーション、ＦＡＸ（facsimile）アプリケーションの順にアプリケーションの起動を行なう。時刻Ｔｆ１において、メインＯＳ５０Ａは、一連のアプリケーションの起動を完了する。
【００４３】
定着アプリケーションは、定着装置２６の加熱定着制御を行なう。エンジンアプリケーションは、プリントエンジン１０５の画像形成制御を行なう。スキャンアプリケーションは、画像読取装置１０１の読み取り制御を行なう。ＨＤＤアプリケーションは、記憶装置２０の読み書き制御を行なう。ＦＡＸアプリケーションは、通信回線を介した画像情報の伝送制御を行なう。メインＯＳ５０Ａは、これらのアプリケーションの起動するにあたって各アプリケーションの初期化処理を行なう。
【００４４】
時刻Ｔ１において、ユーザは、図１（ｂ）に示されるタッチパネル１０３Ａ上の「ボックス」ボタンをタッチする（ステップＳ１４）。
【００４５】
「ボックス」機能は、プリントあるいはスキャンしたデータ、他のコンピュータで作成されたデータ、ＦＡＸ送受信データなどを画像形成装置１内部の記憶装置２０（ＨＤＤ）に格納する機能である。これにより、ユーザは、格納されたデータを必要なときに利用することができる。
【００４６】
操作パネル１０３は、ユーザの指示を制御部１０に出力する。サブＯＳ６０Ａは、当該指示に基づき、ボックスジョブを実行しようとする。ボックスジョブとは、記憶装置２０に格納されたデータをタッチパネル１０３Ａ上に表示し、ユーザ操作入力を受け付け可能な状態にすることをいう。
【００４７】
しかしながら、図３（ａ）を参照して、時刻Ｔ１において、ＨＤＤアプリケーションの起動が行なわれていない。そのため、サブＯＳ６０Ａは、メインＯＳ５０ＡがＨＤＤアプリケーションの起動を完了する時刻Ｔ２までボックスジョブを実行することができない。すなわち、ユーザは、時刻Ｔ１から時刻Ｔ２までのｔｗ１秒間、ボックスジョブの実行を待たなければならない。
【００４８】
上記関連する画像形成装置１Ａは、ユーザからジョブの入力を受けてもサブＣＰＵコア１２Ｂ（サブＯＳ６０Ａ）は、メインＣＰＵコア１２Ａ（メインＯＳ５０Ａ）がジョブに関連するアプリケーションの起動を完了するまで何もしない。当該構成では、画像形成装置がせっかくマルチコアプロセッサを搭載していたとしても、処理を分担できるというマルチコアプロセッサの強みを生かし切れていない。
【００４９】
そこで、以下に、マルチコアプロセッサ強みを生かした本実施形態に従う起動制御について説明を行なう。
【００５０】
（ｃ２．ユーザ入力に関連するアプリケーションをサブＯＳで起動）
画像形成装置１のサブＯＳ６０は、ユーザからジョブの入力を受けると、当該ジョブの実行に必要な、ジョブに関連するアプリケーションの特定を行ない、関連するアプリケーションを自身で起動した方がメインＯＳ５０で起動するよりも早いかを判断する。サブＯＳ６０は、自身で起動した方が早いと判断した場合、本来メインＯＳ５０が起動する当該関連するアプリケーションの起動を肩代わりし、起動する。
【００５１】
当該構成によれば、ユーザの指定するアプリケーションプログラムの起動時間を従来よりも短縮することができる。以下、図３（ｂ）に示される具体例を用いて説明を行なう。
【００５２】
図３（ｂ）は、本実施形態に従う画像形成装置１におけるアプリケーションの起動制御について説明する図である。なお、図３（ａ）と同一符号を付している部分については同じであるので、その説明は繰り返さない。
【００５３】
時刻Ｔ１において、ユーザは、図１（ｂ）に示されるタッチパネル１０３Ａ上の「ボックス」ボタンをタッチする（ステップＳ１４）。さらに、サブＯＳ６０は、当該指示の入力を受け、ボックスジョブに関連するアプリケーションがＨＤＤアプリケーションであることを特定する。
【００５４】
続いて、ステップＳ３０において、サブＯＳ６０は、ＨＤＤアプリケーションを起動する。よって、サブＯＳ６０は、ユーザが「ボックス」ボタンの入力を行なった時刻Ｔ１からｔｗ２秒後の時刻Ｔ３において、ＨＤＤアプリケーションの起動を完了し、ボックスジョブを実行することができる。
【００５５】
その結果、画像形成装置１はユーザの待ち時間（「ボックス」ボタンをタッチしてからジョブが実行されるまでの時間）を、上記関連する画像形成装置に比べてｔｗ１秒間からｔｗ２秒間に短縮することができる。すなわち、画像形成装置１は、関連する画像形成装置１Ａに比べてユーザの利便性を向上させることができる。
【００５６】
ステップＳ３４において、メインＯＳ５０は、既にＨＤＤアプリケーションが起動されているため、ＨＤＤアプリケーションの起動を省略して、ＦＡＸアプリケーションを起動する。その結果、制御部１０は、一連のアプリケーションの起動完了を、上記（ｃ１）の場合の時刻Ｔｆ１から時刻Ｔｆ２に早めることができる。
【００５７】
なお、ステップＳ１２において、サブＯＳ６０がパネルアプリケーションを起動する構成を取っているが、メインＯＳ５０およびサブＯＳ６０以外のプログラムがパネルアプリケーションを起動する構成であってもよい。
【００５８】
（ｃ３．サブＯＳ６０で関連するアプリケーションを起動しない場合）
上記（ｃ２）の例では、ユーザの待ち時間が短縮されたが、必ずしもサブＯＳ６０で関連するアプリケーションを起動した方がよいとは限らない。サブＯＳ６０で関連するアプリケーションを起動することによって、かえってユーザの待ち時間が長くなるケースも存在する。以下、図４を用いてサブＯＳ６０で関連するアプリケーションを起動しない例について説明を行なう。
【００５９】
＜ｃ３−１．ユーザの入力が遅い場合＞
図４は、画像形成装置１におけるアプリケーションの起動制御について説明する図である。なお、図４（ａ）および図４（ｂ）において、図３と同一符号を付している部分については同じであるので、その説明は繰り返さない。
【００６０】
図４（ａ）を参照して、時刻Ｔ４において、ユーザは、図１（ｂ）に示されるタッチパネル１０３Ａ上の「ボックス」ボタンをタッチする（ステップＳ４０）。さらに、サブＯＳ６０は、当該指示の入力を受け、ボックスジョブに関連するアプリケーションがＨＤＤアプリケーションであることを特定する。
【００６１】
仮に、サブＯＳ６０がステップＳ４２において、ＨＤＤアプリケーションを起動した場合、当該アプリケーションの起動が完了するのは時刻Ｔ５である。一方、ステップＳ２８において、メインＯＳ５０がＨＤＤアプリケーションを起動した場合、当該アプリケーションの起動が完了するのは時刻Ｔ２である。
【００６２】
すなわち、サブＯＳ６０がメインＯＳ５０に代わってＨＤＤアプリケーションを起動することによって、結果的にユーザの待ち時間が長くなってしまう。
【００６３】
これは、ユーザがボックスジョブの入力を行なう（「ボックス」ボタンにタッチする）タイミングが、画像形成装置１に電源供給を開始してから相当時間経過していることに起因する。
【００６４】
かかる場合、サブＯＳ６０は、ＨＤＤアプリケーションを起動しないことによって、ユーザの待ち時間が長引くことを避ける。
【００６５】
＜ｃ３−２．サブＣＰＵコア１２Ｂの処理能力が低い場合＞
本例において、サブＣＰＵコア１２Ｂは、メインＣＰＵコア１２Ａに比して処理能力が低いとする。かかる場合、サブＯＳ６０で関連するアプリケーションを起動することによって、かえってユーザの待ち時間を長引かせることがある。
【００６６】
図４（ｂ）を参照して、時刻Ｔ６において、ユーザは、図１（ｂ）に示されるタッチパネル１０３Ａ上の「ボックス」ボタンをタッチする（ステップＳ５０）。さらに、サブＯＳ６０は、当該指示の入力を受け、ボックスジョブに関連するアプリケーションがＨＤＤアプリケーションであることを特定する。
【００６７】
仮に、サブＯＳ６０がステップＳ５２において、ＨＤＤアプリケーションを起動した場合、低い処理能力に起因して当該アプリケーションの起動が完了するのは時刻Ｔ７となる。一方、ステップＳ２８において、メインＯＳ５０がＨＤＤアプリケーションを起動した場合、当該アプリケーションの起動が完了するのは時刻Ｔ２である。
【００６８】
かかる場合も、サブＯＳ６０がＨＤＤアプリケーションを起動することによってユーザの待ち時間が長引くことになる。よって、サブＯＳ６０は、ＨＤＤアプリケーションの起動を起動しない。
【００６９】
（ｃ４．サブＯＳ６０におけるアプリケーションの起動制御）
上記に、サブＯＳ６０で関連するアプリケーションを起動した方がユーザの待ち時間が長くなる場合の例を説明した。これらの事例を考慮し、図５を用いて常にユーザの待ち時間が長くならないサブＯＳ６０のアプリケーション起動制御について説明を行なう。
【００７０】
図５は、サブＯＳ６０におけるアプリケーションの起動制御を説明するフローチャートである。図５の処理は、サブＯＳがＲＯＭ１２に格納される制御プログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００７１】
図５を参照して、ステップＳ１００において、画像形成装置１は、電源供給が開始される。ステップＳ１０２において、サブＣＰＵコア１２Ｂは、サブＯＳ６０の起動を含むブートプログラムの起動を行なう。
【００７２】
ステップＳ１０３において、サブＯＳ６０は、パネルアプリケーションを起動し、操作パネル１０３においてユーザの入力を受け付け可能な状態にする。
【００７３】
ステップＳ１０４において、サブＯＳ６０は、メインアプリケーションを起動する指示の入力があったか否かを判断する。具体的には、図１（ｂ）に示されるタッチパネル１０３Ａ上のボタン入力があるかを判断する。メインアプリケーションとは、メインＯＳ５０が起動することを予定しているアプリケーションをいう。本例において、一例として、メインアプリケーションは、定着アプリケーション、エンジンアプリケーション、スキャンアプリケーション、ＨＤＤアプリケーション、ＦＡＸアプリケーションのことをいう。
【００７４】
サブＯＳ６０は、ステップＳ１０４において、メインアプリケーションを起動する指示の入力があったと判断した場合（ステップＳ１０４においてＹＥＳ）、当該制御をステップＳ１０８に進める。
【００７５】
一方、サブＯＳ６０は、ステップＳ１０４において、メインアプリケーションを起動する指示の入力がないと判断した場合（ステップＳ１０４においてＮＯ）、当該制御をステップＳ１０６に進める。
【００７６】
ステップＳ１０６において、サブＯＳ６０は、メインＯＳ５０によってメインアプリケーションがすべて起動完了しているか否かを判断する。具体的には、サブＯＳ６０は、Ｓ−ＲＡＭ１６のワークエリアに展開されているデータに基づいて、メインアプリケーションがすべて起動完了しているか否かを判断する。
【００７７】
サブＯＳ６０は、ステップＳ１０６において、メインアプリケーションが全て起動完了されていると判断した場合（ステップＳ１０６においてＹＥＳ）、当該制御をステップＳ１２０に進める。
【００７８】
一方、サブＯＳ６０は、ステップＳ１０６において、メインアプリケーションがすべて起動完了していない判断した場合（ステップＳ１０６においてＮＯ）、当該制御をステップＳ１０４に戻す。
【００７９】
ステップＳ１０８において、サブＯＳ６０は、ユーザがタッチパネル１０３Ａ上で入力した内容から、関連するメインアプリケーションの特定を行なうとともに、当該関連するメインアプリケーションが起動中であるか、または既に起動が完了しているかを判断する。
【００８０】
サブＯＳ６０は、図６に示される関連アプリテーブルＴａ１に基づいて、ユーザがタッチパネル１０３Ａ上で入力した内容から、関連するメインアプリケーションの特定を行なう。
【００８１】
図６に示されるように、たとえば、タッチパネル１０３Ａ上の「コピー」ボタンは、メインアプリケーションのうち定着アプリケーションとエンジンアプリケーションと関連付られている。
【００８２】
サブＯＳ６０は、関連するメインアプリケーションの特定を行なった後に、Ｓ−ＲＡＭ１６のワークエリアに展開されているデータに基づいて、当該関連するメインアプリケーションが起動中であるか、または既に起動が完了しているかを判断する。
【００８３】
サブＯＳ６０は、ステップＳ１０８において、関連するメインアプリケーションが起動中である、または既に起動が完了していると判断した場合（ステップＳ１０８においてＹＥＳ）、当該制御をステップＳ１１４に進める。
【００８４】
一方、サブＯＳ６０は、ステップＳ１０８において、関連するメインアプリケーションが起動中でなく、かつ、既に起動が完了していないと判断した場合（ステップＳ１０８においてＮＯ）、当該制御をステップＳ１１０に進める。
【００８５】
ステップＳ１１０において、サブＯＳ６０は、特定したアプリケーションを、メインＯＳ５０で起動するよりもサブＯＳ６０で起動した方が早いか否かを判断する。
【００８６】
図７を用いて、ステップＳ１０８およびステップＳ１１０の制御について説明を行なう。図７は、サブＣＰＵコア１２Ｂの機能構成を説明するブロック図である。
【００８７】
図７を参照して、指示内容解析部３０は、ユーザがタッチパネル１０３Ａ上で入力した内容に基づいて、関連アプリテーブルＴａ１を参照し、関連するメインアプリケーションの特定を行なう。続いて、指示内容解析部３０は、特定した関連するアプリケーションを起動完了判断部３２に出力する。
【００８８】
起動完了判断部３２は、Ｓ−ＲＡＭ１６のワークエリアに展開されているデータを参照し、指示内容解析部３０からの入力を受けた関連するアプリケーションがメインＯＳ５０によって起動中であるか、または既に起動が完了しているかを判断する。
【００８９】
起動完了判断部３２は、関連するアプリケーションが起動中でなく、かつ、既に起動が完了していないと判断した場合、当該関連するアプリケーションの情報を起動時間算出部３４と残り時間算出部３６とに出力する。
【００９０】
起動時間算出部３４は、図８に示される起動時間テーブルＴａ２を参照してサブＯＳ６０で関連するアプリケーションを起動した場合にかかる時間（以下、「サブ起動時間」とも称する。）を算出し、算出した情報を比較部３８に出力する。たとえば、定着アプリケーションとエンジンアプリケーションとが関連するアプリケーションである場合、残り時間算出部３６は、サブ起動時間として９秒要する、という情報を比較部３８に出力する。
【００９１】
残り時間算出部３６は、タイマ２２に基づいて、ＣＰＵ１２がブートプログラムの起動処理を開始してから、メインアプリケーションの起動指示が入力されるまでに経過した時間（以下、「経過時間」とも称する。）を取得する。
【００９２】
さらに、残り時間算出部３６は、図９に示される完了時間テーブルＴａ３を参照して、メインＯＳ５０によって関連するアプリケーションがすべて起動するまでに要する時間（以下、「メイン起動時間」とも称する。）を取得する。完了時間テーブルＴａ３に記載されている時間は、メインＣＰＵコア１２Ａがブートプログラムの起動処理を開始してから、メインＯＳ５０が各アプリケーションの起動を完了するまでの時間である。たとえば、定着アプリケーションとエンジンアプリケーションとが関連するアプリケーションである場合、残り時間算出部３６は、最も起動順序が遅いエンジンアプリケーションの起動完了時間を参照して、メイン起動時間が１２秒であるという情報を取得する。
【００９３】
続いて、残り時間算出部３６は、メイン起動時間から経過時間を差し引き、得られた時間（以下、「残り時間」とも称する。）を比較部３８に出力する。
【００９４】
すなわち、サブＯＳ６０は、起動完了判断部３２において、関連するアプリケーションのうち起動していないプログラムがあると判断すると、残り時間算出部３６において、メインＯＳ５０がメインアプリケーションを起動する処理の進行度合いに基づいて、残り時間を算出する。
【００９５】
別の局面において、残り時間算出部３６は、メイン起動時間を取得するにあたって、完了時間テーブルＴａ３ではなく、起動時間テーブルＴａ２を参照してもよい。具体的には、メインＯＳ５０は、予め定められた順にしたがってプログラムを起動する。そこで、残り時間算出部３６は、当該予め定められた順に従って、関連するアプリケーションのうち最も起動順序が遅いアプリケーションを起動するまでに要する時間を算出する。たとえば、定着アプリケーションとエンジンアプリケーションとが関連するアプリケーションである場合、残り時間算出部３６は、予め定められた順に基づいて、エンジンアプリケーションが最も起動順序が遅いアプリケーションであると判断する。続いて、残り時間算出部３６は、メインＯＳ５０が当該エンジンアプリケーションを起動するまでの時間として、ブートプログラム、定着アプリケーション、エンジンアプリケーションの起動時間を合計し、メイン起動時間が１２秒であるという情報を取得する。
【００９６】
また、完了時間テーブルＴａ３および起動時間テーブルＴａ２には、予め定められた時間が格納されているが、当該時間が更新される構成であってもよい。より具体的には、メインＣＰＵコア１２Ａ（メインＯＳ５０）およびサブＣＰＵコア１２Ｂ（サブＯＳ６０）によって各プログラムの起動を行なった場合に、各プログラムの起動に要した時間に基づいて、上記テーブルに格納されている対応する時間を更新される構成であってもよい。
【００９７】
比較部３８は、残り時間よりもサブ起動時間の方が短い場合に、サブＯＳ６０で関連するアプリケーションを起動した方が、ユーザの待ち時間が短くなると判断する。
【００９８】
一方、比較部３８は、残り時間よりもサブ起動時間の方が短くない場合に、サブＯＳ６０で関連するアプリケーションを起動すると、ユーザの待ち時間が短くならないと判断する。
【００９９】
再び図５を参照して、サブＯＳ６０は、ステップＳ１１０において、特定したアプリケーションを、メインＯＳ５０で起動するよりもサブＯＳ６０で起動した方が早いと判断した場合（ステップＳ１１０においてＹＥＳ）、当該制御をステップＳ１１２に進め、関連するアプリケーションの起動を行なう。
【０１００】
一方、サブＯＳ６０は、ステップＳ１１０において、特定したアプリケーションを、メインＯＳ５０で起動するよりもサブＯＳ６０で起動した方が早くないと判断した場合（ステップＳ１１０においてＮＯ）、当該制御をステップＳ１２０に進める。
【０１０１】
ステップＳ１１４において、サブＯＳ６０は、操作パネル１０３を介してジョブの実行指示が入力されたか否かを判断する。たとえば、ステップＳ１０４において、タッチパネル１０３Ａ上の「コピー」ボタンがタッチされる。これをうけ、サブＯＳ６０は、ステップＳ１１２において、関連するアプリケーションとして、定着アプリケーションとエンジンアプリケーションとを起動し、ユーザからコピージョブの実行を受け付け可能な状態にする。当該状態において、サブＯＳ６０は、ユーザから操作パネル１０３を介してコピージョブの実行指示が入力されたか否かを判断する（ステップＳ１１４）。
【０１０２】
サブＯＳ６０は、ステップＳ１１４において、操作パネル１０３を介してジョブの実行指示が入力されたと判断した場合（ステップＳ１１４においてＹＥＳ）、当該制御をステップＳ１１６に進め、当該入力されたジョブの実行を行う。
【０１０３】
一方、サブＯＳ６０は、ステップＳ１１４において、操作パネル１０３を介してジョブの実行指示が入力されていないと判断した場合（ステップＳ１１４においてＮＯ）、当該制御をステップＳ１１８に進める。
【０１０４】
ステップＳ１１８において、サブＯＳ６０は、メインＯＳ５０によってメインアプリケーションがすべて起動完了しているか否かを判断する。
【０１０５】
サブＯＳ６０は、ステップＳ１１８においてメインＯＳ５０によってメインアプリケーションがすべて起動完了していると判断した場合（ステップＳ１１８においてＹＥＳ）、当該制御をステップＳ１１４に戻す。
【０１０６】
一方、サブＯＳ６０は、ステップＳ１１８においてメインＯＳ５０によってメインアプリケーションが全て起動完了していると判断した場合（ステップＳ１１８においてＮＯ）、当該制御をステップＳ１２０に進める。
【０１０７】
ステップＳ１２０において、サブＯＳ６０は、パネルアプリケーションを含む、起動したアプリケーションの制御をメインＯＳ５０に引き継ぐ。当該引き継ぎは、一例として、以下の手順が行われる。サブＯＳ６０は、起動したアプリケーションにより実現される画像処理機能のジョブを処理していない場合に、当該起動したアプリケーションの制御を停止する。続いて、サブＯＳ６０は、メインＯＳ５０に当該アプリケーションの制御を引き継ぐよう要求する制御信号を送信する。メインＯＳ５０は、当該制御信号の入力を受けて、当該アプリケーションの制御をサブＯＳ６０から引き継ぐ。
【０１０８】
上記によれば、サブＯＳ６０は、関連するアプリケーションを自身で起動した方がメインＯＳ５０で起動するよりもユーザの待ち時間が短くなると判断した場合にのみ、当該関連するアプリケーションの起動を行なう。そのため、マルチコアプロセッサを搭載する画像形成装置１は、ユーザの指定するアプリケーションプログラムの起動時間を短縮することができる。
【０１０９】
（ｃ５．メインＯＳ５０におけるアプリケーションの起動制御）
上記にサブＯＳ６０におけるアプリケーションの起動制御について説明を行なった。以下、図１０を用いてメインＯＳ５０におけるアプリケーションの起動制御について説明を行なう。
【０１１０】
図１０は、メインＯＳ５０におけるアプリケーションの起動制御を説明するフローチャートである。図１０の処理は、メインＯＳ５０がＲＯＭ１２に格納される制御プログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【０１１１】
図１０を参照して、ステップＳ１３０において、画像形成装置１は、電源供給が開始され、ステップＳ１３２において、メインＣＰＵコア１２Ａは、メインＯＳ５０の起動を含むブートプログラムを起動する。
【０１１２】
ステップＳ１３４〜ステップＳ１５０にかけて、メインＯＳ５０はメインアプリケーションを予め定められた順序で読み込んで起動を行なう。但し、メインＯＳ５０は、各アプリケーションの起動を行なう前に、当該アプリケーションが起動中であるか、または既に起動を完了しているかを判断する。具体的には、メインＯＳ５０は、Ｓ−ＲＡＭ１６のワークエリアに展開されているデータに基づいて、アプリケーションが起動中であるか、または既に起動を完了しているかの判断を行なう。
【０１１３】
当該アプリケーションが起動中であるか、または既に起動を完了していると判断した場合（たとえば、ステップＳ１３４においてＹＥＳ）、メインＯＳ５０は、当該アプリケーションの起動を省略する。続いて、メインＯＳ５０は、予め定められた順に基づいて、当該アプリケーションの次の順序のアプリケーションが起動中であるか、または既に起動を完了しているかを判断する。
【０１１４】
一方、当該アプリケーションが起動中でなく、かつ既に起動を完了していないと判断した場合（たとえば、ステップＳ１３４においてＮＯ）、メインＯＳ５０は、当該アプリケーションの起動を行なう。
【０１１５】
上記構成によれば、メインアプリケーションのうちサブＯＳ６０が起動中／起動済みのアプリケーションについて、再度メインＯＳ５０で起動処理を行なうという無駄を防ぎ、メインアプリケーションすべての起動が完了する時間を短縮することができる。
【０１１６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１７】
１  画像形成装置、１０  制御部、１２  ＣＰＵ、１２Ａ  メインＣＰＵコア、１２Ｂ  サブＣＰＵコア、１４  ＲＯＭ、１６  Ｓ−ＲＡＭ、１８  ＮＶ−ＲＡＭ、２０  記憶装置、２２  タイマ、２６  定着装置、２８  プリンターコントローラ、３０  指示内容解析部、３２  起動完了判断部、３４  起動時間算出部、３６  残り時間算出部、３８  比較部、５０  メインＯＳ、６０  サブＯＳ、１０１  画像読取装置、１０３  操作パネル、１０５  プリントエンジン、１０７  給紙カセット、１０９  排出部。
【図１】
0006561748.tif 000002
【図２】
0006561748.tif 000003
【図３】
0006561748.tif 000004
【図４】
0006561748.tif 000005
【図５】
0006561748.tif 000006
【図６】
0006561748.tif 000007
【図７】
0006561748.tif 000008
【図８】
0006561748.tif 000009
【図９】
0006561748.tif 000010
【図１０】
0006561748.tif 000011