(57)【要約】【課題】固定のスナップショットによるハイバネーション起動であっても、環境の変化に柔軟に対応できる情報処理装置を提供すること。【解決手段】ハイバネーション起動を行う情報処理装置であって、スナップショット作成起動又はスナップショット起動を選択する手段と、スナップショット作成起動の選択時にアプリケーションの起動処理を開始させる手段と、スナップショットの作成時点まで起動処理を進めたあとで通知を行うアプリと、アプリの全てから通知を受け取ったあと、スナップショットの作成指示を行う手段と、作成指示に基づき、スナップショットを作成する手段と、スナップショットを記憶する記憶手段と、スナップショット起動の選択時に記憶手段が記憶するスナップショットを読み出し、アプリケーションに作成時点以降の起動処理の開始指示を行うことでアプリケーションの起動処理を完了させる手段と、を有することで上記課題を解決する。【選択図】  図２
2019185717.tif 000002
【特許請求の範囲】
【請求項１】
ハイバネーション起動を行う情報処理装置であって、
スナップショット作成起動又はスナップショット起動を選択する選択手段と、
前記スナップショット作成起動の選択時に１つ以上のアプリケーションの起動処理を開始させる起動手段と、
前記起動処理におけるスナップショットの作成時点が設定されており、前記作成時点まで起動処理を進めたあとで通知を行う１つ以上のアプリケーションと、
前記アプリケーションの全てから前記通知を受け取ったあと、スナップショットの作成指示を行う作成指示手段と、
前記作成指示に基づき、スナップショットを作成する作成手段と、
前記スナップショットを記憶する記憶手段と、
前記スナップショット起動の選択時に前記記憶手段が記憶する前記スナップショットを読み出し、前記アプリケーションに前記作成時点以降の前記起動処理の開始指示を行うことで前記アプリケーションの起動処理を完了させる開始指示手段と、
を有する情報処理装置。
【請求項２】
前記スナップショット作成起動の選択時に１つ以上のアプリケーションの優先度を取得する優先度取得手段、を更に有し、
前記開始指示手段は、前記優先度取得手段が前記スナップショット作成起動の選択時に取得した１つ以上のアプリケーションの優先度に基づいた順番で、前記アプリケーションに前記作成時点以降の前記起動処理の開始指示を行うことで前記アプリケーションの起動処理を完了させること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記優先度取得手段が前記スナップショット作成起動の選択時に取得した１つ以上のアプリケーションの優先度を、ユーザから受け付けた変更依頼に基づき変更する優先度変更手段、を更に有すること
を特徴とする請求項２記載の情報処理装置。
【請求項４】
前記起動手段は、ブートローダを含み、
前記ブートローダは、ブート処理時にデバイス処理の対象となる１つ以上のデバイスのうち、予め設定されたデバイスについて、前記スナップショット作成起動の選択時、前記デバイスを認識しないように制御を行い、前記スナップショット起動の選択時、前記デバイスを認識するように制御を行うこと、を特徴とする請求項１乃至３何れか一項記載の情報処理装置。
【請求項５】
前記起動手段は、オペレーティングシステムを含み、
前記オペレーティングシステムは、オペレーティングシステムの起動処理時にデバイスドライバ処理の対象となる１つ以上のデバイスドライバのうち、予め設定されたデバイスドライバについて、前記スナップショット作成起動の選択時、前記デバイスドライバを有効にしないように制御を行い、前記スナップショット起動の選択時、前記デバイスドライバを有効にするように制御を行うこと、を特徴とする請求項１乃至４何れか一項記載の情報処理装置。
【請求項６】
前記オペレーティングシステムは、オペレーティングシステムの起動処理時にデバイスドライバ処理の対象となる１つ以上のデバイスドライバのうち、予め設定されたデバイスドライバについて、前記スナップショット作成起動の選択時、前記デバイスドライバの機能の少なくとも１つを有効にしないように制御を行い、前記スナップショット起動の選択時、前記デバイスドライバの機能の全てを有効にするように制御を行うこと、を特徴とする請求項５記載の情報処理装置。
【請求項７】
前記スナップショット作成起動の選択時に前記情報処理装置にインストールされていなかった追加アプリケーションは、前記スナップショット起動の選択時、前記起動処理の開始指示の後で、前記起動処理を実行すること
を特徴とする請求項１乃至６何れか一項記載の情報処理装置。
【請求項８】
前記情報処理装置は、画像処理装置の操作部として機能すること
を特徴とする請求項１乃至７何れか一項記載の情報処理装置。
【請求項９】
ハイバネーション起動を行う情報処理装置の起動方法であって、
スナップショット作成起動又はスナップショット起動を選択するステップと、
前記スナップショット作成起動の選択時に１つ以上のアプリケーションの起動処理を開始させるステップと、
前記起動処理におけるスナップショットの作成時点が設定されている１つ以上のアプリケーションが、前記作成時点まで起動処理を進めたあとで通知を行うステップと、
前記アプリケーションの全てから前記通知を受け取ったあと、スナップショットの作成指示を行うステップと、
前記作成指示に基づき、スナップショットを作成する作成ステップと、
前記スナップショットを記憶手段に記憶するステップと、
前記スナップショット起動の選択時に前記記憶手段が記憶する前記スナップショットを読み出し、前記アプリケーションに前記作成時点以降の前記起動処理の開始指示を行うことで前記アプリケーションの起動処理を完了させるステップと、
を有する起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び起動方法に関する。
【背景技術】
【０００２】
情報処理装置の省電力化と起動の高速化を可能にするハイバネーションと言う方法は従来から知られている。
【０００３】
ハイバネーションは、メモリ内容やＣＰＵ等のハードウェアの設定など、情報処理装置が動作中の状態情報について、スナップショットと呼ばれるデータを作成し、不揮発性の記憶媒体に保存した後、情報処理装置をシャットダウンする。次回の起動において、情報処理装置は、不揮発性の記憶媒体に保存しておいたスナップショット（スナップショットイメージ）を使用し、シャットダウン前のシステム状態を復元することで、動作中のシステム中断と、起動および再開の高速化を可能にしている（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のハイバネーションは、シャフトダウン前にハイバネーションのスナップショットを作成するが、スナップショットの作成時間が掛かるため、シャフトダウンに即応性の求められる情報処理装置での使用に不向きであった。このため、シャフトダウンに即応性の求められる情報処理装置では固定のスナップショットを予め作成しておくことで、シャフトダウン前のスナップショットの作成を無くすことが考えられる。
【０００５】
しかしながら、固定のスナップショットを予め作成しておく情報処理装置では、そのスナップショットの作成時と周辺機器の有無や有効無効が異なる環境で使用することができず、環境の変化に柔軟に対応できないという問題があった。
【０００６】
本発明の実施の形態は上記の点に鑑みなされたもので、固定のスナップショットによるハイバネーション起動であっても、環境の変化に柔軟に対応できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本願請求項１は、ハイバネーション起動を行う情報処理装置であって、スナップショット作成起動又はスナップショット起動を選択する選択手段と、前記スナップショット作成起動の選択時に１つ以上のアプリケーションの起動処理を開始させる起動手段と、前記起動処理におけるスナップショットの作成時点が設定されており、前記作成時点まで起動処理を進めたあとで通知を行う１つ以上のアプリケーションと、前記アプリケーションの全てから前記通知を受け取ったあと、スナップショットの作成指示を行う作成指示手段と、前記作成指示に基づき、スナップショットを作成する作成手段と、前記スナップショットを記憶する記憶手段と、前記スナップショット起動の選択時に前記記憶手段が記憶する前記スナップショットを読み出し、前記アプリケーションに前記作成時点以降の前記起動処理の開始指示を行うことで前記アプリケーションの起動処理を完了させる開始指示手段と、を有すること、を特徴とする。
【発明の効果】
【０００８】
本発明の実施の形態によれば、固定のスナップショットによるハイバネーション起動であっても、環境の変化に柔軟に対応できる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る画像処理装置の一例の構成図である。
【図２】本実施形態に係る操作部の一例の機能構成図である。
【図３】本実施形態に係る電源オンからの起動処理の一例のフローチャートである。
【図４】ステップＳ１３のスナップショット作成起動の一例のフローチャートである。
【図５】ステップＳ２５のアプリケーションの起動処理の一例のフローチャートである。
【図６】ステップＳ２１のブートローダ起動の一例のフローチャートである。
【図７】ステップＳ２２のＯＳ起動の一例のフローチャートである。
【図８】ステップＳ６２のタッチパネルドライバの初期化の一例のフローチャートである。
【図９】ステップＳ１４のスナップショット起動の一例のフローチャートである。
【図１０】ステップＳ８５の継続処理の一例のフローチャートである。
【図１１】本実施形態に係る操作部の他の例の機能構成図である。
【図１２】ステップＳ２５のアプリケーションの起動処理の他の例のフローチャートである。
【図１３】優先度キューの一例の構成図である。
【図１４】ｅＭＭＣに記憶されるスナップショットイメージ及び優先度キューの一例の構成図である。
【図１５】ステップＳ８５の継続処理の他の例のフローチャートである。
【図１６】優先度変更処理の一例のフローチャートである。
【発明を実施するための形態】
【００１０】
次に、本発明の実施の形態について説明する。本実施形態では画像処理装置の操作部として機能する情報処理装置がハイバネーション起動を行う例について説明する。画像処理装置は組み込み機器の一例であって、ＭＦＰ（Multifunction Peripheral）等である。ただし、情報処理装置はこれに限定されず、アプリケーションがインストール可能な機器であれば良く、例えば、ＭＦＰの本体部２や電子黒板、プロジェクタ、パーソナルコンピュータ、スマートフォンやタブレット端末などの携帯端末であっても良い。
【００１１】
［第１の実施形態］
＜ハードウェア構成＞
図１は本実施形態に係る画像処理装置の一例の構成図である。図１の画像処理装置１はケーブル４によりデータ通信可能に接続された本体部２と操作部３とを備える。なお、本体部２と操作部３は、ケーブル４による有線接続に代えて、無線（赤外線を含む）接続としてもよい。本体部２は、本体部コントローラの制御により、スキャナデバイスによる原稿の読み取りや、プロッタデバイスによる用紙への印刷を行う。
【００１２】
操作部３は、ＳＯＣ（System-on-a-chip）１０と、タッチパネル１２と、ｅＭＭＣ（embedded Multi Media Card）１４と、ＬＣＤ（Liquid Crystal Display）１６と、メモリ１８とを有する。ＳＯＣ１０は１個のチップに、ＵＳＢ（Universal Serial Bus）ファンクション２０、ＣＰＵ（Central Processing Unit）２２、ＭＭＣコントローラ２４、ＬＣＤコントローラ２６、ＧＰＩＯ（General Purpose Input/Output）２８、Ｉ２Ｃ（Inter-Integrated Circuit）３０、及び、メモリコントローラ３２を備える。
【００１３】
ＳＯＣ１０は操作部３のシステムとして機能するように設計されている。ＳＯＣ１０は組み込み用マルチメディアカードであるｅＭＭＣ１４からブートする構成であり、ｅＭＭＣ１４の特定箇所に置かれたブートローダからシステムをブートする。ブートローダはｅＭＭＣ１４のファイルパーティション上に置かれたカーネルおよびルートファイルシステムをロードし、カーネルを起動する。
【００１４】
なお、後述するように本実施形態に係る操作部３は、スナップショット作成起動又はスナップショット起動を行う。スナップショット作成起動の場合、操作部３はカーネルの起動後、後述するようなスナップショット作成起動の処理により作成したスナップショットを不揮発性の記憶媒体であるｅＭＭＣ１４に記憶させる。
【００１５】
また、スナップショット起動の場合、操作部３はカーネルの起動後、後述するようなスナップショット起動の処理により、ｅＭＭＣ１４に記憶させたスナップショットをメモリ１８に展開し、ハイバネーション起動を行う。本実施形態に係る画像処理装置１は例えば工場出荷前にスナップショット作成起動を行って、ｅＭＭＣ１４にスナップショットを記憶しておく。そして、工場出荷後、本実施形態に係る画像処理装置１は通常の電源オンからの起動でスナップショット起動を行う。したがって、本実施形態に係る画像処理装置１はシャフトダウン時にスナップショットを作成する場合に生じる電源がなかなか落ちないというような不自然な状態にならない。
【００１６】
タッチパネル１２はユーザから操作を受け付ける。ＬＣＤ１６は画面表示を行う。メモリ１８は、プログラムやデータを一時保持する揮発性の記憶媒体の一例である。ＣＰＵ２２はｅＭＭＣ１４などの記憶媒体からプログラムやデータをメモリ１８に展開し、処理を実行することで、操作部３の制御や機能を実現する。
【００１７】
なお、本体部２と操作部３とは図１に示したように別筐体内に設けてもよいし、同一匡体内に設けてもよい。例えば本体部２の筐体と別の匡体内に設けられ、本体部２から分離可能な操作部３は無線接続にすることで、本体部２から分離したまま利用するというような利用形態が可能となる。
【００１８】
＜ソフトウェア構成＞
本実施形態に係る操作部３は例えば図１のハードウェア構成上でプログラムを実行することにより、図２に示すような各種機能を実現できる。図２は本実施形態に係る操作部の一例の機能構成図である。図２に示す操作部３はブートローダ５０、ＯＳ（オペレーティングシステム）５２、アプリ起動部５４、アプリケーション５６、スナップショットマネージャ５８、スナップショット作成起動選択部６０及びスナップショット記憶部６２を実現している。
【００１９】
ブートローダ５０はスナップショット作成起動判断部７０及び起動動作制御部７２を有する。スナップショット作成起動判断部７０は電源オンからの起動がスナップショット作成起動であるか、スナップショット起動であるか、を判断する。起動動作制御部７２はスナップショット作成起動判断部７０による判断に基づき、起動動作を制御する。
【００２０】
ＯＳ５２はカーネル７４を有する。また、カーネル７４は、スナップショット作成起動判断部７６、スナップショット作成起動動作制御部７８、スナップショット作成指示受付部８０、スナップショット作成部８２及びスナップショット起動動作制御部８４を有している。
【００２１】
スナップショット作成起動判断部７６は電源オンからの起動がスナップショット作成起動であるか、スナップショット起動であるか、を判断する。スナップショット作成起動動作制御部７８はスナップショット作成起動である場合に、スナップショット作成起動動作を制御する。
【００２２】
スナップショット作成指示受付部８０はスナップショットマネージャ５８からスナップショット作成指示を受け付ける。スナップショット作成部８２はスナップショット作成指示受付部８０がスナップショットマネージャ５８からスナップショット作成指示を受け付けると、スナップショットの作成を行う。また、スナップショット起動動作制御部８４はスナップショット起動である場合に、スナップショット起動動作を制御する。
【００２３】
アプリ起動部５４は例えば「ｉｎｉｔ」により実現される。アプリ起動部５４はカーネルの起動後の最初のプロセスであり、例えば「ｉｎｉｔ．ｒｃ」などの設定ファイルに従い、１つ以上のアプリケーション５６を起動していく。アプリケーション５６は起動処理部８６、スナップショット作成時点通過通知部８８及びスナップショット起動開始指示受付部９０を有する。
【００２４】
起動処理部８６はアプリケーション５６の起動処理を行う。スナップショット作成時点通過通知部８８は起動処理の開始から終了までの間にスナップショットを作成するタイミング（スナップショット作成時点）を設計上、持っている。スナップショット作成時点通過通知部８８は起動処理がスナップショット作成時点まで進んだタイミングで、スナップショットマネージャ５８に通知を行う。つまり、スナップショット作成時点とは、複数の処理から成る起動処理のうち所定の処理まで終了した状態であること、又は終了したタイミングのことである。以下では、所定の処理まで終了すること、又は終了したタイミングを、スナップショット作成時点まで進む、又はスナップショット作成時点の通過と表現する場合がある。なお、起動処理部８６はスナップショット作成時点まで進んだタイミングで起動処理を停止する。また、スナップショット起動開始指示受付部９０はスナップショット起動である場合に、スナップショットマネージャ５８からのスナップショット起動開始指示を受け付け、スナップショット作成時点以降の起動処理である継続起動を行う。
【００２５】
スナップショットマネージャ５８はスナップショット作成指示部９２、及び、スナップショット起動開始指示部９４を有する。スナップショット作成指示部９２は全てのアプリケーション５６からスナップショット作成時点通過通知を受け付けると、カーネル７４にスナップショット作成指示を行う。
【００２６】
スナップショット起動開始指示部９４は、スナップショット起動である場合に、アプリケーション５６にスナップショット起動開始指示を行う。
【００２７】
なお、スナップショットマネージャ５８は、操作部３のｅＭＭＣ１４などの記憶部を読み出すことで、又はアプリケーション５６のインストール状況を制御するプログラムに問い合わせることで、操作部３にインストールされたアプリケーション５６を把握しても良い。また、操作部３にインストールされた複数のアプリケーションのうち、スナップショット作成に必要なアプリケーション５６のみを特定しても良い。この場合、スナップショット作成指示部９２は、特定したアプリケーション５６からスナップショット作成時点通知を受け付けると、カーネル７４にスナップショット作成指示を行い、スナップショット起動開始指示部９４は、スナップショット起動である場合に、特定したアプリケーション５６にスナップショット起動開始指示を行う。
【００２８】
スナップショット作成起動選択部６０は電源オンからの起動が、スナップショット作成起動であるか、スナップショット起動であるか、を選択する。例えばスナップショット作成起動選択部６０はＧＰＩＯ２８に接続されたＤＩＰスイッチ（ディップスイッチ）等により、電源オンからの起動が、スナップショット作成起動であるか、スナップショット起動であるか、を選択する。ただし、スナップショット作成起動であるかスナップショット起動であるかの選択方法は、これに限定されず、例えば、記憶部に記憶されたフラグ情報に基づいて操作部３の起動が初回起動であるか否かを判断し、初回起動である場合はスナップショット作成起動を選択し、初回起動でない場合はスナップショット起動を選択しても良い。カーネル７４のスナップショット作成部８２に作成されたスナップショットはスナップショット記憶部６２に記憶される。
【００２９】
＜処理の詳細＞
本実施形態に係る操作部３は、例えば図３に示すような手順により電源オンからの起動処理を行う。図３は本実施形態に係る電源オンからの起動処理の一例のフローチャートである。
【００３０】
ステップＳ１１において、操作部３はスナップショット作成起動選択部６０による電源オンからの起動処理の選択がスナップショット作成起動であるか、スナップショット起動であるか、を確認する。電源オンからの起動処理の選択がスナップショット作成起動であれば、操作部３はステップＳ１３のスナップショット作成起動を行う。また、電源オンからの起動処理の選択がスナップショット作成起動でなければ、操作部３はステップＳ１４のスナップショット起動を行う。
【００３１】
ステップＳ１３のスナップショット作成起動は、例えば図４に示すような手順により行われる。図４は、ステップＳ１３のスナップショット作成起動の一例のフローチャートである。
【００３２】
ステップＳ２１においてブートローダ５０が起動される。ブートローダ５０の起動動作制御部７２はスナップショット作成起動の起動動作を開始する。ステップＳ２２において起動動作制御部７２はＯＳ５２のカーネル７４をロードし、起動する。カーネル７４はＯＳ５２を起動する。また、ステップＳ２３に進み、カーネル７４はアプリ起動部５４を起動する。
【００３３】
ステップＳ２４に進み、アプリ起動部５４は設定ファイルに従い、スナップショットマネージャ５８を起動する。アプリ起動部５４はステップＳ２５に進み、設定ファイルに従い、アプリケーション５６に起動処理を開始させる。ステップＳ２５のアプリケーション５６の起動処理により、スナップショットマネージャ５８のスナップショット作成指示部９２は全てのアプリケーション５６の起動処理がスナップショット作成時点まで進んだタイミングで、カーネル７４にスナップショット作成指示を行う。したがって、カーネル７４のスナップショット作成部８２は、ステップＳ２６において全てのアプリケーション５６の起動処理がスナップショット作成時点まで進んだタイミングで、スナップショットを作成できる。
【００３４】
ステップＳ２５のアプリケーション５６の起動処理は、例えば図５に示す手順により行われる。図５は、ステップＳ２５のアプリケーションの起動処理の一例のフローチャートである。
【００３５】
ステップＳ３１に進み、起動処理部８６は起動処理を開始する。起動処理部８６は起動処理をスナップショット作成時点まで進め、起動処理を停止する。起動処理部８６による起動処理がスナップショット作成時点まで進むと、スナップショット作成時点通過通知部８８はスナップショットマネージャ５８にスナップショット作成時点通過通知を行う。
【００３６】
スナップショットマネージャ５８のスナップショット作成指示部９２はステップＳ３３において、全てのアプリケーション５６からスナップショット作成時点通過通知を受け付けるまで待機する。全てのアプリケーション５６からスナップショット作成時点通過通知を受け付けると、スナップショット作成指示部９２はステップＳ３４に進み、カーネル７４にスナップショット作成指示を行う。
【００３７】
スナップショット作成部８２はスナップショットマネージャ５８からスナップショット作成指示を受け付けたタイミングで、スナップショットの作成を行う。したがって、本実施形態の操作部３は、全てのアプリケーション５６の起動処理がスナップショット作成時点まで進んだタイミングのスナップショットを安定して作成できる。
【００３８】
ところで、本実施形態に係る画像処理装置１では、スナップショット作成起動時、余計なデバイスドライバの処理を排除しておくことが望ましい。本実施形態に係る画像処理装置１では、スナップショット起動時に実際の環境に合わせてデバイスを有効にする方法が整合した起動状態となりやすい為である。
【００３９】
そこで、本実施形態に係る画像処理装置１では、画像処理装置１のデバイス構成及びデバイスドライバ構成により、スナップショット作成起動時の状態が、画像処理装置１のデバイスの起動状態に依存しないようにデバイスドライバごとに検討を行った。本実施形態に係る画像処理装置１ではステップＳ２１のブートローダ起動に含まれるデバイス処理の動作を、スナップショット作成起動時とスナップショット起動時とで以下のように変化させる。
【００４０】
また、本実施形態に係る画像処理装置１ではステップＳ２２のＯＳ起動に含まれるデバイスドライバ処理の動作を、スナップショット作成起動時とスナップショット起動時とで以下のように変化させる。
【００４１】
図６はステップＳ２１のブートローダ起動の一例のフローチャートである。例えば図６のフローチャートは、スナップショット作成起動時、ハブ（ＨＵＢ）のＰＨＹチップの電源をオンしないで、ＵＳＢ機器が繋がっていても物理的に認識しないようにする。ＰＨＹチップの電源をオンしないことで、ＵＳＢホストドライバ自体は初期化された状態にすることができる。また、スナップショット起動時、ハブのＰＨＹチップの電源をオンにすることで、ＵＳＢ機器の接続が検知される状態にすることができる。
【００４２】
ステップＳ５１に進み、ブートローダ５０の起動動作制御部７２はメモリ１８やＣＰＵ２２の初期化を行う。ステップＳ５２に進み、起動動作制御部７２は後述の各デバイス処理を行う。ステップＳ５３に進み、ブートローダ５０はＯＳ起動処理を開始する。
【００４３】
ステップＳ５２の各デバイス処理では、起動動作制御部７２がＵＳＢホストを含む、いろいろなデバイスの初期化を行う。ＵＳＢホストの初期化では、ステップＳ５６においてスナップショット作成起動であるか否かを判定し、スナップショット作成起動であれば、ハブのＰＨＹチップの電源をオンしないことによりＵＳＢ機器を物理的に認識させないようにする。
【００４４】
スナップショット作成起動でなければステップＳ５７に進み、起動動作制御部７２はハブのＰＨＹチップの電源をオンすることにより、ＵＳＢ機器の接続が検知される状態とすることができる。ＵＳＢホストのハブのＰＨＹチップの電源制御は単純な電源の入り切りのため、ブートローダ５０で処理する。
【００４５】
図７はステップＳ２２のＯＳ起動の一例のフローチャートである。例えば図７のフローチャートは、スナップショット作成起動時、無線ＬＡＮモジュールに電源供給しないことでデバイスドライバが有効にならないようにする。また、スナップショット起動時、無線ＬＡＮモジュールに電源供給することでデバイスドライバが有効になるようにする。
【００４６】
ステップＳ６１に進み、カーネル７４はＯＳ５２の初期化を行う。ステップＳ６２に進み、カーネル７４は後述の各デバイスドライバ処理を行う。ステップＳ６３に進み、カーネル７４は初期プロセス起動を開始する。
【００４７】
ステップＳ６２の各デバイスドライバ処理では、カーネル７４が無線ＬＡＮドライバ及びタッチパネルドライバを含む、いろいろなデバイスドライバの初期化を行う。無線ＬＡＮドライバの初期化では、ステップＳ６７においてスナップショット作成起動であるか否かを判定し、スナップショット作成起動であれば、無線ＬＡＮモジュールに電源供給しないことにより無線ＬＡＮドライバが有効にならないようにする。
【００４８】
スナップショット作成起動でなければステップＳ６８に進み、カーネル７４は無線ＬＡＮモジュールに電源供給することで無線ＬＡＮモジュールが検知される状態となり、デバイスドライバが初期化され、有効となる。
【００４９】
また、図７のフローチャートは、スナップショット作成起動時、タッチパネル１２の入力検知を無効化して起動する。また、スナップショット起動時、タッチパネル１２の入力検知を有効化して起動する。ステップＳ６２のタッチパネルドライバの初期化は例えば図８に示すフローチャートのように行われる。
【００５０】
図８は、ステップＳ６２のタッチパネルドライバの初期化の一例のフローチャートである。ステップＳ７１においてカーネル７４は、タッチパネル１２及びタッチパネルドライバを初期化する。タッチパネルドライバの初期化では、ステップＳ７２においてスナップショット作成起動であるか否かを判定する。スナップショット作成起動であれば、タッチパネル１２の入力検知を無効化して起動する。スナップショット作成起動でなければ、ステップＳ７３に進み、カーネル７４はタッチパネル１２の入力検知（割り込み）を有効化する。図７に示した無線ＬＡＮドライバの初期化及び図８に示したタッチパネルドライバの初期化はカーネル７４で処理する。
【００５１】
図６に示したブートローダ機能及び図７に示したＯＳ起動によれば、画像処理装置１に固有な各デバイス処理及び各デバイスドライバ処理を行うことで、スナップショット作成時に余計な処理を行うことなく、構成に中立なスナップショットを作成できる。例えば画像処理装置１は、追加オプションによりＵＳＢ機器の指紋認証デバイスが繋がるケースがある。
【００５２】
このような場合、本実施形態に係る画像処理装置１では、スナップショット作成起動で指紋認証デバイスが有効にならず、その指紋認証デバイスのデバイスドライバを有効にしない状態でスナップショットを作成できる。つまり、本実施形態に係る画像処理装置１ではデバイスドライバによるメモリ専有などの副作用のない状態で、スナップショットを作成できる。また、本実施形態に係る画像処理装置１ではスナップショット起動で指紋認証デバイスが有効になり、指紋認証デバイスの接続が検知される状態となるため、後述のドライバ環境対応及び継続起動により、指紋認証デバイスを動作させることができる。
【００５３】
ステップＳ１４のスナップショット起動は、例えば図９の手順により行われる。図９はステップＳ１４のスナップショット起動の一例のフローチャートである。
【００５４】
ステップＳ８１においてブートローダ５０が起動される。ブートローダ５０の起動動作制御部７２はスナップショット起動の起動動作を開始する。ステップＳ８２において起動動作制御部７２はＯＳ５２のカーネル７４をロードし、起動する。カーネル７４はＯＳ５２を起動する。
【００５５】
ステップＳ８３に進み、カーネル７４のスナップショット起動動作制御部８４はｅＭＭＣ１４に記憶されているスナップショットをメモリ１８に展開し、ハイバネーション起動を行う。つまり、メモリ１８には、アプリケーション５６の起動処理がスナップショット作成時点まで進んだタイミングのメモリ１８が再現される。
【００５６】
ステップＳ８４に進み、スナップショット起動動作制御部８４は画像処理装置１の環境に依存する機能の整合をドライバ環境対応で行う。スナップショット起動動作制御部８４はステップＳ８５に進み、スナップショット作成時点以降のアプリケーション５６の起動処理である継続起動を行う。
【００５７】
ステップＳ８５の継続処理は、例えば図１０に示す手順により行われる。図１０は、ステップＳ８５の継続処理の一例のフローチャートである。スナップショットマネージャ５８のスナップショット起動開始指示部９４は、ステップＳ９１でスナップショット起動が開始されたと判定すると、ステップＳ９２に進む。
【００５８】
ステップＳ９２において、スナップショット起動開始指示部９４はアプリケーション５６にスナップショット起動開始指示を行う。アプリケーション５６のスナップショット起動開始指示受付部９０はステップＳ９３において、スナップショットマネージャ５８からのスナップショット起動開始指示を待っている。
【００５９】
スナップショットマネージャ５８からのスナップショット起動開始指示を受け付けるとアプリケーション５６の起動処理部８６は、ステップＳ９４に進み、スナップショット作成時点以降の起動処理である継続起動を行う。
【００６０】
＜まとめ＞
本実施形態によれば、固定のスナップショットによるハイバネーション起動を行う画像処理装置１の操作部３において、周辺機器の有無や有効無効などの環境の変化に影響を受けないようにスナップショットを作成しておくことができる。ハイバネーション起動では固定のスナップショットをメモリ１８に展開した後、環境に依存する機能の整合をドライバ環境対応で行ったあと、残りの起動処理である継続起動を行うことができる。
【００６１】
したがって、本実施形態によれば、固定のスナップショットによるハイバネーション起動であっても、環境の変化に柔軟に対応できる操作部３を提供できる。
【００６２】
［第２の実施形態］
第１の実施形態に係る画像処理装置１では、工場出荷前にスナップショット作成起動を行って、工場出荷後、通常の電源オンからの起動でスナップショット起動を行う例を説明した。スナップショット作成起動は工場出荷後に行ってもよく、アプリケーション５６の追加や周辺機器の追加などの環境の変化があった場合に、ユーザがスナップショット作成起動を選択できるようにしてもよい。
【００６３】
また、スナップショット作成後に操作部３に追加された（インストールされた）追加アプリケーションの起動処理は、ステップＳ８５の継続起動において、起動処理の開始から終了までを行うようにすることで、追加アプリケーションが追加される前に作成済みのスナップショットを継続して利用するようにしてもよい。
【００６４】
［第３の実施形態］
図１０に示したスナップショット作成時点以降のアプリケーション５６の起動処理である継続起動では、アプリケーション５６が複数ある場合、スナップショット起動開始指示を行う順番を以下のように設定しておいてもよい。なお、第３の実施形態は一部を除いて第１の実施形態と同様であるため、適宜説明を省略する。第３の実施形態は、第１の実施形態と同様に、画像処理装置１の操作部３がハイバネーション起動を行う。
【００６５】
図１１は本実施形態に係る操作部の他の例の機能構成図である。図１１の操作部３は図２の操作部３に、優先度記憶部６４、優先度取得部９３及び優先度変更部９５が追加された構成である。
【００６６】
アプリケーション５６のスナップショット作成時点通過通知部８８は起動処理がスナップショット作成時点まで進んだタイミングで、スナップショットマネージャ５８に自身の優先度の通知を行う。なお、スナップショット作成時点通過通知部８８は、設計時に各アプリケーション５６の間で依存性などを解決できるように整合が取られた優先度を持っている。
【００６７】
スナップショットマネージャ５８は、図２のスナップショットマネージャ５８の構成に優先度取得部９３及び優先度変更部９５を追加した構成である。優先度取得部９３はアプリケーション５６から優先度の通知を受ける。通知された優先度はアプリケーション５６と対応付けて優先度記憶部６４に記憶される。スナップショット作成指示部９２は全てのアプリケーション５６から優先度の通知を受け付けると、カーネル７４にスナップショット作成指示を行う。
【００６８】
スナップショット起動開始指示部９４は、スナップショット起動である場合に、アプリケーション５６の優先度に従った順番にスナップショット起動開始指示を行う。優先度変更部９５はアプリケーション５６を介してユーザから優先度の変更依頼を受け付け、優先度記憶部６４に記憶されたアプリケーション５６の優先度を変更する。
【００６９】
図１２はステップＳ２５のアプリケーションの起動処理の他の例のフローチャートである。ステップＳ１０１において「アプリケーションＡ」の起動処理部８６は起動処理を開始する。起動処理部８６は起動処理をスナップショット作成時点まで進め、起動処理を停止する。起動処理部８６による起動処理がスナップショット作成時点まで進むと「アプリケーションＡ」のスナップショット作成時点通過通知部８８はステップＳ１０２において自身の優先度「２」をスナップショットマネージャ５８に通知する。
【００７０】
また、ステップＳ１０３において「アプリケーションＢ」の起動処理部８６は起動処理を開始する。起動処理部８６は起動処理をスナップショット作成時点まで進め、起動処理を停止する。起動処理部８６による起動処理がスナップショット作成時点まで進むと「アプリケーションＢ」のスナップショット作成時点通過通知部８８はステップＳ１０４において自身の優先度「１」をスナップショットマネージャ５８に通知する。
【００７１】
ステップＳ１０５において、スナップショットマネージャ５８の優先度取得部９３はアプリケーション５６からの優先度の通知を受け付けるまで待機する。アプリケーション５６から優先度の通知を受け付けると、優先度取得部９３はステップＳ１０６に進み、通知された優先度を優先度記憶部６４の優先度キューへ挿入する。
【００７２】
ステップＳ１０５〜Ｓ１０７の処理は、全てのアプリケーション５６から優先度の通知を受け付けるまで繰り返される。全てのアプリケーション５６から優先度の通知を受け付けると、スナップショット作成指示部９２はステップＳ１０８に進み、カーネル７４にスナップショット作成指示を行う。
【００７３】
図１３は優先度キューの一例の構成図である。優先度キューはアプリケーション５６の優先度を表している。例えば図１３（ａ）の優先度キューは優先度毎にアプリケーション数を記憶したデータである。優先度の数値が低いアプリケーション５６ほど、優先的に起動される。図１３（ｂ）の優先度キューはアプリケーション５６を特定するアプリ名やアプリＩＤなどの情報（アプリ特定情報）と、そのアプリケーション５６の優先順位とを対応付けてアプリケーション５６の優先度を記憶したデータである。
【００７４】
また、図１３（ｃ）の優先度キューはアプリケーション５６ごとの起動条件によりアプリケーション５６の優先度を記憶したデータである。図１３（ｃ）の優先度キューの場合は、起動条件が設定されていないアプリケーション５６の優先度が高く、起動条件が設定されているアプリケーション５６の優先度が低い。したがって、図１３（ｃ）の場合は起動条件が設定されていないアプリケーション５６を起動した後、起動条件が設定されているアプリケーション５６を起動させる。
【００７５】
図１４は、ｅＭＭＣに記憶されるスナップショットイメージ及び優先度キューの一例の構成図である。スナップショットイメージには、スナップショット作成部８２がスナップショットの作成を行ったとき、メモリ１８に展開されたアプリケーション５６やスナップショットマネージャ５８が含まれている。
【００７６】
一方、図１３に示した優先度キューはスナップショットイメージに含まれず、ｅＭＭＣ１４のスナップショットイメージと別のパーティションに保存される。スナップショット起動時、ｅＭＭＣ１４のスナップショットイメージは、アプリケーション５６やスナップショットマネージャ５８としてメモリ１８に展開される。スナップショットイメージがメモリ１８に展開された段階ではメモリ１８に優先度キューが展開されていなくてもよい。
【００７７】
図１５はステップＳ８５の継続処理の他の例のフローチャートである。図１５の継続処理においてスナップショットマネージャ５８のスナップショット起動開始指示部９４はｅＭＭＣ１４から優先度キューを読み出し、メモリ１８に展開する。ステップＳ１２１〜Ｓ１２８において、スナップショット起動開始指示部９４は優先度キューに従い、優先度の高いアプリケーション５６から順番に起動処理の再開通知を行う。スナップショット起動開始指示部９４からの再開通知を受け付けると、アプリケーション５６の起動処理部８６はスナップショット作成時点以降の起動処理である継続起動を行う。継続起動を完了させたアプリケーション５６は完了通知をスナップショットマネージャ５８に返す。
【００７８】
スナップショットマネージャ５８のスナップショット起動開始指示部９４は全てのアプリケーション５６から完了通知を受け取るまでステップＳ１２１〜Ｓ１２８に示した再開通知の送信と完了通知の受信を繰り返し行う。なお、図１５は「アプリケーションＢ」の優先度が「アプリケーションＡ」の優先度よりも高い例を表している。このため、スナップショット起動開始指示部９４は「アプリケーションＡ」よりも先に「アプリケーションＢ」へ再開通知を行っている。
【００７９】
なお、優先度が同じアプリケーション５６が複数ある場合、スナップショット起動開始指示部９４は複数のアプリケーション５６に対して同時に再開通知を送信し、並列して継続起動を行わせてもよい。また、ＣＰＵ２２の負荷を軽減するために、並列して継続起動を行わせるアプリケーション５６の数を制限したり、ランダム又は所定の条件（継続起動に要する時間や必要なメモリ容量など）に基づいて、再開通知に時間差を設けたり、してもよい。
【００８０】
図１６は、優先度変更処理の一例のフローチャートである。ステップＳ１３１〜Ｓ１３２において、スナップショットマネージャ５８の優先度変更部９５はユーザから「アプリケーションＡ」の優先度を「１」に変更する変更依頼を受け付ける。ステップＳ１３３において優先度変更部９５は「アプリケーションＡ」の優先度を「１」に変更する変更依頼に基づき、優先度記憶部６４に記憶されている優先度キューの「アプリケーションＡ」の優先度を「１」に変更する。これにより、スナップショット起動開始指示部９４は変更された優先度キューに従い、起動処理の再開通知を行うことができる。
【００８１】
第３の実施形態によれば、固定のスナップショットによるハイバネーション起動において起動する順番に依存性のあるアプリケーション５６の継続起動の順番を、それぞれのアプリケーション５６の優先度により調整できる。また、第３の実施形態によれば、固定のスナップショットによるハイバネーション起動において特定のアプリケーション５６の継続起動を優先できるので、ユーザの体感起動の短縮を見込むことのできる例えばホーム画面を制御するアプリケーション５６などを優先させて起動できる。
【００８２】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば画像処理装置１は一例であって、用途や目的に応じて様々なシステム構成例があることは言うまでもないことである。
【００８３】
スナップショット作成起動選択部６０は、特許請求の範囲に記載した選択手段の一例である。ブートローダ５０、ＯＳ５２及びアプリ起動部５４は、起動手段の一例である。スナップショットマネージャ５８のスナップショット作成指示部９２は作成指示手段の一例である。カーネル７４のスナップショット作成部８２は作成手段の一例である。
【００８４】
スナップショット記憶部６２は記憶手段の一例である。スナップショットマネージャ５８のスナップショット起動開始指示部９４は開始指示手段の一例である。優先度取得部９３は優先度取得手段の一例である。優先度変更部９５は優先度変更手段の一例である。
【符号の説明】
【００８５】
１    画像処理装置
２    本体部
３    操作部
４    ケーブル
１０    ＳＯＣ（System-on-a-chip）
１２    タッチパネル
１４    ｅＭＭＣ（embedded Multi Media Card）
１６    ＬＣＤ（Liquid Crystal Display）
１８    メモリ
２０    ＵＳＢ（Universal Serial Bus）ファンクション
２２    ＣＰＵ（Central Processing Unit）
２４    ＭＭＣコントローラ
２６    ＬＣＤコントローラ
２８    ＧＰＩＯ（General Purpose Input/Output）
３０    Ｉ２Ｃ（Inter-Integrated Circuit）
３２    メモリコントローラ
５０    ブートローダ
５２    ＯＳ
５４    アプリ起動部
５６    アプリケーション
５８    スナップショットマネージャ
６０    スナップショット作成起動選択部
６２    スナップショット記憶部
６４    優先度記憶部
７０    スナップショット作成起動判断部
７２    起動動作制御部
７４    カーネル
７６    スナップショット作成起動判断部
７８    スナップショット作成起動動作制御部
８０    スナップショット作成指示受付部
８２    スナップショット作成部
８４    スナップショット起動動作制御部
８６    起動処理部
８８    スナップショット作成時点通過通知部
９０    スナップショット起動開始指示受付部
９２    スナップショット作成指示部
９３    優先度取得部
９４    スナップショット起動開始指示部
９５    優先度変更部
【先行技術文献】
【特許文献】
【００８６】
【特許文献１】特開２０１７−１０２５８４号公報
【図１】
2019185717.tif 000003
【図２】
2019185717.tif 000004
【図３】
2019185717.tif 000005
【図４】
2019185717.tif 000006
【図５】
2019185717.tif 000007
【図６】
2019185717.tif 000008
【図７】
2019185717.tif 000009
【図８】
2019185717.tif 000010
【図９】
2019185717.tif 000011
【図１０】
2019185717.tif 000012
【図１１】
2019185717.tif 000013
【図１２】
2019185717.tif 000014
【図１３】
2019185717.tif 000015
【図１４】
2019185717.tif 000016
【図１５】
2019185717.tif 000017
【図１６】
2019185717.tif 000018