(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-18
(45)【発行日】2022-10-26
(54)【発明の名称】マルチスレッド追跡方法、オペレーティングシステムのマルチスレッド追跡システム、およびそれを使用した電子装置
(51)【国際特許分類】
G06F 11/34 20060101AFI20221019BHJP
G06F 9/48 20060101ALI20221019BHJP
【FI】
G06F11/34 166
G06F9/48 300J
【外国語出願】
(21)【出願番号】P 2020218194
(22)【出願日】2020-12-28
【審査請求日】2021-02-24
(32)【優先日】2020-11-18
(33)【優先権主張国・地域又は機関】TW
(73)【特許権者】
【識別番号】390023582
【氏名又は名称】財團法人工業技術研究院
【氏名又は名称原語表記】INDUSTRIAL TECHNOLOGY RESEARCH INSTITUTE
【住所又は居所原語表記】No.195,Sec.4,ChungHsingRd.,Chutung,Hsinchu,Taiwan 31040
(74)【代理人】
【識別番号】110001896
【氏名又は名称】弁理士法人朝日奈特許事務所
(72)【発明者】
【氏名】梁 維恩
(72)【発明者】
【氏名】王 姿琳
【審査官】中村 信也
(56)【参考文献】
【文献】米国特許出願公開第2011/0061062(US,A1)
【文献】米国特許第05758184(US,A)
【文献】中国特許出願公開第101320360(CN,A)
【文献】田原 裕暉 Yuki Tahara,Androidにおけるモジュールを越えたAPI呼出し元特定手法,SCIS2016 [USB] SCIS2016 2016 Symposium on Cryptography and Information Security,2016年01月22日
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
インターセプト部により、2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベントをインターセプトするステップと、
記録部により、前記メッセージキューアクセスイベントそれぞれのスレッド識別情報、プロセス識別情報、入力値、および戻り値を記録するステップと、
マッチング部により、前記メッセージキューアクセスイベントの前記スレッド識別情報、前記プロセス識別情報、前記入力値、および前記戻り値間の関係の判定により、前記スレッドおよび前記メッセージキュー間のプロセス内依存関係を確立するステップと
、
前記インターセプト部により、2つのアプリケーション間のプロセス間通信(IPC)をインターセプトするステップと、
前記マッチング部により、前記プロセス間通信により、前記アプリケーション間のプロセス間依存関係を確立するステップと
を備える、オペレーションシステムのマルチスレッド追跡方法。
【請求項2】
前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップが、
前記メッセージキューアクセスイベントの前記スレッド識別情報が異なっているか否か、および、前記メッセージキューアクセスイベントの前記プロセス識別情報が同一であるか否かを判定するステップと、
前記スレッド識別情報が異なっており、および前記プロセス識別情報が同一である場合に、前記スレッドが同一のアプリケーションに属していると判断するステップと
を備える、請求項1に記載のオペレーションシステムのマルチスレッド追跡方法。
【請求項3】
前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップが、
前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一であるか否かを判定するステップと、
前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一である場合に、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップと
を備える、請求項1に記載のオペレーションシステムのマルチスレッド追跡方法。
【請求項4】
前記メッセージキューアクセスイベントの1つがメッセージユニットを前記メッセージキューに格納する旨の要求であり、前記メッセージキューアクセスイベントの別の1つがメッセージユニットを前記メッセージキューから読み出す旨の要求である、請求項3に記載のオペレーションシステムのマルチスレッド追跡方法。
【請求項5】
前記マッチング部により、前記スレッド識別情報間の関係および前記プロセス識別情報間の関係の判定により、前記スレッドが同一のアプリケーションに属していると判断するステップと、
前記マッチング部により、前記メッセージキューアクセスイベントの1つの入力値と、前記メッセージキューアクセスイベントの別の1つの戻り値との間の関係の判定により、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップと、
前記マッチング部により、2つのアプリケーション間のプロセス間通信により、プロセス間依存関係を確立するステップと、
前記マッチング部により、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係と、前記アプリケーション間の前記プロセス間依存関係とにより、サービス実行トレースを確立するステップと
をさらに備える、請求項1に記載のオペレーションシステムのマルチスレッド追跡方法。
【請求項6】
2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベントをインターセプトするように構成されたインターセプト部と、
前記メッセージキューアクセスイベントそれぞれのスレッド識別情報、プロセス識別情報、入力値、および戻り値を記録するように構成された記録部と、
前記メッセージキューアクセスイベントの前記スレッド識別情報、前記プロセス識別情報、前記入力値、および前記戻り値間の関係の判定により、前記スレッドおよび前記メッセージキュー間のプロセス内依存関係を確立するように構成されたマッチング部と
を備
え、
前記インターセプト部は、2つのアプリケーション間のプロセス間通信(IPC)をインターセプトするようにさらに構成され、
前記マッチング部は、前記プロセス間通信により、前記アプリケーション間のプロセス間依存関係を確立する、
オペレーションシステムのマルチスレッド追跡システム。
【請求項7】
前記マッチング部は、前記メッセージキューアクセスイベントの前記スレッド識別情報が異なっているか否か、および前記メッセージキューアクセスイベントの前記プロセス識別情報が同一であるか否かを判定し、
前記スレッド識別情報が異なっており、および前記プロセス識別情報が同一である場合に、前記マッチング部は、前記スレッドが同一のアプリケーションに属していると判断する、
請求項
6に記載のオペレーションシステムのマルチスレッド追跡システム。
【請求項8】
前記マッチング部は、前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一であるか否かを判定し、
前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一である場合に、前記マッチング部は、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立する、
請求項
6に記載のオペレーションシステムのマルチスレッド追跡システム。
【請求項9】
前記メッセージキューアクセスイベントの1つがメッセージユニットを前記メッセージキューに格納する旨の要求であり、前記メッセージキューアクセスイベントの別の1つがメッセージユニットを前記メッセージキューから読み出す旨の要求である、請求項
8に記載のオペレーションシステムのマルチスレッド追跡システム。
【請求項10】
前記マッチング部は、前記スレッド識別情報間の関係および前記プロセス識別情報間の関係の判定により、前記スレッドが同一のアプリケーションに属していると判断し、
前記マッチング部は、前記メッセージキューアクセスイベントの1つの入力値と、前記メッセージキューアクセスイベントの別の1つの戻り値との間の関係の判定により、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立し、
前記マッチング部は、2つのアプリケーション間のプロセス間通信により、プロセス間依存関係を確立し、
前記マッチング部は、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係と、前記アプリケーション間の前記プロセス間依存関係とにより、サービス実行トレースを確立する、
請求項
6に記載のオペレーションシステムのマルチスレッド追跡システム。
【請求項11】
プロセッサを備える電子装置であって、前記プロセッサが、オペレーションシステムのマルチスレッド追跡方法を実行するためのプログラムコードをロードするように構成され、および前記マルチスレッド追跡方法が、
2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベントをインターセプトするステップと、
前記メッセージキューアクセスイベントそれぞれのスレッド識別情報、プロセス識別情報、入力値、および戻り値を記録するステップと、
前記メッセージキューアクセスイベントの前記スレッド識別情報、前記プロセス識別情報、前記入力値、および前記戻り値間の関係の判定により、前記スレッドおよび前記メッセージキュー間のプロセス内依存関係を確立するステップと
、
2つのアプリケーション間のプロセス間通信(IPC)をインターセプトするステップと、
前記プロセス間通信により、前記アプリケーション間のプロセス間依存関係を確立するステップと
を備える、電子装置。
【請求項12】
前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップが、
前記メッセージキューアクセスイベントの前記スレッド識別情報が異なっているか否か、および、前記メッセージキューアクセスイベントの前記プロセス識別情報が同一であるか否かを判定するステップと、
前記スレッド識別情報が異なっており、および前記プロセス識別情報が同一である場合に、前記スレッドが同一のアプリケーションに属していると判断するステップと
を備える、請求項
11に記載の電子装置。
【請求項13】
前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップが、
前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一であるか否かを判定するステップと、
前記メッセージキューアクセスイベントの1つの前記入力値が、前記メッセージキューアクセスイベントの別の1つの前記戻り値と同一である場合に、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップと
を備える、請求項
11に記載の電子装置。
【請求項14】
前記メッセージキューアクセスイベントの1つがメッセージユニットを前記メッセージキューに格納する旨の要求であり、前記メッセージキューアクセスイベントの別の1つがメッセージユニットを前記メッセージキューから読み出す旨の要求である、請求項
13に記載の電子装置。
【請求項15】
前記マルチスレッド追跡方法が、
前記スレッド識別情報間の関係および前記プロセス識別情報間の関係の判定により、前記スレッドが同一のアプリケーションに属していると判断するステップと、
前記メッセージキューアクセスイベントの1つの入力値と、前記メッセージキューアクセスイベントの別の1つの戻り値との間の関係の判定により、前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係を確立するステップと、
2つのアプリケーション間のプロセス間通信により、プロセス間依存関係を確立するステップと、
前記スレッドおよび前記メッセージキュー間の前記プロセス内依存関係と、前記アプリケーション間の前記プロセス間依存関係とにより、サービス実行トレースを確立するステップと
をさらに備える、請求項
11に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、マルチスレッド追跡方法(multi-threads tracking method)、オペレーティングシステム(operating system)のマルチスレッド追跡システム(multi-threads tracking system)、およびそれを使用した電子装置(electronic device)に関する。
【背景技術】
【0002】
情報技術の発展に伴って、情報技術の適用はよりいっそう広範になってきており、オペレーションシステム(operation system)およびアプリケーション(application)のアーキテクチャはよりいっそう複雑になってきている。たとえば、メッセージキューイングシステム(message queuing system)は特許文献1に開示されている。オペレーションシステムの動作において、各サービス実行トレース(service execution trace)を追跡することが可能な場合、サービス異常(service abnormality)の根本原因を即座に見つけることが可能である。
しかし、一部の物理マシンアプリケーション(physical machine applications)では、複数のスレッド(thread)が同じメッセージキュー(message queue)にアクセスし得る。たとえば、多くの主流のウェブページ(web pages)のフロントエンドフレームワーク(front-end framework)は、同じメッセージキューに複数のスレッドがアクセスするアーキテクチャを有する。現在提案されている手法は、このアーキテクチャ下でのサービス実行トレースを追跡することができない。したがって、研究者は、このアーキテクチャのためのオペレーションシステムのマルチスレッド関係(multi-thread relationship)をどのようにして追跡するかについて懸命に研究している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、マルチスレッド追跡方法、オペレーティングシステムのマルチスレッド追跡システム、およびそれを使用した電子装置に関する。
【課題を解決するための手段】
【0005】
一実施形態によれば、オペレーションシステムのマルチスレッド追跡方法が提供される。マルチスレッド追跡方法は以下のステップを含む。2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベント(message queue access events)がインターセプトされる(intercepted)。メッセージキューアクセスイベントそれぞれのスレッド識別情報(thread identification)、プロセス識別情報(process identification)、入力値(input value)、および戻り値(return value)が記録される。メッセージキューアクセスイベントのスレッド識別情報、プロセス識別情報、入力値、および戻り値間の関係の判定により、スレッドおよびメッセージキュー間のプロセス内依存関係(In-Process dependency)が確立される。
【0006】
別の実施形態によれば、オペレーションシステムのマルチスレッド追跡システムが提供される。マルチスレッド追跡システムはインターセプト部(intercepting unit)、記録部(recording unit)、およびマッチング部(matching unit)を含む。インターセプト部は、2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベントをインターセプトするように構成される。記録部は、メッセージキューアクセスイベントそれぞれのスレッド識別情報、プロセス識別情報、入力値、および戻り値を記録するように構成される。マッチング部は、メッセージキューアクセスイベントのスレッド識別情報、プロセス識別情報、入力値、および戻り値間の関係の判定により、スレッドおよびメッセージキュー間のプロセス内依存関係を確立するように構成される。
【0007】
代替的な実施形態によれば、プロセッサを備える電子装置が提供される。プロセッサは、オペレーションシステムのマルチスレッド追跡方法を実行するためのプログラムコードをロードするように構成される。マルチスレッド追跡方法は、以下のステップを備える。すなわち、2つのスレッドおよび1つのメッセージキュー間の少なくとも2つのメッセージキューアクセスイベントがインターセプトされる。メッセージキューアクセスイベントそれぞれのスレッド識別情報、プロセス識別情報、入力値、および戻り値が記録される。メッセージキューアクセスイベントのスレッド識別情報、プロセス識別情報、入力値、および戻り値間の関係の判定により、スレッドおよびメッセージキュー間のプロセス内依存関係が確立される。
【図面の簡単な説明】
【0008】
【
図1】複数のスレッドが同じメッセージキューにアクセスすることを示す。
【
図2】一実施形態による、オペレーションシステムのマルチスレッド追跡システムを示す。
【
図3】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図4】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図6】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図8】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図10A】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図10B】一実施形態による、オペレーションシステムのマルチスレッド追跡方法のフローチャートを示す。
【
図12】別の実施形態による、オペレーションシステムのマルチスレッド追跡方法を示す。
【発明を実施するための形態】
【0009】
以下の詳細な説明では、説明の目的で、開示された実施形態の徹底的な理解をもたらすために数多くの具体的な詳細を明らかにしている。しかし、これらの具体的な詳細なしで1つまたは複数の実施形態を実施することができることが明らかになるであろう。他の場合には、図面を単純にするために、周知の構造および装置を概略的に示している。
【0010】
図1を参照してほしい。これは、複数のスレッドが同じメッセージキュー(message queue)にアクセスすることを示す。マルチスレッドアーキテクチャ(multi-thread architecture)では、アプリケーション(application)におけるメッセージキューQ1は複数のメッセージユニット(message unit)M1、M2、M3、M4を格納する。スレッド(thread)T1、スレッドT2、およびスレッドT8は同時に、メッセージキューQ1にアクセスし得る。従来、スレッドT1、スレッドT2、およびスレッドT8の依存関係(dependencies)を解析するのは不可能であり、これは、サービス実行トレース(service execution trace)を追跡する(track)ことを不可能にする。
【0011】
図2を参照してほしい。これは、一実施形態による、オペレーションシステム(operation system)1000のマルチスレッド追跡システム(multi-threads tracking system)100を示す。マルチスレッド追跡システム100はたとえば、オペレーションシステム1000のコアシステム(core system)である。マルチスレッド追跡システム100は、インターセプト部(intercepting unit)110、記録部(recording unit)120、およびマッチング部(matching unit)130を含む。マルチスレッド追跡システム100の各コンポーネントの機能は以下のように要約される。すなわち、インターセプト部110は、メッセージおよび通信内容をインターセプトするように構成される。記録部120は種々の情報を記録するように構成される。マッチング部130は、種々の情報を連結してスレッドの依存関係を判定するように構成される。インターセプト部110および/またはマッチング部130はたとえば、回路、チップ、回路基板、プログラムコードを格納する記憶装置である。記録部120はたとえば、メモリ、ハードディスク、またはクラウドストレージセンターである。以下は、フローチャートを伴う、上記コンポーネントの動作の詳細な説明である。
【0012】
図3を参照してほしい。これは、一実施形態による、オペレーションシステム1000のマルチスレッド追跡方法のフローチャートを示す。本開示では、マルチスレッド追跡方法は、上記
図2中のマルチスレッド追跡システム100によって実行することが可能であり、または、マルチスレッド追跡方法は、プログラムコードをロードした電子装置のプロセッサによって実行することが可能である。ステップS110では、インターセプト部110は、2つのスレッドT1、T2および1つのメッセージキューQ1間の2つのメッセージキューアクセスイベント(message queue access event)EV1、EV2をインターセプトする。メッセージキューアクセスイベントEV1はたとえば、メッセージユニットM1、M2、M3、M4をメッセージキューQ1に格納する旨の要求である。メッセージキューアクセスイベントEV2はたとえば、メッセージユニットM1、M2、M3、M4をメッセージキューQ1から読み出す旨の要求である。このステップでは、インターセプト部110は、限定でないが、ユーザの静的に定義されたトレーシング(User Statically-Defined Tracing)(USDT)により、インターセプトを実行する。メッセージキューアクセスイベントEV1およびEV2の発生時刻(occurrence time)は一致しないので、インターセプト部110は、メッセージキューアクセスイベントEV1、EV2を同時にインターセプトする訳でないことになる。インターセプト部110は、いつでもスレッドT1、T2およびメッセージキューQ1間の伝送を監視し、および、いずれかのメッセージキューアクセスイベントが一度発生すると、インターセプトする。
【0013】
次いで、ステップS120では、記録部120は、メッセージキューアクセスイベントEV1、EV2の、スレッド識別情報TID1、TID2、プロセス識別情報PID1、PID2、入力値IP1、IP2、および戻り値RT1、RT2を記録する。スレッド識別情報TID1、TID2はスレッドを表す。プロセス識別情報PID1、PID2は処理手順を表す。一般的に言って、同じアプリケーションの処理手順は同じである。入力値IP1、IP2それぞれは、メッセージユニットをメッセージキューに格納する旨の要求における格納内容であり、または、メッセージキューからメッセージユニットを読み出す旨の要求におけるアドレスである。戻り値RT1およびRT2は、メッセージキューにメッセージユニットを格納する旨の要求の格納結果、または、メッセージキューからメッセージユニットを読み出す旨の要求の読み出し内容である。
【0014】
その後、ステップS130では、マッチング部130は、スレッド識別情報TID1、TID2、プロセス識別情報PID1、PID2、入力値IP1、IP2、および戻り値RT1、RT2間の関係の判定により、スレッドT1、T2、およびメッセージキューQ1間のプロセス内依存関係(In-Process dependency)RS12を確立する。プロセス内依存関係RS12は、スレッドT1およびT2が同じアプリケーション(application)A1に属しているか否か、および、同じメッセージユニットM1を格納し、同じメッセージユニットM1にアクセスするための、スレッドT1、T2、およびメッセージキューQ1間の一連の動作が存在しているか否かを含む。これらの2つの状況についての説明は以下の通りである。
【0015】
図4~5を参照してほしい。
図4は、一実施形態による、オペレーションシステム1000のマルチスレッド追跡方法のフローチャートを示す。
図5は
図4中のステップを示す。オペレーションシステム1000は複数のアプリケーションを含み得るので、複数のスレッドは異なるアプリケーションに属し得る。
図4中のマルチスレッド追跡方法のステップS130は、プロセス内依存関係RS12を確立する際に、これらのスレッドが同じアプリケーションに属しているか否かを確認することが可能である。
【0016】
ステップS110、S120は前述したものと同じであり、およびここでは繰り返すものでない。ステップS130はステップS131およびS132を含む。ステップS131では、マッチング部130は、メッセージキューアクセスイベントEV1、EV2のスレッド識別情報TID1、TID2が異なっているか否か、および、メッセージキューアクセスイベントEV1、EV2のプロセス識別情報PID1、PID2が同一であるか否かを判定する。メッセージキューアクセスイベントEV1、EV2のスレッド識別情報TID1、TID2が異なっており、および、メッセージキューアクセスイベントEV1、EV2のプロセス識別情報PID1、PID2が同一である場合、処理はステップS132に進む。
【0017】
ステップS132では、マッチング部130は、スレッドT1、T2が同じアプリケーションに属していると判断する。
図5に示すように、プロセス識別情報PID1、PID2は同一であるので、スレッドT1、T2、およびメッセージキューアクセスイベントEV1、EV2は同じアプリケーションA1に属する。
【0018】
図6~7を参照してほしい。
図6は、一実施形態による、オペレーションシステム1000のマルチスレッド追跡方法のフローチャートを示す。
図7は
図6中のステップを示す。スレッドT1およびT2が同じアプリケーションA1に属すると判定した後、ステップS130は、同じメッセージユニットM1を格納し、同じメッセージユニットM1にアクセスするための、スレッドT1、T2、およびメッセージキューQ1間の一連の動作が存在しているか否かを確認するためのステップS133およびS134をさらに含む。
【0019】
ステップS133では、マッチング部130は、メッセージキューアクセスイベントEV1の入力値IP1と、メッセージキューアクセスイベントEV2の戻り値RT2が同一であるか否かを判定する。メッセージキューアクセスイベントEV1の入力値IP1と、メッセージキューアクセスイベントEV2の戻り値RT2が同一である場合、処理はステップS134に進む。
【0020】
ステップS134では、マッチング部130は、スレッドT1、T2およびメッセージキューQ1間のプロセス内依存関係RS12を確立する。すなわち、ステップS131~S134の後、マッチング部130は、スレッドT1およびT2が同じアプリケーションA1に属していることを確認し、および、同じメッセージユニットM1を格納し、同じメッセージユニットM1にアクセスするための、スレッドT1、T2、およびメッセージキューQ1間の一連の動作が存在していることを確認するので、スレッドT1、T2およびメッセージキューQ1間のプロセス内依存関係RS12を確立することが可能である。
【0021】
オペレーションシステム1000は、複数のアプリケーションA1、A2、・・・(アプリケーションA2は
図9に示す)を含み得る。1つのサービス要求(services request)は、いくつかのアプリケーションA1、A2、・・・によって実行することが可能である。サービス実行トレースを追跡するために、プロセス間依存関係(Inter-Process dependency)RS23(
図9に示す)をさらに確立する必要がある。以下では、プロセス間依存関係RS23をどのようにして確立するかについてさらに説明する。
【0022】
図8~9を参照してほしい。
図8は、一実施形態による、オペレーションシステム1000のマルチスレッド追跡方法のフローチャートを示す。
図9は
図8中のステップを示す。プロセス内依存関係RS12を確立した後、マルチスレッド追跡方法はステップS140~S150を含む。
【0023】
ステップS140では、インターセプト部110は、2つのアプリケーションA1、A2間のプロセス間通信(Inter-Process Communication)(IPC)をインターセプトする。プロセス間通信IPC1は、2つのプロセスまたはスレッド間でデータまたは信号を伝送するための手法または方法である。プロセス間通信IPC1は、異なるスレッドが、リソースにアクセスし、および互いに作業を連携することを可能にするために使用される。
【0024】
次に、ステップS150では、マッチング部130は、プロセス間通信IPC1により、アプリケーションA1、A2間のプロセス間依存関係RS23を確立する。たとえば、マッチング部130は、プロセス間通信IPC1における、スレッドT2のスレッド識別情報TID2、プロセス識別情報PID2、および送信値TM2、ならびに、スレッドT3のスレッド識別情報TID3、プロセス識別情報PID3、および受信値RC3により、アプリケーションA1、A2間でプロセス間依存関係RS23を確立することが可能であると判断し得る。
【0025】
アプリケーションA2の場合、マルチスレッド追跡システム100は、
図6の実施形態において説明した方法を適用して、スレッドT3、T4およびメッセージキューQ2間でプロセス内依存関係RS34を確立することも可能である。プロセス内依存関係RS34を確立する方法は、プロセス内依存関係RS12を確立する方法と同様であるので、ここでは説明は繰り返さない。
【0026】
図10~11を参照してほしい。
図10Aおよび10Bは、一実施形態による、オペレーションシステム1000のマルチスレッド追跡方法のフローチャートを示す。
図11は、
図10Aおよび10B中のステップを示す。プロセス内依存関係RS12、RS34、およびプロセス間依存関係RS23を確立した後、マルチスレッド追跡方法はステップS160をさらに含む。
【0027】
ステップS160では、マッチング部130は、スレッドT1、T2、T3、T4およびメッセージキューQ1、Q2間のプロセス内依存関係RS12、RS34と、アプリケーションA1、A2間のプロセス間依存関係RS23とにより、サービス実行トレースTRを確立する。サービス実行トレースTRはたとえば、直列の、プロセス内依存関係RS12、プロセス間依存関係RS23、およびプロセス内依存関係RS34のトラジェクトリ(trajectory)をたどる。
図11中のサービス実行トレースTRは、順に、スレッドT1、メッセージキューQ1、スレッドT2、スレッドT3、メッセージキューQ2、およびスレッドT4のトラジェクトリである。サービス実行トレースTRでは、アプリケーション間の、およびアプリケーション内のトレースを取得することが可能である。このようにして、各サービス要求のサービス実行トレースTRにより、サービス異常の根本原因を効果的に、および即座に見つけることが可能である。
【0028】
別の実施形態では、サービス実行トレースTRの確立は、
図12に示す処理に単純化することが可能である。
図12を参照してほしい。これは、別の実施形態による、オペレーションシステム1000のマルチスレッド追跡方法を示す。ステップS1210では、マッチング部130は、スレッド識別情報TID1、TID2間の関係およびプロセス識別情報PID1、PID2間の関係の判定により、スレッドT1、T2が同一のアプリケーションのプロセス内依存関係RS12に属していると判断する。
【0029】
次に、ステップS1220では、マッチング部130は、メッセージキューアクセスイベントEV1の入力値IP1と、メッセージキューアクセスイベントEV2の戻り値RT2との間の関係の判定により、スレッドT1、T2、およびメッセージキューQ1間のプロセス内依存関係R12を確立する。
【0030】
その後、ステップS1230では、マッチング部130は、アプリケーションA1、A2間のプロセス間通信IPC1により、プロセス間依存関係RS23を確立する。
【0031】
次に、ステップS1240では、マッチング部130は、スレッドT1、T2、T3、T4およびメッセージキューQ1、Q2間のプロセス内依存関係R12、RS34と、アプリケーションA1、A2間のプロセス間依存関係RS23とにより、サービス実行トレースTRを確立する。サービス実行トレースTRが確立された後、開発者は、サービス異常の根本原因を効果的に見つけることが可能である。
【0032】
種々の修正および変形を、開示された実施形態に対して行うことが可能であることは当業者には明らかになるであろう。以下の請求項およびその等価物によって本開示の真の範囲が示されて、明細書および実施例が例示に過ぎないとみなされることが意図されている。