(57)【要約】      （修正有）【課題】ブートプログラムのリードエラーが発生した場合において、情報処理装置を起動するまでにかかる時間を短縮する情報処理装置および情報処理装置の制御方法を提供する。【解決手段】情報処理装置は、第１ブートプログラムおよび対応する第２ブートプログラムを少なくとも記憶する記憶手段と、プログラムを読み出して実行する実行手段と、実行手段によって第１ブートプログラムを読み出す際に読み出しエラーが生じたことに従って、第１ブートプログラムのうち読み出しエラーが生じたプログラムが記憶された記憶領域のアドレスを検出する検出手段と、第２ブートプログラムが記憶された記憶領域のアドレスのうち、検出手段によって検出したアドレスに対応するアドレスを特定する特定手段と、を有する。実行手段は、特定手段によって特定されたアドレスに記憶された第２ブートプログラムを読み出して実行する。【選択図】図４
2020087293.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサによってブートプログラムが実行されることでオペレーティングシステムが起動する情報処理装置であって、
第１ブートプログラムおよび前記第１ブートプログラムに対応する第２ブートプログラムを少なくとも記憶する記憶手段と、
プログラムを読み出して実行する実行手段と、
前記実行手段によって前記第１ブートプログラムを読み出す際に読み出しエラーが生じたことに従って、前記第１ブートプログラムのうち読み出しエラーが生じたプログラムが記憶された記憶領域のアドレスを検出する検出手段と、
前記第２ブートプログラムが記憶された記憶領域のアドレスのうち、前記検出手段によって検出したアドレスに対応するアドレスを特定する特定手段と、を有し、
前記実行手段は、前記特定手段によって特定されたアドレスに記憶された第２ブートプログラムを読み出して実行することを特徴とする情報処理装置。
【請求項２】
前記記憶手段は、
前記第１ブートプログラムおよび前記第２ブートプログラムは、複数の記憶領域に分けて記憶し、
前記第１ブートプログラムおよび前記第２ブートプログラムの各々を、プログラムの起動順番とプログラムの格納先であるアドレスとを対応させて管理する管理テーブルを記憶することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記管理テーブルにおいて、プログラムの起動順番に対応するアドレスは、所定の順番に実行するプログラムの先頭アドレスであることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記読み出しエラーが生じた際に、前記検出手段で検出されるアドレスに記憶された前記第１ブートプログラムの途中までを前記実行手段が実行した状態であった場合には、前記実行手段は前記特定手段によって特定されたアドレスに記憶された第２ブートプログラムの先頭から実行することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記実行手段は、前記特定されたアドレスに記憶された第２ブートプログラムを読み出して実行した後は、前記特定されたアドレスの次の起動順番に対応するアドレスに記憶された前記第２ブートプログラムを順次読み出して実行することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記実行手段は、前記特定されたアドレスに記憶された第２ブートプログラムを読み出して実行した後は、前記特定されたアドレスの次の起動順に対応するアドレスに記憶された前記第１ブートプログラムを順次読み出して実行することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記ブートプログラムを複製して前記記憶手段に記憶する複製手段を有し、
前記実行手段がブートプログラムの実行を完了したことに基づいて、前記複製手段が前記特定手段によって特定されたアドレスに格納された前記第２ブートプログラムを複製した第３ブートプログラムを前記記憶手段に記憶させることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記ブートプログラムを複製して前記記憶手段に記憶する複製手段を有し、
前記実行手段がブートプログラムの実行を完了したことに基づいて、前記複製手段が前記特定手段によって特定されたアドレスおよび前記特定されたアドレス以降の起動順のアドレスに格納された前記第２ブートプログラムを複製した第３ブートプログラムを前記記憶手段に記憶させることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項９】
前記ブートプログラムを複製して前記記憶手段に記憶する複製手段を有し、
前記実行手段がブートプログラムの実行を完了したことに基づいて、前記複製手段が前記第２ブートプログラムを複製して第３ブートプログラムを前記記憶手段に記憶させることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項１０】
前記プロセッサを起動するための異なるブートプログラムを記憶する異なる記憶手段と、
前記異なるブートプログラムを起動するための前記プロセッサと異なるプロセッサと、
を更に有し、
前記情報処理装置の電源がオンされることで、前記異なるブートプログラムが前記異なるプロセッサに実行され、前記プロセッサを起動することを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
時間をカウントするカウント手段を有し、
前記プロセッサが起動することに従って、前記カウント手段が時間のカウントを開始し、
前記実行手段によって前記第１ブートプログラムの実行が完了するまでに前記カウントが閾値を超えたら、前記読み出しエラーが生じることを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記第１ブートプログラムと前記第２ブートプログラムは同一のプログラムであることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
第１ブートプログラムおよび前記第１ブートプログラムに対応する第２ブートプログラムを少なくとも記憶する不揮発性メモリを有し、少なくとも１つのプロセッサによってブートプログラムが実行されることでオペレーティングシステムが起動する情報処理装置の制御方法であって、
前記第１ブートプログラムを読み出す際に読み出しエラーが生じたことに従って、前記第１ブートプログラムのうち読み出しエラーが生じたプログラムが記憶された記憶領域のアドレスを検出するステップと、
前記第２ブートプログラムが記憶された記憶領域のアドレスのうち、前記検出したアドレスに対応するアドレスを特定するステップと、
前記特定されたアドレスに記憶された第２ブートプログラムを読み出して実行するステップと、を有することを特徴とする情報処理装置の制御方法。
【請求項１４】
請求項１３に記載の制御方法を、コンピュータに実行させるためのプログラム。
【請求項１５】
請求項１４に記載のプログラムを格納したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＤＤ（ハードディスク）等の不揮発性メモリに記憶されたブートプログラムを読み出して実行する情報処理装置および情報処理装置の制御方法。
【背景技術】
【０００２】
従来、ＨＤＤ等の不揮発性メモリは、記憶手段として様々な情報処理装置（ＰＣやサーバ、画像形成装置等）に搭載されている。例えば、画像形成装置ではＯＳを起動させるためのブートプログラム、印刷ジョブ処理において、画像データや装置のログなどの格納先としてＨＤＤ等の不揮発性メモリを使用している。
【０００３】
不揮発性メモリの突発的な故障や寿命によって、情報処理装置を起動させる際に、ＯＳを起動させるためのブートプログラムのリードエラーが起きた場合には、情報処理装置が起動できなくなるおそれがある。
【０００４】
特許文献１では、同一のブートプログラムを不揮発性メモリの異なる記憶領域に複数記憶している。起動時に用いたブートプログラムにリードエラーが発生した場合には、ＣＰＵ、不揮発性メモリ、表示部を再起動させ、不揮発性メモリから異なるブートプログラムを読み出すことで情報処理装置を起動させる方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−７０２２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＯＳを起動するブートプログラムを不揮発性メモリから読み出す際にリードエラーが発生した場合であって、異なる記憶領域に記憶されたブートプログラムを初めから読み出して実行する場合には、装置の起動に時間がかかるおそれがある。
【０００７】
本発明の情報処理装置はこのような課題に鑑み、実行することでＯＳが起動するブートプログラムのリードエラーが発生した場合でも、ブートプログラムを最初から読み出して実行することなく情報処理装置を起動することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、少なくとも１つのプロセッサによってブートプログラムが実行されることでオペレーティングシステムが起動する情報処理装置であって、第１ブートプログラムおよび前記第１ブートプログラムに対応する第２ブートプログラムを少なくとも記憶する記憶手段と、プログラムを読み出して実行する実行手段と、実行手段によって第１ブートプログラムを読み出す際に読み出しエラーが生じたことに従って、第１ブートプログラムのうち読み出しエラーが生じたプログラムが記憶された記憶領域のアドレスを検出する検出手段と、第２ブートプログラムが記憶された記憶領域のアドレスのうち、検出手段によって検出したアドレスに対応するアドレスを特定する特定手段と、を有し、実行手段は、特定手段によって特定されたアドレスに記憶された第２ブートプログラムを読み出して実行することを特徴とする。
【発明の効果】
【０００９】
本発明は、ブートプログラムのリードエラーが発生した場合において、情報処理装置を起動するまでにかかる時間を短縮することが可能である。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置のシステム制御構成を示すブロック図
【図２】プログラムの起動順の説明図
【図３】ブートプログラムの構成及びプログラム管理テーブルの構成を示す図
【図４】ブートプログラムのリードエラー時のフロー図
【図５】ブートプログラムの構成及びプログラム管理テーブルの構成を示す図
【図６】ブートプログラムの構成及びプログラム管理テーブルの構成を示す図
【図７】プログラム管理テーブルの構成を示す図
【図８】ブートプログラムのリードエラー時のフロー図
【発明を実施するための形態】
【００１１】
添付図面を参照して本発明の各実施例を詳しく説明する。なお、以下の実施例は特許請求の範囲に係る発明を限定するものではなく、また各実施例で説明されている特徴の組み合わせのすべてが本発明の解決手段に必須のものとは限らない。
【００１２】
（実施例１）
図１は、本実施例における情報処理装置１０の構成の一例を示すブロック図である。図１の情報処理装置１０は、操作部ユニット１５０、ＦＡＸユニット１６０、コントローラユニット１００、プリンタユニット１２０、スキャナユニット１３０、電源ユニット１４０、スイッチ１４５、スイッチ１４８を有する。
【００１３】
ＣＰＵシステムであるコントローラユニット１００は、ＣＰＵ２０４、ＲＯＭ１０３、ＲＡＭ１０４、ＨＤＤ２０６、ネットワークＩ／Ｆ１０６、ＥＣ部２０９（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ）を有する。
【００１４】
ＣＰＵ２０４は、ＲＡＭ１０４に格納されたソフトウェアプログラムを実行し、装置全体の制御を行う。
【００１５】
ＲＯＭ１０３は、例えばコントローラユニット１００の起動に係る形成を実行させるプログラムや固定パラメータ等を格納している。
【００１６】
ＲＡＭ１０４は、ＣＰＵ２０４が情報処理装置１０を制御する際に、プログラムや一時的なデータの格納などに使用される。なお、ＲＡＭ１０４に格納されるプログラムや一時的なデータは、ＲＯＭ１０３や後述のＨＤＤ２０６から読み出されたものである。
【００１７】
ＨＤＤ２０６は、ＣＰＵ２０４が実行するプログラムや後述のプログラム管理テーブルや各種データをメインストレージとして格納する。実行するプログラムとは、例えば、情報処理装置の起動時にＯＳ（オペレーティングシステム）を起動させるためにＣＰＵ２０４が実行するブートプログラム（ＢＯＯＴＬｏａｄｅｒ３０２、Ｋｅｒｎｅｌ３０３）である。ブートプログラムおよびプログラム管理テーブルの詳細な説明は後述する。
【００１８】
なお、ここでは、ストレージとしてＨＤＤを用いたが、ｅＭＭＣ、ＮＡＮＤフラッシュメモリまたはＮＯＲフラッシュメモリ等でもよい。を用いたが、ＨＤＤ等でもよい。
【００１９】
ネットワークＩ／Ｆ１０６は、ネットワーク１１８とのデータの送受信を行う。
【００２０】
次に電源ユニット１４０は、情報処理装置１０に電源を供給する。電源がＯＦＦのときは、ＡＣ電源はスイッチ１４８によって絶縁され、スイッチ１４８がオンになることでＡＣ−ＤＣコンバータ１４１にＡＣ電源が供給され、ＤＣ電源が作られる。
【００２１】
ＡＣ電源（電源装置）は、ＣＰＵ２０４の指示によって装置全体を３つの独立した電源に制御することが可能である。スイッチ１４２によって、コントローラユニット１００への電力の供給を制御することが可能である。スイッチ１４３において、プリンタユニット１２０への電力の供給を制御することが可能である。スイッチ１４４において、スキャナユニット１３０への電力の供給を制御することが可能である。
【００２２】
次にその他のユニット及びスイッチを説明する。
【００２３】
ＦＡＸユニット１６０は、電話回線などにデジタル画像を送受信することが可能である。
【００２４】
操作部ユニット１５０は、タッチ式の操作パネルや、表示画面及びキー等によって構成される。なお、表示画面には、情報処理装置の各種状態（例えば、コピー状況や設定、エラー発生時のエラー表示など）を表示する。
【００２５】
スキャナユニット１３０は、原稿を読み取り、白黒２値やカラー多値の画像データを生成する。スキャナユニット１３０は、不図示のスキャナ制御Ｉ／ＦによってＣＰＵ２０４に接続される。ＣＰＵ２０４は、スキャナ制御Ｉ／Ｆを介してスキャナユニット１３０から入力される画像信号を制御する。
【００２６】
プリンタユニット１２０は、ネットワークＩ／Ｆが受け付けたＰＤＬデータを変換した画像データまたはスキャナユニット１３０によって生成した画像データ等を用紙（シート）に印刷する。
【００２７】
プリンタユニット１２０には、例えば、ＣＰＵ１６１と定着器１６２を含む。定着器１６２は、用紙に転写されたトナー像を熱と圧力により用紙に融着させるものである。図１において定着器１６２には、スイッチ１４５を介してＡＣ電源から電力が供給され、電力が供給されることで熱が生じる。なお、ＡＣ−ＤＣコンバータ１４１を介して電力が供給されてもよい。ＣＰＵ１６１は、不図示のＲＡＭ等を用いてプリンタコントローラとして機能する。ＣＰＵ１６１にはＡＣ−ＤＣコンバータ１４１を介して電力が供給される。またＣＰＵ１６１は、定着器１６２への電力の供給をスイッチ１４５によって制御する。
【００２８】
スイッチ１４８は、情報処理装置１０に電源を供給するか否かを、スイッチをオンまたはオフにすることによって切り替える。
【００２９】
ＥＣ部２０９は、ブートプログラム（ＢＩＯＳ）を格納している不揮発性メモリである。ブートプログラムの詳細な説明は後述する。
【００３０】
画像処理部２０８は、ＣＰＵ２０４、プリンタユニット１２０、スキャナユニット１３０に接続されている。画像処理部２０８は、スキャナユニット１３０から出力されたデジタル画像を色空間変換などの画像処理を行い、画像処理後のデータをＣＰＵ２０４に出力する。また、画像処理部２０８は、スキャナユニット１３０で読み取られた画像データを基に色空間変換などの画像処理を行い、ビットマップデータに変換し、プリンタユニット１２０に出力する。
【００３１】
なお、ＣＰＵ２０４は、ＨＤＤ２０６に対してデータの書き込み、データの読み出しを行わせる機能（ＨＤＤ制御部２３４）を有する。ここでは、ＨＤＤの制御を行う機能としたが、ＨＤＤの代わりに異なるメモリを用いた場合には、異なるメモリの制御を行う機能となる。さらに、ＣＰＵ２０４は、時間をカウントするタイマー機能を有する（タイマー部２３５）。ＣＰＵは、タイマー機能において、情報処理装置１０の起動に従ってカウントを開始する。
【００３２】
図２は、情報処理装置１０を起動する際に実行するプログラムの順番を示した図である。なお、起動する際は、情報処理装置１０をオンする指示を受け付けた状態である。
【００３３】
ＢＩＯＳ３０１は、情報処理装置１０の電源を入れることによってＥＣ部２０９に含まれるＣＰＵ２１０で実行されるプログラムであり、ＥＣ部２０９に含まれる不図ＲＯＭ２１１に記憶されている。
【００３４】
ＢＩＯＳ３０１が実行されると、例えば電源が供給されたＣＰＵ２０４のリセット状態を解除する等の装置の起動に係わる処理を行う。つまり、ＢＩＯＳ３０１は、ＣＰＵ２０４を起動するためのプログラムである。ＣＰＵ２０４が起動すると、ＣＰＵ２０４のタイマー部２３５が時間のカウントを開始する。
【００３５】
ＢＯＯＴＬｏａｄｅｒ３０２は、ＢＩＯＳ３０１の実行後に、ＣＰＵ２０４で実行されるプログラムであり、ＲＯＭ１０３に格納されている。ＢＯＯＴＬｏａｄｅｒ３０２が実行されると、ＨＤＤ２０６に格納されているＬｉｎｕｘ（登録商標）などのＯＳが起動する。そして、ＢＯＯＴＬｏａｄｅｒ３０２が実行されると、例えば、スイッチ１４６がオンし、プリンタユニット１２０に電力が供給される。さらに、操作部ユニット１５０の初期化をし、タッチパネル又は表示画面に描画可能な状態とする。
【００３６】
Ｋｅｒｎｅｌ３０３は、ＢＯＯＴＬｏａｄｅｒ３０２の実行が完了した後にＣＰＵ２０４で実行されるプログラムであり、ＯＳの核となるプログラムである。例えば、他のプログラムの動作やメモリの管理などを行う。具体的には、スキャナのＩ／Ｆを制御するプログラムやプリンタのＩ／Ｆを制御するプログラムや起動プログラムなどである。
【００３７】
Ｋｅｒｎｅｌ３０３の実行が終了すると、ＣＰＵ２０４は、ＯＳの起動が完了したと判断する。ＣＰＵ２０４のタイマー部２３５は、ＣＰＵ２０４がＯＳの起動を完了すると時間のカウントを終了する。
【００３８】
上述したように図３において、ＢＯＯＴＬｏａｄｅｒ３０２とＫｅｒｎｅｌ３０３は、ＯＳを起動させるためのブートプログラムとなる。
【００３９】
ＢＩＯＳ３０１の実行によってＣＰＵ２０４が起動し、タイマー部２３５が時間のカウントを開始してから、所定の時間が経過した時点で、ブートプログラムの実行が完了していない場合には、ブートプログラムのリードエラーとなる。所定の時間は、ブートプログラムの実行に必要な時間よりも長く設定され、例えば、起動に必要な時間が１０秒であれば、１５秒を閾値として設定する。
【００４０】
リードエラーが発生した場合には、タイマー部２３５は、ＣＰＵ２０４に対してリードエラー信号を通知する。
【００４１】
次に図３は、本発明のＨＤＤ２０６のデータ構成およびＨＤＤ２０６に格納されるプログラム管理テーブルを示す図である。
【００４２】
図３（ａ）においてＨＤＤ２０６は、ブートプログラム３０４、ブートプログラム３０５、その他保存データ３０６を格納している。ブートプログラム３０４は、ＯＳを起動させるブートプログラム（ＢＯＯＴＬｏａｄｅｒ３０２とＫｅｒｎｅｌ３０３）である。ブートプログラム３０５は、ブートプログラム３０４と同じプログラムである。その他保存データ３０６は、例えばユーザの設定データやスキャナユニット１３０によって生成された画像データや図３（ｂ）に示すプログラム管理テーブルである。
【００４３】
なお、図３では、同一のブートプログラムが２つ格納される例を示したが、２つ以上でもよい。また、ＯＳを起動させるためのブートプログラムの例として、ＢＯＯＴＬｏａｄｅｒ３０２とＫｅｒｎｅｌ３０３を挙げているが、これに限定するものではない。ＣＰＵ２０４が起動した後に実行するＯＳを起動させるためのブートプログラムにあたるプログラムはすべて複製してもよい。
【００４４】
また、本実施例では、同一のブートプログラムを２つ持つ構成を示すが、設定データなどを２つ持っていてもよい。
【００４５】
さらに、ここで同一とは、実質的に同一であればよい。例えば、一方のブートプログラムに対して、他方のプログラムに改編があっても、同様の機能を実現する場合には同一とみなす。
【００４６】
次に図３（ｂ）を用いてプログラム管理テーブル３０７について説明する。プログラム管理テーブル３０７は、ＨＤＤ２０６に保存されている。
【００４７】
プログラム管理テーブル３０７は、ブートプログラム３０４およびブートプログラム３０５のＢＯＯＴＬｏａｄｅｒ３０２を３つのブロック、Ｋｅｒｎｅｌ３０３を２つのブロックに分けて、それぞれ異なる記憶領域に記憶されている。
【００４８】
各記憶領域（格納先）はアドレスによって管理され、先頭アドレスが管理テーブルに記載されている。そして、プログラムの起動順番に対応させて先頭アドレスが管理されており、プログラムを起動する際には、起動順番に合わせて順次読み出し、実行する。なお、プログラム管理テーブル３０７において起動順に対応する各ブートプログラムのアドレスに格納されているプログラムの内容は同一である。
【００４９】
例えば、起動順３に当たるＢＯＯＴＬｏａｄｅｒのアドレスはブートプログラム３０４だと「０ｘ１２３６」になり、ブートプログラム３０５だと「０ｘＦＦ０３」となる。
【００５０】
本実施例では、ＢＯＯＴＬｏａｄｅｒを３つのブロック、Ｋｅｒｎｅｌを２つのブロックに分けているが、これに限定するものではない、また、アドレスが連続であるが、不連続でも良い。
【００５１】
次に、図４を用いて本実施例に係る情報処理装置１０の電源がオンすることによる起動処理手順を説明する。
【００５２】
情報処理装置１０の電源がオンされるとフローチャートが開始する。
【００５３】
ステップＳ５０１において、情報処理装置１０の電源がオンされるとＥＣ部２０９がＣＰＵ２０４を起動する。
【００５４】
ステップＳ５０２において、ＣＰＵ２０４は、タイマー部２３５による時間のカウントを開始し、且つ、ＨＤＤ２０６からブートプログラム３０４を読み出して実行する。
【００５５】
ステップＳ５０４において、ＣＰＵ２０４は、タイマー部２３５によってカウントしている時間が所定の時間（例えば１５ｓ）を経過したか否かを判断する。経過していない場合にはステップＳ５０５に遷移する。
【００５６】
ステップＳ５０５において、ＣＰＵ２０４は、ブートプログラムの実行が完了されたか否かを判断する。ＣＰＵ２０４が、入力されていないと判断するとステップＳ５０４に戻る。一方、ＣＰＵ２０４が、入力されたと判断するとステップＳ５０６に遷移する。
【００５７】
ステップＳ５０６において、ＣＰＵ２０４は、タイマー部２３５による時間のカウントを停止する。ステップＳ５０６を終えると、フローチャートを終了し、情報処理装置１０が使用可能になる。ステップのＳ５０４の説明に戻る。
【００５８】
ステップＳ５０４において、タイマー部２３５によってカウントしている時間が所定の時間を経過した場合にはステップＳ５０７に遷移する。
【００５９】
ステップＳ５０７において、所定の時間を経過してもブートプログラムの実行が完了されない場合には、ＣＰＵ２０４にリードエラー信号が生じる。そして、ステップＳ５１５において、リードエラー信号を受け付けたＣＰＵ２０４は、リードエラーが生じたアドレスを検出する。なお、ＣＰＵ２０４は、エラー信号が生じたらタイマーをストップする。
【００６０】
そして、ステップＳ５０８においてプログラム管理テーブルを参照して、リードエラーが生じたアドレスに対応する、他のブートプログラムのアドレスを特定する。
【００６１】
ステップＳ５１６において、ＣＰＵ２０４は、ステップＳ５０８で特定したアドレスからプログラムの読み出し、実行を継続する。なお、例えば、リードエラーが生じたアドレスに記憶されているプログラムの途中まで実行していたとしても、特定したアドレスに記憶されたプログラムの先頭から読み出しを行う。
【００６２】
ステップＳ５１６を終えると、ステップＳ５１７で、ＣＰＵ２０４は、ＨＤＤ２０６にリードエラーが発生しなかったブートプログラムを複製させ、リードエラーが生じたブートプログラムを削除させる。なお、ステップＳ５１７は、ステップＳ５１６の後であればどのタイミングでもよい。
【００６３】
ここで、ステップＳ５０８、ステップＳ５１５、Ｓ５０８、ステップＳ５１６について図５を用いて具体的に説明する。図５（ａ）は、ＣＰＵ２０４がブートプログラム３０４を実行している際に、エラー信号を受け付けたことを示している。ステップＳ５１５において、ＣＰＵ２０４は、アドレス０ｘ１２３６に格納されたプログラムの読み出しでエラーが発生したことを検出する。
【００６４】
ステップＳ５０８において、ＣＰＵ２０４は、ブートプログラム３０４のアドレス０ｘ１２３６に対応するアドレスとして、ブートプログラム３０５のアドレス０ｘＦＦ０３を特定する。
【００６５】
ステップＳ５１６において、ＣＰＵ２０４は、ブートプログラム３０５のアドレス０ｘＦＦ０３から起動順にプログラムを読み出し実行する。具体的には、アドレス０ｘＦＦ０３の後、アドレス０ｘＦＦ０４、アドレス０ｘＦＦ０５の順にブートプログラム３０５を読み出して実行する。なお、アドレス０ｘＦＦ０３の後、アドレス０ｘ１２３７、アドレス０ｘ１２３８の順にブートプログラム３０４を読み出して実行してもよい。ステップＳ５１６を終えるとステップＳ５０９に遷移する。
【００６６】
次にステップＳ５０９において、ＣＰＵ２０４のタイマー部２３５によってカウントされた時間を確認する。カウントされた時間が所定時間を超えていない場合には、ステップＳ５１０に遷移する。
【００６７】
ステップＳ５１０において、ＣＰＵ２０４は、ブートプログラムを最後まで実行したか否かを判断する。ＣＰＵ２０４がブートプログラムを最後まで実行していない場合には、ステップＳ５０９に戻る。ＣＰＵ２０４がブートプログラムを最後まで実行した場合には、ステップＳ５１１に遷移する。ステップＳ５１１において、ＣＰＵ２０４のタイマー部２３５は、時間のカウントを停止する。ステップＳ５１１を終えると、ステップＳ５１２に遷移する。
【００６８】
ステップＳ５１２において、ＣＰＵ２０４は、図５（ｂ）および図５（ｃ）に示すように、ブートプログラム４０１をＨＤＤ２０６に記憶させる。ブートプログラム４０１は、ブートプログラム３０５、ブートプログラム３０４と同じ内容のプログラムである。ここではブートプログラム４０１は、ブートプログラム３０５を複製することで作成する。
【００６９】
また、例えば、ブートプログラム３０４を読みだす際にエラーが生じた起動順のアドレスに対応するアドレスおよび対応するアドレス以降に格納されたブートプログラム３０５を複製し、ブートプログラム４０４を作成してもよい。（図６（ａ）、図６（ｂ））
この場合には、ブートプログラム３０４は、エラーが生じたアドレス以降のプログラムを削除する。なお、ブートプログラム３０４を読みだす際にエラーが生じた起動順のアドレスに対応するアドレスおよび対応するアドレス以降に格納されたブートプログラム３０５のみを複製し、ブートプログラム４０４を作成してもよい。この場合には、ＣＰＵ２０４は、ブートプログラム３０４を読みだす際にエラーが生じた起動順のアドレスに格納されたプログラムのみを削除する。なお、削除されたプログラムが格納されていたアドレスは、未使用領域となる。
【００７０】
このように、複製することにより、常に同一ブートプログラムを２つ持つことが出来る。このような構成によれば、仮に一方のブートプログラムがリードエラーでも、他方のブートプログラムから起動することが可能である。
【００７１】
ステップＳ５１２を終えると、フローが終了し、情報処理装置１０が使用可能になる。
【００７２】
ステップＳ５０９の説明に戻る。ステップＳ５０９において、確認した時間が所定時間を超えた場合には、ステップＳ５１３に遷移する。
【００７３】
ステップＳ５１３において、ＣＰＵ２０４のタイマー部は、ＣＰＵ２０４に対してリードエラー信号を通知する。
【００７４】
ステップＳ５１４において、ＣＰＵ２０４は操作部ユニット１５０の表示画面に、例えば「ＨＤＤが壊れています。交換してください。」等の、ＨＤＤに関する通知を表示させる。そして、フローが終了する。
【００７５】
なお、本実施例では、ＨＤＤ２０６が同一のブートプログラムを２つ記憶する構成を例として示したが、複数（例えば３つ以上）でもよい。例えば、ＨＤＤ２０６に記憶されたブートプログラムが３つの場合には、ステップＳ５０９でＹＥＳとなると、Ｓ５０７〜Ｓ５１６を実行してもよい。つまり、同一のブートプログラムの数だけ、Ｓ５０４、Ｓ５０７、Ｓ５１５、Ｓ５０８，Ｓ５１６、Ｓ５０９を実行してもよい。
【００７６】
本実施例の構成によれば、ＨＤＤ等の不揮発性メモリの突発な故障や寿命による、ＯＳを起動するためのブートプログラムのリードエラーが起きても、ブートプログラムを初めから読み出す必要がないため起動にかかる時間を少なくすることが可能である。
【００７７】
（実施例２）
本実施例は、実施例１とリードエラーが起こったアドレスに対応する、他のブートプログラムのアドレスの特定の仕方が異なる。ここでは、実施例１との差異についてのみ説明する。
【００７８】
図７に本実施例におけるプログラム管理テーブル７０１を示す。
【００７９】
ブートプログラム３０４の起動順の各プログラムのアドレスの先頭と、ブートプログラム３０５の起動順の各プログラムのアドレスの先頭とが、所定のアドレスを加算した構成となっている。具体的には、例えば、起動順１におけるブートプログラム３０４のアドレスは、アドレス０ｘＦＦ０１であり、起動順１におけるブートプログラム３０５のアドレスは、アドレス０ｘＦＦＦ１である。つまり、ブートプログラム３０４のアドレス０ｘＦＦ０１に、アドレス０ｘ００Ｆ０を加算した構成となっている。
【００８０】
図８を用いて本実施例に係る情報処理装置１０の電源がオンすることによる起動処理手順を説明する。ここでは、図４との差異である、ステップＳ７０１、Ｓ７０２の前後についてのみ説明する。
【００８１】
ステップＳ５１５において、リードエラー信号を受け付けたＣＰＵ２０４は、リードエラーが生じたアドレスを検出する。
【００８２】
ステップＳ７０１において、検出したアドレスに対して、所定のアドレスを加算する。ステップＳ７０１を終えると、ステップＳ７０２に遷移する。ステップＳ７０２では、加算したアドレスからプログラムのリードを継続する。ステップＳ７０２を終えると、ステップＳ５０９に遷移する。
【００８３】
本実施例の構成においても、ＨＤＤ等の不揮発性メモリの突発な故障や寿命による、ＯＳを起動するためのブートプログラムのリードエラーが起きても、ブートプログラムを初めから読み出す必要がないため起動にかかる時間を少なくすることが可能である。
【００８４】
（その他の実施形態）
以上、本発明の様々な例と実施形態を示して説明したが、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
【００８５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８６】
２０４  ＣＰＵ
２０６  ＨＤＤ
３０４  ブートプログラム
３０５  ブートプログラム
【図１】
2020087293.tif 000003
【図２】
2020087293.tif 000004
【図３】
2020087293.tif 000005
【図４】
2020087293.tif 000006
【図５】
2020087293.tif 000007
【図６】
2020087293.tif 000008
【図７】
2020087293.tif 000009
【図８】
2020087293.tif 000010