JPH03278135A - スタックトレース装置 - Google Patents

スタックトレース装置

Info

Publication number
JPH03278135A
JPH03278135A JP2327643A JP32764390A JPH03278135A JP H03278135 A JPH03278135 A JP H03278135A JP 2327643 A JP2327643 A JP 2327643A JP 32764390 A JP32764390 A JP 32764390A JP H03278135 A JPH03278135 A JP H03278135A
Authority
JP
Japan
Prior art keywords
task
stack
memory
information
minimum
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
JP2327643A
Other languages
English (en)
Inventor
Chiemi Inamori
稲森 千栄美
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2327643A priority Critical patent/JPH03278135A/ja
Publication of JPH03278135A publication Critical patent/JPH03278135A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野コ この発明はスタックトレース装置に係り、特にマイクロ
プロセッサを制御するマルチタスキングのアプリケーシ
ョンプログラムの実行中に各タスクに必要なスタックサ
イズの最小使用量と最大使用量をトレースし記録するに
好適なスタックトレース装置に関するものである。
[従来の技術] 一般にアプリケーションプログラムを組む場合はスタッ
クサイズの指定が必要である。このスタックは文献「マ
イクロコピュータ教科書IVJ  (丸善:昭和59年
3月30日刊)の100頁に記載されているように、デ
ータの読み書きが一方の端からのみに制限されていて、
最後に書いたデータが最初に読まれる−続きになってい
るデータ領域である。このデータ領域はサブルーチン呼
出し時に戻り番地を保存したり割り込みがあった場合に
各レジスタの内容を一時保管する場合に用いられる。
さて、一つのタスクしか走らないようなプログラムであ
ればコンパイラがコンパイラ時に必要なスタックサイズ
を計算してくれるので、スタックサイズの指定はそれほ
ど困難ではない。しかし、マルチタスキングのアプリケ
ーションプログラムであればネストや割り込み処理のた
めのデータの一時保管場所としてのスタックエリアも必
要になる。
この場合に必要とされるスタックサイズはネストや割り
込み処理をどの程度受は付ひるかによって変化するため
、指定したスタックサイズが多すぎたり少なすぎたりす
ることがある。そして、スタックが多すぎるとメモリを
占有し過ぎることになり、逆にスタックが足りない場合
はアプリケーションプログラムが動作しなくなる。
さて、一般的な32ビツトマイクロプロセツサである8
0386 (インテル社の形式番号)について記載され
る文献r80386  Sys t emSoftwa
re  Writer  s  Gut −deJ  
(インテル社刊)の31頁に示されるように、マイクロ
プロセッサではタスクステートセグメントというタスク
毎の情報がある。これは、第4図に一例を示すタスクス
テートセグメントの説明図に示されるような構成を有し
、その中にはスタックの使用量、つまりオフセット値を
示す矢印Aで示すESPというデータが存在する。この
値、つまり各タスクのスタック使用量の推移を時系列で
メモリに保存すればスタックの使用状態を把握すること
ができるが、一般的なマイクロプロセッサのアーキテク
チアでそのような機能を実現することは非常に困難であ
る。
したがって、これに変わる方法としてタスクスイッチを
監視するトレーサを用いて各タスクのスタックの使用量
の推移をスタックトレーサ用バッファであるメモリに順
番に記録するという方式が考えられる。
第5図は文献「解析マルチタスクJ  (CQ出版社:
昭和63年1月20日刊)の19頁に記載されるマルチ
タスクオペレーティングシステムの基本構成図である。
図において、(1)は複数種類のアプリケーションタス
クが準備されるアプリケーションタスク部、(7)は計
算機内部で動作中のタスク間の相互同期をとったりそれ
らを保護する等の他、アプリケーションタスク部(1)
がらコールを受は取ったり外部から割り込みを受は付け
るためのO3(オペレーティングシステム)の核を構成
するカーネル部である。なお、(2)はカーネル部(7
)において時分割入出力やマルチプログラミング等の機
能制御を行なうべくO8の処理を行なうためのスーパー
バイザ部、(3)は各プロセスからメモリの使用要求を
受付は空き領域を割り当てたり開放された領域を空き領
域として登録する等、O8の中でメモリの管理を行なう
ためのメモリ管理部、(4)はO8の中で他のタスクと
干渉させることなくデータを管理するデータ管理部、(
5)はマルチプログラミング環境下でO8の制御対象で
あるタスクの生成、終了、切り替え、優先順位の設定等
のプロセス管理を行なうプロセス管理部、(6)はO8
の中でデータの入出力の管理を行なう入出力管理部であ
る。
一方、第6図は文献「解析マルチタスクJ  (CQ出
版社:昭和63年1月20日刊)の48頁に記載される
マルチタスクオペレーティングシステムの中の特にプロ
セス管理のサブルーチンについて説明したブロック図で
ある。同図において、(11)は同期シグナルCALL
Fを受けて入出力装置と同期をとるための同期制御機構
、(12)は各タスクの優先順位に従ってタスクの待ち
行列を作るプロセススケジューラ、(13)はタスクの
待ち行列のリストであるプロセスリスト、(14)は待
ちタスクの中でも最も優先順位の高いタスクにCPUの
実行権を与えタスクの切り替えを行なうプロセススイッ
チャである。スーパーバイザ部(2)にはシステムコー
ル並びに割り込み信号が入力されると共に同期制御機構
(11)から制御信号PUSHF/CALLFが入力さ
れる。
また、プロセススイッチャ(14)からはディスパッチ
ング信号IRETが送出される。
なお、一般的なマルチタスクオペレーションを行なう装
置のハードウェアは第7図に示すような構成を有する。
同図からも明らかなようにCPUとメモリからなる装置
に磁気テープ、CRT、フロッピディスク、ハードディ
スク等の周辺装置を接続して構成される。
次に、第6図のプロセススイッチャ(14)の動作につ
いて説明する。このプロセススイッチャ(14)の動作
要因には3種類ある。第1は外部割り込みの発生があっ
た場合である。この外部割り込みには装置の外部からの
割り込みと時間監視用のタイマからの割り込み等、CP
U外部からの割り込みが含まれる。第2はCPUと動作
速度の異なる周辺装置、例えばFD(フロッピディスク
)、プリンタ、MT (磁気テープ) 、HD (ハー
ドディスク)等の装置と同期をとるための110割り込
みである。そして、第3はO8機能の提供を要求するア
プリケーションタスクからのシステムコールの発行であ
る。この3種類の要因のうち1つが発生するとタスクス
イッチが起こる可能性がある。このようなタスクスイッ
チを繰り返しながら動作するマルチタスキングのアプリ
ケーションプログラムを作成する場合、タスクスイッチ
の履歴を記録するタスクトレース装置が使用される場合
がある。
以上のような構成に対応した従来のスタックトレース装
置について第8図のブロック図に従って説明する。同図
において、(21)はスーパーバイザ部(2)からプロ
セススイッチャ(14)に至る信号に基づいて現在のス
タックサイズを抽出し記録するスタックサイズ抽出手段
である。ちなみに、スタックサイズの情報を格納するた
めのタスク毎のテーブルは図示しないメモリ上に確保さ
れる。
以上のような構成において、第2図のフローチャート並
びに第9図のフローチャートに基づいてその動作を説明
する。ちなみに、第2図は割り込み並びにシステムコー
ルが発生したときのタスク切換動作を示すフローチャー
トであり、第9図は第8図の構成のスタックトレース装
置の操作の流れを示すフローチャートである。
先ず、ステップ(S21)で割り込みが発生すると、ス
テップ(S 22)においてこれがスーパーバイザ部(
2)に知らされる。次に、スーパーバイザ部(2)では
次の新しいタスクにスイッチするためにステップ(82
3)においてプロセススイッチャ(14)にこれを知ら
せクスクスイッチの実行を命じる。その結果、プロセス
スイッチャ(14)はステップ(S24)においてプロ
セスリスト(13)からタスクスイッチを行なうタスク
の情報を取ってくる。そして、ステップ(S25)にお
いてその情報をCPUのレジスタ等にセットする。なお
、割り込み処理以外のシステムコールやI10同期割り
込みの場合でも同様にスーパーバイザ部(2)にその発
生を知らせ、第2図に示した別系統の処理が行なわれる
次に、第8図の構成においてスタックトレースを実行し
た場合の動作を第9図のフローチャートに従って説明す
る。ステップ(S 91)においてCRT等のオペレー
タインターフェース装置からスタックトレースに起動が
かかると、ステップ(S 92)においてプロセススイ
ッチャ(14)にスタックトレースを抽出する、つまり
ESP値を抽出することを知らせる。タスクスイッチが
起こるとステップ(893)においてプロセススイッチ
ャ(14)がどのタスクからどのタスクへとスイッチが
行なわれたかという情報を抽出する。
次のステップ(S94)においてタスクスイッチ情報を
格納するためのトレース用バッファにステップ(893
)で抽出した情報を順番に格納する。
次に、ステップ(S 95)においてタスクスイッチの
起こる前に動作していたタスクのスタック使用量、つま
りそのタスクのタスクステートセグメントの中に存在す
るESP値を抽出する。このステップ(S 95)で抽
出したスタック使用量情報をステップ(S 96)にお
いて各タスク毎のスタックに関する情報を格納するため
のスタックトレース用バッファに順番に格納する。
[発明が解決しようとする課題] 従来のスタックトレース装置におけるマルチタスキング
のアプリケーションプログラムでのスタックの指定は以
上のような手法を通じて行なわれていたので、タスクス
イッチが頻繁に行なわれるようなアプリケーションプロ
グラムではスタックトレース用のバッファとなるメモリ
を大きくとらなければならずスタックトレーサのために
メモリを必要以上に使用してしまうという課題があった
この発明は上記のような従来技術の課題を解決するため
になされたもので、スタックの使用量の最大値と最小値
のみをメモリに保存することにより最小限度のメモリの
使用量でスタックトレースを行なうことを可能としたス
タックトレース装置を提供することを目的とする。
[課題を解決するための手段] 上記目的を達成するために、この発明は、マルチタスク
の実行制御を行なうオペレーティングシステム手段と、
前記オペレーティングシステム手段からの指令に基づき
プログラムの最小実行単位であるタスクの切換え前後の
タスクスイッチ情報を抽出しメモリ上のタスクトレース
用バッファに格納するスタックサイズ抽出手段と、前記
スタックサイズ抽出手段で得られたタスクスイッチ情報
に基づいてタスクスイッチの起こる前のスタック情報を
それまでの最大値や最小値と比較し、いずれかの範囲を
超えている場合に、それまでのスタック情報を新たなス
タック情報に変更するデータ評価手段を備えるスタック
トレース装置を提供するものである。
[作用〕 上記手段において、スタックサイズ抽出手段はマルチタ
スクの実行制御を行なうオペレーティングシステム手段
からの指令に基づきプログラムの最小実行単位であるタ
スクの切換え前後のタスクスイッチ情報を抽出しメモリ
上のタスクトレース用バッファに格納し、データ評価手
段は前記スタックサイズ抽出手段で得られたタスクスイ
ッチ情報に基づいてタスクスイッチの起こる前のスタッ
ク情報をそれまでの最大値や最小値と比較し、いずれか
の範囲を超えている場合に、それまでのスタック情報を
新たなスタック情報に一部変更して格納する。
[実施例] 以下、図面を参照しながらこの発明の詳細な説明する。
第1図はこの発明の一実施例に係るスタックトレース装
置のブロック図である。図において、(22)はスーパ
ーバイザ部(2)に接続され、 1 現在のスタックサイズを抽出するスタックサイズ抽出手
段、(23)はスタックサイズ抽出手段(22)からの
取得データの大きさを判定し、このデータが条件に合え
ばこれを記録するデータ評価手段である。ちなみに、ス
タックサイズの情報を格納するためのタスク毎のテーブ
ルはメモリ上に取られている。
以上述べたような構成において、タスクスイッチが発生
した場合の動作を第2図のフローチャートに基づいて説
明する。先ず、ステップ(S 21)で割り込みが発生
すると、ステップ(S22)においてこれがスーパーバ
イザ部(2)に知らされる。その後、スーパーバイザ部
(2)では次の新しいタスクにスイッチするためにステ
ップ(823)においてプロセススイッチャ(14)に
これを知らせ、タスクスイッチの実行をプロセススイッ
チャ(14)に命じる。プロセススイッチャ(14)は
ステップ(S24)においてプロセスリスト(13)か
らタスクスイッチを行なうタスクの情報を取ってくる。
そして、ステップ(S22 5)においてその情報をCPUのレジスタ等にセットす
る。なお、割り込み処理以外のシステムコールやI10
同期割り込みの場合でもスーパーバイザ部(2)にその
発生を知らせ、第2図の別系統の処理が実行される。
一方、第1図の構成において、スタックトレースを実行
した場合の動作を第3図のフローチャートに従って説明
する。先ず、ステップ(S 31)においてCRT等の
オペレータインターフェース装置からスタックトレース
に起動がかかると、ステップ(S32)においてプロセ
ススイッチャ(14)にスタックトレースを取る、つま
りESP値の抽出を行なうことを知らせる。そしてタス
クスイッチが起こるとステップ(333)においてプロ
セススイッチャ(14)はどのタスクからどのタスクへ
とスイッチが行なわれたかという情報を抽出する。次に
、ステップ(S34)においてタスクスイッチ情報を格
納するためのトレース用バッファに抽出した情報を順番
に格納する。そして、ステップ(S 35)においてタ
スクスイッチが起こる前に動作していたタスクのスタッ
ク使用量、つまりタスクのタスクステートセグメントの
中に存在するESPの値を抽出する。ここで抽出した値
を、ステップ(S36)で既に取得した値の最大値と最
小値と比較する。この比較はステップ(S 37)で最
大値より大きいか否か、ステップ(838)で最小値よ
り小さいか否かの判定を行なうことで実行される。ステ
ップ(S 37)の比較で最大値より大きい9と判断さ
れた場合、ステップ(S 39)において各タスクのス
タックトレース用バッファ内の最大値格納エリアにその
値を格納し、処理を終了する。一方、ステップ(S37
)の判断で最大値より大きくないと判断された場合、ス
テップ(838)に進み、ここで最小値より小さいか否
かの判定がなされる。そして、最小値より小さいと判断
されればステップ(S40)に進み、各タスクのスタッ
クトレース用バッファ内の最小値格納エリアにこの値を
格納し処理を終了する。一方、ステップ(838)の判
定で最小値より大きければ何もせずに処理を終了する。
5 以上のように、タスクスイッチ情報に基づき抽出したス
タック使用量をあらかじめ定められた最大値と最小値と
比較し、最大値と最小値の範囲を超える場合にこれをバ
ッファに格納するように構成することで、バッファメモ
リの使用量を必要最小限度に抑制することができ、マル
チタスクオペレーティングを円滑に実行させることがで
きる。
[発明の効果] 以上のように、この発明によれば、既存のスタック使用
量を順番に記録する付加価値を持ったスタックトレーサ
にデータを加工する機能を付けて構成し、加工されたス
タックに関する情報にユーザからのアクセスを可能にし
たために、アプリケーションプログラムを組む上でスタ
ックサイズを最適な大きさに決めることができるだけで
なく、このスタックトレーサのために用意するメモリも
必要最小限度にまで低減することができる。その結果、
システムのメモリ使用量の最適化が可能となり、システ
ムに搭載するメモリを最適な大きさにまで減らすことも
可能になり、システムを安価に構成できるという利点が
ある。
【図面の簡単な説明】
第1図はこの発明の一実施例に係るスタックトレース装
置のブロック図、第2図は割り込み並びにシステムコー
ルが発生したときの動作を示すフローチャート、第3図
はスタックトレース動作を示すフローチャート、第4図
はマイクロプロセッサのタスクステートセグメンテーシ
ョンの一例を示す説明図、第5図は一般的なマルチタス
クオペレーティングシステムの基本構成図、第6図は従
来のプロセス管理サブルーチンのブロック図、第7図は
一般的なマルチタスクオペレーションを行なう装置のハ
ードウェア構成のブロック図、第8図は従来のスタック
トレース装置のブロック図、第9図は第8図の構成のス
タックトレース装置の操作の流れを示すフローチャート
である。 (1)はアプリケーションタスク部、(2)はスーパー
バイザ部、(3)はメモリ管理部、(4)はデータ管理
部、(5)はプロセス管理部、(6)は入出力管理部、
(7)はカーネル部、(11)は同期制御機構、(12
)はプロセススケジューラ、(13)はプロセスリスト
、(14)はプロセススイッチャ、(21)はスタック
サイズ抽出手段、(22)はスタックサイズ抽出手段、
(23)はデータ評価手段である。 なお、図中、同一符号は同一、又は相当部分を示す。

Claims (1)

    【特許請求の範囲】
  1. マルチタスクの実行制御を行なうオペレーティングシス
    テム手段と、前記オペレーティングシステム手段からの
    指令に基づきプログラムの最小実行単位であるタスクの
    切換え前後のタスクスイッチ情報を抽出しメモリ上のタ
    スクトレース用バッファに格納するスタックサイズ抽出
    手段と、前記スタックサイズ抽出手段で得られたタスク
    スイッチ情報に基づいてタスクスイッチの起こる前のス
    タック情報を評価し一部変更して格納するデータ評価手
    段を備えることを特徴とするスタックトレース装置。
JP2327643A 1990-03-20 1990-11-28 スタックトレース装置 Pending JPH03278135A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2327643A JPH03278135A (ja) 1990-03-20 1990-11-28 スタックトレース装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2-71632 1990-03-20
JP7163290 1990-03-20
JP2327643A JPH03278135A (ja) 1990-03-20 1990-11-28 スタックトレース装置

Publications (1)

Publication Number Publication Date
JPH03278135A true JPH03278135A (ja) 1991-12-09

Family

ID=26412743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2327643A Pending JPH03278135A (ja) 1990-03-20 1990-11-28 スタックトレース装置

Country Status (1)

Country Link
JP (1) JPH03278135A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250221A (ja) * 1992-03-10 1993-09-28 Nec Corp シミュレータ実行方式
JP2008003915A (ja) * 2006-06-23 2008-01-10 Denso Corp 電子機器
DE112007000528T5 (de) 2006-03-03 2008-12-24 Honda Motor Co., Ltd. Werkzeugmaschine und Verfahren zum Steuern einer Werkzeugmaschine
JP2009301259A (ja) * 2008-06-12 2009-12-24 Fujitsu Microelectronics Ltd 情報処理システム、スタックオーバーフローの発生検出方法及びプログラム
JP2010182237A (ja) * 2009-02-09 2010-08-19 Nec Corp スタックトレース採取システム、方法およびプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250221A (ja) * 1992-03-10 1993-09-28 Nec Corp シミュレータ実行方式
DE112007000528T5 (de) 2006-03-03 2008-12-24 Honda Motor Co., Ltd. Werkzeugmaschine und Verfahren zum Steuern einer Werkzeugmaschine
DE112007000528B4 (de) * 2006-03-03 2016-03-31 Honda Motor Co., Ltd. Werkzeugmaschine
JP2008003915A (ja) * 2006-06-23 2008-01-10 Denso Corp 電子機器
US8195885B2 (en) 2006-06-23 2012-06-05 Denso Corporation Electronic unit for saving state of task to be run in stack
JP2009301259A (ja) * 2008-06-12 2009-12-24 Fujitsu Microelectronics Ltd 情報処理システム、スタックオーバーフローの発生検出方法及びプログラム
JP2010182237A (ja) * 2009-02-09 2010-08-19 Nec Corp スタックトレース採取システム、方法およびプログラム

Similar Documents

Publication Publication Date Title
KR930000592B1 (ko) 타스크 추적장치
US3702006A (en) Method for balancing the utilization of input/output devices
US4812975A (en) Emulation method
US4495562A (en) Job execution multiplicity control method
US5274813A (en) Operation system having a migration function which moves saved data associated with an interrupted process to a different save area
US5911065A (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
EP1836569B1 (en) Interrupt control function adapted to control the execution of interrupt requests of differing criticality
JPS621036A (ja) マルチモ−ドマイクロプロセツサにおいてプログラムを実行する方法及びオペレ−テイングシステム
JP4241462B2 (ja) 制御ユニットおよびマイクロコンピュータ
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JPH03278135A (ja) スタックトレース装置
JPH065515B2 (ja) キャッシュ再ロード・オーバーヘッドを減少させる方法およびコンピュータ・システム
US6920513B2 (en) Bus management techniques
JP2697254B2 (ja) リアルタイム処理装置
JPH0668725B2 (ja) データ処理システムにおける割込条件に応答する装置及び非同期割込条件に応答する方法
KR100506254B1 (ko) 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법
US20200285472A1 (en) Context-Switching Method and Apparatus
JPH01154237A (ja) 時分割タスク実行装置
Baskin et al. A modular computer sharing systems
JP2525479B2 (ja) コマンド排他制御方法
US5794056A (en) System for automatic buffering of commands for DASD units
JP2007102399A (ja) データ処理装置
JP2000076095A (ja) プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JP2625272B2 (ja) マイクロコンピュータのプログラム・デバッグ装置
JPH0421892B2 (ja)