図面 (/)

技術 情報処理装置、情報処理装置の起動方法、及び、プログラム

出願人 株式会社リコー
発明者 千田滋也
出願日 2013年11月20日 (7年0ヶ月経過) 出願番号 2013-240058
公開日 2015年5月28日 (5年6ヶ月経過) 公開番号 2015-099554
状態 特許登録済
技術分野 ストアードプログラム
主要キーワード 要求処理量 ハードウエアタイマ カーネルイメージ 同時起動 リソース条件 指紋認証モジュール ターゲットリスト ロードアベレージ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2015年5月28日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (16)

課題

複数のCPUコアにより起動処理の複数のプログラムモジュールを円滑に実行して、情報処理装置起動遅延を抑制する。

解決手段

複数のプログラムモジュールの起動条件を取得し、起動条件に基づいて、複数のCPUコアによる複数のプログラムモジュールの起動順序を判断する。複数のCPUコアにより、起動順序に従って、起動可能なプログラムモジュールを実行して、複数のプログラムモジュールを起動する。起動処理中に変化する複数のCPUコアの負荷を示す負荷情報更新し、更新された負荷情報に基づいて、複数のCPUコアによるプログラムモジュールの起動を制限する。

概要

背景

複数のCPUコアを有するマルチコアCPUは、情報処理装置において広く採用されており、近年では、種々の機器に組み込まれた情報処理装置(組み込みシステム)においても普及している。これら情報処理装置では、マルチコアCPUを有効に利用して、各種処理を最適化することが望まれている。特に、ユーザビリティの観点から、電源オンにしてからユーザが使用可能になるまでの情報処理装置の起動時間を短縮して、情報処理装置を速く起動することが強く求められている。

そこで、従来、マルチコアCPUを利用して、分割されたカーネルイメージを順次実行することで、起動の高速化を図るオペレーティングシステム起動方法が知られている(特許文献1参照)。
しかしながら、特許文献1に記載された従来の起動方法では、カーネル起動以前のオペレーティングシステムの起動のみを速くしており、カーネル起動後にマルチコアCPUを有効に利用できずに、情報処理装置の起動が遅延する虞がある。

これに対し、従来、カーネル起動後に、マルチコアCPUにより、起動処理の複数のプログラムモジュールを同時に実行して、起動時間の短縮を図る情報処理装置が知られている。
図15は、従来の情報処理装置による起動処理の手順を示す図であり、UNIX(登録商標)又はLinux(登録商標)が搭載された情報処理装置による周知の起動処理の例を示している。

まず、比較のため、複数のプログラムモジュールを同時に実行しない情報処理装置の起動処理について説明する。図15Aに示す起動処理では、情報処理装置の起動時に、UNIXのinit(ここでは、SysVinit)プログラムが起動する。initプログラムは、情報処理装置の起動処理を行うプログラムである。このプログラムに基づくinitプロセスにより、情報処理装置が初期化され、起動処理の複数のプログラムモジュールが逐次実行される。これにより、複数のプログラムモジュール(ここでは、Syslog、D-Bus、Avahi、Bluetooth(登録商標))が逐次起動する。

図15Bに示す起動処理では、initプログラムであるUpstartが起動して、複数のプログラムモジュールが実行される。その際、例えば、USB(Universal Serial Bus)デバイス準備完了前に、USBに関連するプログラムモジュールが起動されると、そのメモリへのロードによりリソース消費されて、他のプログラムモジュールの起動が阻害される。また、他のプログラムモジュールが起動しなければ、機能しないプログラムモジュールもある。そこで、ここでは、複数のプログラムモジュールの起動が制御されて、情報処理装置に発生するイベント等をトリガーにして、プログラムモジュールが実行される。これにより、無駄なプログラムモジュールの起動によるリソースの競合を抑制しつつ、一部のプログラムモジュール(ここでは、AvahiとBluetooth)を同時に実行する。

図15Cに示す起動処理では、Linuxのsystemdが起動して、複数のプログラムモジュールが実行される。systemdは、Upstartを発展させたinitプログラムであり、複数のプログラムモジュールを同時に実行して、情報処理装置の起動時間を短縮する。ここでは、Syslog、D-Bus、Avahi、及び、Bluetoothが同時に実行されて起動する。

ここで、プログラムモジュールの起動時には、例えば、CPUコアにより使用されるメモリが確保されて、プログラムモジュールが記憶装置からメモリにロードされ、プログラムモジュールがCPUコアにより実行される。このように、プログラムモジュールの起動処理は、情報処理装置の各リソースを消費して、リソースに負荷をかける処理である。

これに対し、systemdでは、起動条件を満たす複数のプログラムモジュールが無差別に同時に実行されるため、リソースの競合が生じることがある。その結果、複数のCPUコアにより、起動処理の複数のプログラムモジュールを円滑に実行できずに、情報処理装置の起動が遅延する虞がある。特に、充分な容量のメモリと多くのCPUコアを備えたサーバに比べて、リソースが制限される組み込みシステムでは、リソースの競合が生じ易く、複数のプログラムモジュールの同時実行による影響が大きくなる。

概要

複数のCPUコアにより起動処理の複数のプログラムモジュールを円滑に実行して、情報処理装置の起動の遅延を抑制する。複数のプログラムモジュールの起動条件を取得し、起動条件に基づいて、複数のCPUコアによる複数のプログラムモジュールの起動順序を判断する。複数のCPUコアにより、起動順序に従って、起動可能なプログラムモジュールを実行して、複数のプログラムモジュールを起動する。起動処理中に変化する複数のCPUコアの負荷を示す負荷情報更新し、更新された負荷情報に基づいて、複数のCPUコアによるプログラムモジュールの起動を制限する。

目的

これら情報処理装置では、マルチコアCPUを有効に利用して、各種処理を最適化することが望まれている

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数のCPUコアにより起動処理の複数のプログラムモジュールを実行する情報処理装置であって、前記複数のプログラムモジュールの起動条件を取得する起動条件取得手段と、前記起動条件に基づいて、前記複数のCPUコアによる前記複数のプログラムモジュールの起動順序を判断する判断手段と、前記複数のCPUコアにより、前記起動順序に従って、起動可能な前記プログラムモジュールを実行して、前記複数のプログラムモジュールを起動する起動手段と、前記起動処理中に変化する前記複数のCPUコアの負荷を示す負荷情報更新する更新手段と、前記更新手段により更新された前記負荷情報に基づいて、前記複数のCPUコアによる前記プログラムモジュールの起動を制限する制限手段と、を備えた情報処理装置。

請求項2

請求項1に記載された情報処理装置において、前記制限手段は、前記負荷情報に基づいて、前記プログラムモジュールを実行する前記複数のCPUコアにより次の前記プログラムモジュールを実行可能か否か判定する判定手段を有し、前記判定手段の判定結果に基づいて、前記複数のCPUコアによる前記次のプログラムモジュールの起動を制限する情報処理装置。

請求項3

請求項2に記載された情報処理装置において、前記制限手段は、前記判定手段により実行可能でないと判定されたときに、前記次のプログラムモジュールの実行を停止する手段と、前記判定手段より実行可能であると判定されたときに、前記次のプログラムモジュールの実行の停止を解除する手段と、を有する情報処理装置。

請求項4

請求項1ないし3のいずれかに記載された情報処理装置において、前記判断手段は、前記起動条件に基づいて、前記複数のプログラムモジュールの間の依存関係を特定する手段と、前記依存関係に基づいて、前記複数のプログラムモジュールの起動順序を判断する手段と、を有する情報処理装置。

請求項5

請求項1ないし4のいずれかに記載された情報処理装置において、前記更新手段により更新された前記負荷情報に基づいて、前記起動処理中におけるスレッドの生成を制限する手段を備えた情報処理装置。

請求項6

請求項1ないし5のいずれかに記載された情報処理装置において、前記複数のCPUコアにより使用されるメモリ使用率を取得する使用率取得手段と、前記メモリの使用率に基づいて、前記複数のCPUコアによる前記プログラムモジュールの起動を制限し、前記複数のCPUコアによる前記メモリの使用を規制する規制手段と、を備えた情報処理装置。

請求項7

請求項6に記載された情報処理装置において、前記メモリの使用率に基づいて、前記起動処理中におけるスレッドの生成を制限する手段を備えた情報処理装置。

請求項8

請求項1ないし7のいずれかに記載された情報処理装置において、前記更新手段は、所定の前記プログラムモジュールを実行するように指定された所定の前記CPUコアの負荷情報を更新する手段を有し、前記制限手段は、前記所定のCPUコアの負荷情報に基づいて、前記所定のCPUコアによる前記所定のプログラムモジュールの起動を制限する手段を有する情報処理装置。

請求項9

複数のCPUコアにより起動処理の複数のプログラムモジュールを実行する情報処理装置のコンピュータを、請求項1ないし8のいずれかに記載された情報処理装置の各手段として機能させるためのプログラム

請求項10

複数のCPUコアにより起動処理の複数のプログラムモジュールを実行する情報処理装置の起動方法であって、前記複数のプログラムモジュールの起動条件を取得する工程と、前記起動条件に基づいて、前記複数のCPUコアによる前記複数のプログラムモジュールの起動順序を判断する工程と、前記複数のCPUコアにより、前記起動順序に従って、起動可能な前記プログラムモジュールを実行して、前記複数のプログラムモジュールを起動する工程と、前記起動処理中に変化する前記複数のCPUコアの負荷を示す負荷情報を更新する工程と、前記更新された負荷情報に基づいて、前記複数のCPUコアによる前記プログラムモジュールの起動を制限する工程と、を有する情報処理装置の起動方法。

技術分野

0001

本発明は、複数のCPU(Central Processing Unit)コアを備えた情報処理装置、情報処理装置の起動方法、及び、プログラムに関する。

背景技術

0002

複数のCPUコアを有するマルチコアCPUは、情報処理装置において広く採用されており、近年では、種々の機器に組み込まれた情報処理装置(組み込みシステム)においても普及している。これら情報処理装置では、マルチコアCPUを有効に利用して、各種処理を最適化することが望まれている。特に、ユーザビリティの観点から、電源オンにしてからユーザが使用可能になるまでの情報処理装置の起動時間を短縮して、情報処理装置を速く起動することが強く求められている。

0003

そこで、従来、マルチコアCPUを利用して、分割されたカーネルイメージを順次実行することで、起動の高速化を図るオペレーティングシステムの起動方法が知られている(特許文献1参照)。
しかしながら、特許文献1に記載された従来の起動方法では、カーネル起動以前のオペレーティングシステムの起動のみを速くしており、カーネル起動後にマルチコアCPUを有効に利用できずに、情報処理装置の起動が遅延する虞がある。

0004

これに対し、従来、カーネル起動後に、マルチコアCPUにより、起動処理の複数のプログラムモジュールを同時に実行して、起動時間の短縮を図る情報処理装置が知られている。
図15は、従来の情報処理装置による起動処理の手順を示す図であり、UNIX(登録商標)又はLinux(登録商標)が搭載された情報処理装置による周知の起動処理の例を示している。

0005

まず、比較のため、複数のプログラムモジュールを同時に実行しない情報処理装置の起動処理について説明する。図15Aに示す起動処理では、情報処理装置の起動時に、UNIXのinit(ここでは、SysVinit)プログラムが起動する。initプログラムは、情報処理装置の起動処理を行うプログラムである。このプログラムに基づくinitプロセスにより、情報処理装置が初期化され、起動処理の複数のプログラムモジュールが逐次実行される。これにより、複数のプログラムモジュール(ここでは、Syslog、D-Bus、Avahi、Bluetooth(登録商標))が逐次起動する。

0006

図15Bに示す起動処理では、initプログラムであるUpstartが起動して、複数のプログラムモジュールが実行される。その際、例えば、USB(Universal Serial Bus)デバイス準備完了前に、USBに関連するプログラムモジュールが起動されると、そのメモリへのロードによりリソース消費されて、他のプログラムモジュールの起動が阻害される。また、他のプログラムモジュールが起動しなければ、機能しないプログラムモジュールもある。そこで、ここでは、複数のプログラムモジュールの起動が制御されて、情報処理装置に発生するイベント等をトリガーにして、プログラムモジュールが実行される。これにより、無駄なプログラムモジュールの起動によるリソースの競合を抑制しつつ、一部のプログラムモジュール(ここでは、AvahiとBluetooth)を同時に実行する。

0007

図15Cに示す起動処理では、Linuxのsystemdが起動して、複数のプログラムモジュールが実行される。systemdは、Upstartを発展させたinitプログラムであり、複数のプログラムモジュールを同時に実行して、情報処理装置の起動時間を短縮する。ここでは、Syslog、D-Bus、Avahi、及び、Bluetoothが同時に実行されて起動する。

0008

ここで、プログラムモジュールの起動時には、例えば、CPUコアにより使用されるメモリが確保されて、プログラムモジュールが記憶装置からメモリにロードされ、プログラムモジュールがCPUコアにより実行される。このように、プログラムモジュールの起動処理は、情報処理装置の各リソースを消費して、リソースに負荷をかける処理である。

0009

これに対し、systemdでは、起動条件を満たす複数のプログラムモジュールが無差別に同時に実行されるため、リソースの競合が生じることがある。その結果、複数のCPUコアにより、起動処理の複数のプログラムモジュールを円滑に実行できずに、情報処理装置の起動が遅延する虞がある。特に、充分な容量のメモリと多くのCPUコアを備えたサーバに比べて、リソースが制限される組み込みシステムでは、リソースの競合が生じ易く、複数のプログラムモジュールの同時実行による影響が大きくなる。

発明が解決しようとする課題

0010

本発明は、前記従来の問題に鑑みなされたもので、その目的は、複数のCPUコアにより起動処理の複数のプログラムモジュールを円滑に実行して、情報処理装置の起動の遅延を抑制することである。

課題を解決するための手段

0011

本発明は、複数のCPUコアにより起動処理の複数のプログラムモジュールを実行する情報処理装置であって、前記複数のプログラムモジュールの起動条件を取得する起動条件取得手段と、前記起動条件に基づいて、前記複数のCPUコアによる前記複数のプログラムモジュールの起動順序を判断する判断手段と、前記複数のCPUコアにより、前記起動順序に従って、起動可能な前記プログラムモジュールを実行して、前記複数のプログラムモジュールを起動する起動手段と、前記起動処理中に変化する前記複数のCPUコアの負荷を示す負荷情報更新する更新手段と、前記更新手段により更新された前記負荷情報に基づいて、前記複数のCPUコアによる前記プログラムモジュールの起動を制限する制限手段と、を備えた情報処理装置である。

発明の効果

0012

本発明によれば、複数のCPUコアにより起動処理の複数のプログラムモジュールを円滑に実行して、情報処理装置の起動の遅延を抑制することができる。

図面の簡単な説明

0013

本実施形態の情報処理装置による起動処理の概略を示す図である。
本実施形態の画像形成装置ハードウエア構成を示すブロック図である。
本実施形態の画像形成装置のソフトウエア構成を示すブロック図である。
本実施形態の起動処理モジュールの構成図である。
本実施形態のターゲットリストの一例を示す図である。
本実施形態の起動スクリプトの一例を示す図である。
本実施形態の複数のプログラムモジュールの間の依存関係を示す図である。
本実施形態の複数のプログラムモジュールの起動順序を示す図である。
本実施形態のプログラムモジュールの起動調整部を示すブロック図である。
本実施形態の起動処理モジュールによる処理手順を示すフローチャートである。
本実施形態の起動処理モジュールによるプログラムモジュールの起動手順を示すフローチャートである。
本実施形態の起動調整部の処理手順を示すフローチャートである。
本実施形態の起動処理モジュールのスリープ状態解除する手順を示すフローチャートである。
本実施形態のスレッド生成処理の手順を示すフローチャートである。
従来の情報処理装置による起動処理の手順を示す図である。

実施例

0014

本発明の情報処理装置と情報処理装置の起動方法の一実施形態について、図面を参照して説明する。
本実施形態の情報処理装置は、少なくとも1つのマルチコアCPUを備えている。マルチコアCPUは、複数のCPUコア(プロセッサコア)を有するマルチコアプロセッサであり、複数のCPUコアにより、複数の処理を同時に実行する。情報処理装置の起動時には、マルチコアCPUの複数のCPUコアにより、情報処理装置の起動処理の複数のプログラムモジュールが実行されて、情報処理装置が起動される。プログラムモジュールは、情報処理装置の起動処理において実行される各種のプログラムであり、それぞれCPUコアによりプロセスとして実行(起動)される。

0015

図1は、本実施形態の情報処理装置による起動処理の概略を示す図であり、3つのCPUコアを備えた情報処理装置による起動処理の例を示している。
図示のように、情報処理装置の起動時に、起動処理を行うプログラム(ここでは、initプログラム)が起動して、このプログラムに基づくinitプロセスにより、起動処理の複数のプログラムモジュールA〜Hが実行される。複数のプログラムモジュールA〜Hは、右に向かう白抜き矢印(白矢印)で示すように、3つのCPUコアにより、所定の順序で実行されて起動する。

0016

なお、図1において、通常の矢印(黒矢印)は、始点にある白矢印のプログラムモジュールと終点にある白矢印のプログラムモジュールの間に依存関係があることを示している。依存関係とは、プログラムモジュールが他のプログラムモジュールに依存するときのプログラムモジュールの間の関係である。例えば、プログラムモジュールが他のプログラムモジュールの起動を条件に起動可能になるとき、又は、プログラムモジュールの起動が他のプログラムモジュールにより規制されるときに、プログラムモジュールの間に依存関係が生じる。

0017

本実施形態の情報処理装置は、複数のプログラムモジュール(プロセス)の実行(起動)を制御して、可能な限りCPUコアの数と同じ数のプログラムモジュールを実行する。また、複数のプログラムモジュールの間の依存関係に基づいて、複数のプログラムモジュールの起動順序を制御しつつ、複数のCPUコアの負荷に対応して、プログラムモジュールの起動を制限する。ここでは、3つのCPUコアにより、3つのプログラムモジュールを同時に実行できるが、プログラムモジュールCはプログラムモジュールBに依存し、プログラムモジュールD、EはプログラムモジュールAに依存する。そのため、まず、プログラムモジュールA、Bが実行される。

0018

プログラムモジュールAの起動が完了したときに、プログラムモジュールD、Eが起動可能になり、プログラムモジュールBとともに、プログラムモジュールD、Eが実行される。続いて、プログラムモジュールBの起動が完了したときに、プログラムモジュールCが起動可能になり、プログラムモジュールD、Eとともに、プログラムモジュールCが実行される。プログラムモジュールEの起動が完了したときには、ここでは、プログラムモジュールFが実行される。また、プログラムモジュールDの起動が完了したときに、プログラムモジュールGが実行され、プログラムモジュールCの起動が完了したときに、プログラムモジュールHが実行される。

0019

このように、情報処理装置は、複数のプログラムモジュールを無差別に同時に実行することなく、複数のプログラムモジュールの起動順序を制御する。また、リソース(ここでは、CPUリソース)の状況に対応して、同時に実行するプログラムモジュールの数が制限され、CPUコアの数以下の数のプログラムモジュールが実行される。これにより、リソースの競合を緩和して、リソースの競合による起動処理の遅延を抑制し、情報処理装置の起動時間を短縮する。以下、この情報処理装置について、情報処理装置が組み込まれた画像形成装置を例にとり、具体的に説明する。ここでは、画像形成装置は、ファクシミリプリンタコピースキャナ等の複数の機能を有する複合機MFP:Multi-Function Peripheral)である。

0020

図2は、本実施形態の画像形成装置1のハードウエア構成を示すブロック図である。
図示のように、情報処理装置の一例である画像形成装置1は、エンジン11と、拡張スロット用ボード12と、コントローラ13と、USBI/F(インターフェース)14を備えている。エンジン11は、画像形成装置1のエンジン、例えば、プリンタエンジンスキャナエンジンファクシミリエンジンである。拡張スロット用ボード12は、PCI(Peripheral Component Interconnect)スロットである2つのスロット(a)21、スロット(b)22を有し、コントローラ13に接続される。コントローラ13は、エンジン11を含む画像形成装置1の全体を制御する。USBI/F14は、各種のUSBデバイスと接続される。

0021

次に、コントローラ13が有する構成について説明する。マルチコアCPU23は、複数のCPUコア(図示せず)を有するCPUであり、OS(オペレーティングシステム)、及び、各種のプログラムを実行して、画像形成装置1の各部を制御する。ASIC(Application Specific IntegratedCircuit)(A)24は、マルチコアCPU23により制御されて、各種の画像処理を行う。例えば、ASIC(A)24により、外部装置から受信した印刷データが画像データに変換される。MEM(メモリ)25は、画像データを記憶するラインメモリであるとともに、画像形成装置1のメインメモリであり、プログラムのワークエリアとしても使用される。

0022

DDハードディスクドライブ)26は、画像データ、管理情報フォントデータ、OS、及び、プログラム等を記憶する記憶装置である。SD(Secure Digital)27は、不揮発性メモリの一例であるSDメモリカードであり、SDメモリカードスロットに挿入されている。LOGIC28は、PCI信号からローカルバス信号を作り出すIC(IntegratedCircuit)である。ROM(Read Only Memory)(A)29とROM(B)30は、画像形成装置1の電源がオンになったときに実行されるプログラム(例えば、BIOS(Basic Input/Output System))を記憶する。

0023

VRAM(Nonvolatile Random Access Memory)31は、不揮発性メモリの一例であり、画像形成装置1の設定等を記憶する。スロット(A)32、スロット(B)33、及び、スロット(C)34は、PCIスロットである。ASIC(B)35は、ASIC(A)24とPCIで接続され、画像形成装置1の電源を制御する。操作部36は、表示画面を有するユーザインターフェースであり、ユーザによる画像形成装置1への操作を受け付ける。

0024

画像形成装置1の起動時には、電源のオンにより、ASIC(B)35にリセット信号が入力され、ASIC(B)35が電源を制御して画像形成装置1の各部に電力を供給する。また、画像形成装置1の各部にもリセット信号が入力される。続いて、マルチコアCPU23がROM(A)29に記憶された初期化プログラムを実行して、初期化プログラムにより、画像形成装置1の各部が初期化される。その後、画像形成装置1は、マルチコアCPU23により、汎用OSを起動し、各種のプログラムとアプリケーションを起動する。

0025

図3は、本実施形態の画像形成装置1のソフトウエア構成を示すブロック図である。
図示のように、画像形成装置1は、PRINT-APLプリントアプリケーション)41、COPY-APL(コピーアプリケーション)42、FAX-APL(FAXアプリケーション)43、SCAN-APL(スキャナアプリケーション)44、及び、NETWORK-APL(ネットワークアプリケーション)45を有する。これらアプリケーションは、ジョブ実行条件を設定するためのUI(User Interface)画面を操作部36の表示画面に表示し、操作部36により、ユーザの設定を受け付ける。なお、アプリケーションとは、汎用OS55よりも上位の階層に位置するプログラムの呼称であり、組み込みプログラム一種である。

0026

サービスAPI46は、上記したアプリケーションがサービス層のサービスを読み出すためのAPI(Application Programming Interface)である。サービス層には、ECS(エンジンコントロールサービス)47、MCS(メモリコントロールサービス)48、OCS(オペレーションパネルコントロールサービス)49、FCS(FAXコントロールサービス)50、NCS(ネットワークコントロールサービス)51、SCSシステムコントロールサービス)52、及び、SRM(システムリソースマネジャー)53がある。

0027

起動処理モジュール54は、画像形成装置1の起動処理を行うプログラム(initプログラム)であり、後述するように、画像形成装置1の起動時に、initプロセスを実行する。汎用OS55は、UNIX、又は、Linux等のOSである。エンジンコマンドI/F56は、汎用OS55がエンジン11と通信するためのプログラミングインターフェースである。ハードウエア57は、コントローラ13のハードウエアリソース(マルチコアCPU23、MEM25等)を示している。

0028

図4は、本実施形態の起動処理モジュール54の構成図である。
図示のように、起動処理モジュール54が起動すると、画像形成装置1の機能実現手段である起動処理モジュール54により、ターゲットリスト61と起動スクリプト62が取得される。ターゲットリスト61と起動スクリプト62は、HDD26のファイルシステムに予め記憶されており、起動処理モジュール54は、HDD26から読み出したターゲットリスト61と起動スクリプト62に基づいて、画像形成装置1の起動処理を行う。

0029

図5は、本実施形態のターゲットリスト61の一例を示す図である。
図示のように、ターゲットリスト61は、画像形成装置1の起動処理において起動するプログラムモジュールのリストであり、プログラムモジュール(ここでは、App1、App2)が起動の優先順位に対応して順に記述される。App1、App2は、プログラムモジュールの一種であるアプリケーションである。複数のプログラムモジュールがあるときには、上位のプログラムモジュールほど起動の優先順位が高く、図5に示す例では、App1がApp2よりも優先して起動される。以下では、ターゲットリスト61に記述されたプログラムモジュールを、他のプログラムモジュールと特に区別する必要があるときには、ターゲットプログラムモジュールという。

0030

なお、ターゲットリスト61には、アプリケーションに限定されず、種々のプログラムモジュールが記述される。また、ターゲットリスト61には、最終的に起動するターゲットプログラムモジュール(App1、App2)のみが記述される。従って、ターゲットプログラムモジュールを起動するために事前に起動されるプログラムモジュールがあるときでも、そのプログラムモジュールは、ターゲットリスト61には記述されない。

0031

起動スクリプト62(図4参照)は、画像形成装置1の起動処理のための複数のプログラムモジュールの詳細が記述されたスクリプトであり、複数のプログラムモジュール毎に予め作成される。また、起動スクリプト62には、各プログラムモジュールの起動条件も記述されている。起動条件は、各プログラムモジュールを実行して起動するための条件(実行条件)であり、プログラムモジュールの種類に対応して様々な条件が設定される。記憶手段であるHDD26は、起動スクリプト62、及び、起動スクリプト62に含まれる複数のプログラムモジュールのそれぞれの起動条件を記憶する。

0032

図6は、本実施形態の起動スクリプト62の一例を示す図であり、一般的なセクションからなる起動スクリプト62を示している。
図示のように、起動スクリプト62(ここでは、somedaemon.script)は、起動処理モジュール54がプログラムモジュールの起動の動作を決定してプログラムモジュールを起動するためのテキストになっている。例えば、「unit」セクションにおいて、「Description」は、起動するプログラムモジュール名を指定している。また、「Requires」は、プログラムモジュールを起動するための事前条件(起動条件の一例)を示しており、ここでは、プログラムモジュールは、「/somedir」がマウントされたことを条件に起動する。他のプログラムモジュールの起動が条件になるときには、その旨が「Requires」に記述される。

0033

「Effect」は、起動スクリプト62の実行により生じる画像形成装置1のイベントを表しており、プログラムモジュールの事後条件を規定する。「Effect="created /var/XXX"」は、「var」というディレクトリに「XXX」というファイルが作成されることを示している。「Effect」のイベントが他の起動スクリプト62の「Requires」で要求されているときに、プログラムモジュールの間に依存関係が生じる。例えば、プログラムモジュールMの起動スクリプト62の「Requires」が、プログラムモジュールNの起動スクリプト62の「Effect」のイベントを起動条件(事前条件)とするときには、プログラムモジュールMはプログラムモジュールNに依存する。このように、起動処理モジュール54は、起動スクリプト62に基づいて、プログラムモジュールの間の依存関係を判断して特定する。

0034

「service」セクションの「ExecStart」には、起動するプログラムモジュールと、その記憶場所(path)が記述されており、シェルスクリプトが記述されることもある。画像形成装置1の起動処理において(図4参照)、起動処理モジュール54は、複数のプログラムモジュールの起動スクリプト62に基づいて、各プログラムモジュールを実行して、複数のプログラムモジュールを起動する。

0035

起動処理モジュール54のメイン63は、起動処理モジュール54のメインルーチンであり、起動処理モジュール54が行う処理の全体を管理するとともに、CPUコアによりプログラムモジュールを実行させて、プログラムモジュールの起動を開始する。また、起動処理モジュール54の起動により、メイン63は、HDD26からターゲットリスト61と起動スクリプト62を取得し、以下のサブルーチンの処理結果に基づいて、各プログラムモジュールを起動する。

0036

起動スクリプト解析部64は、ターゲットリスト61に基づいて、ターゲットプログラムモジュールの起動に必要な起動スクリプト62を取得する。この起動スクリプト62は、ターゲットプログラムモジュールの起動スクリプト62に加えて、ターゲットプログラムモジュールの起動に必要な1以上のプログラムモジュールの起動スクリプト62を含む。

0037

起動スクリプト62は、取得データ(内部データ)としてMEM25に記憶され、起動スクリプト解析部64により解析される。具体的には、起動スクリプト62に記述されたプログラムモジュールの起動条件に基づいて、起動スクリプト解析部64は、プログラムモジュールの起動に、他のプログラムモジュールの起動が必要であることを特定する。或いは、起動スクリプト解析部64は、プログラムモジュールの起動に、画像形成装置1のデバイス(ハードウエアを含む)の起動が必要であることを特定する。

0038

このように、起動スクリプト解析部64は、起動条件取得手段、及び、依存関係特定手段として機能する。画像形成装置1の起動処理において、起動スクリプト解析部64は、起動スクリプト62から複数のプログラムモジュールのそれぞれの起動条件を取得して、起動条件に基づいて、複数のプログラムモジュールの間の依存関係を特定する。また、起動スクリプト解析部64は、プログラムモジュールの起動条件に基づいて、プログラムモジュールの起動に関連して監視すべき画像形成装置1のリソースを特定する。

0039

プログラム状態監視部65は、画像形成装置1の起動処理において、複数のプログラムモジュールの状態を監視する。例えば、起動スクリプト解析部64が、プログラムモジュールPの起動にプログラムモジュールQの起動が必要であり、プログラムモジュールQの起動にプログラムモジュールRの起動が必要であると特定したとする。この場合に、プログラム状態監視部65は、プログラムモジュールPを起動するために、プログラムモジュールQ、Rの実行状態実行状況)を監視し、プログラムモジュールQ、Rの起動が完了したか否かを判断する。

0040

デバイス監視部66は、プログラムモジュールの起動に必要な画像形成装置1のデバイスを監視する。例えば、起動スクリプト解析部64が、プログラムモジュールの起動に、HDD26をマウントすることが必要だと特定したときには、デバイス監視部66は、HDD26の状態を監視して、HDD26がマウントされたか否かを判断する。起動スクリプト解析部64が、プログラムモジュールの起動に、USBI/F14をRead状態にすることが必要だと特定したときには、デバイス監視部66は、USBI/F14の状態を監視して、USBI/F14がReady状態になったか否かを判断する。

0041

リソース監視部67は、プログラムモジュールの起動に関連する画像形成装置1のリソースを監視する。例えば、ファイルの作成が起動条件として起動スクリプト62に記述されているときには、起動スクリプト解析部64は、ファイルが記憶されるMEM25が監視するリソースであると特定する。この場合には、リソース監視部67は、MEM25にファイルが記憶されたか否かを監視する。

0042

次に、起動処理モジュール54により、ターゲットプログラムモジュール(図5参照)である2つのアプリケーション(App1、App2)を起動する手順について説明する。
図7は、本実施形態の複数のプログラムモジュールの間の依存関係を示す図であり、プログラムモジュールの起動条件となるデバイスの状態も示している。
図7において、矢印は、プログラムモジュールを起動する際の依存関係を示している。矢印の終点にあるプログラムモジュールは、矢印の始点にあるプログラムモジュールの起動を条件として起動し、或いは、矢印の始点にあるデバイスの状態が実現したことを条件として起動する。

0043

図示のように、一部の矢印には、矢印の終点にあるプログラムモジュールの起動条件(事前条件)となるイベントが記載されている。この起動条件は、起動スクリプト62の「Effect」と「Requires」の記述に対応する。例えば、KMMからSCSに向かう矢印の記載「create/var/XXX」は、KMMが起動することで、「var」というディレクトリに「XXX」というファイルが作成されることを示している。SCSは、「create/var/XXX」を条件に起動可能になる。また、usbdから延びる矢印には、「attached id=XXX」と記載されている。「attached」は、usbdの起動により、汎用OS55においてUSBドライバが有効になり、USBデバイスと接続されたことを意味する。「id」は、ポートIDを意味しており、何番目USBポートにUSBデバイスがつながっているかを示している。OCSと指紋認証モジュールは、「attached id=XXX」を条件に起動可能になる。

0044

USBデバイスがUSBI/F14に接続されたときに、USBデバイスの接続が、起動したusbdにより検知されて、デバイス監視部66に通知される。或いは、デバイス監視部66が、usbdの状態を監視して、USBデバイスの接続を検知する。これにより、デバイス監視部66は、USBデバイスがRead状態になり使用可能であると判断する。USBデバイスとして、操作部デバイスがUSBI/F14に接続されて、OCSの起動条件が満たされたときに、起動処理モジュール54のメイン63が、操作部デバイスを管理するOCSを起動する。また、USBデバイスとして、指紋認証用デバイスがUSBI/F14に接続されて、指紋認証モジュールの起動条件が満たされたときに、メイン63が指紋認証モジュールを起動する。

0045

以上の各依存関係を含むプログラムモジュールの間の依存関係に伴い、図7に示す例では、App1を起動するために、SCS、NCS、OCSの起動が必要であり、SCSを起動するために、KMMを起動することが必要である。また、OCSを起動するために、usbdを起動することが必要であり、usbdを起動するために、USBI/F14がReady状態であることが必要である。これに対し、App2は、HDD26がマウントされていることを条件に起動可能になり、デバイス監視部66によりHDD26がマウントされたと判断された後に、起動される。

0046

画像形成装置1の起動処理において、起動処理モジュール54の起動スクリプト解析部64は、複数のプログラムモジュールを実行して起動する順序(起動順序)を判断する判断手段として機能する。起動スクリプト解析部64は、起動スクリプト62から取得した複数のプログラムモジュールの起動条件に基づいて、マルチコアCPU23の複数のCPUコアによる複数のプログラムモジュールの起動順序を判断する。その際、起動スクリプト解析部64は、起動条件に基づいて、複数のプログラムモジュールの間の依存関係を特定し、特定された依存関係に基づいて、複数のプログラムモジュールの起動順序を判断する。

0047

具体的には、起動スクリプト解析部64は、起動スクリプト62に記述されたプログラムモジュールの起動条件に基づいて、プログラムモジュールを起動するために事前に起動する必要があるプログラムモジュールやデバイスを特定する。これにより、プログラムモジュール(第1プログラムモジュール)の起動に必要な1以上の他のプログラムモジュール(第2プログラムモジュール)を特定する。

0048

ここでは、起動スクリプト解析部64は、ターゲットリスト61から優先順位に従ってプログラムモジュール名を取得し、各ターゲットプログラムモジュールの起動スクリプト62を取得して、起動条件である事前条件を確認する。事前条件があるときには、その事前条件を満たすために起動が必要なプログラムモジュールを、起動スクリプト62に基づいて特定する。また、事前条件が要求するイベントを事後条件とするプログラムモジュールを、起動スクリプト62から検索する。このように、事前条件と事後条件を順に辿ることで、ターゲットプログラムモジュール(App1、App2)の起動に必要な全てのプログラムモジュールを特定するとともに、起動対象の複数のプログラムモジュールの起動順序を判断する。

0049

画像形成装置1の起動処理において、起動処理モジュール54のメイン63は、プログラムモジュールの起動を制御して複数のプログラムモジュールを起動する起動手段(起動制御手段)として機能する。メイン63は、複数のCPUコアにより、起動スクリプト解析部64により判断された起動順序に従って、起動条件を満たす起動可能なプログラムモジュールを順次実行する。これにより、起動対象の複数のプログラムモジュールが、起動順序に従って順次起動される。

0050

図8は、本実施形態の複数のプログラムモジュールの起動順序を示す図であり、プログラムモジュールの起動条件となるデバイスの状態も示している。また、図8は、図7に示す複数のプログラムモジュールの依存関係に基づく起動順序を示すシーケンス図であり、2つのCPUコアにより、複数のプログラムモジュールを起動する例を示している。
図8において、右に向かう矢印は、各プログラムモジュールのプロセスによりCPUコアが専有されて、各プログラムモジュールが起動中であることを示している。ただし、矢印の終端が、プロセスの終了を示しているわけではなく、実際のプロセスは、動作や処理によっては間欠的にCPUコアを専有することがある。

0051

図示のように、上記した図7に示す依存関係に基づいて、起動スクリプト解析部64は、App1を起動するために、最初にKMMとNCSを起動すると判断し、かつ、USBI/F14がReady状態であることが必要であると判断する。その結果、メイン63は、複数のCPUコアによりKMMとNCSを実行して、KMMとNCSの起動を開始する(t1)。同時に、プログラム状態監視部65が、KMMとNCSの実行状態を監視する。また、デバイス監視部66は、USBI/F14の状態を監視し、USBI/F14がReady状態になったと判断する(t2)。続いて、プログラム状態監視部65によりKMMの起動が完了したと判断されたときに、メイン63は、usbdの起動を開始する(t3)。

0052

複数のCPUコアにかかる負荷は、KMMの起動が完了した時点では、次のプログラムモジュールを起動可能な状態(負荷状態)まで低下しており、usbdの起動開始により、再び元の状態に戻る。以降も、プログラムモジュールの起動完了と、プログラムモジュールの起動開始に対応して、複数のCPUコアの負荷が変化する。

0053

プログラム状態監視部65によりNCSの起動が完了したと判断されたときに、メイン63は、SCSの起動を開始する(t4)。続いて、プログラム状態監視部65によりusbdの起動が完了したと判断されたときに、メイン63は、OCSの起動を開始する(t5)。また、デバイス監視部66は、App2の起動に必要なデバイスとしてHDD26を監視しており、HDD26がReady状態になったときに、HDD26がマウントされたと判断する(t6)。

0054

次に、プログラム状態監視部65によりSCSとOCSの起動が完了したと判断されたときに、メイン63は、起動条件が満たされたApp1の起動を開始する(t7)。最後に、プログラム状態監視部65によりApp1の起動が完了したと判断されたときに、メイン63は、起動条件が満たされたApp2の起動を開始する(t8)。App2の起動完了により(t9)、ターゲットリスト61に記述された全てのターゲットプログラムモジュールの起動が完了する。

0055

本実施形態の画像形成装置1は、以上の起動処理の間、複数のCPUコアの負荷とメモリの使用率に基づいて、複数のCPUコアによるプログラムモジュールの起動を調整する。これにより、複数のプログラムモジュールの同時起動によるリソースの競合を緩和する。このプログラムモジュールの起動調整処理は、起動処理モジュール54にとっては煩雑な処理である。そのため、画像形成装置1の汎用OS55(カーネル)が、機能実現手段としてプログラムモジュールの起動調整部(起動調整モジュール)を有し、起動調整部の機能を提供する。画像形成装置1のリソース情報を有する汎用OS55により、起動調整処理を行うことで、起動調整の判断と起動調整処理が迅速に実行される。起動処理モジュール54のメイン63がシステムコール発行したときに、汎用OS55の起動調整部が呼び出されてプログラムモジュールの起動調整処理を行う。

0056

図9は、本実施形態のプログラムモジュールの起動調整部70を示すブロック図である。
図示のように、起動調整部70は、複数のCPUコアの負荷情報を更新する負荷情報更新部71と、プログラムモジュールの起動を制限する起動制限部72と、メモリの使用率を更新する使用率更新部73と、メモリの使用を規制する使用規制部74を有する。

0057

負荷情報更新部71は、複数のCPUコアの負荷を示す負荷情報を取得する取得手段であり、かつ、負荷情報を更新する更新手段である。負荷情報は、プログラムモジュールを実行する複数のCPUコアにかかる負荷を示す情報であり、画像形成装置1の起動処理中に、複数のCPUコアの負荷に対応して変化する。負荷情報更新部71は、複数のCPUコアにより複数のプログラムモジュールを起動する間に、複数のCPUコアの負荷情報を繰り返し更新する。画像形成装置1の起動処理中に、負荷情報更新部71により、負荷情報が所定のタイミングで更新されて、最新の負荷情報が取得される。

0058

負荷情報は、例えば、プログラムモジュールを実行しているCPUコアの数情報、複数のCPUコアの負荷率、複数のCPUコアの使用率、又は、ロードアベレージからなる。ここでは、負荷情報は、ロードアベレージであり、負荷情報更新部71により、算出されて取得される。ロードアベレージは、UNIX系のOSが提供するCPUに加わる負荷の大きさを示す指標であり、実行待ちのプログラムモジュール(プロセス)の平均数を反映した値になる。即ち、ロードアベレージは、実行したくても他のプログラムモジュールが実行中で実行できないプログラムモジュールが平均で何個くらいあるのかを示す値になっている。一般的なUNIX系のOSにおいては、例えば、実行されるプログラムモジュールが入るキュー実行キュー)のエントリ数の過去の平均値を算出することで、ロードアベレージが求められる。

0059

これに対し、複数のCPUコアを有するマルチコアCPU23では、CPUコア毎にキューがある。そのため、各CPUコアに紐付いたキューの実行中のタスクの数を合計して、複数のCPUコアにより実行するタスクの総数を取得し、複数回分の総数の平均値を算出する。この平均値がロードアベレージとなり、ロードアベレージをCPUコアの数で割った値が複数のCPUコアの使用率になる。

0060

ここで、画像形成装置1の起動処理は数秒で終わることもあるため、起動処理中のロードアベレージの変化を正確に把握するためには、従来よりも短い時間のロードアベレージを取得する必要がある。そこで、本実施形態の負荷情報更新部71は、100ms(ミリ秒)程度の所定時間(例えば、50〜150ms)の間におけるロードアベレージを算出する。例えば、複数のCPUコアにより実行するプログラムモジュールの総数を10ms毎に取得し、10回分の総数の平均値を算出する。これにより、100msの間におけるロードアベレージが算出される。

0061

このように算出されたロードアベレージは、CPUリソースに要求される処理の量(処理量)に対応して変化し、1つのCPUコアにより処理可能な処理量を1とした場合のCPUリソースに対する要求処理量を反映した値になる。例えば、1つのプログラムモジュールが1つのCPUコアを専有し続けると、ロードアベレージは次第に1に近づく。2つのプログラムモジュールが2つのCPUコアを専有し続けると、ロードアベレージは2に近づく。1つのCPUコアにより2つのプログラムモジュールを実行する場合に、一方のプログラムモジュールがCPUコアを専有し、かつ、他方のプログラムモジュールが実行待ちの状態では、ロードアベレージは2に近づく。また、ロードアベレージが、画像形成装置1が有するCPUコアの数よりも約1小さくなれば、CPUリソースに空きができたと判断される。

0062

起動制限部72は、負荷情報の一例であるロードアベレージに基づいて、複数のCPUコアによるプログラムモジュールの起動(実行)を制限する制限手段である。調整手段である起動調整部70は、起動制限部72により、複数のCPUコアにより実行するプログラムモジュールの数を制限して、複数のCPUコアによるプログラムモジュールの起動を調整する。ここでは、起動制限部72は、ロードアベレージに基づいて、複数のCPUコアによるプログラムモジュールの起動を制限するか否かを判定する判定手段を有し、判定手段の判定結果に基づいて、複数のCPUコアによるプログラムモジュールの起動を制限する。

0063

具体的には、起動制限部72の判定手段は、負荷情報更新部71により更新されたロードアベレージに基づいて、プログラムモジュールを実行する複数のCPUコアにより次のプログラムモジュール(新たなプログラムモジュール)を実行可能か否か判定する。これにより、新たなプログラムモジュールの起動を制限するか否かが判定され、起動制限部72は、判定手段の判定結果に基づいて、複数のCPUコアによる次のプログラムモジュールの起動を制限する。次のプログラムモジュールは、実行中のプログラムモジュールの次に実行される1以上の起動可能なプログラムモジュールであり、複数のプログラムモジュールの起動順序に基づいて特定される。

0064

また、起動制限部72は、判定手段の判定結果に基づいて、次のプログラムモジュールの実行を停止する停止手段、及び、次のプログラムモジュールの実行の停止を解除する解除手段を有する。起動制限部72の停止手段は、判定手段により次のプログラムモジュールは実行可能でないと判定されたときに、次のプログラムモジュールの実行を一旦停止する。起動制限部72の解除手段は、次のプログラムモジュールの実行を停止した後、判定手段により次のプログラムモジュールは実行可能であると判定されたときに、停止手段による次のプログラムモジュールの実行の停止を解除する。これにより、解除手段は、複数のCPUコアにより次のプログラムモジュールを実行させる。

0065

使用率更新部73は、複数のCPUコアにより使用されるメモリの使用率を取得する取得手段であり、かつ、メモリの使用率を更新する更新手段である。メモリは、プログラムモジュールを実行する複数のCPUコアにより使用されてデータが読み書きされるメインメモリ(ここでは、MEM25)であり、メモリの使用率は、メモリの容量の使用率である。メモリの使用率は、メモリの使用中の容量WAをメモリの使用可能な全容量WBで割った値(WA/WB)になり、画像形成装置1の起動処理中に、メモリの使用量に対応して変化する。使用率更新部73は、これら2つの容量WA、WBに基づいて、メモリの使用率を算出して取得する。また、使用率更新部73は、複数のCPUコアにより複数のプログラムモジュールを起動する間に、メモリの使用率を繰り返し更新する。画像形成装置1の起動処理中に、使用率更新部73により、メモリの使用率が所定のタイミングで更新されて、最新のメモリの使用率が取得される。

0066

規制手段である使用規制部74は、メモリの使用率に基づいて、複数のCPUコアによるプログラムモジュールの起動(実行)を制限し、複数のCPUコアによるメモリの使用を規制する。従って、使用規制部74は、プログラムモジュールの起動を制限する制限手段でもあり、メモリの使用率が規定値以上になったときに、プログラムモジュールの起動を制限する。起動調整部70は、使用規制部74により、複数のCPUコアにより実行するプログラムモジュールの数を制限して、複数のCPUコアによるプログラムモジュールの起動、及び、メモリの使用率を調整する。

0067

ここでは、使用規制部74は、メモリの使用率に基づいて、複数のCPUコアによるプログラムモジュールの起動を制限するか否かを判定する判定手段を有し、判定手段の判定結果に基づいて、複数のCPUコアによるプログラムモジュールの起動を制限する。判定手段によりプログラムモジュールの起動を制限すると判定されたときに、使用規制部74により、新たなプログラムモジュールの起動が停止される。

0068

次に、複数のプログラムモジュールの起動手順を、複数のフローチャートに基づいて説明する。
図10は、本実施形態の起動処理モジュール54による処理手順を示すフローチャートである。図10に示す手順は、initプログラムの起動により、汎用OS55がinitプロセスを開始することでスタートする。

0069

図示のように、まず、起動処理モジュール54のメイン63が、HDD26に記憶されたターゲットリスト61と複数のプログラムモジュールの起動スクリプト62を読み込み(S10)、ターゲットリスト61と起動スクリプト62をMEM25に記憶する。続いて、起動スクリプト解析部64は、起動スクリプト62に記述されたプログラムモジュールの起動条件を取得し、起動条件に基づいて、プログラムモジュールの起動条件に関連する画像形成装置1のデバイスを特定して、監視すべきデバイスを抽出する。抽出されたデバイスは、監視対象のデバイスとしてMEM25の監視デバイスリストに登録される(S11)。デバイス監視部66は、監視デバイスリストに登録されたデバイスを監視して、各デバイスの状態を判断する。

0070

また、起動スクリプト解析部64は、プログラムモジュールの起動条件に基づいて、プログラムモジュールの起動に関連する画像形成装置1のリソースを特定し、監視すべきリソースを抽出する。抽出されたリソースは、監視対象のリソースとしてMEM25の監視リソースリストに登録される(S12)。リソース監視部67は、監視リソースリストに登録されたリソースを監視して、各リソースの状態を判断する。その後、起動処理モジュール54は、プログラムモジュールの起動処理を実行する(S13)。

0071

図11は、本実施形態の起動処理モジュール54によるプログラムモジュールの起動手順を示すフローチャートである。
図示のように、まず、起動処理モジュール54のメイン63が、ターゲットリスト61から、優先順位に従って、1つのプログラムモジュール名を取得する(S20)。起動スクリプト解析部64は、プログラムモジュール名に対応するターゲットプログラムモジュールの起動スクリプト62を取得し、起動スクリプト62に記述されたターゲットプログラムモジュールの起動条件を取得する。

0072

また、起動スクリプト解析部64は、ターゲットプログラムモジュールの起動条件に基づいて、ターゲットプログラムモジュールの起動に他のプログラムモジュールの起動が必要か否かを判断する。判断の結果、他のプログラムモジュールの起動が必要なときには、起動スクリプト解析部64は、ターゲットプログラムモジュールの起動に必要な1以上のプログラムモジュールを特定する。その際、起動スクリプト解析部64は、各プログラムモジュールの起動スクリプト62及び起動条件を取得し、起動条件に基づいて、全ての起動対象のプログラムモジュールを特定する。

0073

起動対象のプログラムモジュールが複数あるときには、起動スクリプト解析部64は、取得された複数のプログラムモジュールの起動条件に基づいて、複数のCPUコアによる複数のプログラムモジュールの起動順序を判断する。続いて、メイン63は、複数のCPUコアにより、起動順序に従って、起動可能なプログラムモジュールを実行して、複数のプログラムモジュールを順次起動する。その際、まず、メイン63は、複数の起動対象のプログラムモジュールから、起動順序に基づいて、CPUコアにより起動するプログラムモジュールを特定する(S21)。

0074

次に、特定されたプログラムモジュールの起動を制限する必要があるか否かを判定するため、メイン63が、上記したシステムコール(リソース条件待ちシステムコール)を発行する(S22)。このシステムコールにより、汎用OS55の起動調整部70(図9参照)が呼び出されて、プログラムモジュールの起動を制限するか否かを判定する。画像形成装置1のリソース(CPUリソース、メモリリソース)が所定のリソース条件を満たすときには、プログラムモジュールの起動を制限する必要はなく、プログラムモジュールの起動を制限しないと判定される。また、リソースがリソース条件を満たさないときには、プログラムモジュールの起動を制限する必要があり、プログラムモジュールの起動を制限すると判定される。起動調整部70は、リソースがリソース条件を満たして、プログラムモジュールの起動を制限する必要がなくなるまで、新たなプログラムモジュールの起動を停止する。

0075

