Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JPH07120301B2 - タスクデバッグ方法 - Google Patents
[go: Go Back, main page]

JPH07120301B2 - タスクデバッグ方法 - Google Patents

タスクデバッグ方法

Info

Publication number
JPH07120301B2
JPH07120301B2 JP63043743A JP4374388A JPH07120301B2 JP H07120301 B2 JPH07120301 B2 JP H07120301B2 JP 63043743 A JP63043743 A JP 63043743A JP 4374388 A JP4374388 A JP 4374388A JP H07120301 B2 JPH07120301 B2 JP H07120301B2
Authority
JP
Japan
Prior art keywords
task
state
tasks
debugger
wait
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.)
Expired - Fee Related
Application number
JP63043743A
Other languages
English (en)
Other versions
JPH01217525A (ja
Inventor
保 岩崎
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP63043743A priority Critical patent/JPH07120301B2/ja
Publication of JPH01217525A publication Critical patent/JPH01217525A/ja
Publication of JPH07120301B2 publication Critical patent/JPH07120301B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は多重プログラミング用オペレーティングシステ
ムに関し、特にタスクのデバッグ方法に関する。
〔従来の技術〕
情報処理装置においてその情報の処理は通常、プログラ
ムによって行われる。プログラムは情報を逐次に処理す
る。しかし、一般にプログラムは全ての処理が互に関係
しあい、逐次に処理される必要があるわけではない。プ
ログラムを各処理ごとのモジュールに分割し、それぞれ
を並行動作させて処理を行えば、処理速度は向上する。
このような考え方を『並行プログラミング』といい、各
処理に対応するプログラム・モジュールを『タスク』と
いう。これらのタスクは、オペレーティングシステム
(以下OSと略す)によって管理される。OSは、タスクの
状態等を考慮してタスクを選択しCPUを割当ててゆく。
タスクはそれぞれ並行して動作し、互に同期をとりデー
タを通信しながら処理を行って行く。
今、次のようなOSを考える。
OSのもとで動作するタスクは、第6図に示した状態遷移
を行うものとする。各状態は、次のような意味を持って
いる。
run…OSによってSPUが割当てられている状態。
ready…全ての条件がそろい、処理の実行が可能な状
態。
wait…条件が成立するのを持っている状態。
OSは、タスクをタスク・コントロール・ブロック(task
Control Block以下TCBと略す)によって管理する。TCB
には、OSがタスクを管理する上で必要な、優先順位、タ
スクの状態等の情報が格納されている。あるタスクが他
のタスクに対する操作をOSに要求する(システムコール
の発行)場合は、タスクを指定する値としてTCBアドレ
スを指定する。優先順位とは、OSがタスクを選択す基準
として各タスクに与えられているものである。OSは、
『ready』状態のタスクの中から一つを選択し、CPUを割
当てる。OSは『ready』状態のタスクのうち最も優先順
位の高いタスクにCPUを割当てる。
次に、このようなOSの管理化にあるタスクの動作を、第
7図を参照しながら説明する。簡単のために、タスクの
数は2つとしそれぞれ『タスクA』、『タスクB』と呼
ぶ。タスクの優先順位は、 タスクA>タスクB の関係にある。これらのタスクの処理は、セマフォによ
り互いに排除しあいながらI/Oの入出力を行うものとす
る。セマフォとは、オランダのDijkstraによって考案さ
れたタスク間の同期をとるための機構である。主にOSが
持つ資源のアクセスに関するタスク間の排他制御に用い
られる。本OSにおいては、OSの資源であるI/Oをアクセ
スする際の排他制御に用いている。
セマフォは、タスクからは直接操作することはできな
い。タスクがセマフォを操作するには、システムコール
の形でOSに要求を出す。
まず、セマフォを要求するシステムコールは『wai-se
m』である。このシステムコールにより、タスクはセマ
フォを獲得することができる。もし、セマフォが他のタ
スクに獲得されている場合は、このシステムコールを発
行したタスクは、第6図の状態遷移図に従い、『run』
状態から『wait』状態へ遷移する。
セマフォを返すシステムコールは『sig-sem』である。
このシステムコールによりタスクは、獲得しているセマ
フォをOSに返す。この時、セマフォを獲得できずに『wa
it』状態になっているタスクがあれば、この時点でセマ
フォを獲得でき、『ready』状態へと遷移する。
はじめに、2つのタスクA,Bは『ready』状態にある。優
先順位はタスクAの方が高いため、OSはタスクAにCPU
を割当てる(第7図の)。タスクAは、I/O入出力の
ため『wai-sem』システムコールによってセマフォを獲
得する。セマフォを獲得したタスクAは、I/Oとの同期
をとるために『wai-tsk』システムコールによって一定
時間『wait』状態に入る(第7図の)。タスクAが
『wait』状態に入ったことにより、OSはタスクBにCPU
を割当てる。タスクBは、タスクAと同様にI/Oの入出
力を行うために『wai-sem』システムコールを発行す
る。しかし、セマフォは、すでにタスクAが獲得してい
るために、タスクBは『wait』状態に遷移する(第7図
の)。2つのタスクA,Bが共に『wait』状態に入った
ことにより、CPUはタスクが割当てられていない状態に
入る(第7図の)。
指定時間が経過するとタスクAは、『wait』状態から
『ready』状態へ遷移し、I/O処理を再開する(第7図の
)。I/O処理が完了すると、タスクAは『sig-sem』シ
ステムコールによって、獲得していたセマフォをOSへ返
す。返されたセマフォは、セマフォが獲得できずに『wa
it』状態に遷移したタスクBに与えられる。この時点で
タスクBは、『ready』状態へ遷移する(第7図の
)。しかし、タスクBはタスクAが『ready』状態で
あるため、CPUは割当てられない。タスクAでの処理が
進み、他の要因でタスクAが『wait』状態に遷移する
と、タスクBのCPUが割当てられる(第7図の)。
以上のように、2つのタスクA,Bは互いに排除しあいな
がら処理を行う。
次に、上記のタスクA,Bを同じOS上でタスクとして実現
されているデバッガによってデバッグをすることを考え
てみる。デバッグの方法は、予め指定してある地点にタ
スクが到達すると『wait』状態にあるデバッガが起動さ
れ(『ready』状態に遷移させられる)、タスクを停止
させる(『wait』状態に遷移させる)方法を取る。この
ような地点を『ブレークポイント』という。
今、タスクAをセマフォを獲得する前にブレークポイン
トを設定する。その時のタスクの動作を第8図を参照し
ながら説明する。簡単のために、第8図では、デバッガ
の動作は省略してある。デバッガとタスクA、タスクB
の優先順位の関係は、次の通りである。
デバッガ>タスクA>タスクB 先程と同様、2つのタスクA,Bは『ready』状態にある。
デバッガは、コマンドが入力されるまで『wait』状態で
ある。『ready』状態のタスクのうち、優先順位はタス
クAの方が高いため、OSはタスクAにCPUを割当てる
(第8図の)。タスクAがブレークポイントに達する
と、デバッガが起動される。デバッガは、タスクAを
『wait』状態に遷移させる。タスクAが『wait』状態に
遷移したことにより、OSはタスクBにCPUを割当てる
(第8図の)。即ち、デバッガは、タスクAをwait状
態に遷移させた後、wait状態となる。タスクBは、I/O
入出力のため『wai-sem』システムコールを発行する。
タスクAはセマフォを獲得する前に『wait』状態に遷移
したため、タスクBはセマフォを獲得することができる
(第8図の)。セマフォを獲得したタスクBは、I/O
との同期をとるために『wai-tsk』システムコールによ
って『wait』状態に入る(第8図の)。この時、実行
継続のため、『wait』状態に遷移していたタスクAは、
デバッガによって『ready』状態に戻されたとする。タ
スクBは『wait』状態であるから、OSはタスクAにCPU
を割当てる(第8図の)。即ち、デバッガは、タスク
Aをready状態に遷移させた後、wait状態となる。タス
クAは『wai-sem』システムコールによってセマフォを
獲得しようとする。しかし、すでにタスクBがセマフォ
を獲得しているため、再び『wait』状態に遷移する(第
8図の)。
〔発明が解決しようとする課題〕
以上の動作説明で明らかなように、デバッグのためにタ
スクAを停止させた(『wait』状態にした)ことによ
り、タスクBがタスクAよりも先に処理を行うことにな
る。デバッグは本来、対象となるシステムに対して影響
を与えてはならないものである。しかし、従来の方法で
は、タスクの同期関係、実行順序というマルチタスク処
理において最低限守らなければならないことが崩れてい
る。このために、停止させたタスクの動作を継続する
と、他のタスクによって本来獲得できるはずの資源等が
ない等の状態になり、タスクの正常な処理が行われなく
なったりする。また、タスクBがセマフォを獲得した
後、タスクAから起動されるのを待つような構成になっ
ていると、タスクAはセマフォが返却されるのを待ち、
タスクBはセマフォを持ったままタスクAからの起動を
待つというような状態に入ってしまう。このような状態
を『デッドロック』いい、2つのタスクは無限の待ち状
態に入ってしまう。
〔課題を解決するための手段〕
本発明のタスクデバッグ方法は、オペレーティングシス
テム上で動作するタスクの中から複数個のタスクを指定
し、これら指定された複数個のタスクを登録しておき、
デバッグのために登録されている任意のタスクが停止さ
せられた時、登録されている他のタスク全てを同時に停
止させる。
〔作用〕
したがって、タスクの同期関係を維持することが可能に
なり、ブレークポイントで停止したタスクを再開した場
合、それ以後の処理も正常に行なわれる。
〔実施例〕
次に、本発明の実施例について図面を参照して説明す
る。
第1図は本発明のタスクデバッグ方法の第1の実施例
で、タスクAがブレークポイントに達した場合のデバッ
ガの処理のフローチャート、第2図は第1の実施例にお
けるグループ登録テーブル21とTCB22,23を示す図、第5
図はタスクA,Bの動作を示すタイムチャートである。
タスクの数、状態、ブレークポイントの位置等の条件
は、従来例の説明で用いたものと同じとする。今、ブレ
ークポイント到達時に停止させるタスク・グループにタ
スクAとタスクBが指定されたものとする。
第2図中、22.23はそれぞれタスクA,BのTCBであり、エ
リア26,28にはそれぞれTCB22,23の次にリンクされてい
るTCBのアドレスが格納され、エリア27,29にはそれぞれ
TCB22,23の一つ前にリンクされているTCBのアドレスが
格納され、グループ登録テーブル21にはデバッガ内にあ
って指定されたタスク(この場合、タスクA,B)のTCBの
アドレスが登録される。
次に、本実施例の動作を説明する。
まず、デバッガは、テーブル21にタスクAとタスクBの
TCBをリンクする。リンクは次のように行われる。
まず、格納エリア26にタスクBのTCBアドレスを、格納
エリア29にタスクAのTCBアドレスを格納する。格納エ
リア27と28には『0』を格納する。次に、タスクAのTC
Bアドレスを格納エリア24に、タスクBのTCBアドレスを
格納エリア25に格納する。以上のようにして、指定タス
クA,BのTCBリンクを形成し、デバッガは『wait』状態に
遷移する。
デバッガが『wait』状態に遷移したことにより、OSはタ
スクAにCPUを割当てる(第5図の)。タスクAがブ
レークポイントに達すると、デバッガが起動され。デバ
ッガはグループ登録テーブル21のアドレスを得(ステッ
プ11)、グループ登録テーブル21の格納エリア24からリ
ンクの先頭のTCBアドレスを得る(ステップ12)。この
アドレスはタスクAのものである。先ず、デバッガはタ
スクAを『wait』状態に遷移させる(ステップ13,1
4)。次に、格納エリア26を調べて、次にリンクされて
いるTCBのアドレスを得、0でないかどうかチェックす
る(ステップ15,16)。この場合、格納エリア26にはタ
スクBのTCBアドレスが格納されており、0ではないの
でデバッガはタスクBを『wait』状態に遷移させる(ス
テップ14,第5図の)。次に、TCB23の格納エリア28を
調べて、次にリンクされているTCBのアドレスを得、0
でないかどうかチェックする(ステップ15,16)。この
場合、格納エリア28には『0』が格納されているので、
デバッガはリンクを最後までたどったことになり、デバ
ッガは『wait』状態に入る(ステップ17)。
3つのタスク(デバッガ、タスクA、タスクB)が共に
『wait』状態に入ったことにより、CPUはタスクが割当
てられていない状態に入る(第5図の)。
ここで、実行継続の操作が行われたとする。デバッガは
ブレークポイントに達して『wait』状態に遷移させられ
たタスクAと、グループ指定によって『wait』状態に遷
移させられていたタスクBを『ready』状態に戻す(第
5図の)。デバッガは、上記の操作を行った後『wai
t』状態に入る。『ready』状態の2つのタスクA,Bのう
ち、タスクAの優先順位がタスクBのそれよりも高いた
め、OSはタスクAにCPUを割当てる(第5図の)。
以上のようにしてタスクAは、処理を再開する。
第3図は本発明のタスクデバッグ方法の第2の実施例
で、タスクAがブレークポイントに達した場合のデバッ
ガの処理のフローチャート、第4図は第1の実施例にお
けるブレークポイントテーブル41、TCB登録テーブル42
を示す図である。
なお、タスクの数,状態,ブレークポイントの位置の条
件は従来例の説明で用いたものと同じとする。タスクA,
Bの動作説明として第5図を用いる。
第4図中、TCB登録テーブル42のエリア45にはタスクの
登録数,エリア46,47にはTCBアドレスが格納され、ブレ
ークポイント格納テーブル41のエリア43にはブレークポ
イントアドレスが格納され、エリア44にはTCB登録テー
ブル42のアドレスが格納される。
次に、本実施例の動作を説明する。
ブレークポイントがセットされると、デバッガはブレー
クポイントアドレスをブレーポイント格納テーブル41の
格納エリア43に格納する。また、ブレークポイント到達
時に停止させるタスク・グループが指定されると、デバ
ッガはTCB登録テーブル42の格納エリア45に登録するタ
スク数(=2)を、格納エリア46と47にそれぞれタスク
AとタスクBのTCBアドレスを格納する。そして、グレ
ークポイント格納テーブル41の格納エリア44にTCB登録
テーブル42のアドレスを格納する。この処理の後、デバ
ッガは『wait』状態に遷移する。
デバッガが『wait』状態に遷移したことにより、OSはタ
スクAにCPUを割当てる(第5図の)。タスクAがブ
レークポイントに達すると、デバッガが起動される。デ
バッガは、格納エリア44からTCB登録テーブル42のアド
レスを得(ステップ31)、格納エリア45からタスクの登
録数(=2)を得る(ステップ32)。次に、TCB登録テ
ーブル42のエリア46からタスクAのTCBアドレスを得
(ステップ34)、タスクAを『wait』状態に遷移させる
(ステップ35、第5図の)。次に、登録数を1デクリ
メントし(ステップ36)、TCB登録テーブル42のエリア4
7からタスクBのTCBのアドレスを得(ステップ34)、タ
スクBを『wait』状態に遷移させる(ステップ35,第5
図の)。次に、登録数を1デクリメントすると(ステ
ップ36)、登録数が0になるので、デバッガは『wait』
状態に入る(ステップ33,37)。
3つのタスク(デバッガ、タスクA、タスクB)が共に
『wait』状態に入ったことにより、CPUはタスクが割当
てられていない状態に入る(第5図の)。
ここで、実行継続の操作が行われたとする。デバッガは
ブレークポイントに達して『wait』状態に遷移させられ
たタスクAと、グループ指定によって『wait』状態に遷
移させられていたタスクBを『ready』状態に戻す(第
5図の)。デバッガは、上記の操作を行った後『wai
t』状態に入る。『ready』状態の2つのタスクA,Bのう
ち、タスクAの優先順位がタスクBのそれよりも高いた
め、OSはタスクAにCPUを割当てる(第5図の)。
以上のようにしてタスクAは処理を再開する。
〔発明の効果〕
以上説明したように本発明は、ブレークポイントによっ
てあるタスクが停止した時、予め指定されているブレー
クポイントを設定されたタスクに関係あるタスクを同時
に停止させることにより、従来の方法では不可能だった
タスクの同期関係を維持することが可能となり、ブレー
クポイントで停止したタスクを再開した場合、それ以降
の処理も正常に行われ、また、タスク間の同期関係を維
持するためにシステム全体を停止させる方法と異なり、
ブレークポイントを設定したタスクの処理と全く関係な
い処理を行っているタスクに影響を与えることが無く、
さらに、指定するタスクのグループを複数個可能にする
と、複数のブレークポイントが設定されている場合、そ
れぞれのブレークポイント付近で関係するタスクを細か
く指定でき、デバッグの効率を上げることができる効果
がある。
【図面の簡単な説明】
第1図は本発明のタスクデバッグ方法の第1の実施例
で、タスクAがブレークポイントに達した場合のデバッ
ガの処理のフローチャート、第2図は第1の実施例にお
けるグループ登録テーブル21とTCB22,23を示す図、第3
図は本発明のタスクデバッグ方法の第2の実施例で、タ
スクAがブレークポイントに達した場合のデバッガの処
理のフローチャート、第4図は第1の実施例におけるブ
レークポイント格納テーブル41、TCB登録テーブル42を
示す図、第5図は第1,第2の実施例におけるタスクA,B
の動作を示す図、第6図はオペレーティングシステム上
のタスクの状態遷移を示す図、第7図は通常の場合の2
タスクの動作を示す図、第8図は従来のデバッグ方法を
用いた場合の2タスクの動作を示す図である。 11〜17,31〜37……ステップ、21……グループ登録テー
ブル、22,23……TCB、24〜29……エリア、41……ブレー
クポイント格納テーブル、42……TCB登録テーブル、43
〜47……エリア。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】多重プログラミング用オペレーティングシ
    ステムにおけるタスクデバッグ方法において、前記オペ
    レーティングシステム上で動作するタスクの中から複数
    個のタスクを指定し、これら指定された複数個のタスク
    を登録しておき、デバッグのために登録されている任意
    のタスクが停止させられた時、登録されている他のタス
    ク全てを同時に停止させることを特徴とする、タスクデ
    バッグ方法。
JP63043743A 1988-02-25 1988-02-25 タスクデバッグ方法 Expired - Fee Related JPH07120301B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63043743A JPH07120301B2 (ja) 1988-02-25 1988-02-25 タスクデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63043743A JPH07120301B2 (ja) 1988-02-25 1988-02-25 タスクデバッグ方法

Publications (2)

Publication Number Publication Date
JPH01217525A JPH01217525A (ja) 1989-08-31
JPH07120301B2 true JPH07120301B2 (ja) 1995-12-20

Family

ID=12672245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63043743A Expired - Fee Related JPH07120301B2 (ja) 1988-02-25 1988-02-25 タスクデバッグ方法

Country Status (1)

Country Link
JP (1) JPH07120301B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2856681B2 (ja) * 1994-01-27 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 外部事象を処理する方法およびシステム

Also Published As

Publication number Publication date
JPH01217525A (ja) 1989-08-31

Similar Documents

Publication Publication Date Title
US6675191B1 (en) Method of starting execution of threads simultaneously at a plurality of processors and device therefor
US6463532B1 (en) System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources
US7080377B2 (en) Method for effective utilizing of shared resources in computerized system
EP0221274A2 (en) Method for ensuring switchover in a restartable data base system
US5748959A (en) Method of conducting asynchronous distributed collective operations
JPH0644235B2 (ja) コンピュータ・システムを操作する方法
JPH04229355A (ja) データアクセス方法及びデータ処理システム
US6507809B1 (en) Method and system for simulating performance of a computer system
JP3113841B2 (ja) 並列トランザクション処理システム
US20210303403A1 (en) Transaction processing method, apparatus, and electronic device for blockchain
US8225320B2 (en) Processing data using continuous processing task and binary routine
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
US11106395B2 (en) Application execution apparatus and application execution method
US8117626B2 (en) Asynchronous remote procedure calling method and computer product in shared-memory multiprocessor
CN112363816B (zh) 嵌入式多核操作系统确定性调度方法、系统及介质
JPH07120301B2 (ja) タスクデバッグ方法
JPH07120302B2 (ja) タスクデバッグ方式
JP3006676B2 (ja) マルチプロセッサ
JPH07281915A (ja) 集積回路モジュール同期2重系情報処理装置
JPH1049397A (ja) 試験プログラム実行制御方法
CN118672203B (zh) 一种基于共享内存的PLCopen运动控制功能块交互方法及系统
CN117687805B (zh) 一种应用于plc与装置的多线程数据同步方法及系统
KR100678249B1 (ko) 아이피시 타스크 및 메모리의 관리 장치 및 방법
JPS62219058A (ja) 共有メモリの排他制御方式
CN120144255A (zh) 一种多任务调度方法和plc控制器

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees