少なくとも2つのコントローラを備え、前記コントローラの各々がジョブ処理を分担する情報処理装置であって、前記コントローラにはそれぞれ異なるメモリデバイスが接続されており、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、前記コントローラの各々には、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定手段と、前記特定手段によって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込み手段と、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする情報処理装置。前記異常検知手段は予め定められた時間で前記起動情報が更新されないと別の前記コントローラの起動に異常が生じたと判定することを特徴とする請求項1に記載の情報処理装置。前記コントローラの各々には異常を報知するための報知手段が接続されており、さらに、前記コントローラの各々は、前記異常検知手段で別の前記コントローラの異常が検知されると、自己に接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項1又は2に記載の情報処理装置。前記コントローラの各々には異常を報知するための報知手段が接続されており、さらに、前記コントローラの各々は、前記異常検知手段で別の前記コントローラの異常が検知されると、別の前記コントローラに接続された前記報知手段によって異常を報知する通知手段を有することを特徴とする請求項1又は2に記載の情報処理装置。異常検知手段は前記起動情報に応じて別の前記コントローラにおける起動停止状態を判定し、前記起動停止状態に応じて別の前記コントローラに通知するか否かを決定する通知決定手段を有することを特徴とする請求項1又は2に記載の情報処理装置。少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、前記コントローラの1つが起動された際、当該コントローラの1つについて起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする制御方法。少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、前記コントローラの各々に、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として、前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知ステップとを実行させることを特徴とする制御プログラム。上記の特許文献1においては、電源回路の出力電圧を検知する際、予め定められた周期で出力電圧が異常であるか否かを検知している。しかしながら、特許文献1では、出力電圧の異常検知を行っているのみであり、メモリデバイスに接続不良が発生した際には、画像形成装置を起動することができない。この結果、出力電圧の異常を検知することができないという課題がある。そして、この状況では、電圧検知動作が正常であるとしても、画像形成装置が起動しないという状況に陥ってしまう。一方、特許文献2および特許文献3においては、複数のプロセッサが共有メモリを用いて情報を共有している。そして、特許文献2では、共有メモリ上に監視リンク情報を記録して相互監視を行い、異常検出の際に監視体制を再構築するとともに監視リンク情報を共有メモリに保持するようにしている。特許文献3では、共有メモリを用いてイベントを保持し、同期をとって不揮発メモリにロギングするようにしている。ところが、メモリデバイスに異常が発生すると、共有メモリに保存された情報が破壊されるか又は正しく読み取れない恐れがある。特許文献2および3ともに、共有メモリを一系統備えているだけであるので、共有メモリであるメモリデバイスに異常があると起動異常を検知することはできない。さらに、画像形成装置の起動の際に異常が発生すると、正しく起動した状況であれば動作する異常検知機能が正しく動作するという保証がない。従って、本発明の目的は、少なくとも2つのコントローラを備える際に、起動異常を確実に検知することのできる情報処理装置、その制御方法、および制御プログラムを提供することにある。上記の目的を達成するため、本発明による情報処理装置は、少なくとも2つのコントローラを備え、前記コントローラの各々がジョブ処理を分担する情報処理装置であって、前記コントローラにはそれぞれ異なるメモリデバイスが接続されており、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有し、前記コントローラの各々には、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定手段と、前記特定手段によって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込み手段と、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知手段とを有することを特徴とする。本発明による制御方法は、少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置の制御方法であって、前記コントローラの1つが起動された際、当該コントローラの1つについて起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する検知ステップとを有することを特徴とする。本発明による制御プログラムは、少なくとも2つのコントローラを備え、前記コントローラにはそれぞれ異なるメモリデバイスが接続されて、前記コントローラの各々がジョブ処理を分担し、前記コントローラの一方から前記コントローラの他方に接続された前記メモリデバイスへアクセスするためのアクセス手段を有する情報処理装置で用いられる制御プログラムであって、前記コントローラの各々に、自己が起動された際、起動段階のいずれの段階まで進んだかについて特定する特定ステップと、前記特定ステップによって特定された起動段階を起動情報として前記アクセス手段によって別の前記コントローラに接続された前記メモリデバイスに書き込む書き込みステップと、自己に接続された前記メモリデバイスに書き込まれた前記起動情報を参照して、別の前記コントローラの起動に異常が生じたか否かを検知する異常検知ステップとを実行させることを特徴とする。本発明によれば、少なくとも2つのコントローラを備える際に、起動異常を確実に検知することができるという効果がある。以下、本発明の実施の形態による情報処理装置の一例を図面を参照して説明する。なお、以下の説明では、情報処理装置の1つである画像形成装置を例に挙げて説明する。図1は、本発明の実施の形態による画像形成装置のハードウェア構成の一例を示すブロック図である。図1において、図示の画像形成装置はコントローラメインユニット100およびコントローラサブユニット101を有している。コントローラメインユニット100は、画像形成装置において情報処理部を司る。また、コントローラサブユニット101は画像形成装置において画像処理部を司る。そして、コントローラメインユニット100はバスブリッジ116を有しており、バスブリッジ116を介してコントローラサブユニット101と接続されている。コントローラメインユニット100はCPU108を有しており、CPU108はフラッシュROMFLASHROM110又はHDD111に記憶されたソフトウェアプログラムを実行する。そして、CPU108はシステムバス115に接続されたデバイスを総括的に制御する。FLASHROM110およびHDD111は、画像データおよびユーザ設定の記憶領域としても用いられる。RAM109は、CPU108の主メモリおよびワークエリアなどとして用いられる。操作部インタフェースI/F112は画像形成装置に備えられた各種ボタン図示せずからの指示入力を受けるとともに、タッチパネル付きLCDパネル104に描画を行い、当該LCDパネル104から指示入力を受ける。この操作部I/F112には、電力状態LED103にも接続されている。電力状態LED103はコントローラメインユニット100の動作状態を示すインジケータ部である。ネットワークインタフェースカードNIC:ネットワークI/Fともいう113は他のネットワーク機器あるいはファイルサーバ等とLAN102を介して双方向にデータを送受する。外部ストレージI/F外部シリアルI/Fともいう114は、例えば、USBであり、メモリメディアリーダ又はICカードリーダなどの外部装置に接続され、双方向にデータを送受する。コントローラサブユニット101はCPU117を有しており、CPU117はスキャナ105およびプリンタ106に接続されている。プリンタ106は、例えば、電子写真プロセス又はインクジェット方式などを用いて画像データに応じて印刷を行う。スキャナ105は、原稿上の画像を読み込んで画像データとしてコントローラサブユニット101に与える。スキャナ画像読み取り部105には、一般にオプションとしてオートドキュメントフィーダ図示せずが装着されており、複数枚の原稿を自動的に読み込むことができる。スキャナ105およびプリンタ106はデバイスI/F120を介して画像データおよび制御信号をCPU117との間で授受する。CPU117はシステムバス127に接続されたデバイスを総括的に制御する。スキャナ105から入力された画像データは、スキャナ画像処理部121を介してRAM118に読み取り画像データとして入力される。メモリ画像処理部IMAGEC123は、RAM118に記憶された画像データを処理して、再びRAM118に格納する。この画像処理には、回転変倍色空間変換グレースケール変換合成符号化復号化などの処理が含まれる。上述のように、メモリ画像処理部123で画像処理が行われた後、CPU117はバスブリッジ116を介して、FLASHROM110又はHDD111に画像データを保存する。また、CPU117は、バスブリッジ116を介してFLASHROM110又はHDD111に保存された画像データをRAM118に読み出す。そして、CPU117はプリンタ画像処理部122で所定の処理を行った後、画像データをプリンタ106に出力する。なお、スキャナ画像処理部121およびプリンタ画像処理部122においては、色空間変換、移動、色調整、および濃度制御などの処理が行われる。ラスターイメージプロセッサRIP119は、PDLコードをビットマップイメージに展開する。操作部I/F124は、CPU117からの指示に応じて実行中LED128の点滅の制御を行う。SRAM不揮発性メモリ125は、CPU117との間でデータを高速に入出力する。モデムMODEM126は、公衆回線107に接続され、ファクス画像の入出力に応じて変復調を行う。図2は、図1に示す画像形成装置におけるメモリマップ構成の概念説明するための図である。図1および図2を参照して、CPU108は、物理的に接続されたRAM109DRAMを符号151で示す下位アドレス空間にマッピングして利用する。また、CPU108は、物理的に接続されたバスブリッジ106を設定して、当該バス上のデバイスのI/O又はメモリ空間を、符号150で示す上位アドレス空間にマッピングする。次に、CPU117は、物理的に接続されたRAM118DRAMを符号153で示す下位アドレス空間にマッピングして利用する。また、CPU117は、物理的に接続されたバスブリッジ106を経由して、当該バス上のデバイスのI/O又はメモリ空間を、符号152で示す上位アドレス空間にマッピングする。CPU108はバスブリッジ106の設定により、ウィンドウWindow154を介して符号153で示すDRAMの一部又は全領域に対して、CPU117がリードおよびライトを行えるように、上位アドレス空間150を割り付ける。同様に、CPU108はバスブリッジ106の設定により、Window155を介して符号151で示すDRAMの一部又は全領域に、CPU117がリードおよびライトを行えるように、上位アドレス空間152を割り付ける。図3は、図1に示す画像形成装置における起動シーケンスの処理を説明するためのフロー図である。なお、図示の例では、シーケンシャルに処理が行われるように記載されているが、CPU108および117が並行に動作するようにしてもよい。図1~図3を参照して、起動が行われると、CPU108は、FLASHROM110に記録されたBIOSを実行する。BIOSの実行によって、CPU108は、CPU108に接続されたタイマー図示せず、ブートデバイスFLASHROM110、メモリRAM109、およびビデオ操作部I/F112などの組み込みデバイスを初期化する。初期化に成功すると、コントローラメインユニット100の起動状態はBIOS起動完了となるS201。この際、CPU108は、メモリ空間151に対して、BIOS起動完了を記録する。なお、記録情報については後述する。次に、CPU108は、ブートデバイス110に格納されたMBRに記録された一次ローダを実行する。一次ローダを実行すると、CPU108は同一のブートデバイス110に格納された二次ローダカーネルローダを実行する。二次ローダには、前述のバスブリッジの設定処理が含まれ、これが完了すると、メモリ空間153がCPU1CPU108のアドレス空間に配置される。これにより、CPU108はRAM118にアクセスできるようになる。続いて、CPU108は、ブートデバイス110からカーネルおよび初期ラムイメージinitrdを読み出す。そして、読み出しに成功すると、コントローラメインユニット100の起動状態はメインローダ起動完了となるS202。この際、CPU108は、メモリ空間151に対して、メインローダ完了を記録して、Window1Window154を介してメモリ空間153に同一の状態を記録する。続いて、CPU108は、カーネルおよび初期ラムイメージを実行する。CPU108は、カーネルに含まれるデバイスドライバを介して、ハードウェアを初期化し、初期ラムイメージをマウントする。マウント処理が完了すると、CPU108は初期プロセスinitdを実行する。初期プロセスの起動に成功すると、コントローラメインユニット100の起動状態はカーネル起動完了となるS203。この際、CPU108は、メモリ空間151に対して、カーネル起動完了を記録して、Window1Window154を介してメモリ空間153に同一の状態を記録する。次に、CPU108は、初期プロセスを介してサブローダを実行する。CPU108は、サブローダに含まれるCPU117の起動イメージを、RAM118に転送する。転送が完了すると、CPU108は、CPU117のリセットを解除する。これによって、CPU117は、RAM118に転送された実行イメージ起動イメージを読み出して起動を行う。コントローラサブユニット101の起動処理が完了すると、コントローラメインユニット100の起動状態は、サブローダ起動完了となるS204。この際、CPU108は、メモリ空間151に対して、サブローダ起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。続いて、CPU108は、初期プロセスを介してOSサービスを起動して実行する。CPU108は、OSサービスを介してCPU間通信のための初期化を行って、CPU117が起動するのを待つ。このOSサービスの初期化には、LCDパネル104の初期化が含まれる。これによって、ローカライズされていない文字ベースの画面表示の描画および起動画面のビットマップ表示が行われる。OSサービスの起動処理が完了すると、コントローラメインユニット100の起動状態はOSサービス起動完了となるS205。この際、CPU108は、メモリ空間151に対して、OSサービス起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。次に、CPU117は、メモリ空間に転送されたOSを実行する。CPU117は、OSの実行によって、システムバス127上のデバイスの初期化を行うとともに、CPU間通信のための初期化を行う。そして、CPU117はCPU108に応答する。OSが起動完了すると、コントローラサブユニット101の起動状態は、OS起動完了となるS206。この際、CPU117は、メモリ空間153に対して、OS起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。続いて、CPU108は、初期プロセスを介して電力制御プロセスを起動して実行する。CPU108は、電力制御プロセスの実行によって、電力および機器全体制御のための初期化を行う。電力制御起動処理が完了すると、コントローラメインユニット100の起動状態は、電力制御起動完了となるS207。この際、CPU108は、メモリ空間151に対して電力制御起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。次に、CPU117は、スキャナ105およびプリンタ106と通信するために、画像処理プロセスを実行する。CPU117は、画像処理プロセスの実行によってシステムバス127上の画像処理デバイスの初期化を行って、スキャナ105およびプリンタ106と通信する。画像処理装置の初期化が完了すると、コントローラサブユニット101の起動状態は画像処理起動完了となるS208。この際、CPU117は、メモリ空間153に対して画像処理起動完了を記録して、Window155を介して、メモリ空間151に同一の状態を記録する。さらに、CPU108は、初期プロセスの実行によってデータ処理プロセスを起動して実行する。CPU108は、データ処理プロセスの実行によってセキュリティシステム構成、設定値、ログ、および文書などの機器共有データ制御のための初期化を行う。データ処理起動が完了すると、コントローラメインユニット100の起動状態は、データ処理起動完了となるS209。この際、CPU108は、メモリ空間151に対してデータ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。次に、CPU117は、スキャナ105およびプリンタ106の初期動作を実行する。CPU117は、画像処理プロセスの実行によってスキャナ105およびプリンタ106と通信を行って、初期色調整および動作検証を行う。スキャナ105およびプリンタ106が正常動作できる状態になると、コントローラサブユニット101の起動状態は、エンジン起動完了となるS210。この際、CPU117は、メモリ空間に対してエンジン起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。続いて、CPU108は、初期プロセスの実行によってジョブ処理プロセスを起動して実行する。CPU108は、ジョブ処理プロセスの実行によってスキャナ105およびプリンタ106の構成を取得して、ジョブ制御のための初期化を行う。ジョブ制御の初期化には、ファクス通信制御が含まれており、CPU108は、CPU117に対して通信を行って、ファクスの初期化を要求する。ジョブ処理起動が完了すると、コントローラメインユニット100の起動状態は、ジョブ処理起動完了となるS211。この際、CPU108は、メモリ空間151に対してジョブ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。次に、CPU117は、CPU108からファクス初期要求を受けると、ファクス処理プロセスを実行する。CPU17は、ファクス処理プロセスの実行によって、MODEM126の初期化を行って、その動作検証を行う。ファクスが正常動作できる状態になると、コントローラサブユニット101の起動状態は、ファクス起動完了となるS212。この際、CPU117は、メモリ空間153に対してファクス起動完了を記録して、Window155を介してメモリ空間に同一の状態を記録する。続いて、CPU117は、全ての起動プロセスを完了して、ジョブ待ち受け状態になる。コントローラサブユニット101の起動状態は起動完了となるS213。この際、CPU117は、メモリ空間153に対して起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。次に、CPU108は、初期プロセスの実行によって表示処理プロセスを起動して実行する。CPU108は、表示処理プロセスの実行によって画面出力および操作入力制御のための初期化を行う。表示処理制御の初期化に伴って、CPU108は、LCDパネル104に対してローカライズされたグラフィカルな画面表示の描画を行う。CPU108は表示処理プロセスの実行によってメニュー、コピー、スキャン、およびファクスなどのアプリケーションを起動する。表示処理起動が完了すると、コントローラメインユニット100の起動状態は画面処理起動完了となるS214。この際、CPU108は、メモリ空間に対してジョブ処理起動完了を記録して、Window154を介してメモリ空間153に同一の状態を記録する。続いて、CPU108は、初期プロセスの実行によってネットワーク処理プロセスを起動して実行する。CPU108は、ネットワーク処理プロセスの実行によってLAN102を介したプロトコル制御のための初期化を行う。CPU108はネットワーク処理プロセスの実行によってPDLプリントおよびウェブサーバなどのアプリケーションを起動する。ネットワーク処理起動が完了すると、メインコントローラ100の起動状態はネットワーク起動完了となるS215。この際、CPU108は、メモリ空間151に対してネットワーク起動完了を記録して、Window154を介してメモリ空間に同一の状態を記録する。続いて、CPU108は、全ての起動プロセスが完了すると、操作待ち受け状態となる。コントローラメインユニット100の起動状態は起動完了となるS216。この際、CPU108は、メモリ空間153に対して起動完了を記録して、Window155を介してメモリ空間151に同一の状態を記録する。通常動作の際には、上述のフローで起動が完了する。一方、起動処理の途中で、初期化失敗又はハードウェアの異常があると、CPU108および117は起動状態が進行せず所定の状態で停止することになる。図4は、図1に示す画像形成装置に保存される起動状態の管理テーブル起動状態管理テーブルを示す図である。図4において、起動状態管理テーブル起動情報ともいう301には、図3で説明した起動状態を示す詳細なデータが保持される。CPU108は、起動状態管理テーブル301の構造に応じてRAM109およびWindow154を介してRAM118に保存されたCPU108の起動状態を更新する。CPU117は、起動状態管理テーブル301の構造に応じてRAM118およびWindow155を介してRAM109に保存されたCPU117の起動状態を更新する。起動状態管理テーブル301は、起動段階情報起動段階302を有しており、起動段階情報302は、前述したようにして、コントローラメインユニット100およびコントローラ101の起動段階について番号Mを割り付けたものである。起動段階詳細状態情報起動段階詳細状態303は、コントローラメインユニット100およびコントローラ101についてその起動段階の一段階においてさらに詳細な起動段階が存在する場合に、その詳細起動段階に番号を割り付けたものである。例えば、画像処理初期化中であれば、初期化対象デバイスの個数に応じて降順に番号が振られる。起動遷移理由情報起動遷移理由304は、コントローラメインユニット100およびコントローラ101についてその起動段階情報302を更新する際に、更新した理由に番号を割り付けたものである。起動遷移理由情報304は、例えば、正常終了、システム要因の異常終了、ユーザ要因の異常終了、およびハードウェア要因の異常終了を意味するコードとなる。起動遷移時刻情報起動遷移時刻305は、起動段階情報302を更新した場合にその起動開始からの経過時刻を示している。チェックサム情報307は、起動状態管理テーブル301の内容が有効であるか否かを識別するためのレコード全体のチェックサムを示している。さらに、起動状態管理テーブル301は状態更新タイムアウト情報状態更新タイムアウト値306を備えるようにしてもよい。起動状態管理テーブル301について、状態更新タイムアウト値306で示す時間を経過しても起動状態が更新しない場合には、起動が停止したと看做されるタイムアウト時間である。この状態更新タイムアウト値306として、次回の更新までの処理が長い場合には処理を完了するまでに必要十分な時間が指定される。図5は、図1に示す画像形成装置における起動異常検知処理を説明するためのフローチャートである。図1および図5を参照して、CPU108および117の各々は、他方のCPUに係る起動状態管理テーブルの更新に応じて異常発生の判定を行う。起動異常検知処理を開始すると、CPU108および117は、現在の時刻t1をタイマー図示せずから取得するステップS401。続いて、CPU108および117は、それぞれRAM109および118の所定のメモリアドレスにアクセスして、他方のCPUの起動状態を取得するステップS402:起動状況のチェック処理。CPU108および117は、他方のCPUの起動状態が前回取得した起動状態と比較して変化したか否かを確認するステップS403。他方のCPUの起動状態が前回取得した起動状態と変化しているとステップS403において、YES、CPU108および117は、当該変化した起動状態が最終を示す番号最終番号であるか否かを判定するステップS404。そして、変化した起動状態が最終番号でないとステップS404において、NO、CPU108および117は、ステップS401の処理に戻る。一方、変化した起動状態が最終番号であるとステップS404において、YES、CPU108および117は、正常に起動したとして、後述する正常起動処理を行うステップS405。そして、CPU108および117は、他方のCPUの起動監視処理を終了する。他方のCPUの起動状態が前回取得した起動状態と変化していないとステップS403において、NO、CPU108および117は、起動停止状態の判定のために、タイマーから現在時刻t2を取得するステップS405。続いて、CPU108および117は、起動停止判定を行うステップS407。この起動停止状態の判定では、起動状態の変化確認処理を開始してから、起動状態変化がないまま経過した時間つまり、t2-t1が起動状態変化するはずの所定の状態更新タイムアウト値を超えていないかを確認する。図4で説明したように、状態更新タイムアウト値は他方のCPUの起動状態が変化した際に更新される。このため、前述のステップS402において、CPU108および117は、起動状態管理テーブル301から状態更新タイムアウト値を取得する。なお、状態更新タイムアウト値は起動状態毎に変化しうる。起動状態の変化がないまま状態更新タイムアウト値が経過するとステップS407において、YES、CPU108および117は異常検知処理を実行するステップS408。ここでは、CPU108および117は、後述する異常検知処理決定テーブルに応じて異常通知を行う。そして、CPU108および117は、他方のCPUの起動監視処理を終了する。一方、状態更新タイムアウト値が経過していないとステップS407において、NO、CPU108および117は所定の状態取得ポーリング時間が経過したか否かを判定するステップS409。所定の状態取得ポーリング時間が経過していなければステップS409において、NO、CPU108および117はポーリング時間が経過するまで待機する。所定の状態取得ポーリング時間が経過するとステップS409において、YES、CPU108および117はステップS402の処理に戻って、再び起動状態のチェックを行う。このようにして、CPU108および117は、自己のCPUに係るメモリ空間を読み出して、他方のCPUの起動状態を監視する。そして、他方のCPUの起動状態が所定時間で更新されて、最終状態に進むか又はタイムアウトによる異常状態に進むまで、CPU108および117は他方のCPUの起動状態の監視を継続する。図6は、図1に示す画像形成装置における異常検知処理において異常通知の際に用いられる異常検知処理決定テーブルの一例を示す図である。図6において、図示の異常検知処理決定テーブルは、例えば、不揮発性メモリに保存される。異常検知処理決定テーブルにおいて、起動停止位置601は、コントローラメインユニット100の起動状態変化の停止Mであるか又はコントローラサブユニット101の起動状態変化の停止Sであるかを示している。さらに、起動停止位置602はコントローラメインユニット100およびコントローラサブユニット101の各々がいずれの起動状態に遷移する際にタイムアウトが発生したかを示している。起動停止名称602は、タイムアウトが発生した際の異常の種類および名称を示す。起動検出603は、CPU108および117のいずれが検出しうる異常であるかを示す。異常通知処理604は、起動検出603に示されたCPUが制御可能な異常通知手段を示す。履歴保持位置情報保持位置605は、起動検出603に示されたCPUがCPU108および117の起動状態を保存するために制御可能な不揮発性デバイスを示している。異常検知処理604および履歴保持位置605で示す異常検知手段および不揮発性デバイスは、CPUが暴走又はストールして正常動作できない状態に陥った場合には動作できない。また、図4に示す起動段階詳細状態303を更新するか否かに応じて起動停止位置601は若干前後する。例えば、OSサービス処理中に起動停止すると、起動段階詳細状態303を更新する場合であれば、OSサービス処理の処理中に、Mは4から5に更新される。一方、起動段階詳細状態303を更新しない場合であれば、処理が完了するまでMは5にならない。図6において、起動不良606は、BIOS実行中に発生した異常によってCPU108が起動できないケースである。この場合、異常通知デバイスは電力LED103であり、電力LED103は短く一回点滅を繰り返す。また、このケースでは履歴保持処理を行うことができない。起動不良607は、ブートローダbootloaderの実行中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は異常通知デバイスとして電力LED103を制御し、電力LED103を短く二回点滅を繰り返して起動を停止する。この場合、CPU108はFLASHROM110に前述の起動状態管理テーブルの内容を保存する。起動不良608は、カーネル実行中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとして電力LED103を制御し、電力LED103を短く三回点滅を繰り返して起動を停止する。この場合、CPU108はFLASHROM110に前述の起動状態管理テーブルの内容を保存する。起動不良609は、CPU108がCPU117の起動処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとしてLCDパネル104を制御して、LCDパネル104にBootError[M=3/S=0]などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASHROM110に前述の起動状態管理テーブルの内容を保存する。起動不良610は、OSサービス起動処理中に発生した異常によって、CPU108が起動できないケースである。ここでは、CPU108は、異常通知デバイスとしてLCDパネル104を制御して、LCDパネル104にBootError[M=4/S=0]などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASHROM110に前述の起動状態管理テーブルの内容を保存する。起動不良611は、OS起動処理中に発生した異常によってCPU117が起動できないケースである。CPU108は、CPU117の異常を検知して、異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108は、LCDパネル104にBootError[M=5/S=1]などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108はFLASHROM110に前述の起動状態管理テーブルの内容を保存する。起動不良612は、電力制御全体制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128を短く五回点滅を繰り返して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良613は、画像制御初期化処理中に発生した異常によって、CPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104にBootError[M=5/S=2]などの言語ローカライズされていないエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良614は、データ制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128を短く六回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行い、LCDパネル104にBootError[M=7/S=2]などの言語ローカライズされていないエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良615は、エンジン制御初期化処理中に発生した異常によって、CPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して、異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に起動不良が発生しました。[M=7/S=3]などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良616は、ジョブ制御初期化処理中に発生した異常によって、CPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128短く8回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104に起動不良が発生しました。[M=8/S=3]などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良617は、ファクス初期化処理中に発生した異常によってCPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に起動不良が発生しました。[M=8/S=4]などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良618は、初期化処理の最終処理中に発生した異常によってCPU117が起動できないケースである。ここでは、CPU108は、CPU117の異常を検知して異常通知デバイスとしてLCDパネル104を制御する。そして、CPU108はLCDパネル104に起動不良が発生しました。[M=9/S=E]などの言語ローカライズされたエラー情報を出力して起動を停止する。この場合、CPU108は、バスブリッジ116を介してSRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良619は、操作制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここで、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128に短く9回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104に起動不良が発生しました。[M=9/S=E]などの言語ローカライズされたエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良620は、ネットワーク制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128短く10回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。起動不良621は、PDL制御初期化処理中に発生した異常によってCPU108が起動できないケースである。ここでは、CPU117は、CPU108の異常を検知して異常通知デバイスとして実行中LED128を制御して、実行中LED128に短く10回点滅を繰り返す。そして、CPU117はCPU108に異常通知を行って、LCDパネル104にグラフィカルなサービスエラー情報を出力指示して起動を停止する。この場合、CPU117は、SRAM125に前述の起動状態管理テーブルの内容を保存する。そして、CPU108は、通知されたサービスエラー情報に基づいてLAN102を介して、サービスセンターに異常を通知する。次に、図1に画像形成装置が正常起動した後の異常検知処理異常検知後処理について説明する。図7は、図1に画像形成装置が正常起動した後の異常検知処理を説明するためのフローチャートである。図1および図7を参照して、一般に、画像形成装置における起動不良は、浮遊ゴミおよび接触不良に加えて、温度および湿度などの不確定要素により引き起こされる。よって、オン/オフ動作を繰り返しているとそのうちに画像形成装置が起動してしまうことが往々にしてある。このような場合に、起動時の異常検知の際に保存した起動状態情報を回収してログとして記録する必要がある。前述したようにして、CPU108の起動が完了した後、CPU108はFLASHROM110およびSRAM125の所定のアドレス位置にアクセスして、RAM109に起動状態レコード起動状態情報を取り出すステップS601。次に、CPU108は、起動段階302から起動遷移時刻305状態更新タイムアウト値が記憶されている場合には当該タイムアウト値も含むのチェックサムを計算する。CPU108は算出されたチェックサムとチェックサム情報307の情報と比較する。つまり、CPU108は前回の起動情報のチェックサム情報が正常値であるか否かを判定するステップS602。ここでは、CPU108は起動情報に有効な情報が記録されているか否かを判定することになる。算出されたチェックサムとチェックサム情報とが一致しないとステップS602において、NO、CPU108は起動情報に有効な情報が記録されていないとして、起動情報をクリアするステップS603。そして、CPU108は異常検知後処理を終了する。一方、チェックサム情報が正常であると判定するとステップS602において、YES、CPU108は起動情報の内容を確認する。ここでは、CPU108は前回の起動の際最後のチェックポイントまで通過したか否かを確認するステップS604。つまり、CPU108はコントローラメインユニット100およびコントローラサブユニット101において起動が正常終了であるか否かを判定する。コントローラメインユニット100およびコントローラサブユニット101において起動が正常終了であるとステップS604において、YES、CPU108はステップS603に進んで、起動情報をクリアする。コントローラメインユニット100およびコントローラサブユニット101のいずれかにおいて起動が異常終了であるとステップS604において、NO、CPU108は当該異常終了を履歴情報として保全するため、HDD111の起動異常ログに空き領域があるか否かを判定するステップS605。起動異常ログに空き領域があるとステップS605において、YES、CPU108は起動情報を起動異常ログに追加して保存するステップS606。そして、CPU108は、ステップS603に進んで不揮発性メモリに記録された起動情報をクリアする。起動異常ログに空き領域が無いとステップS605において、NO、CPU108は不揮発性メモリから読み出した起動情報を、起動異常ログに保存された最も古いレコードに上書きして保存するステップS607。CPU108は、ステップS603に進んで不揮発性メモリに記録された起動情報をクリアする。このように、上述の実施の形態では、画像形成装置がコントローラメインユニット100およびコントローラサブユニット101を備える際、一方のCPUがその起動情報を他方のCPUに物理的に接続されたRAMに記録する。そして、他方のCPUが当該起動情報の更新を監視するようにする。これによって、ハード的な故障でCPUの処理が停止した場合であっても、どのような要因で起動不良が発生したかを解析する際に有益な情報を確実に残すことができる。また、起動異常が発生しなかったCPUを用いて起動不良情報を起動段階に応じた最適なデバイスでオペレータに通知することができる。つまり、本実施の形態では、各CPUに個別にメモリデバイスを接続して、CPUの各々が他方のメモリデバイスにアクセスして、メモリデバイスの異常による起動停止の状況起動情報を記録して、当該起動情報に応じて起動異常を検知する。この結果、一方のCPUが停止又は異常動作によるメモリ破壊などの起動不良を発生させた場合であっても、他方のCPUはメモリ破壊の影響を受けずに自己のメモリを参照することで、起動が正しく進まない状態を検知することができる。さらには、他方のCPUの起動状況および自己の起動状況に応じて、エラー通知を行い、起動段階が初期段階では最小限の通知、後期段階では、例えば、メール又はWebを用いて高度なエラー通知を行うことができる。上述の説明から明らかなように、図1において、コントローラメインユニット100およびコントローラサブユニット101がそれぞれコントローラであり、これらコントローラがジョブ処理を分担することになる。さらに、CPU108、CPU117、およびバスブリッジ116がアクセス手段として機能する。そして、CPU108および117の各々が特定手段、書き込み手段、および異常検知手段として機能する。また、LCDパネル104、電力LED103、および実行LED128の各々は報知手段として機能し、CPU108および117の各々は通知手段および通知決定手段として機能する。以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。例えば、上記の実施の形態の機能を制御方法として、この制御方法を、情報処理装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、この制御プログラムを情報処理装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。この際、制御方法および制御プログラムは、少なくとも起動段階特定ステップ、書き込みステップ、および異常検知ステップを有することになる。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。