ここでは、ユーザは、ロードアベレージのチェック処理を行うか否か、及び、メモリのチェック処理を行うか否かを、画像形成装置1に対して予め設定する。ユーザにより一方又は両方のチェック処理を行うと設定されているときに、起動調整部70は、リソース条件待ち処理を行い、プログラムモジュールの起動を調整する。その際、起動調整部70の起動制限部72が、ロードアベレージに基づいて、複数のCPUコアが画像形成装置1のCPUリソースに要求されるリソース条件を満たすか否かを判定する。また、起動調整部70の使用規制部74が、メモリの使用率に基づいて、メモリが画像形成装置1のメモリリソースに要求されるリソース条件を満たすか否かを判定する。

0076

図12は、本実施形態の起動調整部70の処理手順を示すフローチャートである。
図示のように、まず、起動調整部70は、ユーザによる設定に基づいて、複数のCPUコアの負荷情報であるロードアベレージのチェック処理を行うか否かを判断する(S30)。その結果、ロードアベレージのチェック処理を行わないときには(S30、No)、起動調整部70は、ユーザによる設定に基づいて、メモリのチェック処理を行うか否かを判断する(S31)。メモリのチェック処理を行わないときには(S31、No)、起動調整部70による処理が終了する。

0077

ロードアベレージのチェック処理を行うときには(S30、Yes)、負荷情報更新部71が、複数のCPUコアのロードアベレージを取得し、起動制限部72が、ロードアベレージが規定値よりも小さいか否かを判定する(S32)。ロードアベレージが規定値よりも小さいときには(S32、Yes)、起動制限部72は、複数のCPUコアによる新たなプログラムモジュールの起動を制限しないと判定する。なお、ロードアベレージの規定値には、複数のCPUコアにより新たなプログラムモジュールを円滑に起動可能なロードアベレージの上限値が予め設定され、例えば、CPUコアの数よりも小さい所定値が設定される。

0078

ロードアベレージが規定値以上であるときには(S32、No)、起動制限部72は、複数のCPUコアによる新たなプログラムモジュールの起動を制限すると判定して、起動処理モジュール54をスリープ状態(プログラムモジュールの実行待ち状態)に移行させる。これにより、起動処理モジュール54がスリープして、新たなプログラムモジュールの起動が制限される。この起動処理モジュール54のスリープは、ロードアベレージが規定値よりも小さくなるのを待つスリープ(ロードアベレージ条件待ちスリープ)である(S33)。起動制限部72は、起動処理モジュール54による新たなプログラムモジュールの起動処理を停止し、CPUコアによる新たなプログラムモジュールの実行を停止する。

0079

続いて、メモリのチェック処理を行うときには(S31、Yes)、使用率更新部73が、メモリの使用率を取得し、使用規制部74が、メモリの使用率が規定値よりも小さいか否かを判定する(S34)。メモリの使用率が規定値よりも小さいときには(S34、Yes)、使用規制部74は、新たなプログラムモジュールの起動を制限せず、複数のCPUコアによるメモリの使用を規制しないと判定する。なお、メモリの使用率の規定値には、複数のCPUコアにより新たなプログラムモジュールを円滑に起動可能なメモリの使用率の上限値が予め設定される。

0080

メモリの使用率が規定値以上であるときには(S34、No)、使用規制部74は、新たなプログラムモジュールの起動を制限して、複数のCPUコアによるメモリの使用を規制すると判定し、起動処理モジュール54をスリープ状態に移行させる。これにより、起動処理モジュール54がスリープして、新たなプログラムモジュールの起動が制限され、メモリの使用が規制される。この起動処理モジュール54のスリープは、メモリの使用率が規定値よりも小さくなるのを待つスリープ(メモリ使用率条件待ちスリープ)である(S35)。使用規制部74は、起動処理モジュール54による新たなプログラムモジュールの起動処理を停止し、CPUコアによる新たなプログラムモジュールの実行を停止する。

0081

起動調整部70が起動処理モジュール54をスリープ状態に移行しないときには、起動処理モジュール54は、プログラムモジュールの起動処理(図11参照)を再開する。これに対し、起動調整部70が起動処理モジュール54をスリープ状態に移行したときには、ロードアベレージとメモリの使用率が各規定値よりも小さくなるまで、起動処理モジュール54がスリープ状態に維持される。その状態で、起動調整部70は、所定時間間隔で、ロードアベレージとメモリの使用率を更新して、起動処理モジュール54のスリープ状態を解除するか否かを判断する。なお、この起動調整部70による判断は、ハードウエアタイマーにより所定時間間隔で読み出される割り込みハンドラにより、起動調整部70と同様に行うようにしてもよい。

0082

図13は、本実施形態の起動処理モジュール54のスリープ状態を解除する手順を示すフローチャートである。
図示のように、まず、負荷情報更新部71は、ロードアベレージの算出に用いる情報を更新して、ロードアベレージを新たに算出し、複数のCPUコアのロードアベレージを更新する(S40)。続いて、起動制限部72は、負荷情報更新部71により更新されたロードアベレージに基づいて、新たなプログラムモジュールの起動を制限するか否かを判定する。

0083

ロードアベレージが規定値以上であるときには(S41、No)、起動制限部72は、新たなプログラムモジュールが実行可能でなく、新たなプログラムモジュールの起動を制限すると判定する。これに伴い、起動処理モジュール54がロードアベレージ条件待ちスリープであるときには、起動制限部72は、起動処理モジュール54のロードアベレージ条件待ちスリープを維持する。ロードアベレージが規定値よりも小さいときには(S41、Yes)、起動制限部72は、新たなプログラムモジュールが実行可能であり、新たなプログラムモジュールの起動を制限しないと判定する。これに伴い、起動処理モジュール54がロードアベレージ条件待ちスリープであるときには、起動制限部72は、起動処理モジュール54のロードアベレージ条件待ちスリープを解除し(S42)、新たなプログラムモジュールの実行の停止を解除する。

0084

次に、使用率更新部73は、メモリの使用率の算出に用いる情報を更新して、メモリの使用率を新たに算出し、複数のCPUコアにより使用されるメモリの使用率を更新する(S43)。続いて、使用規制部74は、使用率更新部73により更新されたメモリの使用率に基づいて、新たなプログラムモジュールの起動を制限するか否かを判定する。

0085

メモリの使用率が規定値以上であるときには(S44、No)、使用規制部74は、新たなプログラムモジュールの起動を制限すると判定する。これに伴い、起動処理モジュール54がメモリ使用率条件待ちスリープであるときには、使用規制部74は、起動処理モジュール54のメモリ使用率条件待ちスリープを維持する。メモリの使用率が規定値よりも小さいときには(S44、Yes)、使用規制部74は、新たなプログラムモジュールの起動を制限しないと判定する。これに伴い、起動処理モジュール54がメモリ使用率条件待ちスリープであるときには、使用規制部74は、起動処理モジュール54のメモリ使用率条件待ちスリープを解除し(S45)、新たなプログラムモジュールの実行の停止を解除する。

0086

起動調整部70は、起動処理モジュール54の全てのスリープ状態が解除されるまで、以上の手順を所定時間間隔で繰り返す。これにより、起動調整部70は、新たなプログラムモジュールの起動を制限して、複数のCPUコアによるプログラムモジュールの起動を調整する。起動処理モジュール54の全てのスリープ状態が解除されたときに、起動処理モジュール54は、プログラムモジュールの起動処理を再開する。これに伴い(図11参照)、起動処理モジュール54のメイン63は、CPUコアにより、起動順序に基づいて特定されたプログラムモジュールを実行して(S23)、プログラムモジュールを起動する。

0087

CPUコアにより実行されるプログラムモジュールは、未実行な、かつ、起動条件を満たす起動可能なプログラムモジュールである。プログラムモジュールの起動条件が満たされていないときには、メイン63は、プログラムモジュールの起動条件が満たされた後に、CPUコアによりプログラムモジュールを実行する。また、プログラム状態監視部65は、CPUコアにより実行したプログラムモジュールを、MEM25の実行済みリストに登録する。従って、メイン63がCPUコアにより実行するプログラムモジュールは、CPUコアにより実行中でなく、かつ、実行済みリストに登録されていないプログラムモジュールである。

0088

次に、メイン63は、起動対象の全てのプログラムモジュールを実行して、起動対象のプログラムモジュールがなくなったか否かを判断する(S24)。起動対象のプログラムモジュールがまだあるときには(S24、No)、メイン63は、起動対象の全てのプログラムモジュールを実行するまで、以上の手順(S21〜S24)を繰り返す。起動対象の全てのプログラムモジュールを実行したときには(S24、Yes)、メイン63は、ターゲットリスト61に記述された全てのターゲットプログラムモジュールを実行したか否かを判断する(S25)。全てのターゲットプログラムモジュールを実行していないときには(S25、No)、メイン63は、全てのターゲットプログラムモジュールを実行するまで、以上の手順(S20〜S25)を繰り返す。

0089

複数のプログラムモジュールの起動開始から起動終了までの間には、新たなプログラムモジュールの起動の度に、リソース条件待ちシステムコールが発行される(S22)。これに伴い、起動制限部72は、負荷情報更新部71により更新された最新のロードアベレージに基づいて、複数のCPUコアによる新たなプログラムモジュールの起動を制限するか否かを判定する。その結果、新たなプログラムモジュールの起動を制限すると判定されたときに、起動制限部72は、複数のCPUコアによる新たなプログラムモジュールの起動を制限する。また、使用規制部74は、使用率更新部73により更新された最新のメモリの使用率に基づいて、複数のCPUコアによる新たなプログラムモジュールの起動を制限するか否かを判定する。その結果、新たなプログラムモジュールの起動を制限すると判定されたときに、使用規制部74は、複数のCPUコアによる新たなプログラムモジュールの起動を制限し、複数のCPUコアによるメモリの使用を規制する。

0090

これにより、プログラムモジュールの起動が調整されつつ、複数のプログラムモジュールが起動順序に従って起動される。全てのターゲットプログラムモジュールを実行したときに(S25、Yes)、起動処理モジュール54は、複数のプログラムモジュールの起動処理を終了する。また、ターゲットリスト61に記述された全てのターゲットプログラムモジュールが起動することで、画像形成装置1の起動処理も終了し、画像形成装置1が起動する。

0091

以上説明したように、本実施形態の画像形成装置1、及び、画像形成装置1の起動方法では、画像形成装置1の起動処理中に、リソースの競合を緩和して、マルチコアCPU23の複数のCPUコアを有効に利用することができる。また、複数のCPUコアにより起動処理の複数のプログラムモジュールを円滑に実行して、画像形成装置1の起動の遅延を抑制することができる。画像形成装置1の起動時間を短縮して、画像形成装置1を速く起動することもできる。負荷情報更新部71により更新されたロードアベレージに基づいてプログラムモジュールの起動を制限することで、起動処理中における複数のCPUコアの負荷の変動に的確に対応して、画像形成装置1の起動処理を円滑に行うことができる。

0092

この画像形成装置1では、メモリの使用率に基づいて、プログラムモジュールの起動を制限し、複数のCPUコアによるメモリの使用を規制する。そのため、複数のCPUコアの使用に伴うメモリの競合を緩和して、複数のプログラムモジュールを円滑に実行でき、画像形成装置1の起動の遅延をより確実に抑制することができる。特に、組み込みシステムでは、メモリの容量が切り詰められているため、メモリの使用率に基づいてプログラムモジュールの起動を制限することで、大きな効果が得られる。また、スワップを行うように設定されているときには、スワップによりHDD26へのアクセスが発生するため、複数のプログラムモジュールの起動が大幅に遅延することがある。これに対し、メモリの使用率に基づいてプログラムモジュールの起動を制限することで、スワップの発生、及び、複数のプログラムモジュールの起動の遅延を抑制することができる。

0093

なお、プログラムモジュールの起動を制限した際には、所定時間、ロードアベレージ又はメモリの使用率が規定値よりも小さいときに、プログラムモジュールの起動の制限を解除するようにしてもよい。これにより、ロードアベレージ又はメモリの使用率の変動が激しいときでも、複数のCPUコア又はメモリの状態に正確に対応して、複数のプログラムモジュールを円滑に実行することができる。また、複数のプログラムモジュールは、ロードアベレージがCPUコアの数を超えない範囲で実行するようにしてもよい。

0094

画像形成装置1の設定により、所定のプログラムモジュールが所定のCPUコアにより実行するように指定されているときには、CPUコア毎のロードアベレージに基づいて、プログラムモジュールの起動を制限するようにしてもよい。この場合には、負荷情報更新部71は、所定のプログラムモジュールを実行するように指定された所定のCPUコアのロードアベレージを取得して更新する。起動制限部72は、更新された所定のCPUコアのロードアベレージに基づいて、所定のプログラムモジュールの起動を制限するか否かを判定して、所定のCPUコアによる所定のプログラムモジュールの起動を制限する。このようにすることで、所定のプログラムモジュールを所定のCPUコアにより円滑に実行することができる。

0095

CPUコアは、プログラムモジュールだけでなく、画像形成装置1の起動処理中に生成されるスレッドも実行する。そのため、スレッドの生成によっても、複数のCPUコアのロードアベレージとメモリの使用率が変化するとともに、リソースの競合が生じることがある。従って、リソースの競合をより緩和するためには、スレッドの生成も制限するのが好ましい。これに対し、画像形成装置1は、ユーザの設定により、プログラムモジュールの起動制限と同様に、スレッドの生成を制限するようになっている。

0096

図14は、本実施形態のスレッドの生成処理の手順を示すフローチャートである。
ここでは、図示のように、起動処理の複数のプログラムモジュールを起動する間に、スレッドの生成を要求するときには、まず、リソース条件待ちシステムコールが発行され(S50)、リソース条件待ち処理が開始する。このリソース条件待ち処理は、既に説明した図12図13に示す処理と同様であるため説明は省略する。

0097

ただし、リソース条件待ち処理において、ロードアベレージとメモリの使用率のそれぞれに基づいて、新たなスレッドの生成を制限するか否かが判定される。その結果、新たなスレッドの生成を制限すると判定されたときに、画像形成装置1が有するスレッド生成部(図示せず)がスリープ状態に移行する。これにより、画像形成装置1の起動処理中において、スレッド生成部による新たなスレッドの生成が制限される。また、ロードアベレージとメモリの使用率のそれぞれに基づいて、スレッド生成部のスリープ状態が解除されたときに、スレッド生成部により、スレッド生成処理が実行されて、新たなスレッドが生成される(S51)。

0098

画像形成装置1は、スレッドの生成処理に関する上記した各処理を行う手段、例えば、負荷情報更新部71により更新されたロードアベレージに基づいて、起動処理中におけるスレッドの生成を制限する手段を備えている。また、画像形成装置1は、使用率更新部73により更新されたメモリの使用率に基づいて、起動処理中におけるスレッドの生成を制限する手段も備えている。これら各スレッド生成制限手段により、複数のCPUコアによるプログラムモジュールの実行に伴うスレッドの生成が制限される。スレッドの生成を制限することで、リソースの競合がより緩和して、複数のプログラムモジュールを円滑に実行することができる。

0099

以上、マルチコアCPU23を備えた画像形成装置1について説明したが、画像形成装置1は、マルチコアCPU23に替えて、複数のシングルコアCPUを備えていてもよい。シングルコアCPUは、1つのCPUコアを有するCPUであり、複数のシングルコアCPUのCPUコアは、マルチコアCPU23の複数のCPUコアと同様に機能する。この場合には、画像形成装置1は、複数のシングルコアCPUのCPUコアにより、情報を処理して、複数のプログラムモジュールを実行する。

0100

本実施形態では、ロードアベレージとメモリの使用率の両方に基づいて、プログラムモジュールの起動を制限するが、ロードアベレージとメモリの使用率のいずれか一方に基づいて、プログラムモジュールの起動を制限するようにしてもよい。即ち、ロードアベレージのみに基づいて、或いは、メモリの使用率のみに基づいて、プログラムモジュールの起動を制限してもよい。

0101

また、本発明は、情報処理装置である画像形成装置1のコンピュータを、以上説明した画像形成装置1の各手段として機能させるためのプログラムとして実現することもできる。情報処理装置は、情報を処理する各種の装置であり、例えば、パーソナルコンピュータ、サーバ、又は、組み込みシステムであってもよい。組み込みシステムとして、情報処理装置は、各種の機器、例えば、画像処理装置撮影装置表示装置事務機器通信装置携帯装置情報処理端末通信端末に組み込まれる。

0102

1・・・画像形成装置、11・・・エンジン、12・・・拡張スロット用ボード、13・・・コントローラ、23・・・マルチコアCPU、26・・・HDD、54・・・起動処理モジュール、61・・・ターゲットリスト、62・・・起動スクリプト、63・・・メイン、64・・・起動スクリプト解析部、65・・・プログラム状態監視部、66・・・デバイス監視部、67・・・リソース監視部、70・・・起動調整部、71・・・負荷情報更新部、72・・・起動制限部、73・・・使用率更新部、74・・・使用規制部。

先行技術

0103

特開2009−104443号公報

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