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
JP4834566B2 - 入出力作業によってブロッキングされたスレッドを強制終了する装置および方法 - Google Patents
[go: Go Back, main page]

JP4834566B2 - 入出力作業によってブロッキングされたスレッドを強制終了する装置および方法 - Google Patents

入出力作業によってブロッキングされたスレッドを強制終了する装置および方法 Download PDF

Info

Publication number
JP4834566B2
JP4834566B2 JP2007040391A JP2007040391A JP4834566B2 JP 4834566 B2 JP4834566 B2 JP 4834566B2 JP 2007040391 A JP2007040391 A JP 2007040391A JP 2007040391 A JP2007040391 A JP 2007040391A JP 4834566 B2 JP4834566 B2 JP 4834566B2
Authority
JP
Japan
Prior art keywords
thread
state
blocked
termination function
application
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
JP2007040391A
Other languages
English (en)
Other versions
JP2007226799A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2007226799A publication Critical patent/JP2007226799A/ja
Application granted granted Critical
Publication of JP4834566B2 publication Critical patent/JP4834566B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01DSEPARATION
    • B01D21/00Separation of suspended solid particles from liquids by sedimentation
    • B01D21/24Feed or discharge mechanisms for settling tanks
    • B01D21/245Discharge mechanisms for the sediments
    • B01D21/2466Mammoth pumps, e.g. air lift pumps
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F1/00Treatment of water, waste water, or sewage
    • C02F1/40Devices for separating or removing fatty or oily substances or similar floating material
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01GWEIGHING
    • G01G17/00Apparatus for or methods of weighing material of special form or property
    • G01G17/04Apparatus for or methods of weighing material of special form or property for weighing fluids, e.g. gases, pastes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • CCHEMISTRY; METALLURGY
    • C02TREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02FTREATMENT OF WATER, WASTE WATER, SEWAGE, OR SLUDGE
    • C02F2303/00Specific treatment goals
    • C02F2303/22Eliminating or preventing deposits, scale removal, scale prevention

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Water Supply & Treatment (AREA)
  • Organic Chemistry (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Environmental & Geological Engineering (AREA)
  • Hydrology & Water Resources (AREA)
  • Analytical Chemistry (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、入出力作業によってブロッキングされたスレッドを強制終了する装置および方法に関し、より詳しくは、入出力作業(I/O Operation)を終了させ、入出力作業によってブロッキングされたスレッドにユーザ定義信号を伝達して該当スレッドのブロッキング状態をしばらく解除させることによって、入出力システム呼出(I/O System Call)を試みるスレッドにスレッド終了の例外(ThreadDeath Exception)が発生するようにする入出力作業によってブロッキングされたスレッドを強制終了する装置および方法に関するものである。
ジャバは、作成されたコードをプラットフォーム独立で行うオブジェクト指向プログラミング言語である。ここで、プラットフォームは、プログラムが実行されるハードウェアまたは運営体系のようなソフトウェア環境をいう。ジャバで作成されたコードは、ジャバコンパイラによりジャババイトコードにコンパイルされ、ジャババイトコードは多様なハードウェア基盤のプラットフォームにポーティングされたジャバ仮想マシーンにより実行される。
図1は、従来のジャバアプリケーションを動作させる装置を示すブロック図であって、ジャバアプリケーション装置10はアプリケーション管理者11、アプリケーション12a,12b,12c、ミドルウェア13、ジャバ仮想マシーン14、および運営体系15を含んで構成される。
ここで、アプリケーションは、ジャバアプリケーション12a,12bおよびネイティブアプリケーション12cを含む。
アプリケーション管理者11は、アプリケーションの状態を切替えることによって、アプリケーションのライフサイクルを管理する。OCAP(Open Cable Application Platform)、ACAP(Advanced open Cable Application Platform)などのミドルウェア13はアプリケーションの動作を管理する。
ジャバ仮想マシーン14は、アプリケーションに含まれたクラスをメモリに搭載してクラスの実行コードを運営体系15の命令コードに切替え、アプリケーションに割当てられた資源を管理する。
前述した通り、アプリケーション管理者11は、アプリケーションのライフサイクルを管理するが、このためにアプリケーション管理者11は、先ず終了させようとするアプリケーションで実行中であるスレッド(Thread)のリストを確認する。そして、リストが空いていれば直ちにアプリケーションを終了させ、リストが空いていなければリストに含まれたスレッドの終了を行う。
リストに含まれたスレッドを終了するために、アプリケーション管理者11は先ずリスト中の最初のスレッドのクラスオブジェクト(Thread Class Object)を確認し、該当オブジェクトに対する中断関数(Thread.interrupt())を呼出す。中断関数は、ブロック(block)状態にあるスレッドのブロック状態をしばらく解除するが、この時、アプリケーション管理者11は該当オブジェクトに対する中止関数(Thread.stop())を呼出す。ここで、中止関数は、スレッド終了の例外(ThreadDeath Exception)を発生させるが、これに伴ってスレッドは終了する。アプリケーション管理者11は、このような過程をリストに含まれたすべてのスレッドが終了するまで進行する。
しかし、入出力作業(I/O Operation)によってブロッキングされたスレッドがアプリケーションに含まれた場合、アプリケーション管理者11による中断関数および中止関数としては該当スレッドを効果的に終了させることができない。
一般的に、ジャバプログラムで入出力作業に対する関数が呼出せば、この関数は運営体系15の入出力システム呼出(I/O System Call)を試みるが、システム呼出はカーネルモード(Kernel Mode)で行われ、これは入出力作業を待つブロッキング状態である。ところで、アプリケーション管理者11による中断関数および中止関数は、ユーザモード(User Mode)で行われるため、カーネルモードで実行中であるスレッドに影響を与えることができない。すなわち、入出力システム呼出が返還され、カーネルモードからユーザモードに切替える前にはスレッドが終了しない。
特許文献1は、ジャバ仮想マシーン環境で複数の関連されたスレッドをモニターリングして、状態情報に基づいてスレッドが活性化したかを決定して、クリーンアッププロセスを実行する方法を開示している。しかし、開示した発明は、一般的なスレッドの終了を行うための方法のみを提示し、入出力作業によってブロッキングされたスレッドの終了に対する方法は提示していない。
したがって、入出力作業によってブロッキングされたスレッドを効果的に終了させる方法の登場が求められる。
米国特許第6,842,898号公報 米国特許第6,711,739号公報
本発明は、入出力作業(I/O Operation)を終了させ、入出力作業によってブロッキングされたスレッドにユーザ定義信号を伝達して該当スレッドのブロッキング状態をしばらく解除させることによって、入出力システム呼出(I/O System Call)を試みるスレッドにスレッド終了の例外(ThreadDeath Exception)が発生するようにするブロッキングされたスレッドを強制終了することにその目的がある。
本発明の目的は、以上で言及した目的に制限されず、言及していないまた他の目的は下記記載によって当業者が明確に理解できるものである。
前記目的を達成するために、本発明の一態様に係わる入出力作業によってブロッキングされたスレッドを強制終了する装置は、アプリケーションに含まれたスレッドの状態を確認する制御部と、前記スレッドにブロッキング状態を解除するための信号を送信する信号送信部と、前記信号によって前記ブロッキング状態が解除されたスレッドに含まれた入出力作業の第1の終了関数を行う作業管理部と、前記第1の終了関数によって前記入出力作業が終了したスレッドの第2の終了関数を行うスレッド管理部とを含む。
本発明の他の態様に係わる入出力作業によってブロッキングされたスレッドを強制終了する方法は、アプリケーションに含まれたスレッドの状態を確認するステップと、前記スレッドにブロッキング状態を解除するための信号を送信するステップと、前記信号によって前記ブロッキング状態が解除されたスレッドに含まれた入出力作業の第1の終了関数を行うステップと、前記第1の終了関数によって前記入出力作業が終了したスレッドの第2の終了関数を行うステップとを含む。
本発明の入出力作業によってブロッキングされたスレッドを強制終了する装置および方法によれば、次のような効果が1つあるいはそれ以上ある。
第1に、入出力作業によってブロッキングされたスレッドを強制終了することによって、該当スレッドを含むアプリケーションを迅速に終了する長所がある。
第2に、アプリケーションに割当てられた資源の返還を迅速に行うことができるようにすることによって、資源の浪費を減少させる長所もある。
その他、実施形態の具体的な事項は詳細な説明および図面に含まれている。
本発明の利点および特徴、そしてそれらを達成する方法は、添付する図面と共に詳細に後述する実施形態を参照すれば明確になる。しかし、本発明は以下にて開示する実施形態に限定されず、互いに異なる多様な形態によって実施され、単に本実施形態は本発明の開示が完全なものとなるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであって、本発明は請求項の範疇によってのみ定義されるものである。明細書の全体に亘り、同一参照符号は同一構成要素を示す。
以下、添付した図面を参照して本発明の好ましい実施例を詳細に説明する。
図2は、本発明の実施形態に係わる入出力作業によってブロッキングされたスレッドを強制終了する装置を示すブロック図であって、入出力作業によってブロッキングされたスレッドを強制終了する装置(以下、スレッド管理装置という)200は、命令入力部210、格納部220、制御部230、状態確認部240、信号送信部250、作業管理部260、およびスレッド管理部270を含んで構成される。
命令入力部210は、アプリケーションのプログラムコード上に含まれた所定の動作に対する実行命令が入力される役割をする。入力される命令にはアプリケーションの作業実行および作業終了のための命令を含むことができる。ここで、アプリケーションはジャバアプリケーションを含み、その中、入出力作業のためのスレッドが含まれたジャバアプリケーションを含む。
入力された命令は、該当命令に対する制御コードに変換されて制御部230に伝えられるが、制御部230は命令入力部210から伝達された制御コードに基づいてスレッド情報テーブルを更新する。すなわち、伝達された制御コードがアプリケーションの作業実行のための制御コードである場合、制御部230は格納部220に格納されたスレッド情報テーブルを更新するものであるが、スレッド情報テーブルに対する詳しい説明は図3を介して後述する。
また、制御部230は、伝達された制御コードがアプリケーションの作業終了のための制御コードである場合、作業終了が要請されたアプリケーションに含まれたスレッドの状態を確認する。この時、制御部230は、格納部220に格納されたスレッド情報テーブルを参照することができ、状態確認部240による情報を参照することができる。
そして、制御部230は、命令入力部210、状態確認部240、格納部220、信号送信部250、作業管理部260、スレッド管理部270、およびスレッド管理装置200の全般的な制御を行う。
状態確認部240は、現在作業進行中であるスレッドの状態を確認する役割をする。すなわち、状態確認部240は、1つのアプリケーションに含まれた全体スレッドの状態を確認するものであって、スレッドによる作業が進行中であるかを確認したり、該当スレッドによって行われる作業が入出力作業であるかを確認したりする。ここで、対象になるアプリケーションの種類に対する情報を制御部230から伝達されるが、この時、制御部230からアプリケーションに含まれたスレッドのリストが伝達されることもできる。
また、状態確認部240は、制御部230から複数のアプリケーションに含まれたスレッドの状態確認命令を受ける場合、複数のアプリケーションに対する作業を同時に行うこともできる。
格納部220は、スレッド情報テーブルを格納する役割をする。スレッド情報テーブルにはアプリケーションの識別子、スレッドの識別子、およびスレッドの状態などを含むことができるが、スレッド情報テーブルに対する詳しい説明は図3を介して後述する。
格納部220は、ハードディスク、フラッシュメモリ、CFカード(Compact Flash(登録商標)Card)、SDカード(Secure Digital Card)、SMカード(Smart Media(登録商標)Card)、MMCカード(Multimedia Card)、またはメモリスティック(Memory Stick)など、情報の入出力が可能なモジュールであって、スレッド管理装置200の内部に備えられていることもでき、別途の装置に備えられていることもできる。
信号送信部250は、スレッドにブロッキング状態を解除するための信号を送信する役割をする。ここで、スレッドはブロッキング状態のスレッドであって、信号送信部250には制御部230から対象になるスレッドのリストが伝達されて、リストに含まれたスレッドに信号を送信する。信号はスレッド間に送受信される所定の情報であって、信号を受信したスレッドは信号に対応する特定動作を行うようになる。
信号は、ユーザ定義信号でもあり得、信号を受信したスレッドは入出力作業によるブロッキング状態から一時的に解除される。すなわち、ブロッキング状態は、運営体系のカーネルモードでシステム呼出を実行中である状態を含むものであって、ブロッキング状態からの一時的な解除とは運営体系のカーネルモードからユーザモードへの切替えを意味する。
作業管理部260は、信号送信部250から送信された信号によってブロッキング状態が解除されたスレッドに含まれた入出力作業の終了関数(以下、第1の終了関数という)を行う役割をする。例えば、入出力作業がソケット(Socket)を用いたネットワーク作業である場合、作業管理部260はソケットの終了関数を行い、入出力作業がファイルに対する入出力作業である場合、作業管理部260はファイル入出力作業に対する終了関数を行う。
第1の終了関数が行われるにつれて、ブロッキング状態が一時解除されたスレッドは再び入出力作業のためのシステム呼出を行うことができなくなる。これに伴い、スレッドに含まれた入出力作業はカーネルモードに復帰することができず、ユーザモードに留まっているようになる。
第1の終了関数を行うことにあたって、作業管理部260には制御部230からの該当入出力作業に対する情報が伝達され得るが、入出力作業に対する情報にはアプリケーションの識別子、スレッドの識別子、および入出力作業の種類などを含むことができる。
スレッド管理部270は、第1の終了関数によって入出力作業が終了したスレッドの第2の終了関数を行う役割をする。第2の終了関数は、中断関数および中止関数を含むことができるが、中断関数はブロッキング状態にあるスレッドのブロッキング状態をしばらく解除する役割をし、中止関数はスレッド終了の例外を発生させる役割をする。換言すれば、ユーザモードにあるスレッドは、第2の終了関数によって終了するものであって、これに伴い、アプリケーションの終了は容易に進行される。ジャバプログラムコードによってスレッドが管理される場合、Thread.interrupt()関数およびThread.stop()関数が各々中断関数および中止関数の役割を行うことができる。
アプリケーションに含まれたスレッドが複数である場合、複数のスレッドに対する終了過程が順次的に進行されることもでき、同時に進行されることもできるが、これは制御部230によって決定される。すなわち、制御部230は、スレッド情報テーブルを参照してアプリケーションに含まれた複数のスレッドに対する情報を同時に信号送信部250、作業管理部260、およびスレッド管理部270に伝達することができ、1つずつ伝達することもできる。この時、複数のスレッドに対する情報を1つずつ伝達する場合、制御部230はリストに含まれたすべてのスレッドに対する情報を伝達するまで作業を進行し、伝えられた情報をスレッド情報テーブルで削除することもできる。
図3は、本発明の実施形態に係わるスレッド情報テーブルを示す図面であって、スレッド情報テーブル300は、アプリケーション識別子フィールド310、スレッド識別子フィールド320、入出力作業の種類フィールド330、入出力作業の位置フィールド340、および状態フィールド350を含んで構成される。
アプリケーション識別子フィールド310にはアプリケーションの固有識別子が含まれる。アプリケーション識別子は、アプリケーションの登録順序を用いて生成したり、ユーザによって直接入力されて生成したりすることもできる。
アプリケーション識別子は、特定アプリケーションを指し示すことに用いられるものであって、信号送信部250、作業管理部260、およびスレッド管理部270はこれを用いて対象になるアプリケーションを確認することができるようになる。
スレッド識別子フィールド320にはスレッドの固有識別子が含まれる。スレッド識別子は、スレッドの生成順序を用いて生成したり、ユーザによって直接入力されて生成したりすることもできる。
スレッド識別子は、特定のスレッドを指し示すことに用いられるものであって、信号送信部250、作業管理部260、およびスレッド管理部270はこれを用いて対象になるスレッドを確認することができるようになる。
1つのアプリケーションに複数のスレッドが対応して、スレッド情報テーブル300に含まれる。
入出力作業の種類フィールド330にはスレッドに含まれた入出力作業の種類を示す識別子が含まれる。例えば、ファイル入出力作業に対しては1の識別子が対応し、ネットワーク入出力作業に対しては2の識別子が対応する。
入出力作業の種類を示す識別子は作業管理部260に伝えられるが、作業管理部260はこれを用いて該当入出力作業に対する第1の終了関数を行う。すなわち、入出力作業の種類に対応する第1の終了関数を抽出して行う。
入出力作業の位置フィールド340にはスレッドに含まれた入出力作業を行うオブジェクトの位置が含まれる。すなわち、オブジェクトのアドレスであって、これはポインタ(Pointer)によって実現することもできる。例を挙げれば、オブジェクトのファイル記述子(File Descriptor)のようなものが位置フィールド340の値として挿入されることができる。
入出力作業を行うオブジェクトの位置は作業管理部260に伝えられるが、作業管理部260はこれを用いて該当入出力作業に対する第1の終了関数を行う。すなわち、第1の終了関数のパラメータに入出力作業を行うオブジェクトの位置を挿入する。
状態フィールド350はスレッドのブロッキング状態の要否を示すフラッグを含む。例えば、スレッドがブロッキング状態ではない場合は0の値が対応し、スレッドがブロッキング状態である場合は1の値が対応する。
ここで、スレッドの状態は、命令入力部210を介して入力された命令の種類を用いて確認することができ、状態確認部240によって確認することもできる。例えば、命令入力部210に入力された命令が入出力作業に対する実行命令である場合、これは運営体系のシステム呼出を必要とする作業であるため、制御部230は状態フィールド350のフラッグをブロッキング状態に更新する。そして、命令入力部210に入力された命令が入出力作業に対する終了命令である場合、制御部230は状態フィールド350のフラッグをブロッキング解除状態に更新する。
また、該当入出力作業が他のアプリケーションによって終了することもできるが、これに伴い、状態確認部240は常にスレッドの状態を確認して制御部230に通知することもできる。
図4は、本発明の実施形態に係わるスレッドの状態変化を示す概念図である。
図4におけるA状態410は該当スレッドのブロッキングが解除された状態であって、入出力作業のための命令が入力される以前の状態を示す。この時、入出力作業のための命令が入力されれば、入力された命令によりアプリケーションに含まれたスレッドは運営体系のシステム呼出を行う。ところで、システム呼出は運営体系のカーネルモードのみで行われるため、スレッドの状態はブロッキング状態のB状態420に切替える。
スレッドがB状態420である時、スレッド終了関数である第2関数が行われれば、スレッドは第2関数に含まれた中断関数によって一時的にブロッキング状態から抜け出てC状態430に移動する。しかし、スレッドに含まれた入出力作業がシステム呼出を行ってカーネルモードに復帰するため、スレッドの状態は再びブロッキング状態であるD状態440に移動するようになる。
一方、スレッドがB状態420である時、信号送信部250によって信号が送信されれば、スレッドは一時的にブロッキング状態から抜け出てC状態430に移動する。この時、作業管理部260は入出力作業を終了させるために第1の終了関数を行う。これに伴い、一時的にブロッキング状態から抜け出たスレッドに含まれた入出力作業が行われることができないため、カーネルモードへの復帰が行われず、スレッドはC状態430に留まっているようになる。
そして、スレッドがC状態430である時、スレッド管理部270はスレッド終了関数の第2関数を行うが、第2関数に含まれた中止関数によってスレッド終了の例外が発生し、これに伴いスレッドは終了してE状態450に移動する。
ここで、アプリケーションの終了命令が入力された場合、制御部230はスレッド情報テーブル300を参照してB状態420にあるスレッドにのみ信号が送信され入出力作業の終了関数(第1の終了関数)を行うことができるようにし、A状態410にあるスレッドにはスレッド終了関数(第2の終了関数)のみ行うようにすることができる。
図5は、本発明の実施形態に係わる入出力作業によってブロッキングされたスレッドを強制終了する過程を示すフローチャートである。
入出力作業によってブロッキングされたスレッドを強制終了するためにスレッド管理装置200の命令入力部に210は、アプリケーションの作業実行のための命令が入力される(S510)。これに伴い、アプリケーションに含まれた入出力作業を行うことができる。入力された命令に対する制御コードは制御部230に伝えられ、制御部230は格納部220に格納されたスレッド情報テーブル300を更新する(S520)。すなわち、アプリケーションのスレッドのうち、該当入出力作業が含まれたスレッドの状態をブロッキング状態に切替える。そして、制御部230は作業管理部260で該当入出力作業を行うようにする。
そして、命令入力部210には、アプリケーションの作業終了のための命令が入力される(S530)。入力された命令に対する制御コードは制御部230に伝えられ、制御部230は該当アプリケーションに含まれたスレッドがブロッキング状態であるかを確認する(S540)。ここで、制御部230は格納部220に格納されたスレッド情報テーブル300を参照してスレッドの状態を確認することができ、状態確認部240から伝達された情報を用いてスレッドの状態を確認することもできる。
そして、スレッドの状態がブロッキング状態ではない場合、制御部230はアプリケーション識別子およびスレッド識別子をスレッド管理部270に伝達する。そして、スレッド管理部270は伝達されたアプリケーション識別子およびスレッド識別子を参照して、該当スレッドを終了するための終了関数(第2の終了関数)を行う(S570)。これに伴い、ブロッキング状態ではないスレッドは第2の終了関数によって終了する。
一方、スレッドの状態がブロッキング状態である場合、制御部230はアプリケーション識別子およびスレッド識別子を信号送信部250に伝達する。そして、信号送信部250は伝達されたアプリケーション識別子およびスレッド識別子を参照して、該当スレッドにブロッキング状態を解除するための信号を送信する(S550)。信号が送信されることによって信号を受信したスレッドは、入出力作業によるブロッキング状態から一時的に解除される。
そして、制御部230は、アプリケーション識別子、入出力作業の種類、および入出力作業の位置を作業管理部260に伝達する。伝達された情報を参照して作業管理部260はスレッドに含まれた入出力作業を終了するための関数(第1の終了関数)を行う(S560)。第1の終了関数が行われることによって、ブロッキング状態が一時解除されたスレッドは、再び入出力作業のためにシステム呼出を行うことができなくなる。すなわち、スレッドに含まれた入出力作業はユーザモードに留まっているようになる。
そして、制御部230は、アプリケーション識別子およびスレッド識別子をスレッド管理部270に伝達する。アプリケーション識別子およびスレッド識別子が伝達されたスレッド管理部270は、該当スレッドを終了するための関数である第2の終了関数を行う(S570)。第2の終了関数が行われることによって、該当スレッドは終了する。
制御部230は、スレッド情報テーブル300を参照して該当アプリケーションに含まれた各々のスレッドに対して以上のような過程を繰り返し、すべてのスレッドが終了するまで進行する。
図2のブロック図の各ブロックと図5のフローチャートの各ステップの組合せはコンピュータプログラムインストラクションによって行われる可能性があることが理解できる。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータ、またはその他のプログラム可能なデータプロセシング装備のプロセッサに搭載することができるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備のプロセッサを介して行われるそのインストラクションがブロック図の各ブロックまたはフローチャートの各ステップで説明された機能を行う手段を生成するようになる。これらコンピュータプログラムインストラクションは、特定方式で機能を実現するために、コンピュータまたはその他のプログラム可能なデータプロセシング装備を指向できるコンピュータ利用可能またはコンピュータ読取可能なメモリに格納することも可能であるため、そのコンピュータ利用可能またはコンピュータ読取可能なメモリに格納されたインストラクションは、ブロック図の各ブロックまたはフローチャートの各ステップで説明された機能を行うインストラクション手段を含む製造品目を生産することも可能である。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラム可能なデータプロセシング装備上に搭載されることも可能であるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備上で一連の動作ステップが行われ、コンピュータで実行されるプロセスを生成してコンピュータまたはその他のプログラム可能なデータプロセシング装備を行うインストラクションはブロック図の各ブロックおよびフローチャートの各ステップで説明された機能を実行するためのステップを提供することも可能である。
また、各ブロックまたは各ステップは特定された論理的機能を実行するための1つ以上の実行可能なインストラクションを含むモジュール、セグメント、またはコードの一部を示すことができる。また、いくつかの代替実行例ではブロックまたはステップで言及された機能が順序を外れて発生することも可能であることを注目しなければならない。例えば、連続して図示されている2つのブロックまたはステップは実質的に同時に行われることも可能であり、またはそのブロックまたはステップが時々該当する機能により逆順に行われることも可能である。
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明が属する技術分野で通常の知識を有する者であれば、本発明がその技術的思想や必須の特徴を変更せず、他の具体的な形態によって実施することができるということを理解できる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないことを理解しなければならない。
従来のジャバアプリケーションを動作させる装置を示すブロック図である。 本発明の実施形態に係わる入出力作業によってブロッキングされたスレッドを強制終了する装置を示すブロック図である。 本発明の実施形態に係わるスレッド情報テーブルを示す図である。 本発明の実施形態に係わるスレッドの状態変化を示す概念図である。 本発明の実施形態に係わる入出力作業によってブロッキングされたスレッドを強制終了する過程を示すフローチャートである。
符号の説明
210 命令入力部
220 格納部
230 制御部
240 状態確認部
250 信号送信部
260 作業管理部
270 スレッド管理部

Claims (14)

  1. 入力されたオペレーション実行及びオペレーション終了のための命令に対する制御コードの伝達を受け、前記制御コードがオペレーション実行のための制御コードである場合、スレッドの状態が含まれたテーブルを更新し、前記制御コードがアプリケーションのオペレーション終了のための制御コードである場合、オペレーション終了が要請されたアプリケーションに含まれたスレッドの状態を確認する制御部と、
    前記スレッドの状態がブロッキング状態である場合、前記スレッドにブロッキング状態を一時的に解除するため、OSをカーネルモードからユーザモードへ切替えるユーザ定義信号を送信する信号送信部と、
    前記スレッドの状態がブロッキング状態である場合、前記信号によって前記ブロッキング状態が一時的に解除されたスレッドに含まれた入出力オペレーションを終了させて前記カーネルモードへの復帰を防ぐための第1の終了関数を行うオペレーション管理部と、
    前記スレッドの状態がブロッキング状態ではない場合には、前記スレッドを終了させるための第2終了関数を行い、前記スレッドの状態がブロッキング状態である場合には、前記第1の終了関数によって前記入出力オペレーションが終了したスレッドを終了させるための第2の終了関数を行うスレッド管理部と
    を含む入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  2. 前記アプリケーションは、ジャバアプリケーションを含む請求項1に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  3. 前記ブロッキング状態は、OSのカーネルモードでシステム呼出を実行中である状態を含む請求項1に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  4. 前記制御部から一つ以上のアプリケーションに含まれたスレッドの状態確認命令を受け、前記スレッドによるオペレーションが進行中であるかどうか、及び前記スレッドによって行われる作業が入出力オペレーションであるかを確認する状態確認部をさらに含む請求項1に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  5. 前記スレッド管理部は、前記第2の終了関数を行うことにより、前記入出力オペレーションが終了したスレッドに対するスレッド終了の例外を発生させる請求項1に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  6. 前記信号、前記第1の終了関数、または前記第2の終了関数は、前記スレッドの状態が含まれたテーブルに基づいて行われる請求項1に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する装置。
  7. 前記テーブルを格納する格納部をさらに含む請求項6に記載の入出力オペレーションにブロッキングされたスレッドを強制終了する装置。
  8. 入力されたオペレーション実行及びオペレーション終了のための命令に対する制御コードの伝達を受け、前記制御コードがオペレーション実行のための制御コードである場合、スレッドの状態が含まれたテーブルを更新し、前記制御コードがアプリケーションのオペレーション終了のための制御コードである場合、オペレーション終了が要請されたアプリケーションに含まれたスレッドの状態を確認するステップと、
    前記スレッドの状態がブロッキング状態である場合、前記スレッドにブロッキング状態を一時的に解除するため、OSをカーネルモードからユーザモードへ切替えるユーザ定義信号を送信するステップと、
    前記スレッドの状態がブロッキング状態である場合、前記信号によって前記ブロッキング状態が一時的に解除されたスレッドに含まれた入出力オペレーションを終了させて前記カーネルモードへの復帰を防ぐための第1の終了関数を行うステップと、
    前記スレッドの状態がブロッキング状態ではない場合には、前記スレッドを終了させるための第2終了関数を行い、前記スレッドの状態がブロッキング状態である場合には、前記第1の終了関数によって前記入出力オペレーションが終了したスレッドを終了させるための第2の終了関数を行うステップと
    を含む入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  9. 前記アプリケーションは、ジャバアプリケーションを含む請求項8に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  10. 前記ブロッキング状態は、OSのカーネルモードでシステム呼出を実行中である状態を含む請求項8に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  11. 前記制御部から一つ以上のアプリケーションに含まれたスレッドの状態確認命令を受け、前記スレッドによるオペレーションが進行中であるかどうか、及び前記スレッドによって行われる作業が入出力オペレーションであるかを確認する状態確認部をさらに含む請求項8に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  12. 前記第2の終了関数を行うステップは、前記第2の終了関数を行うことにより、前記入出力オペレーションが終了したスレッドに対するスレッド終了の例外を発生させるステップを含む請求項8に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  13. 前記信号、前記第1の終了関数、または前記第2の終了関数は、前記スレッドの状態が含まれたテーブルに基づいて行われる請求項8に記載の入出力オペレーションによってブロッキングされたスレッドを強制終了する方法。
  14. 前記テーブルを格納するステップをさらに含む請求項13に記載の入出力オペレーションにブロッキングされたスレッドを強制終了する方法。
JP2007040391A 2006-02-22 2007-02-21 入出力作業によってブロッキングされたスレッドを強制終了する装置および方法 Expired - Fee Related JP4834566B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060017343A KR100714710B1 (ko) 2006-02-22 2006-02-22 입출력 작업에 의해 블로킹된 스레드를 강제 종료하는 장치및 방법
KR10-2006-0017343 2006-02-22

Publications (2)

Publication Number Publication Date
JP2007226799A JP2007226799A (ja) 2007-09-06
JP4834566B2 true JP4834566B2 (ja) 2011-12-14

Family

ID=38269748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007040391A Expired - Fee Related JP4834566B2 (ja) 2006-02-22 2007-02-21 入出力作業によってブロッキングされたスレッドを強制終了する装置および方法

Country Status (4)

Country Link
US (1) US8006246B2 (ja)
JP (1) JP4834566B2 (ja)
KR (1) KR100714710B1 (ja)
CN (1) CN100511156C (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8356356B2 (en) * 2007-01-30 2013-01-15 Microsoft Corporation Anti-debugger comprising spatially and temporally separate detection and response portions
CN101663558B (zh) 2007-04-05 2011-06-22 富士通半导体股份有限公司 表面形状传感器及其制造方法
US8296776B2 (en) * 2008-06-06 2012-10-23 Apple Inc. Efficient mechanism for terminating applications
US8473964B2 (en) * 2008-09-30 2013-06-25 Microsoft Corporation Transparent user mode scheduling on traditional threading systems
US8321874B2 (en) * 2008-09-30 2012-11-27 Microsoft Corporation Intelligent context migration for user mode scheduling
US8289981B1 (en) * 2009-04-29 2012-10-16 Trend Micro Incorporated Apparatus and method for high-performance network content processing
US9026720B2 (en) 2013-02-07 2015-05-05 Apple Inc. Non-volatile memory monitoring
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US10069949B2 (en) 2016-10-14 2018-09-04 Honeywell International Inc. System and method for enabling detection of messages having previously transited network devices in support of loop detection
JP6911566B2 (ja) * 2017-06-21 2021-07-28 株式会社リコー 情報処理装置、制限解除方法及び制限解除プログラム
US10810086B2 (en) 2017-10-19 2020-10-20 Honeywell International Inc. System and method for emulation of enhanced application module redundancy (EAM-R)
US10783026B2 (en) 2018-02-15 2020-09-22 Honeywell International Inc. Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor
CN110750348A (zh) * 2019-10-23 2020-02-04 神州数码融信软件有限公司 批量作业调度方法及装置
CN114461353A (zh) * 2020-11-09 2022-05-10 中兴通讯股份有限公司 调整线程优先级的方法、终端及计算机可读存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175059A (ja) * 1987-12-28 1989-07-11 Nec Corp ジョブ管理方式
JP2856003B2 (ja) 1992-09-28 1999-02-10 日本電気株式会社 非同期データ入出力方式
JP3110185B2 (ja) * 1993-01-18 2000-11-20 株式会社東芝 計算機システム
JP2693916B2 (ja) * 1994-09-22 1997-12-24 米沢日本電気株式会社 タスクスケジュール方法
US6349322B1 (en) * 1998-05-06 2002-02-19 Sun Microsystems, Inc. Fast synchronization for programs written in the JAVA programming language
JP2000293380A (ja) 1999-04-01 2000-10-20 Nec Corp 複数スレッドの終了処理装置および方法
US6842898B1 (en) * 1999-06-10 2005-01-11 International Business Machines Corporation Method and apparatus for monitoring and handling events for a collection of related threads in a data processing system
US6832236B1 (en) * 1999-07-08 2004-12-14 International Business Machines Corporation Method and system for implementing automatic filesystem growth monitor for production UNIX computer system
US6457142B1 (en) * 1999-10-29 2002-09-24 Lucent Technologies Inc. Method and apparatus for target application program supervision
US6711739B1 (en) * 1999-11-08 2004-03-23 Sun Microsystems, Inc. System and method for handling threads of execution
US6687729B1 (en) * 1999-12-20 2004-02-03 Unisys Corporation System and method for providing a pool of reusable threads for performing queued items of work
JP3961301B2 (ja) * 2001-01-25 2007-08-22 松下電器産業株式会社 デジタル機器、タスク管理方法及びそのプログラム
US6910209B2 (en) * 2001-04-30 2005-06-21 Sun Microsystems, Inc. Clean thread termination
JP2003029981A (ja) * 2001-07-11 2003-01-31 Denso Corp 端末およびコンピュータプログラム
JP4058752B2 (ja) 2001-12-11 2008-03-12 日本電気株式会社 携帯情報端末装置
US6886112B2 (en) * 2002-06-28 2005-04-26 Microsoft Corporation Recovering from device failure
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7337444B2 (en) * 2003-01-09 2008-02-26 International Business Machines Corporation Method and apparatus for thread-safe handlers for checkpoints and restarts
US7337443B2 (en) * 2003-06-30 2008-02-26 Microsoft Corporation Method and apparatus for processing program threads
JP2005050023A (ja) * 2003-07-31 2005-02-24 Fujitsu Ltd 情報処理装置及び方法
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
JP4246672B2 (ja) 2004-06-03 2009-04-02 株式会社リコー 画像形成装置および画像形成装置制御方法
US7698708B1 (en) * 2004-07-30 2010-04-13 Symantec Operating Corporation Method and system for persistent, recoverable user-level locks
JP2006146678A (ja) * 2004-11-22 2006-06-08 Hitachi Ltd 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム
US7424644B2 (en) * 2005-03-01 2008-09-09 Microsoft Corporation Method and system for recovering data from a hung application

Also Published As

Publication number Publication date
US20070198980A1 (en) 2007-08-23
CN101025698A (zh) 2007-08-29
JP2007226799A (ja) 2007-09-06
US8006246B2 (en) 2011-08-23
KR100714710B1 (ko) 2007-05-04
CN100511156C (zh) 2009-07-08

Similar Documents

Publication Publication Date Title
JP4834566B2 (ja) 入出力作業によってブロッキングされたスレッドを強制終了する装置および方法
CN101211272B (zh) 虚拟机生成器、虚拟机生成方法和虚拟机管理器
CN100410872C (zh) 用于增强的运行时间主机支持的方法和设备
US7155550B2 (en) Program-executing apparatus and portable information processing apparatus
CN113051088B (zh) 程序加载方法、装置、设备及计算机可读介质
US7194735B2 (en) Executing native code in place of non-native code
CN107122216B (zh) 一种嵌入式实时操作系统动态加载方法
CN108446149A (zh) 一种第三方动态库接口拦截方法及系统
KR100678912B1 (ko) 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템
US20070198723A1 (en) Apparatus and method for managing resources in containment framework environment
CN107729221B (zh) 线程间消息监控方法、装置、计算机设备和存储介质
KR20180122593A (ko) 클라우드 컴퓨팅 환경에서 클라우드 호스트를 삭제하는 방법, 장치, 서버 및 저장 매체
CN104572034A (zh) 一种撤销和/或重做的实现方法和装置
CN112395083A (zh) 一种资源文件的释放方法和装置
CN110018866B (zh) 用户界面主题更新方法、装置、系统、车机及车辆
CN112882690B (zh) 一种应用开发方法及装置
EP1489518B1 (en) Embedded garbage collection
CN106776018A (zh) 用于分布式系统的主节点和从节点的并行处理方法和设备
CN112346390B (zh) 光模块控制方法、装置、设备及计算机可读存储介质
CN110347448A (zh) 一种构造终端应用行为的运行时模型的方法
KR20130020135A (ko) 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법
CN108256647B (zh) 规则执行请求处理方法、装置、存储介质和电子设备
CN111241594A (zh) 交易信息的加签方法、装置、计算机设备和存储介质
JP3961301B2 (ja) デジタル機器、タスク管理方法及びそのプログラム
US7191443B2 (en) Digital device, task management method and program therefor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100921

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110608

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: 20110906

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110926

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: 20140930

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees