JP4056465B2 - マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置 - Google Patents

マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置 Download PDF

Info

Publication number
JP4056465B2
JP4056465B2 JP2003413982A JP2003413982A JP4056465B2 JP 4056465 B2 JP4056465 B2 JP 4056465B2 JP 2003413982 A JP2003413982 A JP 2003413982A JP 2003413982 A JP2003413982 A JP 2003413982A JP 4056465 B2 JP4056465 B2 JP 4056465B2
Authority
JP
Japan
Prior art keywords
thread
execution
kernel
request
threads
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
JP2003413982A
Other languages
English (en)
Other versions
JP2004213637A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004213637A publication Critical patent/JP2004213637A/ja
Application granted granted Critical
Publication of JP4056465B2 publication Critical patent/JP4056465B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置に関する。詳しく言えば、本発明は、標準のPOSIX機構を使用して個々のスレッドの中断(suspension)及び再開(resumption)を制御するための方法及び装置に関する。
マルチスレッド・アプリケーションは、最新のコンピュータ・システム、特に、UNIX(登録商標)ベースのオペレーティング・システムを使用するシステムにおける周知の機能である。マルチスレッド・アプリケーションは複数の実行スレッドを有し、それらスレッドの各々は同じアプリケーションにおける他のスレッドに比較的無関係に個々のタスクを遂行することが可能である。例えば、サーバ・プロセスの個々のスレッドは、種々のクライアントから受けた作業の処理単位となり得る。
信号は、そのようなプロセス及びスレッドが相互にコミュニケーションを行うために使用する手段の1つである。そのプロセス・レベルでは、信号は、プロセス間通信(IPC)における周知の手段であり、IPCに関しては、例えば、W.R.Stevens 著の「UNIX Network Programming(1990)」の43−53ページに説明されている。この文献で説明されているように、信号は事象(event)が生じたことをプロセスに通知するものである。信号は、実行の終了(例えば、SIGKILL、SIGTERM)、実行の中断(SIGSTOP)、又は中断したプロセスの実行回復(SIGCONT)のようなアクションを開始し得る。プロセスは、信号を他のプロセスに送るために、オペレーティング・システム・カーネルのサービスを使用して信号を生成し、それを意図した受信者に送る。従って、IBMz/OSオペレーティング・システムのUNIX System Services(USS)コンポーネントによって定義されたUNIXシステムでは、プロセスは、信号をプロセスにおけるために、ターゲット・プロセス及び送られるべき信号を指定する kill()サービス・リクエストをカーネルに送出(issue)し得る。これは、IBM刊行物「z/OS UNIX System Services Programming : Assembler Callable Services Reference, SA22-7803-02(March 2002)」及び「z/OS C/C++ Run-Time Library Reference, SA22-7821-02(March 2002)」のような参考文献に開示されている。
ターゲット・プロセスが信号を受け取ったときに取るアクションは、上述のように、その問題の信号に依存する。一般に、信号を受け取るプロセスは、いくつかの事項の1つを行うことができる。それは、ターゲット・プロセスによって決定される特定の機能を遂行するためのシグナル・ハンドラとして知られたルーチンにコントロールを渡すことによって信号を「捕捉(catch)する」ことができる。それとは別に、ターゲット・プロセスは、受け取った信号が無視することができないSIGKILL又はSIGSTOPのような信号ではない場合には、その信号を簡単に無視することができる。結局、ターゲット・プロセスは、プロセス終了のようなデフォルト・アクションを生じさせ得る。
信号は、プロセス間のみならず、単一プロセスにおける種々のスレッド間においても送られ得る。従って、IBMz/OSオペレーティング・システムのUNIX System Services コンポーネントでは、或るプロセスの特定のスレッドに信号を送るために、同じプロセスの起点スレッドがターゲット・スレッド及び送られるべき信号を指定する pthread_kill() サービス・リクエストをカーネルに送出し得る。ここでも、ターゲット・スレッドによって取られるアクションは、それが受け取った特定の信号に依存する。
スレッド及び信号に関する背景の説明に関連して、本発明により処理される問題点に触れることにする。通常のマルチスレッドUNIXアプリケーションでは、ユーザは、そのユーザが個々のスレッドを安全に停止し得る方法を制限されている。現在のPOSIXセマンティックスは、プロセス全体(すべてのスレッド)がSIGSTOP、SIGTTOU、SIGTTIN、又はSIGTSTP信号を介して停止させられることを可能にするだけである。これは、たとえ、「停止」信号が pthread_kill() サービスを介して個々のスレッドに向けられる場合でも真である。同様に、SIGCONT信号は、マルチスレッド停止済みプロセスにおけるすべてのスレッドを継続するであろう。これらの既存のPOSIX信号機構は、いずれも、マルチスレッド・アプリケーションが個々のスレッドを停止ことも開始することも可能にするものではない。
個々のタスク又はスレッドの実行を管理するための既存の機構が存在する。例えば、UNIXシステムには、条件変数(condition variable)及びおそらく最も広範に使用されているmutexサービスとスレッドが相互に直列化することを可能にするサービスが存在する。しかし、これらのサービスは、連携ロジックがターゲット・スレッドにおける所定位置にあることを必要とする。
W.R.Stevens 著「UNIX Network Programming(1990)」の43−53ページ IBM刊行物「z/OS UNIX System Services Programming : Assembler Callable Services Reference, SA22-7803-02(March 2002)」 IBM刊行物「z/OS C/C++ Run-Time Library Reference, SA22-7821-02(March 2002)」
一般に、本発明は、オペレーティング・システム(OS)カーネルと複数の実行スレッドを有するユーザ・プロセスとを有する情報処理システムにおいて個別ベースでスレッドの中断及び再開を管理するための方法及び装置に関する。
本発明によれば、OSカーネルは、ユーザ・プロセスの指定されたターゲット・スレッドの実行状態を変更するためのリクエストをスレッドの1つから受けたことに応答して、ユーザ・プロセスにおける指定されたターゲット・スレッドに信号を送り、ユーザ・プロセスにおける如何なる未指定スレッドにも信号を送ることなく又はその実行状態を変更することなく、指定されたターゲット・スレッドの実行状態を変更させる。
本発明は、個々のスレッドを停止及び開始する機能をマルチスレッド・アプリケーションに与える。POSIX信号機構を使用してこの新しい機能を提供するために、1つの実施例では、起点のスレッドがサービス・リクエストをOSカーネルに送出して指定の信号(スレッド停止又はスレッド継続)を同じプロセス内の指定ターゲット・スレッドに送り、ターゲット・スレッドの実行を中断又は再開させる。従って、ターゲット・スレッドの実行を中断するためのスレッドからのリクエストに応答して、OSカーネルがスレッド停止信号をターゲット・スレッドに送り、正常に実行しているプログラム部分から信号割り込みルーチン(signal interrupt routine ? SIR)へターゲット・スレッドにおけるコントロールを移させる。信号割り込みルーチンは、コントロールを得ると,サービス・リクエストをカーネルに送出してターゲット・スレッドを停止させる。同様に、ターゲット・スレッドの実行を再開するためのスレッドからのリクエストに応答して、OSカーネルがスレッド継続信号をターゲット・スレッドに送り、待機しているターゲット・スレッドをポスト(post)させて、コントロールを信号割り込みルーチンに戻させる。信号割り込みルーチンは、再びコントロールを得ると、コントロールをプログラムに割り込みポイントにおいて戻す。
本発明の望ましい実施例では、2つの信号、即ち、SIGTHSTOP(スレッド停止)及びSIGTHCONT(スレッド継続)が定義され、pthread_kill() サービスがSIGTHSTOP又はSIGTHCONT信号をターゲット・スレッドに送るために使用される。(サービス及び信号の名称はもちろん任意であり、同等の機能が遂行されるならば他の任意の名称を使用してもよい)。これらの2つの新しい信号は、それらのアクションの範囲がターゲット・スレッドに限定されることを除けば、全体的には、上記のSIGSTOP及びSIGCONTと同様に作用する。
POSIX信号サービスは広範に使用されており、UNIXプログラマはこれを十分に理解している。スレッド実行を管理するタスクに信号ベースのソリューションを施すことによって、まったく同様のプロセスがSIGSTOP及びSIGCONTによって管理されるので、本発明はUNIX型のプログラミングに十分に適合する。この意味で信号を使用することは、更なるターゲット・スレッド・アプリケーション・ロジックがなくても「制御」スレッドが同じプロセスにおける1つ又はそれ以上のスレッドを管理することを可能にする。ターゲット・スレッドは、POSIXプロセスが通常に停止及び継続されるのと同様に、非同期的に停止及び継続され得る。また、プロセスを停止及び継続するための既存のセマンティック場合のように、スレッドの停止及び継続がターゲット・スレッドの機能を崩壊させることはない。しかも、上記の条件変数及びmutexサービスとは対照的に、本発明は、連携論理(cooperative logic)がターゲット・スレッドにおける所定位置にある必要がない。
図1は、本発明を組み込んだコンピュータ・システム10におけるソフトウェア・コンポーネントの概略的なブロック図である。ソフトウェア・コンポーネントを実行するハードウェアは通常のものであり、従って、図示されていない。システム10では、オペレーティング・システム(OS)カーネル12並びに少なくとも第1スレッド16(スレッド1)及び第2スレッド18(スレッド2)を含むユーザ・プロセス14が実行される。OSカーネル12は、IBM eサーバ zシリーズ・サーバ(図示されてない)において実行されるIBM z/OSオペレーティング・システムのUNIX System Services コンポーネントのようなUNIXカーネルであってもよい。しかし、本発明は、UNIXカーネルを有するシステムに限定されない。上記の背景技術の項で記述したように、OSカーネル12は、指定された信号を指定されたターゲット・プロセスに送るための kill() サービス及び指定された信号を指定されたターゲット・スレッドに送るための pthraed_kill() サービスのようなシステム・サービスを遂行する。
本発明に従って、2つの新しいスレッド・スコープ(thread-scoped)信号SIGTHSTOP及びSIGTHCONTが与えられる。予備的事項として、これらの信号を導入する方法、これらの信号のシンタックス、及びセマンティックスを簡単に説明することにする。
スレッド停止信号に関して、シンタックスは:
pthread_kill(thread_id, sigthstop)
である。但し、thread_id は、(プロセス内の)ターゲット・スレッドの一意的な識別子であり、sigthstop は、SIGTHSTOP信号と一意的に関連付けられた値である。同様に、スレッド継続信号に関して、シンタックスは:
pthread_kill(thread_id, sigthcont)
である。但し、thread_id は、ターゲット・スレッドの一意的な識別子であり、sigthcont は、SIGTHCONT信号と一意的に関連付けられた値である。
信号SIGTHSTOP及びSIGTHCONTは、pthread_kill()サービスを使用して送られる。それらの信号は、プロセス全体よりもむしろ単一のスレッドの有効範囲を有する。従って、サービス・リクエスト pthread_kill(thread_id, sigthstop) は、thread_id によって指定されたスレッドを停止させるであろう。一方、サービス・リクエスト pthread_kill(thread_id, sigthcont) は、指定されたスレッドを再開させるであろう。
次に、本発明の信号の導入を説明することにする。以下の例では、スレッド18が起点スレッドであり、スレッド16がターゲット・スレッドであると仮定するが、一般には、ユーザ・プロセス14におけるいずれのスレッドも、本願に開示された方法で同じユーザ・プロセスにおける他の任意のスレッドをターゲットとすることが可能である。ターゲット・スレッド16は、正常に実行しているプログラム部分20、信号割り込みルーチン(SIR)22及び信号割り込みロジック24を含む。正常に実行しているプログラム部分20は、単に、割り込み時に実行しているプログラム部分であり、それが遂行し得る機能は本発明に無関係である。信号割り込みルーチン22は、更に詳細に後述するように、OSカーネル12からスレッド18に信号を配送する際のスレッド18の実行に関するコントロールを得る。信号割り込みロジック24は、OSカーネル12から受け取った信号に応答して、正常に実行しているプログラム部分20から信号割り込みルーチン22にコントロールを移すためのロジック(即ち、プログラミング・コード)を含む。信号割り込みルーチン22及び信号割り込みロジック24は、スレッド18に向けられたすべての信号を処理する。しかし、本願では本発明のSIGTHSTOP及びSIGTHCONT信号に関連した部分だけを説明する。
要するに、スレッド停止信号SIGTHSTOPがスレッド16に抗して送出される時、カーネル12はその信号を信号割り込みルーチン22に送り、そのルーチン22は、スレッド16を適切な時間に停止するために内部カーネル・サービス・コールをカーネル12に送出する。その後、スレッド継続信号SIGTHCONTがスレッド16に抗して送出される時、カーネル12はコントロールを信号割り込みルーチン22に戻すように待機スレッド16にポストする。ルーチン22は、割り込みポイントでプログラム20にコントロールを戻す。
更に詳しく言うと、ターゲット・スレッド16の実行を中断するために、起点スレッド18は、pthread_kill()サービス・リクエスト26をカーネル12に送出する。図に示されるように、サービス・リクエスト26は、ターゲット・スレッド16(スレッド1)及びそのターゲット・スレッド16に送られる信号(SIGTHSTOP)の両方を識別する。カーネル12の割り込み生成ロジック28がリクエスト26を発生し、外部割り込み30をスレッド16の信号割り込みロジック24に送る。
信号割り込みロジック24は、スレッド16における正常に実行しているプログラム20を停止し、32によってカーネル・デリバリ・ルーチン34をコールする。デリバリ・ルーチン34は、スレッド16のプログラム・コンテキスト、即ち、プログラム・ステータス・ワード(PSW)及び上記のzシリーズ・マシンにおける関連レジスタ、を修正して信号割り込みルーチン22を実行させる。しかる後、割り込みロジック24が終了し、カーネル・ディスパッチャ(個別には図示されていない)が信号割り込みルーチン22を制御してコントロールをユーザ・タスクに戻す。
信号割り込みルーチン22は割り込みデータを記録し、アプリケーションが、完了しなければならないクリティカルなコード・セクションにあるかどうかを決定する。これが否定される場合、信号割り込みルーチン22は、「stop me」pthread_quiesce コール36をカーネル待ちサービス(kernWait)38に送出してスレッド16を待つ。アプリケーションがロジックのクリティカルなコード・セクションにある場合、信号割り込みルーチン22はカーネル待ちサービス38のコールをそれが安全に行えるようになるまで遅らせる。いずれの場合も、それがコールされたとき、カーネル待ちサービス38はスレッド16を停止状態にする。
或る将来の時点で、スレッド18は、第2 pthread_kill()サービス・リクエストを送出して停止したスレッド16を継続させる。図示のように、この第2サービス・リクエスト40は、ターゲット・スレッド16(スレッド1)及びそのターゲット・スレッド16に送られる信号(SIGTHCONT)の両方を識別する。カーネル12のポスト生成ロジック42がこのリクエストに応答して、今なおカーネル12において待機しているスレッド16をポストする。これは、44を介して KernWait サービス38に通知することよって行われる。そのサービス38は、46を介してコントロールを信号割り込みルーチン22に戻す。一方、信号割り込みルーチン22は、48を介して、ユーザ・プログラム20にオリジナル割り込みのポイントで戻る。スレッド16は、それが停止させられたことに気付かない。
上記の説明から、割り込み生成ロジック28及びカーネル・デリバリ・ルーチン34は、スレッドを中断するためのSIGTHSTOP信号をターゲット・スレッドに送るためのスレッド停止ロジックとして機能し、一方、ポスト生成ロジック42はスレッドを再開するためのSIGTHCONT信号をターゲット・スレッドに送るためのスレッド継続ロジックとして機能することがわかるであろう。
図示の実施例では、SIGTHSTOP及びSIGTHCONT信号は、他の機能をブロックするスレッドが、その後、ターゲット・スレッドにおいて悪影響を生じることなく、SIGTHSTOP及びSIGTHCONTを使って停止及び継続するように、既存のPOSIX標準と互換性のある方法で処理される。即ち、ターゲット・スレッドが sleep() 状態にあって停止している場合、sleep() サービスは早期にはウェイクアップしないであろう。これに関する詳細は、IBM Technical Disclosure Bulletin の vol. 36, no. 11, Nov. 1993, pages 483-485 における”Dual Level Wait”と題した S. Bender 氏他による記事で見ることが可能である。
図示の実施例では、SIGTHSTOP及びSIGTHCONT信号は非捕捉可能な且つ非阻止可能なものであり、これらの信号を無視することはできない。従って、ターゲット・スレッドは、信号次第で実行を中断又は再開しなければならない。また、他の信号のように、それらは累積性のものではなく、スタック可能でもない。同じターゲット・スレッドへの複数のSIGTHSTOP信号が漸増的な効果がなくても許容されるが、同じスレッドに送られた単一のSIGTHCONTはたとえそれが幾つものSIGTHSTOP信号の初期ターゲットであったとしても、それを再活動化するであろう。SIGTHSTOP信号はキューされないので、その後の信号はカーネルによって無視される。
図示の実施例では、pthread_kill(thread_id, sigthcont) コマンドが同じプロセスの他のスレッドに抗して送出される。SIGTHSTOPはそのプロセスにおける単一のスレッドを停止するだけなので、そのプロセスにおける他の任意の実行スレッドがその停止したスレッドを再開するためにSIGTHCONTを送出することが可能である。SIGTHSTOPを使用してそのプロセスにおけるすべてのスレッドを停止させることが回避されなければならないので、その間、プロセスは仮想的にハングされる。ウェイクアップするための信号を送ることができる他のプロセスからのスレッドはない。行うことができる唯一のものは手操作でスレッドを強制終了(kill)することである。
特定の実施例を示し且つ説明したけれども、当業者には種々の修正が明らかであろう。従って、UNIXベースのオペレーティング・システムに関連して本発明を説明したけれども、本発明はそのようなオペレーティング・システムに限定されない。また、上述のように、使用された信号及びサービス・リクエストは同じ機能が遂行される限り、種々の名称を持ち得る。更に、説明された pthread_kill() サービスは単一のターゲット・スレッドのみに関して動作するけれども、それは、例えば、リストで指定されるような複数のスレッドに関しても動作するように修正可能であろう。そのような場合、信号はその指定されたスレッドのみに送られ、ユーザ・プロセスにおける如何なる未指定のスレッドにも送られないであろう。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)オペレーティング・システム・カーネルと複数の実行スレッドを有するユーザ・プロセスとを含む情報処理システムにおいて、前記スレッドの実行を管理するために前記カーネルによって遂行される方法であって、
前記ユーザ・プロセスの指定されたターゲット・スレッドの実行状態を変更するためのリクエストを前記スレッドの1つから受け取るステップと、
前記リクエストを受け取ったことに応答して、前記ユーザ・プロセスにおけるいずれの未指定スレッドの実行状態をも変更することなく、
前記指定されたターゲット・スレッドの実行状態を変更するための信号を前記ユーザ・プロセスの前記指定されたターゲット・スレッドに送るステップと、
を含む、方法。
(2)前記スレッドの1つからの前記リクエストが、前記指定されたターゲット・スレッドの実行を中断するためのリクエストである、上記(1)に記載の方法。
(3)前記スレッドの1つからの前記リクエストが、前記指定されたターゲット・スレッドの実行を再開するためのリクエストである、上記(1)に記載の方法。
(4)前記リクエストが、ターゲット・スレッド及び該ターゲット・スレッドに送られるべき信号のタイプを指定する、上記(1)に記載の方法。
(5)前記リクエストが、前記指定されたターゲット・スレッドの実行状態における所望の変更を指定する、上記(1)に記載の方法。
(6)前記スレッドの1つが、指定された信号を前記指定されたターゲット・スレッドに送るためのコマンドを前記カーネルに送出することによって前記リクエストを行い、
前記カーネルは、前記コマンドを受け取るとき、前記指定された信号を前記ユーザ・プロセスのいずれの未指定スレッドにも送ることなく、前記指定された信号を前記指定されたターゲット・スレッドに送る、
上記(1)に記載の方法。
(7)前記カーネルは、前記指定されたターゲット・スレッドの実行を中断するためのリクエストを前記スレッドの1つから受け取ったとき、前記指定されたターゲット・スレッドの実行のコントロールを、正常に実行しているプログラム部分から割り込みルーチンに移す、上記(1)に記載の方法。
(8)前記割り込みルーチンは、実行のコントロールを得たとき、該割り込みルーチンの実行を中断するためのサービス・リクエストを前記カーネルに送出する、上記(7)に記載の方法。
(9)前記カーネルは、前記指定されたターゲット・スレッドの実行を再開するためのリクエストを前記スレッドの1つから受け取ったとき、前記割り込みルーチンの実行を再開する、上記(8)に記載の方法。
(10)前記割り込みルーチンは、実行を再開したとき、前記正常に実行しているプログラム部分に実行のコントロールを戻す、上記(9)に記載の方法。
(11)オペレーティング・システム・カーネル及び複数の実行スレッドを有するユーザ・プロセスを含む情報処理システムにおいて、前記スレッドの実行を管理するための装置であって、
前記ユーザ・プロセスの指定されたターゲット・スレッドの実行を中断するためのリクエストを前記スレッドの1つから受け取ったことに応答して、前記ユーザ・プロセスにおけるいずれの未指定スレッドをも中断することなく、前記指定されたターゲット・スレッドを中断するためのスレッド停止信号を前記ユーザ・プロセスの前記指定されたターゲット・スレッドに送るためのスレッド停止ロジックと、
前記ユーザ・プロセスの指定されたターゲット・スレッドの実行を再開するためのリクエストを前記スレッドの1つから受け取ったことに応答して、前記ユーザ・プロセスのいずれの未指定スレッドをも再開することなく、前記指定されたターゲット・スレッドを再開するためのスレッド継続信号を前記ユーザ・プロセスの前記指定されたターゲット・スレッドに送るためのスレッド継続ロジックと、
を含む、装置。
(12)前記スレッドの1つが、指定された信号を前記指定されたターゲット・スレッドに送るためのコマンドを前記カーネルに送出することによってリクエストを行い、
前記カーネルは、前記コマンドを受け取ったとき、前記指定された信号を前記ユーザ・プロセスのいずれの未指定スレッドにも送ることなく、前記指定された信号を前記指定されたターゲット・スレッドに送る、
上記(11)に記載の装置。
(13)前記スレッド停止ロジックは、前記指定されたターゲット・スレッドの実行を中断するためのリクエストを受け取ったとき、前記指定されたターゲット・スレッドの実行のコントロールを正常に実行しているプログラム部分から割り込みルーチンに移す、上記(11)に記載の装置。
(14)前記割り込みルーチンは、実行のコントロールを得たとき、該割り込みルーチンの実行を中断するためのサービス・リクエストを前記カーネルに送出する、上記(13)に記載の装置。
(15)前記スレッド継続ロジックは、前記指定されたターゲット・スレッドの実行を再開するためのリクエストを受け取ったとき、前記割り込みルーチンの実行を再開する、上記(14)に記載の装置。
(16)オペレーティング・システム・カーネルと複数の実行スレッドを有するユーザ・プロセスとを含む情報処理システムにおいて、スレッドの実行を管理するための方法ステップを遂行するためにマシン実行可能な命令のプログラムを具現化したマシン読み取り可能なプログラム・ストレージ・デバイスであって、前記方法ステップが前記カーネルによって実行され、
前記ユーザ・プロセスの指定されたターゲット・スレッドの実行状態を変更するためのリクエストを前記スレッドの1つから受け取ること、
前記リクエストを受け取ったことに応答して、前記ユーザ・プロセスにおけるいずれの未指定スレッドの実行状態をも変更することなく、前記指定されたターゲット・スレッドの実行状態を変更するための信号を前記ユーザ・プロセスの前記指定されたターゲット・スレッドに送ること
を含む、プログラム・ストレージ・デバイス。
(17)前記スレッドの1つが、指定された信号を前記指定されたターゲット・スレッドに送るためのコマンドを前記カーネルに送出することによって前記リクエストを行い、
前記カーネルは、前記コマンドを受け取るとき、前記指定された信号を前記ユーザ・プロセスのいずれの未指定スレッドにも送ることなく、前記指定された信号を前記指定されたターゲット・スレッドに送る、
上記(16)に記載のプログラム・ストレージ・デバイス。
(18)前記カーネルは、前記指定されたターゲット・スレッドの実行を中断するためのリクエストを前記スレッドの1つから受け取ったとき、前記指定されたターゲット・スレッドの実行のコントロールを正常に実行しているプログラム部分から割り込みルーチンに移す、上記(16)に記載のプログラム・ストレージ・デバイス。
(19)前記割り込みルーチンは、実行のコントロールを得たとき、該割り込みルーチンの実行を中断するためのサービス・リクエストを前記カーネルに送出する、上記(18)に記載のプログラム・ストレージ・デバイス。
(20)前記カーネルは、前記指定されたターゲット・スレッドの実行を再開するためのリクエストを前記スレッドの1つから受け取ったとき、前記割り込みルーチンの実行を再開する、上記(19)に記載のプログラム・ストレージ・デバイス。
本発明を組み込んだコンピュータ・システムのソフトウェア・コンポーネントの概略的なブロック図である。

