JPH05108418A - プログラム異常検出方式 - Google Patents

プログラム異常検出方式

Info

Publication number
JPH05108418A
JPH05108418A JP3300982A JP30098291A JPH05108418A JP H05108418 A JPH05108418 A JP H05108418A JP 3300982 A JP3300982 A JP 3300982A JP 30098291 A JP30098291 A JP 30098291A JP H05108418 A JPH05108418 A JP H05108418A
Authority
JP
Japan
Prior art keywords
task
time
program
abnormality
execution
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
Application number
JP3300982A
Other languages
English (en)
Inventor
Satoshi Komatsu
智 小松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP3300982A priority Critical patent/JPH05108418A/ja
Publication of JPH05108418A publication Critical patent/JPH05108418A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 プログラム異常検出に際して、プログラム異
常動作及びプログラム不動作異常も検出できるようにす
る。 【構成】 多重プログラム動作するストアードプログラ
ム方式計算機において、プログラムの制御機構によって
タスク状態遷移が行なわれた都度、当該タスクの実行開
始間,タスク終了時間,タスクのCPU専有時間,タス
クの実行時間及びタスクの待時間を検出して記憶する手
段と、タイマ割込みによる一定時間毎に異常検出機構を
動作させる手段と、前記計測されて記憶手段内に格納さ
れた時間をもとに異常状態タスクを検出する第1の手段
と、定周期に走行するプログラムについての一定時間内
のCPU専有時間を検出する第2の手段と、前記第1,
第2の各検出手段によって異常検出されたタスクを出力
する手段とを備えた。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】多重プログラムで動作するストア
ードプログラム方式計算機のプログラム異常検出方式に
関する。
【0002】
【従来の技術】一般に、プログラム異常診断方式では、
プログラムのループや暴走等がない限り、その診断方式
の方法上、プログラムの異常を検出できない構成となっ
ている(例えば特開昭60-72040号公報,特開昭60-17154
4 号公報,特開昭60-214047 号公報)。例を示すと特開
昭60-214047 号公報ではプログラムのループ等の異常を
監視するだけである。又、特開昭60-72040号公報の従来
技術とその問題点の項では、プログラミング上のミスや
計算機のハードウェア故障によるプログラム上の異常と
してプログラムループ等の異常実行が考えられている
が、プログラムが動作しない問題については、一切考え
られていなかった。更にその大半が基本的にウォッチド
ッグタイマ等の監視処理が、異常動作を続けるプログラ
ムによって動作できないことを条件に異常検出する方法
をとっているため、本発明に示すようなプログラム異常
には対応できていなかった。
【0003】
【発明が解決しようとする課題】従来からの異常検出方
式は、プログラムが動作している間に、ループ状態とな
ったり、暴走したりした場合等の異常検出だけである。
即ち、プログラムのループや暴走によって他のプログラ
ムが動作できないことを異常検出の基本思想としてい
る。しかし、プログラムの異常はループや暴走だけでは
なく、定周期に動作すべきプログラムが動作しない等の
異常も起こり得るが、公知の技術では検出手段がなく、
個々に異常診断プログラムを付加する必要があり不経済
であった。本発明は上記事情に鑑みてなされたものであ
り、プログラム異常動作はもちろん、プログラム不動作
異常についても検出でき、計算機システム全体の信頼性
向上を図ることを可能とするプログラム異常検出方式を
提供することを目的としている。
【0004】
【課題を解決するための手段】上記目的を達成するため
の構成を図1により説明する。本発明では計算機1に具
備するプログラム制御機構2とプログラム実行時のパラ
メータを与えることが可能なプログラム連結編集処理手
段3と、それによって作成される実行ロードモジュール
4及び実行ロードモジュールの動作実体である処理タス
ク5からなり、前記プログラム制御機構は計測機構21a
と異常検出機構21b を有するタスクディスパッチャ21
と、タイマ制御手段22とタスク制御ブロック(TCB)
23を備えている。
【作用】先ず、プログラム連結編集処理手段3は、実行
ロードモジュール4を作成するに際して、CPU専有時
間上限値Tcl,実行時間上限値Tplを実行ロードモジュ
ール4に同時に記憶させる。そして、前記した実行ロー
ドモジュール4をタスクとして生成する時には、タスク
ディスパッチャ21によって前記パラメータをタスク制御
ブロック(以下TCBと称す)23へ設定する。図3はタ
スクの状態変化を示すタイムチャートの例であるが、こ
の状態変化は図2に示す状態遷移通りに全タスクディス
パッチャによって管理させる。従って、タスクディスパ
ッチャ21がタスクの状態遷移が発生する都度、タスクの
実行開始時間ts ,タスクの終了時間te ,タスクのC
PU専有時間tc ,タスクの実行時間tp ,タスクの待
時間tw を計測し、TCB(図4)へ記憶する。一定時
間毎に発生するタイマ割込みによるタスクディスパッチ
ング制御が行なわれた時、全タスクについてTCBへ記
憶しているCPU専有上限時間Tclと各タスクのCPU
専有時間tc を比較することによって、CPU専有時間
超過異常を検出する。又、タスクの実行時間上限Tpl
タスクの実行時間tp を比較することにより、タスクの
処理時間超過異常を検出する。これらの異常を検出した
時には、タスク異常の通知を外部へ行なう。これらの処
理により、多重プログラムで動作する計算機内の個々の
タスクのきめ細かい異常監視を行なうことができる。
【0005】
【実施例】以下図面を参照して実施例を説明する。先
ず、プログラム異常検出方式の説明の前に、タスクディ
スパッチャ21が行なうタスクの状態遷移を図2を用いて
説明する。図2の符号31,32,33,34,35はタスクの状
態を示しており、符号31a ,32a ,33a ,33b ,33c ,
34a はタスクの状態遷移の方向を示している。ここで、
タスクの起動要求31が起こると、計算機内部のプログラ
ム制御機構2のタスクディスパッチャ21がその要求を受
け取り、そのタスクを実行可能状態32とする。次にタス
クディスパッチャは実行可能状態にあるタスクのうち、
最も優先レベルが高いタスクを実行状態33としてCPU
専有権を与え終了する。この後タスクは実際にCPUを
使い動作する。次にタスクディスパッチャが動作する時
は、CPU専有権を与えられたタスクが終了する時、又
はタイマによる遅延をする時、又は新たなタスク起動要
求発生時等タスクの状態遷移が発生した時全てである。
【0006】次に図5を用いて本発明によるプログラム
異常検出方式の一実施例の処理内容を説明する。なお、
ハードウェアは図1と同様であるため、説明を省略す
る。図5において、ステップS51 は前述の図2で説明し
たような従来方法によるプログラム制御機構のタスクデ
ィスパッチャ処理と同じである。ステップS52 はタスク
ディスパッチャによってタスク状態遷移が行なわれた
時、該当タスクの実行時間とCPU専有時間を計測する
処理であり、計測した結果をタスク制御ブロック(TC
B)に記憶する。この記憶される時間は、図3に示すタ
スクの実行開始時刻ts ,タスクの終了時刻te ,タス
クの実行時間tp とタスクのCPU専有時間のt1 ,t
2 ,t3 の合計値tc である。
【0007】なお、タスクディスパッチャが動作する都
度、次ステップ以降のタスク異常検出処理を行なうと、
1つのタスクの状態変化によって全タスクの異常判定を
することになるため、タスクディスパッチャ自身の処理
時間も多くなり、CPU全体の効率低下を招く。従って
ステップS53 はタイマ割込による一定時間毎に異常検出
機構を動作させるための判定部である。ステップS54は
ステップS52 によって計測されTCB上に記憶された時
間を基に、実行時間超過,CPU専有時間超過,定周期
に走行するプログラムに関しては、一定時間内にCPU
専有時間が計測されたかをチェックして異常タスクを検
出する。
【0008】次にステップS55 は、ステップS54 で異常
検出されたかを判定し、ステップS56 の処理を実行すべ
きか判定する処理である。異常検出されている場合、ス
テップS56 の異常検出通知を行なう。ステップS56 の異
常検出通知は異常検出されたタスクへのディスパッチン
グ禁止と、異常終了通知やタスクの強制異常終了などを
行なう。以上によって、タスク実行時の異常とタスクが
動作しない異常の両方の検出ができる。
【0009】次に図5のステップS52 の詳細な動作につ
いて、図6を用いて説明する。図6は図5のステップS5
2 の詳細を説明するフローチャートである。ステップS5
21は、タスクのディスパッチング種別をチェックして次
の処理を選択する処理である。先ず、図2に示すタスク
状態変化符号の31a ,32a ,33a ,33b ,33c ,34aの
どれか1つを選択する。31a が選択された場合ステップ
S522を実行する。32aの場合はステップS523の実行、33a
の場合はS524、33b の場合はステップS525、ステップS
523c の場合ステップS526,ステップS24aの場合はステ
ップS527を実行する制御を行なう。
【0010】次に選択された各処理部について説明す
る。ステップS522はタスク開始時の計測処理であり、タ
スク個々のTCB内にある計測データエリアを初期化す
る。初期化するデータは、タスク開始時刻を示すts
現在時刻をセットし、又、タスク終了時刻(te ),C
PU専有時間(tc ),待時間(tw )を0にセットす
る。ステップS523はタスクの実行可能状態から実行状態
とする場合の計測処理であり、CPU専有権を割付けた
時刻をTCB内のワーク領域wへ保存する。このwはC
PU専有権を明け渡す処理ステップS524で参照される。
ステップS524はタスクを実行状態から実行可能状態とC
PU専有権を他へ渡す場合の計測処理である。従ってス
テップS523でCPU専有権を割付けた時刻wと現在時刻
o の差をCPUの専有時間としてTCB内のtc に加
算することによりCPU専有時間を計測する。
【0011】ステップS525はタスクの実行状態から待時
間へ遷移する時の計測処理である。ディスパッチャによ
ってCPU専有権を明け渡す時であるため、ステップS5
25はステップS524と同様に現在時刻to とCPU専有権
取得時刻wの差をCPU専有時間としてTCB内のtc
に加算する。又、待時間の計測のため、更にTCB内の
ワーク領域wへ現在時刻to をセットする。ステップS5
26はタスクの実行状態から終了状態へ遷移する時の計測
処理であり、ディスパッチャによってCPU専有権を明
け渡す時であるため、前述のステップS525と同様にto
とwの差をtc へ加算し、更に、タスク終了時刻te
現在時刻をセットする。本ステップを完了した時、tc
はタスク開始から終了までのCPU専有時間が累積され
ていることになる。又、te −ts はタスクの待状態時
間を含む全実行時間となる。更に、te −ts −tw
タスクの待状態時間を含まない実行時間が計測されてい
ることになる。ステップS527はタスクの待状態から実行
可能状態へ遷移する時の計測処理である。ステップS525
によってタスクが待状態となる時の時刻wと現在時刻t
o の差が待時間となり、tw に加算していくことにより
タスクの総待時間が計測される。以上が図5のステップ
S52 の詳細説明であり、タスク個々の実行開始時間(t
s ),終了時間(te ),CPU専有時間(tc ),実
行時間(tp ),待時間(tw )が夫々計測可能とな
る。
【0012】次に図5ステップS54 の異常検出動作の詳
細について、図7のフローチャートを用いて説明する。
図7のフローチャート内の記号は、図4のTCB例と対
応している。図7ステップS541はTCB内の各タスクの
定周期実行時間Tcyc を参照し、定周期走行タスクかの
判定をする。Tcyc 以外の時は定周期タスクであると判
断し、ステップS547〜ステップS562の処理を実行する。
定周期タスクでない場合はステップS542〜ステップS546
の各処理を実行する。次に定周期タスクとそれ以外のタ
スクについて分けて説明する。
【0013】先ず定周期タスクの場合について説明す
る。ステップS547はタスクが起動されているかをチェッ
クする。起動されている場合はステップS548へ進む。ス
テップS548ではタスクのCPU専有時間tcがリミット
値Tclを越えていないかチェックし、上限を越えている
時(Y)はステップS563の異常を処理する。次にステッ
プS549はタスク実行時間のチェックを行なう。タスク実
行時間tp がタスク実行時間リミットTplを越えた時
(Y)はステップS563の異常処理をする。以上ステップ
S547〜ステップS549では定周期に走行するタスクでも、
ループ等の異常がありCPUを専有しているかを検出す
る。
【0014】次にステップS560は定周期に動作すべきタ
スクの周期がきたかをチェックする。ステップS560内の
count はタイマ処理によるカウントを示しており、カ
ウント値と周期指定値Tcyc を比較して、実行周期とな
ったかをチェックする。実行周期と判定した場合はステ
ップS561へ進む。ステップS561ではタスクの実行周期内
に1度は実行され、CPUを使用したかをチェックす
る。ここでCPUを使用した実績があれば、正常にタス
クが動作しているものと見做す。そして、次のステップ
S562へ進み、周期チェックカウンタを初期化する。ステ
ップS561で異常と判定された場合(Y)はステップS563
の異常処理を行なう。
【0015】次に定周期走行をしないタスクの場合につ
いて、図7のステップS541〜ステップS546を用いて説明
する。定周期走行しないタスクは、事象が発生すると起
動され、処理を行ない、終了する過程をとる。起動から
終了までの間は、図3に示す例のように種々の状態遷移
をし終了に至る。先ずステップS542はタスクが終了状態
にあるかをチェックする。終了状態の時はタスクの実行
そのものがされないので何も行なわない。次にステップ
S543はタスクが起動されているかチェックを行なう。即
ち、ステップS542,ステップS543ではタスクが起動され
ていて、かつ未だ終了していないかをチェックし、その
条件が満足した時ステップS544以降の処理へ進む。ステ
ップS544,ステップS545はステップS548,ステップS549
と同様に、タスクのCPU専有時間のリミット超過タス
クの実行時間のリミット超過チェックをし、タスクの異
常チェックを行なう。次にステップS546はタスク起動要
求が受付けられて実行可能状態にあるが、現在時刻to
まで時間経過したが、1度も実行されない異常があるか
を判定する。なお、Tm は実行時間マージンである。上
記実施例ではタスクが実行できない異常、タスクがルー
プ等の異常により必要以上にCPUを専有する、又は実
行時間が長くなる、定周期に走行すべきタスクが定周期
に動作しない、又定周期走行タスクでも1回当りの実行
で必要以上にCPU専有時間を使用する、実行時間が長
くなる等の異常を検出することができる。
【0016】図8は他の実施例を示したものである。こ
こでステップS51 〜ステップS56 までの各処理は実施例
で説明した図5と同じである。本実施例ではタスクのC
PU使用時間上限等を複数レベル設けて、レベルによっ
て異常検出時の対処方法を変えて、より高い信頼性を得
るようにしたものである。ステップS80 以降の処理を説
明する。ステップS80 では異常検出が低レベルで検出さ
れたかチェックする。低レベルの場合はステップS81 へ
進み、高レベルの場合はステップS56 へ進む。次にステ
ップS81 では定周期動作タスクであるかの判定を行な
う。定周期タスクでない場合はステップS82 へ進み、ス
テップS82 ではタスクの優先度を下げるこを行なう。こ
れは、プログラムのループ等よりもプログラムのアルゴ
リズム選択によって正しく動作するが、不用意にCPU
を多く使うプログラムは、他のプログラムにCPU専有
権を与えるようにコントロールするためである。一方、
定周期動作をするタスクが動作しない場合はステップS8
3 へ進み、ここでタスクの起動を行ない、自動的なリカ
バリーを行なう。ステップS82 ,ステップS83 は異常を
検出したが、リカバリーを試行し回復を試みる処理であ
る。次にステップS84 はステップS82 ,ステップS83 で
実施したリカバリーを通知する処理である。以上のよう
にステップS80 ,ステップS84 の処理を前述の実施例に
付加することにより、よりきめ細かい異常検出と、異常
回復の試行などを行なうことができ、より高い信頼性を
得ることができる。
【0017】
【発明の効果】以上説明したように、本発明によれば特
殊なハードウェアを用いることなく、一般の多重プログ
ラム動作を実現している計算機内で動作する個々のプロ
グラムのきめ細かい異常監視が可能となる利点がある。
又、プログラムが動作しない異常についても監視できる
利点がある。上記の効果により計算機システムの信頼性
も各段に向上する。
【図面の簡単な説明】
【図1】本発明を達成するため一実施例の処理内容を説
明する構成図。
【図2】本発明の説明をするために用いたタスクディス
パッチャのタスク状態遷移図。
【図3】図2で示したタスク状態遷移を時系列に表わし
たタイムチャート。
【図4】本発明を実現するためのタスク制御ブロックの
構成例。
【図5】本発明によるプログラム異常検出方式を説明す
るフローチャート。
【図6】図5のタスク走行時間計測処理を詳しく説明し
たフローチャート。
【図7】図5のタスク異常検出処理を詳しく説明したフ
ローチャート。
【図8】他の実施例を説明するフローチャート。
【符号の説明】
1 計算機 2 プログラム制御機構 3 プログラムの連結編集処理手段 4 実行ロードモジュール 5 処理タスク 21 タスクディスパッチャ 21a 計測機構 21b 異常検出機構 22 タイマ制御手段 23 タスク制御ブロック

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 多重プログラム動作するストアードプロ
    グラム方式計算機において、プログラムの制御機構によ
    ってタスク状態遷移が行なわれた都度、当該タスクの実
    行開始間,タスク終了時間,タスクのCPU専有時間,
    タスクの実行時間及びタスクの待時間を検出して記憶す
    る手段と、タイマ割込みによる一定時間毎に異常検出機
    構を動作させる手段と、前記計測されて記憶手段内に格
    納された時間をもとに異常状態タスクを検出する第1の
    手段と、定周期に走行するプログラムについての一定時
    間内のCPU専有時間を検出する第2の手段と、前記第
    1,第2の各検出手段によって異常検出されたタスクを
    出力する手段とを備えたことを特徴とするプログラム異
    常検出方式。
JP3300982A 1991-10-21 1991-10-21 プログラム異常検出方式 Pending JPH05108418A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3300982A JPH05108418A (ja) 1991-10-21 1991-10-21 プログラム異常検出方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3300982A JPH05108418A (ja) 1991-10-21 1991-10-21 プログラム異常検出方式

Publications (1)

Publication Number Publication Date
JPH05108418A true JPH05108418A (ja) 1993-04-30

Family

ID=17891410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3300982A Pending JPH05108418A (ja) 1991-10-21 1991-10-21 プログラム異常検出方式

Country Status (1)

Country Link
JP (1) JPH05108418A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004088518A1 (ja) * 2003-03-31 2004-10-14 Fujitsu Limited Cpu使用時間カウント方法及びこのcpu使用時間を用いるジョブ制御装置
JP2008305238A (ja) * 2007-06-08 2008-12-18 Denso Corp 計測装置
JP2009187189A (ja) * 2008-02-05 2009-08-20 Nec Corp ストール検出装置、ストール検出方法、及びストール検出プログラム
EP1650661A3 (en) * 2004-09-30 2009-09-09 Microsoft Corporation Method, system, and apparatus for identifying unresponsive portions of a computer program
US8484643B2 (en) 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004088518A1 (ja) * 2003-03-31 2004-10-14 Fujitsu Limited Cpu使用時間カウント方法及びこのcpu使用時間を用いるジョブ制御装置
US8484643B2 (en) 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
EP1650661A3 (en) * 2004-09-30 2009-09-09 Microsoft Corporation Method, system, and apparatus for identifying unresponsive portions of a computer program
JP2008305238A (ja) * 2007-06-08 2008-12-18 Denso Corp 計測装置
JP2009187189A (ja) * 2008-02-05 2009-08-20 Nec Corp ストール検出装置、ストール検出方法、及びストール検出プログラム

Similar Documents

Publication Publication Date Title
EP1852382B1 (en) Elevator apparatus
US10006455B2 (en) Drive control apparatus
JP2000010800A (ja) 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
EP1792864B1 (en) Elevator apparatus
CA2292991C (en) Watch dog timer system
US20080133975A1 (en) Method for Running a Computer Program on a Computer System
JPH05108418A (ja) プログラム異常検出方式
US20020147873A1 (en) Real time based system and method for monitoring the same
US20070079160A1 (en) Controller and method of controlling multiprocessor
JP3473399B2 (ja) 制御システムにおけるクロック動作監視装置及び方法
JP2004302847A (ja) Cpuの動作監視方法
JPH0395610A (ja) ローバッテリ状態検出方式
JP4983806B2 (ja) 二重化タイマを用いたシステム監視装置、および監視方法
JP2628561B2 (ja) 異常通知方法
JP3317728B2 (ja) プレス機械の異常監視装置
JPH06296397A (ja) ステッピングモータの駆動制御装置
JPH0581080A (ja) マイクロプロセツサの暴走監視装置
JP3367379B2 (ja) Cpuの出力制御回路
JPS63315963A (ja) 停電検出回路
JPS5936786B2 (ja) 計質機制御の故障検出装置
CN114488991A (zh) 机器人安全监控系统及其诊断异常的方法
JP4083954B2 (ja) 異常監視装置及び異常監視方法
JPS5864555A (ja) 計算機システムの異常検出装置
JPS63251845A (ja) プログラム異常検出装置
JPH01183701A (ja) プラント監視装置