JPH04273535A - マルチタスク制御方式 - Google Patents

マルチタスク制御方式

Info

Publication number
JPH04273535A
JPH04273535A JP3387791A JP3387791A JPH04273535A JP H04273535 A JPH04273535 A JP H04273535A JP 3387791 A JP3387791 A JP 3387791A JP 3387791 A JP3387791 A JP 3387791A JP H04273535 A JPH04273535 A JP H04273535A
Authority
JP
Japan
Prior art keywords
task
state
execution
deadlock
detection flag
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
JP3387791A
Other languages
English (en)
Inventor
Takako Mori
毛利 孝子
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 Solution Innovators Ltd
Original Assignee
NEC Solution Innovators Ltd
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 Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP3387791A priority Critical patent/JPH04273535A/ja
Publication of JPH04273535A publication Critical patent/JPH04273535A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理システムにおけ
るマルチタスク制御方式に関し、特に一つのジョブを構
成する複数タスク間のデッドロック状態を検出するマル
チタスク制御方式に関する。
【0002】
【従来の技術】マルチタスク処理では、一つのジョブを
構成する複数タスク間での排他制御および同期化制御が
頻繁に行われる。排他制御および同期化制御にプログラ
ムミスがあると、そのマルチタスク処理プログラム全体
がデッドロック状態(ストール状態)になることがある
【0003】従来のマルチタスク制御方式は、マルチタ
スク処理プログラムの排他制御や同期化制御のプログラ
ムミスにより発生するデッドロックを検出する手段を備
えていなかった。このため、デッドロックが発生してい
るかどうかをオペレータが判断し、オペレータの入力す
るコマンドによりデッドロックが発生したマルチタスク
処理プログラム全体を強制終了させていた。
【0004】
【発明が解決しようとする課題】上述の従来のマルチタ
スク制御方式は、マルチタスク処理プログラムのデッド
ロック状態を検出する手段を備えていないため、オペレ
ータがデッドロック状態かどうかを判断しなければなら
ずオペレータの能力によっては発明が遅れてしまうとい
う問題点がある。
【0005】本発明の目的は、デッドロックを確実に検
出できるマルチタスク制御方式を提供することにある。
【0006】
【課題を解決するための手段】本発明のマルチタスク制
御方式は、マルチタスクジョブを構成する各々のタスク
の実行状態から待機状態および待機状態から実行状態へ
の状態遷移が前記マルチタスクジョブ内の他のタスクの
実行に起因して発生する事象にのみ依存するマルチタス
クジョブにおいて、存在するタスク数をジョブ単位に保
持するタスクカウンタと、各々のタスクが実行可能ある
いは実行状態であることをタスク単位に表示するデッド
ロック検出フラグとを主記憶装置のユーザ領域内に有し
、タスク生成時およびタスク実行終了時に前記タスクカ
ウンタを更新する手段と、前記タスク生成時およびタス
ク実行終了時と各々のタスクが待機状態から実行可能状
態に遷移するときおよび実行状態から待機状態に遷移す
るときとに前記デッドロック検出フラグを更新する更新
手段と、前記更新手段による更新結果によって存在する
全タスクが待機状態に遷移したことを認識する手段とを
設けることにより、デッドロック状態を検出する構成で
ある。
【0007】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。なお、本明細書で使用する『タスクの待機
状態』とは、このタスクが実行可能状態になるために他
のタスクの実行に依存するような状態をいう。(I/O
待ち等は含まない)図3は本発明の一実施例の主記憶装
置内の構成を説明する説明図である。
【0008】主記憶装置1はシステム領域11とユーザ
領域12に分けられる。
【0009】システム領域11には、タスクの実行を管
理するための実行待行列111と待機状態のタスクを管
理する待機中待行列112とがある。又、実行待行列1
11と待機中待行列112とには、それぞれタスクの識
別を表わすタスク識別番号1111,1121がセット
される。
【0010】ユーザ領域12はさらに、同一マルチタス
クグループから共通にアクセスされるタスクグループ共
通領域とタスクごとに用意されるタスク個別領域に分け
られる。タスクグループ共通領域には、マルチタスクプ
ログラムの制御情報の集りであるTGCB(TASK 
 GROUP  CONTROL  BLOCK)12
1、タスク間の同期を取るためのセマフォ123がある
。TGCB121には起動後、まだ実行を終了していな
いタスクの数を表わすタスクカウンタ1211とタスク
毎に実行可能状態または実行状態であることを示すデッ
ドロック検出フラグ1212とが含まれる。TGCB1
21は、マルチタスクプログラムの実行開始前にオペレ
ーティングシステムにより初期設定され、特にタスクカ
ウンタ1211およびデッドロック検出フラグ1212
には「0」がセットされる。セマフォ123には、イベ
ントの状態を表わすステータスワード1231と待機中
待行列ポインタ1232とが含まれる。イベント状態に
は、イベント通知状態(=1)とイベントが存在しない
状態(=0)の2種類が存在する。待機中待行列ポイン
タ1232には、イベント待ちタスクが存在しないとき
「0」、イベント待ちタスクが存在するとき待機中待行
列112内の先頭タスクへのポインタが設定される。タ
スク個別領域には、タスクに関する制御情報の集りであ
るTCB(TASKCONTROL  BLOCK)1
22がある。TCB122内には、TGCB121への
ポインタ1221がセットされている。
【0011】図4は実行待行列および待機中待行列につ
ながれているタスクとTGCBに含まれるデッドロック
検出フラグとの関係を示す対応図である。
【0012】実行待行列111および待機中待行列11
2につながれているタスクは、タスク識別番号1111
および1121ごとに、デッドロック検出フラグ121
2の各ビットに対応している。このタスクが待機状態で
あれば、デッドロック検出フラグ1212の対応するビ
ットは「0」を、実行可能状態または実行状態であれば
「1」を保持する。又、存在しないタスクに対応するビ
ットは、初期設定された値「0」のままである。
【0013】図5はタスク起動処理の流れ図である。
【0014】タスク起動時に、タスクカウンタ1211
を「+1」し(ステップ31以下S31と記す)、タス
ク識別番号1111に対応するデッドロック検出フラグ
1212に「1」をセットする(S32)。  図6は
タスク実行終了処理の流れ図である。
【0015】タスク実行終了処理時に、タスクカウンタ
1211を「−1」し(S41)、該タスク識別番号1
111に対応するデッドロック検出フラグ1212をリ
セットする(S42)。S41での更新の結果、タスク
カウンタ1211が「0」であるか判定し(S43)、
「0」であればプログラム全体の終了処理を行なう。 「0」でなければS42での更新の結果、デッドロック
検出フラグ1212が「0」であるか判定し(S44)
、「0」であれば待機状態で実行を終了していないタス
クが存在することを意味し、デッドロック状態に陥った
ことを検出する。この場合、待機状態のタスクは再び実
行可能状態となることはないので、オペレーティングシ
ステムによりこのマルチタスクグループ全体を強制終了
させる(S45)。デッドロック検出フラグ1212が
「0」でなければ、このタスクのみの終了処理を行う。
【0016】図7はイベント待ち処理の流れ図である。
【0017】イベント待ち処理では、セマフォ123の
ステータスワード1231を読取り(S51)、ステー
タスワード1231の状態を判定する(S52)。イベ
ントが通知されていなければ、すなわちステータスワー
ド1231が「0」であれば、このタスクは実行状態か
ら待機状態に遷移し、待機中待行列112にエンキュさ
れる。このとき、セマフォ123内の待機中待行列ポイ
ンタ1232が「0」であれば、該ポインタが前記タス
クを指すように設定される。該ポインタが「0」でなけ
れば、待機中待行列112の最終タスクとして前記タス
クがエンキュされる(S53)。さらに、前述のタスク
のタスク識別番号1121に対応するデッドロック検出
フラグ1212をリセットする(S54)。次にS54
での更新結果によりデッドロック検出フラグ1212が
「0」あるか判定し(S55)、「0」であれば実行を
終了していないタスクが全て待機状態に遷移したことを
意味し、デッドロック状態に陥ったことを検出する。こ
の場合、待機状態のタスクは再び実行可能状態となるこ
とはないので、オペレーティングシステムによりこのマ
ルチタスクグループ全体を強制終了させる(S56)。 デッドロック検出フラグ1212が「0」でなければ、
イベント待ち処理を終了し別タスクを起動する。又、S
52においてイベントが通知されている状態、すなわち
セマフォ123のステータスワード1231が「0」で
なければ、このタスクはイベント待ち処理を終了し、継
続実行する。
【0018】図8はイベント通知処理の流れ図である。
【0019】イベント通知処理では、セマフォ123の
ステータスワード1231をイベント通知状態にし(S
61)、イベント待ちのタスクがあるかを判断し(S6
2)、このイベントを待ち合わせているタスクがあれば
実行可能状態にする。すなわち、セマフォ123内の待
機中待行列ポインタ1232が「0」でなければ、ポイ
ンタ1232が指すタスクを含むイベント待ち状態の全
タスクを待機中待行列112からデキュし、実行待行列
111にエンキュする(S63)。さらに、ステップ6
3で実行可能状態にした全タスクについて、各々のタス
ク識別番号1111に対応するデッドロック検出フラグ
1212を「1」をセットする(S64)。さらに、前
記待機中待行列ポインタ1232を「0」にする(S6
5)。一方、S62においてイベント待ちタスクが存在
しなければ、すなわちセマフォ123内の待機中待行列
ポインタ1232が「0」であれば、イベント通知処理
を終了する。
【0020】図1および図2はマルチタスキングプログ
ラムを実行した時のタスクカウンタ1211およびデッ
ドロック検出フラグ1212の変化を示した一実施例の
説明図である。
【0021】次に図3および図5ないし図8を参照し、
図2に示すデッドロックが検出されない場合の例につい
て説明する。
【0022】タスク1(タスク識別番号1)が起動され
ると、タスク起動処理(図5)により(S71)、タス
クカウンタ1211が「+1」され、タスク識別番号1
111に対応するデッドロック検出フラグ1212には
「1」がセットされる。
【0023】タスク2(タスク識別番号2)が起動され
ると、同様にタスク起動処理(図5)により(S72)
、タスクカウンタ1211が「+1」される。この結果
、タスクカウンタ1211は「2」となる。又、タスク
識別番号1111に対応するデッドロック検出フラグ1
212には「1」がセットされる。
【0024】タスク1がイベント要求を行なうと、イベ
ント待ち処理(図7)により(S73)、タスク識別番
号1121に対応するデッドロック検出フラグ1212
がリセットされる。この時、デッドロック検出フラグ1
212が「≠0」なのでデッドロックは検出されない。
【0025】タスク2がイベント通知を行なうと、イベ
ント通知処理(図8)により(S74)、タスク識別番
号1111に対応するデッドロック検出フラグ1212
に「1」がセットされる。タスク1は、実行可能状態と
なり実行が再開される。
【0026】タスク2の実行が終了すると、タスク実行
終了処理(図6)により(S75)、タスクカウンタ1
211が「−1」され、又、タスク識別番号1111に
対応するデッドロック検出フラグ1212がリセットさ
れる。この時、デッドロック検出フラグ1212が「≠
0」なので、デッドロックは検出されない。
【0027】タスク1の実行が終了すると、タスク実行
終了処理(図6)により(S76)、タスクカウンタ1
211が「−1」され、又、タスク識別番号1111に
対応するデッドロック検出フラグ1212がリセットさ
れる。この時、タスクカウンタ1211が「0」なので
、プログラム全体の終了となりデッドロックは検出され
ない。
【0028】次に図3および図5ないし図8を参照し、
図1に示すデッドロックが検出される場合の例について
説明する。
【0029】タスク1(タスク識別番号1)が起動され
ると、タスク起動処理(図5)により(S81)、タス
クカウンタ1211が「+1」され、タスク識別番号1
111に対応するデッドロック検出フラグ1212には
「1」がセットされる。
【0030】タスク2(タスク識別番号2)が起動され
ると、同様にタスク起動処理(図5)により(S82)
、タスクカウンタ1211が「+1」される。この結果
、タスクカウンタ1211は「2」となる。又、タスク
識別番号1111に対応するデッドロック検出フラグ1
212には「1」がセットされる。
【0031】タスク1がイベント待ち要求を行なうと、
イベント待ち処理(図7)により(S83)、タスク識
別番号1121に対応するデッドロック検出フラグ12
12がリセットされる。この時、デッドロック検出フラ
グ1212が「≠0」なので、デッドロックは検出され
ない。
【0032】この状態でもしタスク2もイベント待ち要
求を行なったとすると、イベント待ち処理(図7)によ
り(S84)、タスク識別番号1121に対応するデッ
ドロック検出フラグ1212がリセットされ、この結果
、デッドロック検出フラグ1212は「0」となりデッ
ドロックが検出される。デッドロックが検出されると、
このマルチタスクグループの全タスク(この場合、タス
ク1およびタスク2)が強制終了される(S85)。
【0033】タスクカウンタ1211,デッドロック検
出フラグ1212、およびセマフォ123へのアクセス
は、マルチプロセッサ間で排他制御される。
【0034】
【発明の効果】以上説明したように本発明は、オペレー
ティングシステムのタスク管理機能にデッドロック検出
機能を設けることにより、デッドロックを確実に検出で
きるという効果がある。
【図面の簡単な説明】
【図1】マルチタスキングプログラムの実行でデッドロ
ックが検出された場合の一実施例の説明図である。
【図2】マルチタスキングプログラムの実行でデッドロ
ックが検出されなかった場合の一実施例の説明図である
【図3】本発明の一実施例の主記憶装置内の構成を説明
する説明図である。
【図4】タスク識別番号とデッドロック検出フラグの対
応図である。
【図5】タスク起動処理の流れ図である。
【図6】タスク実行終了処理の流れ図である。
【図7】イベント待ち処理の流れ図である。
【図8】イベント通知処理の流れ図である。
【符号の説明】
1    主記憶装置 11    システム領域 12    ユーザ領域 111    実行待行列 112    待機中待行列 121    TGCB(TASK  GROUP  
CONTROL  BLOCK) 122    TCB(TASK  CONTROL 
 BLOCK) 123    セマフォ 1111    実行タスク識別番号 1121    待機中タスク識別番号1211   
 タスクカウンタ 1212    デッドロック検出フラグ1221  
  TGCBポインタ 1231    ステータスワード

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  マルチタスクジョブを構成する各々の
    タスクの実行状態から待機状態および待機状態から実行
    状態への状態遷移が前記マルチタスクジョブ内の他のタ
    スクの実行に起因して発生する事象にのみ依存するマル
    チタスクジョブにおいて、存在するタスク数をジョブ単
    位に保持するタスクカウンタと、各々のタスクが実行可
    能あるいは実行状態であることをタスク単位に表示する
    デッドロック検出フラグとを主記憶装置のユーザ領域内
    に有し、タスク生成時およびタスク実行終了時に前記タ
    スクカウンタを更新する手段と、前記タスク生成時およ
    びタスク実行終了時と各々のタスクが待機状態から実行
    可能状態に遷移するときおよび実行状態から待機状態に
    遷移するときとに前記デッドロック検出フラグを更新す
    る更新手段と、前記更新手段による更新結果によって存
    在する全タスクが待機状態に遷移したことを認識する手
    段とを設けることにより、デッドロック状態を検出する
    ことを特徴とするマルチタスク制御方式。
JP3387791A 1991-02-28 1991-02-28 マルチタスク制御方式 Pending JPH04273535A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3387791A JPH04273535A (ja) 1991-02-28 1991-02-28 マルチタスク制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3387791A JPH04273535A (ja) 1991-02-28 1991-02-28 マルチタスク制御方式

Publications (1)

Publication Number Publication Date
JPH04273535A true JPH04273535A (ja) 1992-09-29

Family

ID=12398749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3387791A Pending JPH04273535A (ja) 1991-02-28 1991-02-28 マルチタスク制御方式

Country Status (1)

Country Link
JP (1) JPH04273535A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530737A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) イベントベースシステムの同時処理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530737A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) イベントベースシステムの同時処理

Similar Documents

Publication Publication Date Title
US5923833A (en) Restart and recovery of OMG-compliant transaction systems
US7089561B2 (en) Methods and systems for creating and communicating with computer processes
US9229789B2 (en) Transparent user mode scheduling on traditional threading systems
US7797706B2 (en) Method and apparatus for thread-safe handlers for checkpoints and restarts
US6101524A (en) Deterministic replay of multithreaded applications
JP5270268B2 (ja) 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体
US6212578B1 (en) Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
US6000046A (en) Common error handling system
US20030233485A1 (en) Event queue
US20090328041A1 (en) Shared User-Mode Locks
JPH1049381A (ja) 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
JPH0644195A (ja) 結合式データ処理システム用の方法および装置
JP2001514778A (ja) メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法
US7219348B2 (en) Detecting and causing latent deadlocks in multi-threaded programs
US7275247B2 (en) Method and apparatus for handling threads in a data processing system
CN110716793A (zh) 一种分布式事务的执行方法、装置、设备及存储介质
US20100262972A1 (en) Deadlock avoidance
US6857085B1 (en) Method and system for handling an unexpected exception generated by an application
US7950014B2 (en) Detecting the ready state of a user interface element
WO2024027057A1 (zh) 一种数据回滚方法、装置、设备及其存储介质
JPH04273535A (ja) マルチタスク制御方式
CN111475300A (zh) 一种多线程多任务管理方法及终端
JPH0922369A (ja) マルチタスキング方式のカーネルにおける不正動作検出方法
KR19980049353A (ko) 분산 트랜잭션의 회복방법
JP2713218B2 (ja) チェックポイント/リスタート処理方式