Claims (6)

  1. オペレーティング・システム・カーネルと複数の実行スレッドを有するユーザ・プロセスとを含む情報処理システムにおいて、前記スレッドの実行を管理するために前記カーネルによって遂行される方法であって、
    前記ユーザ・プロセスの指定されたターゲット・スレッドの実行状態を変更するためのリクエストであって、前記カーネルが前記スレッドの1つから前記リクエストを受け取るステップと、
    前記カーネルが前記リクエストを受け取ったことに応答して、前記ユーザ・プロセスにおけるいずれの未指定スレッドの実行状態をも変更することなく、前記指定されたターゲット・スレッドの実行状態を変更するための信号を前記ユーザ・プロセスの前記指定されたターゲット・スレッドに送るステップと、
    前記カーネルは、前記指定されたターゲット・スレッドの実行を中断するためのリクエストを前記スレッドの1つから受け取ったとき、前記指定されたターゲット・スレッドの実行のコントロールを、ターゲット・スレッドの正常に実行しているプログラム部分からターゲット・スレッドの割り込みルーチンに移すステップと、
    前記割り込みルーチンは、実行のコントロールを得たとき、該割り込みルーチンの実行を中断するためのサービス・リクエストを前記カーネルに送出するステップと、
    を含む
    方法。
  2. 前記スレッドの1つからの前記リクエストが、前記指定されたターゲット・スレッドの実行を中断するためのリクエストである、請求項1に記載の方法。
  3. 前記スレッドの1つからの前記リクエストが、前記指定されたターゲット・スレッドの実行を再開するためのリクエストである、請求項1に記載の方法。
  4. 前記スレッドの1つが、指定された信号を前記指定されたターゲット・スレッドに送るためのコマンドを前記カーネルに送出することによって前記リクエストを行い、
    前記カーネルは、前記コマンドを受け取るとき、前記指定された信号を前記ユーザ・プロセスのいずれの未指定スレッドにも送ることなく、前記指定された信号を前記指定されたターゲット・スレッドに送る、請求項1に記載の方法。
  5. 前記カーネルは、前記指定されたターゲット・スレッドの実行を再開するためのリクエストを前記スレッドの1つから受け取ったとき、ターゲット・スレッドの前記割り込みルーチンの実行を再開する、請求項1に記載の方法。
  6. 前記割り込みルーチンは、実行を再開したとき、ターゲット・スレッドの前記正常に実行しているプログラム部分に実行のコントロールを戻す、請求項5に記載の方法。
JP2003413982A 2002-12-31 2003-12-11 マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置 Expired - Fee Related JP4056465B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/334,214 US7216346B2 (en) 2002-12-31 2002-12-31 Method and apparatus for managing thread execution in a multithread application

Publications (2)

Publication Number Publication Date
JP2004213637A JP2004213637A (ja) 2004-07-29
JP4056465B2 true JP4056465B2 (ja) 2008-03-05

Family

ID=32710869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003413982A Expired - Fee Related JP4056465B2 (ja) 2002-12-31 2003-12-11 マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置

Country Status (3)

Country Link
US (1) US7216346B2 (ja)
JP (1) JP4056465B2 (ja)
KR (1) KR100791437B1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146678A (ja) * 2004-11-22 2006-06-08 Hitachi Ltd 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム
US20060136916A1 (en) * 2004-12-17 2006-06-22 Rowland John R Method and apparatus for transaction performance and availability management based on program component monitor plugins and transaction performance monitors
US7315910B2 (en) * 2005-06-16 2008-01-01 Oracle International Corporation Techniques for handling lock-related inconsistencies
US7698691B2 (en) * 2005-09-20 2010-04-13 Microsoft Corporation Server application state
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
KR100714710B1 (ko) * 2006-02-22 2007-05-04 삼성전자주식회사 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법
KR100763200B1 (ko) 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
US7784059B2 (en) * 2006-08-22 2010-08-24 Microsoft Corporation Stateless asynchronous message transmission
JP4757175B2 (ja) * 2006-11-24 2011-08-24 キヤノン株式会社 情報処理装置及びアプリケーション管理方法
US8024739B2 (en) * 2007-01-09 2011-09-20 International Business Machines Corporation System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
US8051417B2 (en) * 2007-01-30 2011-11-01 Hewlett-Packard Development Company, L.P. Target thread selection in a multi-threaded process
US7941788B2 (en) * 2007-03-21 2011-05-10 International Business Machines Corporation Operating system support for thread-level breakpoints
KR101505519B1 (ko) * 2007-10-16 2015-03-25 삼성전자 주식회사 컨텐츠 출력 장치 및 방법
KR100985047B1 (ko) * 2007-10-25 2010-10-04 주식회사 안철수연구소 쓰레드 스케줄링 시스템 및 그 방법
US8255451B2 (en) * 2008-09-17 2012-08-28 Microsoft Corporation Technologies for detecting erroneous resumptions in a continuation based runtime
KR101396781B1 (ko) * 2013-01-08 2014-05-20 주식회사 한올테크놀로지 응용프로그램 관리장치 및 관리방법
US20180203813A1 (en) * 2015-09-29 2018-07-19 Shannon Systems Ltd. Methods for processing return entities associated with multiple requests in single interrupt service routine thread and apparatuses using the same
CN106845170B (zh) * 2017-01-20 2019-11-15 武汉斗鱼网络科技有限公司 一种反调试方法和系统
KR101805462B1 (ko) 2017-06-29 2018-01-10 주식회사 티맥스소프트 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치
US10552081B1 (en) * 2018-10-02 2020-02-04 International Business Machines Corporation Managing recall delays within hierarchical storage
CN111104183B (zh) * 2019-12-17 2023-09-12 北京小米移动软件有限公司 应用程序运行方法、装置、电子设备及存储介质
CN111078325B (zh) * 2019-12-17 2024-01-30 北京小米移动软件有限公司 应用程序运行方法、装置、电子设备及存储介质
CN113449172B (zh) * 2021-06-03 2024-03-29 阿波罗智联(北京)科技有限公司 异步数据上报方法、装置、电子设备及存储介质
CN113791888A (zh) * 2021-11-17 2021-12-14 北京鲸鲮信息系统技术有限公司 Linux应用进程管理方法及装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2520543B2 (ja) 1991-09-06 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの実行を管理する方法及びシステム
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
JP3585510B2 (ja) * 1993-07-20 2004-11-04 株式会社東芝 プログラム実行管理装置及びプログラム実行管理方法
US5632032A (en) * 1994-02-07 1997-05-20 International Business Machines Corporation Cross address space thread control in a multithreaded environment
EP0667574A3 (en) * 1994-02-14 1997-02-12 Ibm Computer system.
JP3169779B2 (ja) 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5706515A (en) 1996-03-25 1998-01-06 Sun Microsystems, Inc. System and method for implementing an atomic wait for notification operation
US6292820B1 (en) * 1996-07-29 2001-09-18 At& T Corp. Porting POSIX-conforming operating systems to Win32 API-conforming operating systems
US6128640A (en) 1996-10-03 2000-10-03 Sun Microsystems, Inc. Method and apparatus for user-level support for multiple event synchronization
US6119145A (en) 1997-02-28 2000-09-12 Oracle Corporation Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
JP3546694B2 (ja) 1998-03-31 2004-07-28 日本電気株式会社 マルチスレッド計算機システム及びマルチスレッド実行制御方法
US6457064B1 (en) * 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US6401137B1 (en) 1998-06-30 2002-06-04 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for processing a virtual call in a multi-threaded program
JP2000047887A (ja) 1998-07-30 2000-02-18 Toshiba Corp 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
US6205414B1 (en) 1998-10-02 2001-03-20 International Business Machines Corporation Methodology for emulation of multi-threaded processes in a single-threaded operating system
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
JP3571976B2 (ja) 1999-11-08 2004-09-29 富士通株式会社 デバッグ装置及び方法並びにプログラム記録媒体
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6934950B1 (en) * 2000-06-06 2005-08-23 International Business Machines Corporation Thread dispatcher for multi-threaded communication library
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor

Also Published As

Publication number Publication date
KR20040062394A (ko) 2004-07-07
KR100791437B1 (ko) 2008-01-04
US7216346B2 (en) 2007-05-08
US20040139432A1 (en) 2004-07-15
JP2004213637A (ja) 2004-07-29

Similar Documents

Publication Publication Date Title
JP4056465B2 (ja) マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置
US6560626B1 (en) Thread interruption with minimal resource usage using an asynchronous procedure call
US5991790A (en) Generation and delivery of signals in a two-level, multithreaded system
US8612986B2 (en) Computer program product for scheduling ready threads in a multiprocessor computer based on an interrupt mask flag value associated with a thread and a current processor priority register value
US7386864B2 (en) Automatic serialization for event driven multi-threaded programs in an object structured system
US5951653A (en) Method and system for coordinating access to objects of different thread types in a shared memory space
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
EP2316091B1 (en) Protected mode scheduling of operations
US6324684B1 (en) Processor having real-time execution control for debug functions without a debug monitor
US20060150194A1 (en) Methods and apparatuses to maintain multiple execution contexts
JP2003518286A (ja) キューイングされた作業アイテムを実施するための再利用可能スレッドのプールを提供するためのシステムおよび方法
US6738846B1 (en) Cooperative processing of tasks in a multi-threaded computing system
JPH1063523A (ja) マルチスレッド環境においてサーバの活動化を制御する方法および装置
US7784057B2 (en) Single-stack model for high performance parallelism
US7437606B2 (en) Method of checkpointing parallel processes in execution within plurality of process domains
JP2000215072A (ja) プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
US7451454B2 (en) Event handling mechanism
EP0614139A2 (en) External procedure call for distributed processing environment
US7080374B2 (en) System and method for using native code interpretation to move threads to a safe state in a run-time environment
JP2007517328A (ja) 動作モデルベースマルチスレッドアーキテクチャ
JP2001282558A (ja) マルチオペレーティング計算機システム
JPS58181149A (ja) 計算機システムの制御方式
Rothberg Interrupt handling in Linux
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
US20210240528A1 (en) Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070327

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071211

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121221

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121221

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131221

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees