JPH02176946A - プログラム暴走検出方法 - Google Patents

プログラム暴走検出方法

Info

Publication number
JPH02176946A
JPH02176946A JP63329413A JP32941388A JPH02176946A JP H02176946 A JPH02176946 A JP H02176946A JP 63329413 A JP63329413 A JP 63329413A JP 32941388 A JP32941388 A JP 32941388A JP H02176946 A JPH02176946 A JP H02176946A
Authority
JP
Japan
Prior art keywords
program
stack
area
stack area
pointer
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
JP63329413A
Other languages
English (en)
Inventor
Takeshi Miyao
健 宮尾
Shigenori Kaneko
茂則 金子
Toshiaki Higashihara
東原 敏昭
Koji Kobayashi
浩二 小林
Koichiro Sakuraba
恒一郎 桜庭
Yasuo Sekine
康雄 関根
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.)
Hitachi Ltd
Hitachi Information and Control Systems Inc
Original Assignee
Hitachi Ltd
Hitachi Process Computer Engineering Inc
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 Hitachi Ltd, Hitachi Process Computer Engineering Inc filed Critical Hitachi Ltd
Priority to JP63329413A priority Critical patent/JPH02176946A/ja
Publication of JPH02176946A publication Critical patent/JPH02176946A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は1作業用領域としてのスタック領域を設けた計
算機システムのプログラム暴走検出方法に関するもので
ある。
〔従来の技術〕
作業用領域としてスタック領域を用いる計算機システム
では、スタックポインタによりスタック領域へアクセス
する。このシステムでプログラムが暴走して、スタック
として指定された領域の外をスタックポインタが指すと
、そこに格納されているデータやプログラムが破壊され
る。このプログラム暴走を検出する方法としては、特開
昭62−269242に記載のように、主メモリのスタ
ック領域に隣接して表示エリアを設け、プログラム暴走
によりデータがスタック領域から溢れ1表示エリアのデ
ータが書き換えられたとき、プログラム暴走が生起した
ことを表示画面から知るという方法が知られている。
【発明が解決しようとする課題〕
上記の従来技術では、主記憶上のスタック領域と隣接し
て表示エリアを設けなければならないが。
スタック領域と隣接した領域が既に別の目的のために割
当てられていた場合には適用できない、また、表示エリ
アのデータが書き換えられた後にプログラム暴走の生起
を表示するため1表示エリアのデータの破壊を防ぐこと
ができないという問題点があった。
本発明の目的は、スタック領域と隣接した領域が任意の
用途に使用されている場合にも、プログラム暴走が検出
でき、またスタック領域と隣接した領域のデータを破壊
することなく、プログラム暴走を検出できるプログラム
暴走検出方法を提供するにある。
(課題を解決するための手段〕 上記の目的は、スタック領域の境界アドレスを記憶する
手段を設けるとともに、この境界アドレスとスタックポ
インタとを命令実行ごとに比較し、スタックポインタが
スタック領域内を指しているかどうかのチエツクを行う
ことにより達成される。
〔作 用〕
スタック領域の境界アドレスをレジスタ等の記憶手段に
記憶してスタックポインタの判定を行うから、スタック
領域の隣接領域を暴走検出用に割当てる必要がなくなり
、その隣接領域を任意の目的で使用できる。また、命令
が発行されるごとに境界アドレスとスタックポインタと
を比較し、もしスタック領域外をスタックポインタが指
しているなら、次の命令へ移らずに処理を中断させるよ
うにして、隣接領域のデータ破壊の前にプログラム暴走
の検出を行える。
〔実施例〕
以下、本発明を実施例により詳細に説明する。
第3図は主メモリ101上のスタック領域102及びデ
ータ領域103と、スタックポインタ(SP:以下単に
ポインタともいう)105との関係を示すもので、ポイ
ンタ領域102の境界アドレスはそれ専用に設けたレジ
スタ(llimsp) 104に格納される。
第1図は、第3図の主メモリ構成における本発明の一実
施例を示すフローチャートで、まずシステム立上げ時に
スタック102のアドレスの小さい方の境界アドレスを
レジスタ104に格納する(ステップ201)、小さい
方の境界アドレスのみを記憶するのは、スタックがアド
レスの小さくなる方向に順々に使用され、またプログラ
ム暴走が生起した場合にはスタックポインタが上記境界
アドレスリ小さい方へと溢れることが多いからである。
境界アドレス設定によりスタック領域が割当てられると
、プログラムの命令が順々に実行されるが、−命令実行
ごとに(ステップ203) 、ポインタ105と境界ア
ドレスとの比較を行う(ステップ205)。
プログラムが正常な処理を実行している間は、ポインタ
lO5はスタック領域102の内を指しており、ポイン
タの値は境界アドレスより大きく、次命令へと移る(ス
テップ204)、ところがプログラムが暴走し、ポイン
タ105がスタック領域102から溢れると、ポインタ
105はデータ領域103を指すようになり、その値は
境界アドレスより小さくなる。このときはプログラムが
暴走したと判断しくステップ206)、プログラムを即
時停止させる。これによって、次の命令を実行する前に
暴走したプログラムを停止させれば、スタック領域に隣
接した領域のデータMMを防止できる。
本実施例によれば、スタック領域以外の領域のデータが
破壊されることなしにプログラム暴走検出が行え、かつ
スタック領域と隣接した領域が任意の目的のために使用
可能となる。
第2@は本発明の別の実施例を示すフローチャートであ
る0通常の計算機では、オペレーティングシステムを走
らせるシステムモードと、ユーザプログラムを走らせる
ユーザモードがあり、ユーザモードのときはオペレーテ
ィングシステム用のデータへのアクセスは禁止されてい
る。このような計算機では、第4図のように、1つのプ
ログラムにユーザ用スタック領域302と、システム用
スタック領域303が主メモリ301上に割当てられて
いる。ユーザ用スタック領域302の境界アドレスは専
用のレジスタ304 (Ilimsp 1 )に、シス
テム用スタック領域303の境界アドレスは専用のレジ
スタ305 (Ilimsp2)に格納される。ユーザ
用スタック領域302は、ユーザプログラムの命令が実
行されているとき、言い換えればCPUがユーザモード
で動作しているときにスタックとして使用される領域で
ある。一方、システム用スタック領域303は、システ
ムがユーザプログラムに対してサービスを実施している
とき、言い換えればCPUがシステムモードで動作して
いるときにスタックとして用いられる領域である。
第2図のフローチャートはこのシステムに対応するもの
で、まずCPUの動作モードを判定しくステップ401
) 、ユーザモードであればレジスタ304の境界アド
レスとスタックポインタ306とを比較しくステップ4
02)、システムモードであればレジスタ305の境界
アドレスとスタックポインタ306とを比較する(ステ
ップ403)、この比較により、スタックポインタが使
用中のスタック領域外を指していることを検出したとき
、プログラム暴走とみなす(ステップ404)、ポイン
タ306が当該スタック領域内を指していた場合は、プ
ログラムの処理を続行する(ステップ405)。
なお1本実施例ではユーザ用及びシステム用の2つのス
タック領域を設けた場合を説明したが、3個あるいはそ
れ以上のスタック領域がある場合でも本発明は適用でき
る0例えば第4図の2つのスタック領域の他に、割込み
処理を行うための第3のスタック領域を設け、割込みモ
ードでCPUが動作しているときはこの第3のスタック
領域の境界アドレスを格納したレジスタとポインタとの
比較を行うようにすればよい。
本実施例によれば、1つのプログラムに対して複数個の
スタック領域が割当てられる計算機システムでも、スタ
ック領域以外のメモリ領域を有効に利用でき、しかもプ
ログラム暴走によるデータ破壊が起る前にその暴走を検
出できる。
〔発明の効果〕
本発明によれば、スタック領域と隣接してプログラム暴
走検出用領域を設ける必要がないので。
その領域を任意の用途に使用でき、主メモリを効率的に
利用できる効果があり、またプログラム暴走時に、スタ
ック領域以外のデータ破壊なしに暴走を検出でき、暴走
したプログラムの異常個所解析も迅速に行えるという効
果がある。
【図面の簡単な説明】
第1図及び第2図は本発明の方法の第1及び第2の実施
例を示す暴走検出処理のフローチャート。 第3図及び第4図はそれぞれ第1図及び第2図の実施例
における主メモリ上の領域割当てとレジスタの指すアド
レスとの関係を示す図である。 101、301・・・主メモリ、102.302.30
3・・・スタック領域、 104.304.305・・
・境界アドレス、105゜306・・・スタックポイン
タ。 代理人弁理士  秋 本 正 実 第 図 第 図 第 図 第 図

Claims (1)

  1. 【特許請求の範囲】 1、作業用に設けた主メモリ上のスタック領域の境界ア
    ドレスを格納するためのレジスタを設け、プログラムの
    実行中に与えられたスタックポインタと上記境界アドレ
    スとの比較によって上記スタックポインタが上記スタッ
    ク領域内にあるか否かを判定し、もし上記スタックポイ
    ンタが上記スタック領域内にないときにはプログラム暴
    走と判定して当該プログラムの実行を中断することを特
    徴とするプログラム暴走検出方法。 2、前記レジスタに格納される境界アドレスは前記スタ
    ック領域の最小アドレスであり、前記スタックポインタ
    が上記最小アドレスより小さいときに上記スタックポイ
    ンタは上記スタック領域内にないと判定することを特徴
    とする請求項1記載のプログラム暴走検出方法。 3、複数の実行モードがある場合に、前記スタック領域
    は各実行モード対応に主メモリ上に設けられ、かつ前記
    レジスタは上記各スタック領域対応の境界アドレスを格
    納するとともに、プログラムの実行中に与えられたスタ
    ックポインタと当該プログラムの実行モード対応の境界
    アドレスとを比較することにより、上記スタックポイン
    タが上記作業モード対応のスタック領域内にあるか否か
    を判定することを特徴とする請求項1または2記載のプ
    ログラム暴走検出方法。 4、前記複数の実行モードは、システムプログラム及び
    ユーザプログラムの実行モード、あるいは上記2つの実
    行モードと割込処理プログラムの実行モードであること
    を特徴とする請求項3記載のプログラム暴走検出方法。
JP63329413A 1988-12-28 1988-12-28 プログラム暴走検出方法 Pending JPH02176946A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63329413A JPH02176946A (ja) 1988-12-28 1988-12-28 プログラム暴走検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63329413A JPH02176946A (ja) 1988-12-28 1988-12-28 プログラム暴走検出方法

Publications (1)

Publication Number Publication Date
JPH02176946A true JPH02176946A (ja) 1990-07-10

Family

ID=18221130

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63329413A Pending JPH02176946A (ja) 1988-12-28 1988-12-28 プログラム暴走検出方法

Country Status (1)

Country Link
JP (1) JPH02176946A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04139544A (ja) * 1990-10-01 1992-05-13 Fujitsu Ltd データ復元方法
JPH09114698A (ja) * 1995-10-16 1997-05-02 Nec Corp プログラム開発装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04139544A (ja) * 1990-10-01 1992-05-13 Fujitsu Ltd データ復元方法
JPH09114698A (ja) * 1995-10-16 1997-05-02 Nec Corp プログラム開発装置

Similar Documents

Publication Publication Date Title
US5555414A (en) Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US7689749B2 (en) Interrupt control function adapted to control the execution of interrupt requests of differing criticality
JPH02176946A (ja) プログラム暴走検出方法
JPH09198258A (ja) タスクスタックオーバーフロー検出回路
JPH064417A (ja) メモリのバッテリバックアップ制御方式
JPS6158054A (ja) プログラムの暴走検出方式
JPH045729A (ja) プロセッサ装置
JPH0451329A (ja) コンテキスト切替装置
JPH01201751A (ja) メモリー保護装置
JPS63120336A (ja) メモリアクセスモ−ド切替え方式
JPH06309236A (ja) メモリの不正書込み検出回路
KR20010038662A (ko) 컴퓨터 운영체제에서의 스택 오류 제어 방법
JP2533931B2 (ja) 動的割当て領域のデ―タ内容保護方式
JPS62154166A (ja) マイクロコンピユ−タ
JPS62212733A (ja) スタツク領域オ−バフロ−検出機構
JPH0251742A (ja) プログラム暴走防止方式
JPH02244345A (ja) 情報処理装置
JPH02159643A (ja) Cpu監視回路
JPH02245937A (ja) 情報処理装置
JPH03148735A (ja) メモリ管理装置
JPH03208132A (ja) シングルチツプマイクロコンピユータ
JPH0477826A (ja) マイクロプロセツサ
JPH02257232A (ja) 割り込み処理プログラム管理方法
JPH04128961A (ja) マルチプロセッサ制御方式
JPH08153018A (ja) 半導体システム