JP2018092571A - 電子装置、再起動方法およびプログラム - Google Patents
電子装置、再起動方法およびプログラム Download PDFInfo
- Publication number
- JP2018092571A JP2018092571A JP2017079691A JP2017079691A JP2018092571A JP 2018092571 A JP2018092571 A JP 2018092571A JP 2017079691 A JP2017079691 A JP 2017079691A JP 2017079691 A JP2017079691 A JP 2017079691A JP 2018092571 A JP2018092571 A JP 2018092571A
- Authority
- JP
- Japan
- Prior art keywords
- core
- cores
- cpu
- abnormality
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】異常検出のためにウォッチドッグ・タイマを利用せずOSおよびアプリケーション・プログラムといったソフトウェアの暴走やストールなどを監視し、電子装置を効率的に再起動させることのできる電子装置、再起動方法およびプログラムを提供する。【解決手段】電子装置は複数のコアを有するCPU101を備える。CPUには、コアの異常を能動的に監視する能動的監視手段を備えるコア201と、コアの異常を受動的に監視する受動的監視手段を備えるコア202が実装されており、互いに相互監視を実行する。能動的監視手段または受動的監視手段のいずれか1つがコアの異常を検出することに応答して、CPUを再起動させる事により、効率的なCPUの再起動を可能としている。【選択図】図2
Description
本発明は、電子装置、再起動方法およびプログラムに関する。
フェール・セーフが重要視されるコンピュータ・システムにおいて、ソフトウェアの暴走やストールなどのエラーが発生した場合、システムを可能な限り安全に停止した後、自動的に再起動してダウンタイムを短くすることが要求されている。
このような自動的な再稼働を可能とする処理は、ミッション・クリティカルなサーバ分野ばかりでなく、それ以外にも、機器が正常に稼働できなくなると機器の性能を大きく左右することになる車積機器、パチンコ/パチスロなど、ユーザが視点を離さない遊技機、ネットワーク・ゲームの分野にも用いられてきている。
これまでにも、ソフトウェアの異常状態を察知して自動的に再起動するための様々な機構が考案され、異常状態から自動的に回復するための技術が知られている。例えば従来から、ソフトウェア異常検出をウォッチドッグ・タイマの発動をトリガにしてシステムの暴走を察知する技術が知られている。しかしながらこの技術を、ウォッチドック・タイマが利用できないシステムで同様の機構を実現しようとすると、エラーを発生した計算装置とは別に、異常検出を行う機器を設置する必要が有るという不都合が発生する。
また、CPU上で動作するソフトウェアには、オペレーティング・システム(OS)の他、アプリケーション・プログラムも存在する。アプリケーション・プログラムは、各種の例外違反を発生させ、コア・ダンプを生じさせることもある。その他、近年のプログラミング技術においては、例えばパイプライン処理や投機的命令実行などのように複数のプロセスを並列的に実行させ、各処理が効率的に処理結果を利用して効率的に処理を完了させるコーディングが使用される場合が多い。
このような態様においては、CPUの不正終了などを生じさせるには至らないものの、将来的に見ればアプリケーション・プログラムの正常動作を害するアプリケーション・プログラムの実行状態も想定される。例えば、正常動作を害するアプリケーション・プログラムの実行状態を生じさせる原因としては、スケジューリング違反、メモリ保護違反、排他制御違反などを挙げることができる。このような場合には、CPUコア自体は、不具合なく動作していたとしても、将来的には、正常な終了が害される。
アプリケーション・レベルでの実行時の不具合が発生した場合、例えば組み込みシステムの場合では、不具合を発生したCPUを直ちにリセットすると、CPUの内部状態とは関係なく動作している外部機器に影響を与えることになる。このため、OS自体のストールの他、アプリケーション・プログラムの不具合が発生した場合にでも、適切にシステムをリセットすることが必要とされていた。
この他、特開2013−149128号公報(特許文献1)には、システムの障害(含ソフトウェアの異常)を発見する目的で、専用の診断プロセッサを設ける方法が記載されている。特許文献1では、診断プロセッサは、ウォッチドッグ・タイマの発動を待たずに電源制御部に対して再起動要求を発行し、より速やかにシステムの再起動を実施して、システムを保護する。しかしながら、特許文献1に記載された技術は、専用プロセッサを追加しないと機能しないという問題は解消できていない。
本発明は、異常検出のためにウォッチドッグ・タイマを利用せず、システムに余分なCPUを追加することなく、OSおよびアプリケーション・プログラムといったソフトウェアの暴走やストールなどを監視し、電子装置を効率的に再起動させることを目的とする。
本発明によれば、
複数のコアを有するCPUを備える電子装置であって、
前記複数のコアのうち第1のコア内に設けられ、前記複数のコアのうちの前記第1のコア以外の第2のコアの異常を能動的に監視する能動的監視手段と、
前記複数のコアのうち第2のコア内に設けられ、前記第1のコアの異常を前記コアの異常を受動的に監視する受動的監視手段と、
前記能動的監視手段または前記受動的監視手段のいずれか1つが前記コアの異常を検出することに応答して前記CPUを再起動させる手段と
を備える電子装置が提供される。
複数のコアを有するCPUを備える電子装置であって、
前記複数のコアのうち第1のコア内に設けられ、前記複数のコアのうちの前記第1のコア以外の第2のコアの異常を能動的に監視する能動的監視手段と、
前記複数のコアのうち第2のコア内に設けられ、前記第1のコアの異常を前記コアの異常を受動的に監視する受動的監視手段と、
前記能動的監視手段または前記受動的監視手段のいずれか1つが前記コアの異常を検出することに応答して前記CPUを再起動させる手段と
を備える電子装置が提供される。
本発明によれば、異常検出のためにウォッチドッグ・タイマを利用せず、システムに余分なCPUを追加することなくソフトウェアの暴走やストールなどを監視し、電子装置を効率的に再起動させることが可能となる。
<第1の実施形態>
以下、本発明について実施形態を以て説明するが本発明は、後述する実施形態に限定されるものではない。図1は、本実施形態の電子装置100のハードウェア・ブロックを示す。図1に示す電子装置100は、情報処理装置、画像形成装置、組込装置、車載装置、その他、LSIを使用して電子・電気的に動作可能な装置であるものとして説明する。本実施形態の電子装置100は、CPU101、RAM102、ROM103およびNVRAM104を含んでいる。
以下、本発明について実施形態を以て説明するが本発明は、後述する実施形態に限定されるものではない。図1は、本実施形態の電子装置100のハードウェア・ブロックを示す。図1に示す電子装置100は、情報処理装置、画像形成装置、組込装置、車載装置、その他、LSIを使用して電子・電気的に動作可能な装置であるものとして説明する。本実施形態の電子装置100は、CPU101、RAM102、ROM103およびNVRAM104を含んでいる。
CPU101は、本実施形態ではマルチコア・プロセッサであり、CPUコアごとに独立したオペレーティング・システムの下、複数のプログラムを並列実行する。RAM102は、オペレーティング・システム(OS)といったプログラムを読み込んで、CPU101が各種プログラムを実行するために必要な実行空間を提供する。その他、RAM102は、CPU101がプログラムを実行するためのデータなどを格納する実行時記憶空間を提供することができる。
ROM103は、BIOS(Basic Input Output System)、ブートストラップ(Bootstrap)プログラム、その他、CPU101が機能を提供するためのプログラムを記憶しており、CPU101の起動時および本実施形態に従い、CPUコアのエラーやストール時にCPU101がプログラムを読み込んで、ハードウェアの初期設定、OS起動、コアチェッカなどの機能を実現可能としている。以上のハードウェア・ブロックは、システムバス106により相互接続されていて、システム・クロックに従ってその動作が制御されている。
電子装置100は、さらにNVRAM104および通信装置105を含んでいる。NVRAM104は、例えば電子装置100のCPU101がエラーやストールしたときに再起動される場合、再起動直前のCPUデータ、例えば、各種データ、プログラムカウンタ、レジスタ構成などを格納する機能を提供することができる。CPU101がエラーなどによって再起動される場合、本実施形態では、CPU101は、例えばNVRAM104に退避させたデータを使用して効率的に再起動前の計算環境を再現する構成とすることができる。
また電子装置100が備える通信装置105は、例えばNIC(ネットワーク・インタフェース・カード)を含んで実装することができ、イーサネット(登録商標)、IEEE802.x、LTE、Wifiその他の通信基盤を使用して電子装置100を、例えばインターネットなどの他のシステムに接続することを可能とする。
さらに電子装置100は、システムバス106に接続されたエラー検知部108を備える。当該エラー検知部108は、CPU101のコアがエラーまたはストールしたときに発生する例外を処理する機能を提供し、例えば割り込みハンドラの1機能として実装することができる。エラー検知部108の出力は、電源(PSU)112に入力され、本実施形態に従い、CPU101がエラーやストールしたと判断された場合、電源112を再起動させる機能を有する。電源112が再起動される場合には、CPU101は、設定されたPOST機能、ブートストラップ・プロトコルに従ってCPU101のコアを初期設定し、OSの起動、コアチェッカの起動および各種アプリケーションの起動などを可能とする。
その他、電子装置100は、PCIeといった周辺バスを介して接続された表示装置109、記憶装置110および入力装置111を含んで構成することができる。表示装置109は、液晶ディスプレイ装置、タッチパネルその他のユーザインタフェースを提供する機能を、VGA、XGA、HDMI(登録商標)といった規格を使用して提供する。
記憶装置110は、ハードディスク・ドライブやSSDを含んで構成することができ、例えばATA、SATA、USBなどの通信プロトコルを使用して、記憶装置110が記憶したOS、ドライバ、アプリケーションの実行ファイルを、CPU101が高速に利用するためにCPU101による読み出しを可能とする。
入力装置111は、キーボード、マウス、ジョイスティックを使用することができ、電子装置100に対して外部から情報や指令を入力するために使用される。なお、タップやスワイプなどを可能とするタッチパネルは、表示装置109および入力装置111の機能を両方具備する機能手段である。
本実施形態で使用するCPU101は、マルチコア・プロセッサとすることができ、例えば、PENTIUM(登録商標)DUAL CORE(登録商標)、CORE2 DUO(登録商標)、CORE2 QUAD(登録商標)、CELERON(登録商標) DUAL CORE、ATOM(登録商標)、CORE2DUO(登録商標)、CORE2QUAD(登録商標)、COREi(登録商標)シリーズなどの他、XEON(登録商標)、マルチコア構成を備えるPENTIUM(登録商標)互換CPU、POWER PC(登録商標)、いわゆるGPUとしてとして参照されるCPUなどを挙げることができるがこれらに限定されるものではない。この他にも、特定用途や組込制御のために使用される、SHシリーズ(Renesas)、OMAPファミリ(Texas Instruments)その他のマルチコアCPUを使用することができる。
NIC(ネットワークインタフェース・カード)110は、ネットワーク113へと画像形成装置120を接続させることで、ウェブ・サーバ、ストレージ・サーバ、認証サーバ、クラウド・サーバといった外部装置との情報通信を可能としている。本実施形態のネットワーク113は、イーサネット(登録商標)、FTH、IEEE802.xなどの有線または無線プロトコルを使用してLAN、インターネットを適宜含んで構成することができ、特に通信プロトコルには限定はない。
使用するオペレーティング・システム(OS)としては、WindowsServer(登録商標)、UNIX(登録商標)、LINUX(登録商標)、Solaris(登録商標)、OPENBSD、CentOS、Ubntu、eT−Kernelなどリアルタイム系OS、Montavista Linux(登録商標) CGE、POSIX1003.1b、OSEK、ITRONまたはそれ以外の適切なOSを挙げることができる。さらに、CPU101は、上述したOS上で動作する、アセンブラ言語、C、C++、Visual C++、VisualBasic、Java(登録商標)、JavaScript(登録商標)、Perl、Ruby、Pythonなどのプログラミング言語により記述されたアプリケーション・プログラムを格納し、実行することができる。
図2は、本実施形態のCPU101の例示的な内部構造を示すブロックダイアグラムである。CPU101は、図2に示した実施形態では、コア201、コア202を搭載する2コアCPUアーキテクチャとして実装されている。コア201を以下、コア1として参照し、コア202を以下、コア2として参照する。各コア1、2は、CPU101内部を相互接続する内部バス203を介して相互接続されており、相互の情報が利用可能とされている。
さらに内部バス203には、割り込み入力209から送付されるコア1に対する割り込みを制御する割り込みハンドラIRQH1204、コア2に対する割り込みを制御する割り込みハンドラIRQH206を備える。また、IRQH204、206は、コア1、コア2に対する共通の割り込みも制御し、コア1およびコア2の異常を外部に通知し、CPU101を再起動するための手段としても機能する。
さらにCPU101は、通信部205を備えており、通信部205は、本実施形態のコア間通信手段を構成し、内部バス203を介してコア1、コア2間のコア間通信を可能とさせている。なお、CPU101の異常を外部に通知するための手段は、割り込み信号ではなく、CPU101のデータピンを介した信号とすることもできる。
通信部205は、メッセージ、宛先アドレス、送信元アドレスを含む情報をコア1またはコア2から受け取り、割り込みライン207、208を介して送信先のコア1または2にメッセージを取得させる機能を提供し、コア間通信を実現させている。なお、本実施形態のCPU101を構成するコア数は、2に限定されず、4コア、8コア、16コアなど、要求される特性に従い、適宜使用することができる。
図3は、本実施形態のCPU101のソフトウェア・ブロック300を示す。各ソフトウェア・ブロックは、CPU101の各コアがRAM、ROMといったに各ソフトウェアを読み込んで、CPU101のコア内に実行コードを展開することにより、CPU101上に実現される機能ブロックである。コア201には、OS1がインストールされ、OS1上で、本実施形態のチェッカ・プログラム1(以下チェッカ1として参照する。)および他のアプリケーション・プログラム1〜4,...が動作している。
またコア202においては、OS2がインストールされており、OS2上で、チェッカ2およびアプリケーション・プログラム10〜13,...が動作している。なお、OS1と、OS2は、同一でも異なっていても良く、例えばOS1は、UMIX(登録商標)とすることができ、OS2は、リアルタイム系OSとして実装することができ、これらの組み合わせに特に限定はない。例えばこれに限定されるものではないが、コア201が本実施形態における第1のコアに相当し、コア202が本実施形態の第2のコアに相当する。
本実施形態においては、チェッカ1およびチェッカ2がコア1、2の相互監視を実行する機能を提供する。例えば、本実施形態において、コア201のチェッカ1は、能動的にコア202のチェッカ2の動作をチェックする能動的監視手段として機能する。例えば、チェッカ1は、定期的にコア2のチェッカ2に対してメッセージをポーリングする機能を有する。一方、コア202のチェッカ2は、チェッカ1からのポーリングを受けた場合にだけ、チェッカ1に対して応答する機能を有する。また、チェッカ2は、チェッカ1からのポーリングの間隔をモニタする機能を提供し、コア1からのポーリングがないことを受動的に判断して、コア1に対する受動的監視手段を構成する。
すなわち、本実施形態では、各コアにそれぞれ1のチェッカを実装する。そして、各コアのうち1のチェッカ、例えばチェッカ1を他のコアに対する能動的監視手段として機能させる。チェッカ1は、ポーリングの結果、ポーリング先からの応答をモニタしており、応答が第1所定期間、例えば合計5〜10秒ないと、ポーリング先のコアがエラーまたはストールしたものと判定する機能を有する。
これに対してコア2のチェッカ2は、説明する実施形態ではコア1に対する受動的監視として機能する。より具体的には、チェッカ2は、コア1からのポーリング・メッセージを第2所定期間にわたり受領しない場合、チェッカ1、すなわちコア1がエラーまたはストールしたものと判断する。
本実施形態で、コア1またはコア2のいずれかがエラーまたはストールした場合には、エラーまたはストールしていない側のコアがエラー発生割り込みを生成し、エラー検知部108に通知する。エラー検知部108は、当該割り込みを検知すると、電源112をリセットしてCPU101の再起動を開始させる。
なお、コア1およびコア2が共にエラーまたはストールする場合も想定できるが、本実施形態では、コア1およびコア2は独立したOSの下で独立した処理を行うものとして説明するので、同時的なエラーまたはストールは、CPU101自体の機能不全の他、発生しないものとして説明する。
図4は、本実施形態のCPU101の再起動方法のフローチャートを示す。図4の処理は、ステップS400から開始し、S401〜S405およびS401a〜S405のコア数に対応した並列のステップを含んで実行される。しかしながら、ステップS405のリセット処理は、少なくとも1のコアがエラーまたはストールしたと健全なコアが判定した段階で実行される。
上述したように、図4の処理はコア数に対応して並列に実行されるので、コア1に対応するステップS401〜S405のみを説明し、他の処理は省略する。ステップS401では、ブートストラップ・プロトコルに従い、POSTチェックなどを実行した後OS1をブートする。ステップS402では、チェッカ1プログラムをロードし、チェッカ1を起動する。その後、ステップS403で各アプリケーション・プログラムを起動し、コア1のサービスを開始する。
ステップS404では、他のコアにエラーが発生したか否かを判断し、エラーが発生した場合(yes)処理をステップS405に分岐させ処理をステップS401およびS401aに戻し、ブートストラップ処理から再起動処理を開始させる。一方、エラーが発生していない場合(no)、ステップS404で継続してエラーの発生をチェックする。以下、図5〜図7を使用して本実施形態のステップS404におけるエラー・チェック処理を説明する。
図5は、本実施形態のエラー・チェック処理のシーケンス図である。図5中、チェッカ2が、能動的監視手段であり、チェッカ1が受動的監視手段であるものとして説明を行う。チェッカ2は、ステップS500でチェッカ1に対してポーリングを行う。当該ポーリングを受領したチェッカ1は、ステップS501で、応答を返す。
当該応答を受領したチェッカ2は、ステップS502で応答なしカウンタをクリアする。そしてチェッカ1側では、ステップS503でチェックなしカウンタをクリアした後再カウントを開始する。この一連の処理で、ステップS502、S503からチェックの時間軸がリセットされる。
チェッカ2は、ステップS504で新たな時間軸に沿って応答を待機し、ステップS505で、ポーリング・タイミングの到来によりチェッカ1に対してポーリングを行う。当該ポーリングを受領したチェッカ1は、ステップS506で応答を返す。その後、チェッカ2は、ステップSD507およびS509で、後続する時間軸におけるチェックを継続し、そしてチェッカ1側では、ステップS503でチェックなしカウンタをクリアした後再カウントを開始する。
図5の処理は、コア1およびコア2にエラーやストールが発生するまで継続される。図6、図7を使用してコアにエラーやストールが発生した場合の処理を説明する。図6は、能動的監視手段であるチェッカ2にエラー、ストールといった異常が、ステップS600で発生したものとする。チェッカ2を実装するコア2は、その後、機能不全となっている。
受動的監視手段であるチェッカ1は、ステップS601でチェックなしタイマを起動し、ステップS602でチェック無しタイマのカウントアップ(またはカウントダウン)を実行する。ステップS603でチェック無しカウンタが満了すると、ステップS604でチェック無しカウンタをリセットし、チェック無しの累積期間を、ステップS601〜S603を反復して計時する。なお、累積期間および反復回数は、電子装置100の制御するべき機器の必要に応じて設定することができ、累積期間としては例えば数100ms〜数10s、好ましくは1s〜10s程度とすることができるが、これらの期間に限定されるわけではない。
チェッカ1は、その後所定の期間、カウントを反復し、チェッカ2からのポーリングが途絶えた期間について設定した累積期間がステップS607で満了すると、ステップS608で終了処理を開始する。ステップS608の終了処理には、例えば、コアの状態をNVRAM104に退避させる処理、ハードディスク装置の回転停止処理その他の処理を挙げることができる。チェッカ1のコアは、ステップS608の処理を完了すると、エラー信号を生成し、ステップS609で再起動処理を開始させる。
以上の処理により、能動的監視手段が機能不全となった場合にでも、受動的監視手段単独でコアの機能不全をチェックすることが可能となる。
図7は、図6とは逆に受動的監視手段であるチェッカ1に異常が発生した場合のエラー・チェック処理のシーケンス図である。コア1は、ステップS700で異常が発生し、機能不全となっているものとする。チェッカ2は、ステップS701でチェックのためのポーリングをチェッカ1に対して発行し、ステップS702で無応答カウンタをアップカウント(他の実施形態ではダウンカウントでも構わない)して、無応答期間の計時を開始する。
この時、コア1は機能不全で応答することができないので、チェッカ2は、ステップS703で無応答回数をチェックし、この実施形態では、まだ無応答回数が設定した回数に達していないので、ステップS704で一定期間待機する。これを所定期間反復する。
その後、ステップS705で再度ポーリングを行ない、ステップS705で無応答カウンタをアップカウントする。ところが、コア1は異常を生じているので無応答となるためステップS706の無応答回数チェック処理で、無応答回数が規定回数に達したものと判断される。
ステップS707で、コア2は終了処理を開始し、終了処理が完了した後、ステップS708で再起動処理を開始させ、コア1、コア2をブートストラップ処理を経由して再起動させ、CPU101の動作を正常化させる。
<第2の実施形態>
以下、本実施形態の第2の実施形態について説明する。第1の実施形態は、CPUコアの致命的なエラーが発生し、エラーが発生したCPUコアが以後の処理をできない場合を解決する態様について説明した。以下説明する第2の実施形態は、CPUコアが健全な状態において、コア上で動作しているアプリケーションに何らかのエラーまたは不具合が発生した場合に、将来的なCPUエラーまたはシステムの異常動作を回避するために、CPU101をリセットすることで、エラー状態から復旧する態様である。
以下、本実施形態の第2の実施形態について説明する。第1の実施形態は、CPUコアの致命的なエラーが発生し、エラーが発生したCPUコアが以後の処理をできない場合を解決する態様について説明した。以下説明する第2の実施形態は、CPUコアが健全な状態において、コア上で動作しているアプリケーションに何らかのエラーまたは不具合が発生した場合に、将来的なCPUエラーまたはシステムの異常動作を回避するために、CPU101をリセットすることで、エラー状態から復旧する態様である。
図8は、第2の実施形態におけるCPU101に実装されるソフトウェアの機能ブロック800を示す。図8に示す機能ブロックは、CPU101がソフトウェアを実行させることにより、CPU101上に機能手段として実現される。なお、図8に示す実施形態では、コア201は、OS1としてRTOSを動作させており、コア202は、OS2としてLINUX(登録商標)やUNIX(登録商標)を動作させているものとして説明するが、コア201は、LINUX(登録商標)やUNIX(登録商標)といったOSを動作させることができることは言うまでもないことである。
コア201は、OS1、チェッカ1、およびアプリケーション・マネージャ1を搭載する。OS1は、第1の実施形態と同様に、コア201の動作を制御し、チェッカ1は、コア202のチェックを行う。また。第2の実施形態では、他のコア(当該実施例ではコア202)に対して再起動を要求する再起動要求手段としても機能する。アプリケーション・マネージャ1は、コア201上で動作する各種のアプリケーションApp1〜App4,...を登録し、即時終了可能性および即時終了が適切でない場合に実行する終了処理のためのシーケンスを登録する実行リストを管理する。
各アプリケーションApp1〜App4,...は、その実行状態に対応した通知を、例えば各種内容を有する通知を、OSの属性に応じて、OSまたはアプリケーション・マネージャに発行する。例えば、RTOSとして実装されるOS1で動作するアプリケーション・マネージャ1は、アプリケーションApp1〜App4からアプリケーションの不具合の通知を受領する。その後、アプリケーション・マネージャ1は、コア2のチェッカ2に、コア1がリセット予定であることを通知する。
コア202も、コア201と同様に複数のソフトウェアを実行させており、OS2は、コア202の動作を制御し、チェッカ2は、コア201のチェックを行うと共に、第2の実施形態では、他のコア(当該実施例ではコア201)に対して再起動を要求する再起動要求手段としても機能する。説明する実施の形態では、OS2は、コア202上で動作する各種のアプリケーションApp10〜App13,...の管理を実行しており、アプリケーションApp10〜App13,...から実行状態に関する通知を受領する。
OS2は、各アプリケーションApp10〜App13,...のいずれかが不具合となった通知をアプリケーションApp10〜App13,...から受領すると、アプリケーション・チェッカ2にアプリケーション識別値を送付し、アプリケーション・チェッカ2を介してコア1のチェッカ1にコア2のリセット予定を通知する。なお、本実施形態におけるアプリケーションは、不正処理が発生したことをOSまたはアプリケーション・マネージャに通知する通知手段に相当する。
アプリケーションは、例えばパイプライン処理などを使用して複数が並列実行されており、いずれかのアプリケーションにおいて異常が発生すると、それ以後の処理を実行させることは意味なく、またCPU101が使用されている組み込みシステムの動作に重大な影響を与えることになりかねない。このため第2の実施形態では、各アプリケーションApp1〜App4、App10〜App13,...の実行状態を管理し、アプリケーションの実行に失敗したことをそのステータス情報から検知すると、アプリケーション・マネージャ1およびアプリケーション・マネージャ2を介して他のコアにリセット予定を通知する。この処理を適用することで、正常動作している側のコアの動作に対する影響を最小としながらCPU101をリセットさせ、CPU101全体を正常な状態に復帰させることができる。
すなわち、図8に示すCPU101は、複数のコア201、202を動作させているため、例えばコア201で動作しているApp1に不具合が発生した場合、直ちにCPU101を突然リセットすると、コア202が実行させているジョブがリセットされ、CPU101により制御される各種機器の制御も機器の状態に関わりなく終了されてしまう。この場合、機器は、予測不能な動作を行うことになるので、コア201においてアプリケーションの不具合が発生したからと言って、CPU101全体を直ちにリセットすることはできない。
このため、第2の実施形態では、例えばコア201においてアプリケーションの不具合が発生した場合に、コア201のアプリケーション・マネージャ1が、コア202のチェッカ2にコア201がリセット予定であることを通知するリセット予定を発行する。コア202のチェッカ2は、リセット予定を受領すると、自己の管理するアプリケーションに対し、適切なシーケンスでアプリケーションを終了させ、実行状態データをメモリに退避させるなどのコア・ダンプ処理を含む終了処理を実行し、リセット準備が完了したことを、コア201のチェッカ1に通知し、チェッカ1によるリセット処理を開始させる。
同様に、コア202のアプリケーション・マネージャ2も同様の処理を実行し、コア202が実行するアプリケーションの不具合が発生した場合、コア201に通知し、コア202によるリセット許可を待機する。なお、この待機期間中に、コア202は、実行時データおよび実行ステータスの退避などの処理を実行することができる。以上のように、第2の実施形態では、コア201、202自体の動作には支障を来していないので、アプリケーション・マネージャ1またはアプリケーション・マネージャ2からの通知をチェッカ1またはチェッカ2が受領し、リセット処理を開始させる。
このため、第2の実施形態では、将来的に発生する可能性の有るコアのストールに直結するエラーの発生を未然に防止し、効率的、かつ機器に対する影響を最小にしながらシステムをリセットすることを可能とする。
すなわち、第2の実施形態のチェッカ1およびチェッカ2は、それぞれ他のCPUコアの状態をチェックする機能の他、自己のCPUコアにおけるアプリケーション・プログラムの状態をチェックして、他のCPUコアのチェッカに対し、再起動を通知する機能を具備する。なお、アプリケーション・プログラムの不具合としては、例えばスケジューリング違反、記憶保護違反、排他制御違反その他を挙げることができるがこれらに限定されるものではない。
図9は、コア201のアプリケーション・マネージャ1が実装するアプリケーションの実行リスト900を示す。実行リスト900およびアプリケーション・マネージャ1が、本実施形態における解除手段に相当する。なお、図9に示す実行リスト900には、アプリケーションが実行開始されると追加され、終了すると、削除される構成とされる。
実行リストには、各アプリケーションApp1〜App4について強制終了する際の終了シーケンスを指定するオブジェクトのリストが対応付けられている。例えばApp1を強制的に終了させる場合、App1は、他のアプリケーションや外部装置に影響を与えることなく終了できる属性を有しているので、オブジェクトkill1が呼び出され、直ちに終了処理が実行される。
一方、App2は、他のプロセスに関連するか、または外部装置を駆動するアプリケーションを制御しており、App2を適切に停止させるためには、関連するプロセスを終了させ、また外部機器の状態も管理および制御する必要がある。このため、アプリケーションApp2に対応付けられた終了シーケンスは、各種処理を段階的に終了させ、その後にApp2の終了を最後に指示するコマンドを含むshutdown2オブジェクトが登録されている。
具体的に説明すると、OS1からアプリケーション・マネージャ1がApp2について不正処理が発生したとの通知を受領したものとする。このとき、App2を即時終了させると、例えば外部機器が動作している場合には、制御不能となる可能性が生じる。アプリケーションApp2の異常が通知されると、アプリケーション・マネージャ1は、直ちに終了シーケンスを記述したオブジェクトshutwodn2を呼び出して、外部機器または他のプロセスを正常に停止させる処理を実行させる。
shutwodn2オブジェクトは、シーケンスに従ってプロセスを終了させ、最後の段階で、App2を終了させるため例えばkillシグナルを発生させる処理を実行する。この処理が全プロセス(アプリケーション)を終了するまで繰り返される。このため、コア201で動作している全プロセス、ひいては外部装置は、不都合を生じることなく、CPU101のリセット以前に終了される。
図10は、コア202が実装する実行リスト1000の実施形態を示す。この実施形態では、実行リスト1000およびアプリケーション・マネージャ1が、本実施形態における解除手段に相当する。コア202では、App10〜App13が実行中であるものとして説明する。この実施形態では、App12、App13は、即時終了が許可されるプロセスであり、不正発生がチェッカ2から通知されると、kill12、kill13がそれぞれ呼び出され、即時終了処理を実行させる。
一方、App10、App11は、他のプロセスに対してデータを提供するか、または外部装置を制御するプロセスであるかといった理由から、適切に終了させるためには、オブジェクトに従ったシーケンスで終了させる必要がある。このため、App10、App11において、不正処理が発生した場合、shutdown10、shutodown11オブジェクトが呼び出され、終了シーケンスが開始される。終了シーケンスの内容は、アプリケーションに依存するものの、図9で説明した処理と同様に構成することができる。
なお、図9、図10では、説明の便宜上、実行リスト900、1000を実装するものとして説明したが、他の形式で実装することができるし、各アプリケーションを、あらかじめその終了シーケンスを含ませるように実装させることもできる。当該実施形態の場合には、アプリケーション・マネージャ1またはアプリケーション・マネージャ2が、不正処理を実行したアプリケーションやプロセスに終了を通知する不正終了通知を、例えばシグナルとして送付する構成とすることができる。
本実施形態において終了シーケンスを記述する言語は、特に限定されるものではないが、システムの基幹的な処理を制御するという観点からは、例えばC言語やシェルスクリプトまたはこれらを組み合わせたコードで記述することもできる。
また、他の実施形態では、実行リスト900、または実行リスト1000に登録されるアプリケーションの実行許可時間を設定しておき、設定した時間を超えて削除されない場合、当該アプリケーションに不具合が発生したものとして、当該アプリケーションの終了シーケンスを開始させることもできる。
図11は、第2の実施形態におけるCPU101の再起動方法のフローチャートを示す。図10の処理は、ステップS1100から開始し、S1101〜S1106およびS1101a〜S1106のコア数に対応した並列のステップを含んで実行される。
第2の実施形態では、ステップS1106のリセット処理は、ステップS1105またはステップS1105aで、(1)少なくとも1のコアがエラーまたはストールが発生したと、健全なコアの側が判定した段階、(2)いずれかのアプリケーション・マネージャがアプリケーション・レベルでの不具合が発生し、健全の方のCPUコアがリセット準備完了した段階で実行される。上述したように、図10の処理は、ステップS1105、S1105aの処理を除き、図4の処理と同様なので、これ以上の詳細な説明は省略する。
図12は、本実施形態のリセット処理のシーケンス図である。図12では、アプリケーションの不具合が発生したのがOS2を動作させているコア202であるものとして説明する。説明する実施形態では、OS2は、UNIX(登録商標)またはそれに互換性を有するOSが動作しているものとして説明する。
ステップS1200で、OS2が、アプリケーション・プログラムの実行状態を監視し、例えばアプリケーション・プログラムからの通知を、例えばシグナルとして受信する。OS2は、当該通知を検査し、当該通知がアプリケーションの正常な実行を阻害するものと判断すると、OS2上で動作するアプリケーションであるApp#(#は、1以上の整数である。)に不正処理などの不具合が発生したものと判断する。
ステップS1201では、OS2は、OS2のアプリケーション・マネージャ2に対して検出したアプリケーションにおいて異常終了が発生したことを通知する。アプリケーション・マネージャ2は、当該通知を受領するとステップS1202でチェッカ2に対してシステム再起動要求を発行する。アプリケーション・マネージャ2は、ステップS1204で例えば対応するアプリケーションに割り当てられた終了シーケンスを実行するオブジェクトを呼び出し、OS2の管理下で実行されているアプリケーションの再起動を阻害する要因を解除する処理を実行する。
例えば、当該要因としては、外部機器を制御しているアプリケーションがある場合、アプリケーションの強制終了および強制終了に対応する外部機器の終了処理を行うためのアプリケーションの起動およびその終了の確認などの処理を挙げることができる。また、実行している処理が、時系列的に再実行できる種類のものである場合、実行時ステータスや実行時データのメモリへの退避などを含む。
一方、チェッカ2は、アプリーション・マネージャ2が、再起動阻害要因解除処理を開始すると、ステップS1203でコア1のチェッカ1に対してシステムが再起動予定であることの通知を、システム再起動要求として発行する。OS1のチェッカ1は、当該通知を受領すると、ステップS1205でアプリケーション・マネージャ1に対して再起動可能確認通知を発行する。再起動確認通知を受領したチェッカ1は、アプリケーション・マネージャ1に対して再起動可能確認通知を発行し、アプリケーション・マネージャ1による実行リストの確認を実行させる。その後、コア1は、ステップS1206で実行中のアプリケーションに対応する終了シーケンスを実行させることで、再起動阻害要因の解除を実行させる。
アプリケーション・マネージャ2は、例えば自己の管理する実行リスト900のエントリが空になったことを確認すると、ステップS1207でシステク再起動許可をチェッカ1に対して発行する。チェッカ1は、ステップS1209でコア・ダンプといったコア201の正常終了のための処理を実行した後、ステップS1209で不正処理が発生した側のコア202に対し、システム再起動を許可するシステム再起動指令を発行する。
コア202のチェッカ2は、当該通知を受領すると、ステップS1210でシステム再起動処理を開始する。この時点では、外部装置、コア201は正常終了しているので、コア202は、コア202の権限で例えばCPU101に対し、Bootstrap処理を開始させ、CPU101の再起動を実行し、不正処理による障害を自動的に解消することが可能となる。
図12に示した実施形態は、例えばUNIX(登録商標)、LINIX(登録商標)、Solaris(登録商標)といったフルサイズOSを実行するコア202が実行するアプリケーションで不正処理が発生した場合の実施形態である。
図13は、例えばPOSIX(登録商標)といったRTOSを実装するコア201において実行されているアプリケーションに不正処理が発生した場合の処理シーケンスを示す。RTOSは、UNIX(登録商標)といったフルサイズOSに比してライブラリ構成その他に一定の制限があり、またリアルタイム処理が要求されるので図12の処理に比較して、より即時性の高い不正対応処理を実行する。
図13の処理は、ステップS1300で、OS1で実行されているアプリケーションが回復不可能な異常を検出したものとする。回復不能な異常とは、致命的な例外違反である、アンダーフロー、オーバーフローなどを除く、アプリケーション・レベルでの例えば、メモリアクセス不能、特権プロセスの呼び出し失敗、不正データ受領、または待機タイマ満了といった異常を挙げることができるが、これらに限定されるものではない。
異常を検出したアプリケーションは、ステップS1301でアプリケーション・マネージャ1に対してシステム再起動要求を発行する。アプリケーション・マネージャ1は、当該要求を受領すると、ステップS1302で再起動阻害要因を解除するべく、実行リスト900に指定された終了シーケンスを実行するためのオブジェクトを呼び出し、終了シーケンスを実行させる。全プロセスの終了後、アプリケーション・マネージャ1は、ステップS1304でチェッカ1に対してシステム再起動要求を発行する。
システム再起動要求を受領したチェッカ1は、ステップS1305でコア202のチェッカ2に対してシステム再起動要求を発行し、その後、直ちにステップS1306でコア201の終了処理を実行する。一方、システム再起動要求を受領したチェッカ2は、ステップS1307でアプリケーション・マネージャ2に対してシステム再起動予告通知を発行する。当該通知を受領したアプリケーション・マネージャ2は、ステップS1308で実行リスト1000に登録されているアプリケーションの終了オブジェクトを呼び出し、終了シーケンスを全アプリケーションに対して実行させる。
その終了後、ステップS1309でチェッカ2に対してシステム再起動式を発行する。チェッカ2は、当該指示を受領すると、ステップS1301で、コア・ダンプなどの処理を実行し、ステップS1311で、例えばコア202の権限でBootstrap処理を開始させることで、CPU101の再起動を実行し、不正処理による障害を自動的に解消することが可能となる。
図12および図13において説明したように、再起動(リブート)処理は、フルサイズOSを搭載したコアが実行するので、例えば再起動時にもRTOSの設定を適切に再開させることが可能となる。なお、コア201、コア202ともにフルサイズOSを実装することも可能であるが、この場合、アプリケーションが不正処理を実行した側ではないコアが最終的なリブート処理を実行する態様を採用することにより、より確実な終了およびリブート処理が可能となる。
図14は、本実施形態においてCPUが2コアではなく、4コアのCPU1400の実施形態を示す。4コアの場合には、各コアは、コア間通信部1405を通じて通信を実行することができる。そして、4コアの場合には、例えばコア1が能動的監視手段として機能し、コア2〜コア4は、受動的監視手段として機能する。この際、コア1は、コア2〜コア4に対して同報通信またはマルチキャストによりポーリングを行う。
そして、コア1は、当該ポーリングに対するコア2〜4の応答をチェックし、コアごとに、図4のステップS1404のエラー検出処理を行う。この結果、コア1は、コア2〜コア4のいずれか1からの応答がない場合、当該コアがエラーまたはストールしているものとして再起動処理を行う。
一方、コア2〜コア4の受動的監視手段は、それぞれ図6の処理を行うことで、コア1のエラーまたはストールを判断する。この時、コア2〜コア4のそれぞれの結果をOR処理して、少なくとも1のコアがコア1の異常を検出した場合に、再起動処理を行うことができる。その他、コア2〜コア4の検出結果をAND処理し、コア2〜コア4が全部異常判定を行った後に再起動処理を行うこともできる。いずれの処理を採用するかについては、CPU1400の再起動の安定性やCPU異常が許容される時間ななどに応じて適宜選択することができる。
また、各コア1〜4は、それぞれアプリケーション・マネージャ1〜4を実装し、アプリケーション・レベルでの不正処理に対しても適切に対応することが可能とされている。
<第3の実施形態>
以下、本実施形態の第3の実施形態について説明する。第2の実施形態では、図12において説明したように、UNIX(登録商標)等の異常検出機構を有するフルサイズOSが、アプリケーション・プログラムに不正処理などの不具合が発生したかどうかを判断し、不具合が発生したと判断した場合に再起動を行う。すなわち、アプリケーション・プログラムが異常終了する場合、OSが異常の種類別にアプリケーション・プログラムから通知を受け、その通知を基に不具合が発生したと判断する。
以下、本実施形態の第3の実施形態について説明する。第2の実施形態では、図12において説明したように、UNIX(登録商標)等の異常検出機構を有するフルサイズOSが、アプリケーション・プログラムに不正処理などの不具合が発生したかどうかを判断し、不具合が発生したと判断した場合に再起動を行う。すなわち、アプリケーション・プログラムが異常終了する場合、OSが異常の種類別にアプリケーション・プログラムから通知を受け、その通知を基に不具合が発生したと判断する。
しかしながら、アプリケーション・プログラムが異常終了しなくても、回復不可能な問題となり、システム再起動が必要となる場合がある。例えば、本体部と操作部とを備えるMFP(Multi−Function Peripheral)等の機器の本体部において、操作部との通信が途絶してしまう場合が挙げられる。すなわち、本体部のアプリケーション・プログラムを異常終了させる必要まではないが、操作部との通信を回復させるために、再起動が必要になる場合である。なお、ここで挙げた例は一例であり、この例に限定されるものではない。
上述したことに鑑み、以下に説明する第3の実施形態は、アプリケーション・プログラムが異常終了せずとも、回復不可能な不正処理などの異常が検出された場合に、CPU101をリセットすることで、エラー状態から復旧する態様である。
第3の実施形態におけるCPU101に実装されるソフトウェアの機能ブロックは、図8に示した第2の実施形態における機能ブロック800と同様であるため、図8を参照して説明するが、技術的に重複する内容についてはその説明を省略する。ここでも、コア201が、OS1としてRTOSを動作させ、コア202が、OS2としてLINUX(登録商標)等を動作させているものとする。OS2は、上述した異常検出機構を有するフルサイズOSである。
コア201上で動作する各アプリケーションApp1〜App4,...は、その実行状態に対応した通知をOS1またはアプリケーション・マネージャ1に発行し、回復不可能な異常を検出した場合、アプリケーション・マネージャ1に対してシステム再起動要求を発行する。この処理およびその後の処理は、図13において既に説明したので、ここではその説明を省略する。
一方、コア202上で動作する各アプリケーションApp10〜App13,...は、自身で回復不可能な異常を検出した場合、OS2に通知し、OS2に異常を検出されるのではなく、アプリケーション・マネージャ2に対して自発的にシステム再起動要求を発行する。この点が、図12において説明した処理内容と異なる点である。このため、各アプリケーションApp10〜App13,...は、第3の実施形態では他のコア(当該実施例ではコア201)に対して再起動を要求する再起動要求手段として機能する。
その後の処理は、第2の実施形態において図12に示した処理と同様である。このような処理により、アプリケーション・プログラムが異常終了せずとも、回復不可能な異常が検出された場合に、正常動作している側のコアの動作に対する影響を最小としながら、CPU101をリセットさせ、CPU101全体を正常な状態に復帰させることができる。
第3の実施形態は、第2の実施形態と同様の機能構成で、コア202上で動作する各アプリケーションApp10〜App13,...が、自発的にシステム再起動要求を発行する以外、図12において説明した処理と同様であるため、 図9および図10において説明した実行リストは、第3の実施形態でも使用することができ、その使用態様や使用方法は、第2の実施形態と同様である。また、CPU101の再起動方法についても、アプリケーション・レベルでの不具合が発生し、健全の方のCPUコアがリセット準備完了した段階で実行されるので、図11において説明した再起動方法と同様の流れとなる。
第3の実施形態におけるリセット処理について、図15に示すシーケンス図を参照して詳細に説明する。図15では、アプリケーションの不具合が発生したのがOS2を動作させているコア202であり、OS2が、UNIX(登録商標)またはそれに互換性を有するOSとして説明する。
ステップS1500で、OS2上で動作するアプリケーションApp#(#は、1以上の整数である。)に回復不可能な異常が発生し、その異常を検出する。異常は、上述した通信の途絶等である。ステップS1501では、その異常を検出したアプリケーションApp#が、OS2とともにコア202に実装されるアプリケーション・マネージャ2に対してシステム再起動要求を発行する。アプリケーションApp#がアプリケーション・マネージャ2に対して自発的にその要求を発行するので、第2の実施形態のような実行状態に対応した通知は、OS2へは発行されない。
その後の処理は、図12において説明したものと同様であるが、簡単に説明しておく。ステップS1502では、アプリケーション・マネージャ2が、その要求を受けて、チェッカ2に対してシステム再起動要求を発行する。ステップS1503では、チェッカ2が、その要求を受けて、他のコアであるコア201のチェッカ1に対してシステム再起動要求を発行する。ステップS1504では、アプリケーション・マネージャ2が、OS2の管理下で実行されているアプリケーションの再起動を阻害する要因を解除する処理を実行する。
ステップS1505では、チェッカ1が、チェッカ1からの要求を受けて、コア1に実装されるアプリケーション・マネージャ1に対して再起動可能確認通知を発行する。アプリケーション・マネージャ1は、その通知を受けて、ステップS1506で再起動を阻害する要因を解除する処理を実行させる。アプリケーション・マネージャ1は、その処理が終了すると、ステップS1507で、チェッカ1に対してシステム再起動許可通知を発行する。チェッカ1は、ステップS1508で終了処理を実行し、ステップS1509で異常を検出したコア202に対し、システム再起動を許可するシステム再起動指令を発行する。
異常を検出したコア202のチェッカ2は、チェッカ1からの指令を受けて、ステップS1510でシステム再起動処理を開始する。この場合も、この時点では、外部装置、コア201は正常終了しているので、コア202は、コア202の権限でCPU101に対し、BootStrap処理を開始させ、CPU101の再起動を実行することができ、これにより、アプリケーション・プログラムApp#に発生した異常を自動的に解消することができる。
また、本発明を、1つのCPU101が複数のコアを実装する態様を使用して説明してきたが、他の実施形態では、複数のCPUが独立したコアを構成し、かつ同期的に再起動されるべき構成の複数のCPUを含む、例えばCPUと、CPUに連携して処理を実行するGPUなど、複数のGPUからなるシステムに対しても適用することができる
これまで本発明を、実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
100 :電子装置
101 :CPU
102 :RAM
103 :ROM
104 :NVRAM
105 :通信装置
106 :システムバス
108 :エラー検知部
109 :表示装置
110 :記憶装置
111 :入力装置
112 :電源
113 :ネットワーク
120 :画像形成装置
201 :コア
202 :コア
203 :内部バス
204 :IRQH1(割り込みハンドラ)
205 :通信部
206 :IRQH2(割り込みハンドラ)
207 :割り込みライン
208 :割り込みライン
209 :割り込み入力
101 :CPU
102 :RAM
103 :ROM
104 :NVRAM
105 :通信装置
106 :システムバス
108 :エラー検知部
109 :表示装置
110 :記憶装置
111 :入力装置
112 :電源
113 :ネットワーク
120 :画像形成装置
201 :コア
202 :コア
203 :内部バス
204 :IRQH1(割り込みハンドラ)
205 :通信部
206 :IRQH2(割り込みハンドラ)
207 :割り込みライン
208 :割り込みライン
209 :割り込み入力
Claims (14)
- 複数のコアを有するCPUを備える電子装置であって、
前記複数のコアのうち第1のコア内に設けられ、前記複数のコアのうちの前記第1のコア以外の第2のコアの異常を能動的に監視する能動的監視手段と、
前記複数のコアのうち第2のコア内に設けられ、前記第1のコアの異常を前記コアの異常を受動的に監視する受動的監視手段と、
前記能動的監視手段または前記受動的監視手段のいずれか1つが前記コアの異常を検出することに応答して前記CPUを再起動させる手段と
を備える電子装置。 - 前記能動的監視手段は、前記CPUの前記複数のコアから1つ決定され、残りのコアが前記受動的監視手段とされる、請求項1に記載の電子装置。
- 前記能動的監視手段は、前記受動的監視手段からの応答が第1所定期間ないことに基づいて前記コアの異常を検出する、請求項1または2に記載の電子装置。
- 前記受動的監視手段は、前記能動的監視手段からの問い合わせが第2所定期間ないことに基づいて前記コアの異常を検出する、請求項1〜3のいずれか1項に記載の電子装置。
- 前記能動的監視手段および前記受動的監視手段の相互監視を行うためのコア間通信手段を含む、請求項1〜4のいずれか1項に記載の電子装置。
- 前記複数のコアは、少なくとも1つのアプリケーション・プログラムを実行し、
さらに、
前記複数のコアは、当該コアで実行される前記アプリケーション・プログラムの不正処理を通知する通知手段と、
前記不正処理が発生したコアが実行する前記アプリケーション・プログラムの終了を阻害する要因を解除する解除手段と、
前記アプリケーション・プログラムの不正処理が発生した前記コアを除く他のコアに再起動要求を発行する再起動要求手段とを含む、請求項1〜5のいずれか1項に記載の電子装置。 - 前記複数のコアは、少なくとも1つのアプリケーション・プログラムを実行し、
さらに、前記複数のコアが、
前記アプリケーション・プログラムにより不正処理が検出されたことを受けて、当該アプリケーション・プログラムの不正処理が発生した前記コアを除く他のコアに再起動要求を発行する再起動要求手段と、
前記不正処理が発生したコアが実行する前記アプリケーション・プログラムの終了を阻害する要因を解除する解除手段とを含む、請求項1〜5のいずれか1項に記載の電子装置。 - 複数のコアを有するCPUの再起動方法であって、前記CPUが、
前記複数のコアのうち第1のコア内に設けられ、前記複数のコアのうちの前記第1のコア以外の第2のコアの異常を能動的に監視するステップと、
前記複数のコアのうち第2のコア内に設けられ、前記第1のコアの異常を前記コアの異常を受動的に監視するステップと、
前記能動的に監視するステップまたは前記受動的に監視するステップのいずれか1つが前記コアの異常を検出することに応答して前記CPUを再起動させるステップと
を含む再起動方法。 - 前記受動的に監視するステップからの応答が第1所定期間ないことに基づいて前記コアの異常を検出するステップを含む、請求項8に記載の再起動方法。
- 前記能動的に監視するステップからの問い合わせが第2所定期間ないことに基づいて前記コアの異常を検出するステップを含む、請求項8または9に記載の再起動方法。
- 前記複数のコアは、少なくとも1つのアプリケーション・プログラムを実行し、
さらに、
当該コアで実行される前記アプリケーション・プログラムの不正処理を通知するステップと、
前記不正処理が発生したコアが実行する前記アプリケーション・プログラムの終了を阻害する要因を解除するステップと、
前記アプリケーション・プログラムの不正処理が発生した前記コアを除く他のコアに再起動要求を発行するステップと
を含む、請求項7〜9のいずれか1項に記載の再起動方法。 - 複数のコアを有するCPUを再起動するためのCPU実行可能なプログラムであって、前記CPUを、
前記複数のコアのうち第1のコア内に設けられ、前記複数のコアのうちの前記第1のコア以外の第2のコアの異常を能動的に監視する能動的監視手段、
前記複数のコアのうち第2のコア内に設けられ、前記第1のコアの異常を前記コアの異常を受動的に監視する受動的監視手段、
前記能動的監視手段または前記受動的監視手段のいずれか1つが前記コアの異常を検出することに応答して前記CPUを再起動させる手段
として機能させるためのプログラム。 - 前記複数のコアは、少なくとも1つのアプリケーション・プログラムを実行し、
さらに、
当該コアで実行される前記アプリケーション・プログラムの不正処理を通知する通知手段、
前記不正処理が発生したコアが実行する前記アプリケーション・プログラムの終了を阻害する要因を解除する解除手段、
前記アプリケーション・プログラムの不正処理が発生した前記コアを除く他のコアに再起動要求を発行する再起動要求手段
として機能させる、請求項12に記載のプログラム。 - 前記複数のコアは、少なくとも1つのアプリケーション・プログラムを実行し、
さらに、
前記コアで実行される前記アプリケーション・プログラムにより不正処理が検出されたことを受けて、当該アプリケーション・プログラムの不正処理が発生した前記コアを除く他のコアに再起動要求を発行する再起動要求手段、
前記不正処理が発生したコアが実行する前記アプリケーション・プログラムの終了を阻害する要因を解除する解除手段
として機能させる、請求項12に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/687,973 US10585755B2 (en) | 2016-11-29 | 2017-08-28 | Electronic apparatus and method for restarting a central processing unit (CPU) in response to detecting an abnormality |
CN201710770949.3A CN108121630B (zh) | 2016-11-29 | 2017-08-31 | 电子装置、重新启动方法及记录媒介 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016084144 | 2016-04-20 | ||
JP2016084144 | 2016-04-20 | ||
JP2016231218 | 2016-11-29 | ||
JP2016231218 | 2016-11-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018092571A true JP2018092571A (ja) | 2018-06-14 |
Family
ID=62566282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017079691A Pending JP2018092571A (ja) | 2016-04-20 | 2017-04-13 | 電子装置、再起動方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018092571A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020190986A (ja) * | 2019-05-23 | 2020-11-26 | 株式会社デンソー | 車両用装置 |
WO2022201597A1 (ja) * | 2021-03-22 | 2022-09-29 | 日立Astemo株式会社 | 車両制御装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0895930A (ja) * | 1994-09-26 | 1996-04-12 | Mitsubishi Electric Corp | マルチプロセッサ方式 |
JP2002318003A (ja) * | 2001-04-20 | 2002-10-31 | Noritz Corp | マイクロコンピュータ装置 |
JP2003044294A (ja) * | 2001-08-01 | 2003-02-14 | Nec Mobiling Ltd | タスク障害検出方式および方法 |
JP2003247453A (ja) * | 2002-02-20 | 2003-09-05 | Mitsubishi Electric Corp | 車載電子制御装置 |
JP2011159136A (ja) * | 2010-02-02 | 2011-08-18 | Seiko Epson Corp | 制御装置、制御装置の異常検出・復旧方法および電子機器 |
WO2012046302A1 (ja) * | 2010-10-05 | 2012-04-12 | 富士通株式会社 | マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム |
JP2012160033A (ja) * | 2011-02-01 | 2012-08-23 | Keihin Corp | 移動体の電子制御装置 |
-
2017
- 2017-04-13 JP JP2017079691A patent/JP2018092571A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0895930A (ja) * | 1994-09-26 | 1996-04-12 | Mitsubishi Electric Corp | マルチプロセッサ方式 |
JP2002318003A (ja) * | 2001-04-20 | 2002-10-31 | Noritz Corp | マイクロコンピュータ装置 |
JP2003044294A (ja) * | 2001-08-01 | 2003-02-14 | Nec Mobiling Ltd | タスク障害検出方式および方法 |
JP2003247453A (ja) * | 2002-02-20 | 2003-09-05 | Mitsubishi Electric Corp | 車載電子制御装置 |
JP2011159136A (ja) * | 2010-02-02 | 2011-08-18 | Seiko Epson Corp | 制御装置、制御装置の異常検出・復旧方法および電子機器 |
WO2012046302A1 (ja) * | 2010-10-05 | 2012-04-12 | 富士通株式会社 | マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム |
JP2012160033A (ja) * | 2011-02-01 | 2012-08-23 | Keihin Corp | 移動体の電子制御装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020190986A (ja) * | 2019-05-23 | 2020-11-26 | 株式会社デンソー | 車両用装置 |
WO2022201597A1 (ja) * | 2021-03-22 | 2022-09-29 | 日立Astemo株式会社 | 車両制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108121630B (zh) | 电子装置、重新启动方法及记录媒介 | |
US7003775B2 (en) | Hardware implementation of an application-level watchdog timer | |
US9946553B2 (en) | BMC firmware recovery | |
US7823021B2 (en) | Software process monitor | |
KR101835458B1 (ko) | 데이터 처리 시스템의 재기동 방법, 시스템 및 컴퓨터 판독가능 저장 매체 | |
US8954801B2 (en) | Microcomputer and method of operation thereof | |
EP2518627B1 (en) | Partial fault processing method in computer system | |
WO2018095107A1 (zh) | 一种bios程序的异常处理方法及装置 | |
US9411661B2 (en) | Deadlock avoidance | |
US8332826B2 (en) | Software process monitor | |
US20060271205A1 (en) | Software process monitor | |
US8122176B2 (en) | System and method for logging system management interrupts | |
EP3588355B1 (en) | Information processing apparatus for detecting tampering with software executed at boot time, method for rebooting information processing apparatus, storage medium, and program | |
KR20140105034A (ko) | 프로세서 시스템 | |
JP2018092571A (ja) | 電子装置、再起動方法およびプログラム | |
JPH09251443A (ja) | 情報処理システムのプロセッサ障害回復処理方法 | |
US20040199599A1 (en) | Method of shutting down virtual machines in an orderly manner | |
US20170344360A1 (en) | Protecting firmware flashing from power operations | |
KR100953732B1 (ko) | 테스크 관리 장치 | |
EP1891527B1 (en) | SOFTWARE PROCESS MONITOR for detecting and recovering from abnormal process termination | |
US20130318310A1 (en) | Processor processing method and processor system | |
US20180089012A1 (en) | Information processing apparatus for analyzing hardware failure | |
EP2691853B1 (en) | Supervisor system resuming control | |
JP6024742B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体 | |
JP2002099437A (ja) | ネットワーク接続装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201102 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201203 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20210323 |