TWI840631B - 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 - Google Patents
作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 Download PDFInfo
- Publication number
- TWI840631B TWI840631B TW109140328A TW109140328A TWI840631B TW I840631 B TWI840631 B TW I840631B TW 109140328 A TW109140328 A TW 109140328A TW 109140328 A TW109140328 A TW 109140328A TW I840631 B TWI840631 B TW I840631B
- Authority
- TW
- Taiwan
- Prior art keywords
- message queue
- program
- thread
- access events
- threads
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種作業系統之多執行緒追蹤方法與系統及應用其之電子裝置。作業系統之多執行緒追蹤方法包括以下步驟。攔截二執行緒與一訊息佇列之間的至少二訊息佇列存取事件。記錄各個訊息佇列存取事件之一執行緒識別碼、一程序識別碼、一輸入值及一回傳值。依據判斷這些執行緒識別碼、這些程序識別碼、這些輸入值及這些回傳值之間的關係,建立這些執行緒與訊息佇列之一程式內相依關係。
Description
本揭露是有關於一種作業系統之多執行緒追蹤方法與系統及應用其之電子裝置。
隨著資訊科技的發展,資訊科技的應用越來越廣泛,作業系統與應用程式的架構也越趨複雜。在作業系統運作的過程中,若能夠追蹤出每個服務請求的執行軌跡,則能夠有效且即時找出造成服務異常的問題根源。
然而,在某些實體機器的應用中,多個執行緒可能會存取同一訊息序列。舉例來說,目前主流的許多網頁的前端框架皆有多執行緒存取共同訊息佇列的架構。目前所提出之技術無法在此架構下追蹤出服務執行軌跡。因此,研究人員正努力針對此架構研究如何追蹤作業系統之多執行緒之關係。
本揭露係有關於一種作業系統之多執行緒追蹤方法與系統及應用其之電子裝置。
根據本揭露之一實施例,提出一種作業系統之多執行緒追蹤方法。作業系統之多執行緒追蹤方法包括以下步驟。攔截二執行緒與一訊息佇列之間的至少二訊息佇列存取(access)事件。記錄各個訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value)。依據判斷這些執行緒識別碼、這些程序識別碼、這些輸入值及這些回傳值之間的關係,建立這些執行緒與訊息佇列之一程式內相依關係。
根據本揭露之另一實施例,提出一種作業系統之多執行緒追蹤系統。作業系統之多執行緒追蹤系統包括一攔截單元、一記錄單元及一串聯單元。攔截單元用以攔截二執行緒與一訊息佇列之間的至少二訊息佇列存取事件。記錄單元用以記錄各個訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value)。串聯單元用以依據判斷這些執行緒識別碼、這些程序識別碼、這些輸入值及這些回傳值之間的關係,建立這些執行緒與該訊息佇列之一程式內相依關係。
根據本揭露之再一實施例,提出一種電子裝置。電子裝置包括一處理器。處理器用以載入一程式碼,以執行一作業系統之一多執行緒追蹤方法。多執行緒追蹤方法包括以下步驟。攔截二執行緒與一訊息佇列之間的至少二訊息佇列存取事件。記錄各個訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value)。依據判斷這些執行緒識別碼、這些程序識別碼、這些輸入值及這些回傳值之間的關係,建立這些執行緒與訊息佇列之一程式內相依關係。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100:多執行緒追蹤系統
110:攔截單元
120:記錄單元
130:串聯單元
1000:作業系統
A1,A2:應用程式
EV1,EV2:訊息佇列存取事件
IP1,IP2:輸入值
IPC1:程序間通訊
T1,T2,T3,T4,T8:執行緒
TID1,TID2,TID3:執行緒識別碼
M1,M2,M3,M4:訊息單元
PID1,PID2,PID3:程序識別碼
Q1,Q2:訊息佇列
RC3:接收值
RS12,RS34:程式內相依關係
RS23:程式間相依關係
RT1,RT2:回傳值
S110,S120,S130,S131,S132,S133,S134,S140,S150,S160,S1210,S1220,S1230,S1240:步驟
TM2:傳輸值
TR:服務執行軌跡
第1圖說明多執行緒存取同一訊息佇列之示意圖。
第2圖繪示根據一實施例之作業系統之多執行緒追蹤系統的示意圖。
第3圖示例說明根據一實施例之作業系統之多執行緒追蹤方法的流程圖。
第4圖繪示根據一實施例之作業系統之多執行緒追蹤方法的流程圖。
第5圖示例說明第4圖之各步驟。
第6圖繪示根據一實施例之作業系統之多執行緒追蹤方法的流程圖。
第7圖示例說明第6圖之各步驟。
第8圖繪示根據另一實施例之作業系統之多執行緒追蹤方法的流程圖。
第9圖示例說明第8圖之各步驟。
第10圖繪示根據再一實施例之作業系統之多執行緒追蹤方法的流程圖。
第11圖示例說明第10圖之各步驟。
第12圖繪示根據另一實施例之作業系統之多執行緒追蹤方法的流程圖。
請參照第1圖,其說明多個執行緒存取同一訊息佇列之示意圖。在多執行緒架構中,應用程式內的訊息佇列Q1內存多個訊息單元M1、M2、M3、M4。執行緒T1、執行緒T2、執行緒T8可能同時對訊息佇列Q1進行存取。傳統上無法分析出這些執行緒T1、執行緒T2、執行緒T8的相依性,導致無法進行服務執行軌跡的追蹤。
請參照第2圖,其繪示根據一實施例之作業系統1000之多執行緒追蹤系統100的示意圖。多執行緒追蹤系統100例如是作業系統1000的系統核心。多執行緒追蹤系統100包括
一攔截單元110、一記錄單元120及一串聯單元130。多執行緒追蹤系統100之各項元件之功能概述如下。攔截單元110用以進行訊息與通訊內容的攔截。記錄單元120用以記錄各種資訊。串聯單元130用以串聯各種資訊,以判定多執行緒之相依關係。攔截單元110及串聯單元130例如是一電路、一晶片、一電路板、程式碼或儲存程式碼之儲存裝置。記錄單元120例如是一記憶體、一硬碟或一雲端儲存中心。以下更搭配流程圖詳細說明上述各項元件之運作。
請參照第3圖,第3圖示例說明根據一實施例之作業系統1000之多執行緒追蹤方法的流程圖。在本揭露中,可以透過上述第2圖之多執行緒追蹤系統100來執行多執行緒追蹤方法;或者,可以透過載入程式碼之一電子裝置之一處理器來執行多執行緒追蹤方法。在步驟S110中,攔截單元110攔截二執行緒T1、T2與一訊息佇列Q1之間的二訊息佇列存取事件EV1、EV2。訊息佇列存取事件EV1例如是一對訊息佇列Q1儲存訊息單元M1、M2、M3、M4之請求。訊息佇列存取事件EV2例如是一對訊息佇列Q1讀取訊息單元M1、M2、M3、M4之請求。在此步驟中,攔截單元110係透過(但不限於)用戶態靜態追蹤事件技術(User Statically-Defined Tracing,USDT)進行攔截。由於訊息佇列存取事件EV1、EV2發生時間不一致,故攔截單元110不會同時攔截到訊息佇列存取事件EV1、EV2。攔截單元110隨時監控執行緒T1、T2與訊息佇列Q1之間的傳輸,一但有任一訊息佇列存取事件發生,即會進行攔截。
接著,在步驟S120中,記錄單元120記錄各個訊息佇列存取事件EV1、EV2之一執行緒識別碼(Thread Identification)TID1、TID2、一程序識別碼(Process Identification)PTD1、PID2、一輸入值(Input Value)IP1、IP2及一回傳值(Return value)RT1、RT2。執行緒識別碼TID1、TID2代表執行緒。程序識別碼PID1、PID2代表處理程序。一般而言,同一應用程式的處理程序相同。輸入值IP1、IP2係為訊息佇列儲存請求儲存入一訊息單元中之儲存內容或訊息佇列讀取請求之讀取位置。回傳值(Return value)RT1、RT2係為訊息佇列儲存請求之儲存結果或訊息佇列讀取請求由一訊息單元中讀取之讀取內容。
然後,在步驟S130中,串聯單元130依據判斷這些執行緒識別碼TID1、TID2、這些程序識別碼PID1、PID2、這些輸入值IP1、IP2及這些回傳值RT1、RT2之間的關係,建立這些執行緒T1、T2與訊息佇列Q1之一程式內相依關係RS12。程式內相依關係RS12包括執行緒T1、T2是否屬於同一應用程式A1;以及執行緒T1、T2與訊息佇列Q1之間是否存在對同一訊息單元M1進行儲存與讀取的連串動作。以下針對這兩種情況分別說明如下。
請參照第4~5圖,第4圖繪示根據一實施例之作業系統1000之多執行緒追蹤方法的流程圖,第5圖示例說明第4圖之各步驟。由於作業系統1000可能包含多個應用程式,故多個執行緒可以屬於不同應用程式。第4圖之多執行緒追蹤方法的步
驟S130可以在建立程式內相依關係RS12時,確認這些執行緒是否屬於同一應用程式。
步驟S110、S120同前所述,在此不再重述。步驟S130包括步驟S131、S132。在步驟S131中,串聯單元130判斷這些訊息佇列存取事件EV1、EV2之執行緒識別碼TID1、TID2是否不同,且這些訊息佇列存取事件EV1、EV2之程序識別碼PID1、PID2是否相同。若這些執行緒識別碼TID1、TID2不同,且這些程序識別碼PID1、PID2相同,則進入步驟S132。
在步驟S132中,串聯單元130判定這些執行緒T1、T2屬於同一應用程式。如第5圖所示,在程序識別碼PID1、PID2之內容相同的情況下,執行緒T1、T2及其所執行之訊息佇列存取事件EV1、EV2屬於同一應用程式A1。
請參照第6~7圖,第6圖繪示根據一實施例之作業系統1000之多執行緒追蹤方法的流程圖,第7圖示例說明第6圖之各步驟。在判定這些執行緒T1、T2屬於同一應用程式A1之後,步驟S130更包括步驟S133、S134,來確認執行緒T1、T2與訊息佇列Q1之間是否存在對同一訊息單元M1進行儲存與讀取的連串動作。
在步驟S133中,串聯單元130判斷訊息佇列存取事件EV1的輸入值IP1與訊息佇列存取事件EV2的回傳值RT2是否相同。若訊息佇列存取事件EV1的輸入值IP1與訊息佇列存取事件EV2的回傳值RT2相同,則進入步驟S134。
在步驟S134中,串聯單元130建立這些執行緒T1、T2與訊息佇列Q1之程式內相依關係RS12。也就是說,經過了
步驟S131~S134,串聯單元130確認這些執行緒T1、T2屬於同一應用程式A1,且確認執行緒T1、T2與訊息佇列Q1之間存在對同一訊息單元M1進行儲存與讀取的連串動作,故可建立這些執行緒T1、T2與訊息佇列Q1之程式內相依關係RS12。
作業系統1000可能包含多個應用程式A1、A2、...(應用程式A2繪示於第9圖),某一服務請求可以透過多個應用程式A1、A2、...來執行,若欲追蹤服務執行軌跡,則需進一步建立出程式間相依關係RS23(繪示於第9圖)。以下更進一步說明如何建立出程式間相依關係RS23。
請參照第8~9圖,第8圖繪示根據另一實施例之作業系統1000之多執行緒追蹤方法的流程圖,第9圖示例說明第8圖之各步驟。在建立出程式內相依關係RS12之後,多執行緒追蹤方法更包括步驟S140~S150。
在步驟S140中,攔截單元110攔截二應用程式A1、A2之間的一程序間通訊(InterProcess Communication,IPC)IPC1。程序間通訊IPC1係為兩個行程或執行緒間傳送資料或訊號的技術或方法。為了能使不同的執行緒互相存取資源並進行協調工作,才有了程序間通訊IPC1。
接著,在步驟S150中,串聯單元130依據程序間通訊IPC1,建立這些應用程式A1、A2之一程式間相依關係RS23。舉例來說,串聯單元130可以依據程序間通訊IPC1所帶的執行緒T2之執行緒識別碼TID2、程序識別碼PID2及傳輸值TM2、執行緒T3之執行緒識別碼TID3、程序識別碼PID3及接收值RC3判定應用程式A1、A2具有程式間相依關係RS23。
對於應用程式A2,多執行緒追蹤系統100同樣也可以利用第6圖之實施例建立出執行緒T3、T4與訊息佇列Q2之程式內相依關係RS34。程式內相依關係RS34之建立方式類似於程式內相依關係RS12之建立方式,在此不再重複敘述。
請參照第10~11圖,第10圖繪示根據再一實施例之作業系統1000之多執行緒追蹤方法的流程圖,第11圖示例說明第10圖之各步驟。在建立程式內相依關係RS12、RS34及程式間相依關係RS23之後,多執行緒追蹤方法更包括步驟S160。
在步驟S160中,串聯單元130依據執行緒T1、T2、T3、T4與訊息佇列Q1、Q2之程式內相依關係RS12、RS34及應用程式A1、A2之程式間相依關係RS23,建立一服務執行軌跡TR。服務執行軌跡TR例如是按照程式內相依關係RS12、程式間相依關係RS23及程式內相依關係RS34所串接之軌跡。第11圖之服務執行軌跡TR依序為執行緒T1、訊息佇列Q1、執行緒T2、執行緒T3、訊息佇列Q2及執行緒T4。在服務執行軌跡TR中,可以取得應用程式間的追蹤以及應用程式內的追蹤。如此一來,透過每個服務請求的服務執行軌跡TR,都能夠有效且即時找出造成服務異常的問題根源。
在另一實施例中,服務執行軌跡TR的建立可以簡化為第12圖的流程。請參照第12圖,其繪示根據另一實施例之作業系統1000之多執行緒追蹤方法的流程圖。在步驟S1210中,串聯單元130依據判斷這些執行緒識別碼TID1,TID2及這些程序識別碼PID1,PID2之關係,建立這些執行緒T1,T2屬於同一應用程式之程式內相依關係RS12。
接著,在步驟S1220中,串聯單元130依據判斷訊息佇列存取事件EV1的輸入值IP1與訊息佇列存取事件EV2之的回傳值RT2之關係,建立執行緒T1、T2與訊息佇列Q1之該程式內相依關係RS12。
然後,在步驟S1230中,串聯單元130依據二應用程式A1、A2之間的程序間通訊IPC1,建立這些應用程式A1、A2之程式間相依關係RS23。
接著,在步驟S1240中,串聯單元130依據這些執行緒T1、T2、T3、T4與訊息佇列Q1、Q2之程式內相依關係RS12、RS34及應用程式A1、A2之程式間相依關係RS23,建立服務執行軌跡TR。建立出服務執行軌跡TR之後,開發人員就能夠有效找出造成服務異常的問題根源。
綜上所述,雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
100:多執行緒追蹤系統
110:攔截單元
120:記錄單元
130:串聯單元
1000:作業系統
A1:應用程式
EV1,EV2:訊息佇列存取事件
IP1,IP2:輸入值
T1,T2:執行緒
TID1,TID2:執行緒識別碼
M1:訊息單元
PID1,PID2:程序識別碼
Q1:訊息佇列
RS12:程式內相依關係
RT1,RT2:回傳值
Claims (15)
- 一種作業系統之多執行緒追蹤方法,包括:透過一個攔截單元攔截一個以上之應用程式的至少四執行緒與至少二訊息佇列之間的至少四訊息佇列存取(access)事件;記錄各該訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value);依據判斷該些執行緒識別碼、該些程序識別碼、該些輸入值及該些回傳值之間的關係,建立該些執行緒與該訊息佇列之一程式內相依關係,各該輸入值係為一儲存內容,各該回傳值係為一讀取內容;攔截該些應用程式之間的一程序間通訊(InterProcess Communication,IPC);以及依據該程序間通訊,建立該些應用程式之一程式間相依關係。
- 如請求項1所述之作業系統之多執行緒追蹤方法,其中建立該些執行緒與該訊息佇列之該程式內相依關係的步驟包括:判斷該些訊息佇列存取事件之該些執行緒識別碼是否不同,且該些訊息佇列存取事件之該些程序識別碼是否相同;以及若該些執行緒識別碼不同,且該些程序識別碼相同,則判定該些執行緒屬於同一應用程式之該程式內相依關係。
- 如請求項1所述之作業系統之多執行緒追蹤方法,其中建立該些執行緒與該訊息佇列之該程式內相依關係的步驟更包括:判斷該些訊息佇列存取事件之其中一者的該輸入值與該些訊息佇列存取事件之其中另一者的該回傳值是否相同;以及若該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值相同,則建立該些執行緒與該訊息佇列之該程式內相依關係。
- 如請求項3所述之作業系統之多執行緒追蹤方法,其中該些訊息佇列存取事件之其中一者係為對該訊息佇列儲存一訊息單元之請求,該些訊息佇列存取事件之其中另一者係為對該訊息佇列讀取一訊息單元之請求。
- 如請求項1所述之作業系統之多執行緒追蹤方法,更包括:依據判斷該些執行緒識別碼以及該些程序識別碼之關係,建立該些執行緒屬於同一應用程式之該程式內相依關係;依據判斷該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值之關係,建立該些執行緒與該訊息佇列之該程式內相依關係;依據該些應用程式之間的該程序間通訊,建立該些應用程式之該程式間相依關係;以及 依據該些執行緒與該訊息佇列之該程式內相依關係及該些應用程式之該程式間相依關係,建立一服務執行軌跡。
- 一種作業系統之多執行緒追蹤系統,包括:一攔截單元,用以攔截一個以上之應用程式的至少四執行緒與至少二訊息佇列之間的至少四訊息佇列存取事件;一記錄單元,用以記錄各該訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value);以及一串聯單元,用以依據判斷該些執行緒識別碼、該些程序識別碼、該些輸入值及該些回傳值之間的關係,建立該些執行緒與該訊息佇列之一程式內相依關係,各該輸入值係為一儲存內容,各該回傳值係為一讀取內容;該攔截單元更用以攔截該些應用程式之間的一程序間通訊(InterProcess Communication,IPC);並且該串聯單元更依據該程序間通訊,建立該些應用程式之一程式間相依關係。
- 如請求項6所述之作業系統之多執行緒追蹤系統,其中該串聯單元判斷該些訊息佇列存取事件之該些執行緒識別碼是否不同,且該些訊息佇列存取事件之該些程序識別碼是否相同; 若該些執行緒識別碼不同,且該些程序識別碼相同,則該串聯單元判定該些執行緒屬於同一應用程式之該程式內相依關係。
- 如請求項6所述之作業系統之多執行緒追蹤系統,其中該串聯單元更判斷該些訊息佇列存取事件之其中一者的該輸入值與該些訊息佇列存取事件之其中另一者的該回傳值是否相同;若該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值相同,則該串聯單元建立該些執行緒與該訊息佇列之該程式內相依關係。
- 如請求項8所述之作業系統之多執行緒追蹤系統,其中該些訊息佇列存取事件之該其中一者係為對該訊息佇列儲存一訊息單元之請求,該些訊息佇列存取事件之該其中另一者係為對該訊息佇列讀取訊息單元之請求。
- 如請求項6所述之作業系統之多執行緒追蹤系統,其中該串聯單元依據判斷該些執行緒識別碼以及該些程序識別碼之關係,建立該些執行緒屬於同一應用程式之該程式內相依關係; 該串聯單元依據判斷該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值之關係,建立該些執行緒與該訊息佇列之該程式內相依關係;該串聯單元依據該些應用程式之間的該程序間通訊,建立該些應用程式之該程式間相依關係;該串聯單元依據該些執行緒之該程式內相依關係及該些應用程式之該程式間相依關係,建立一服務執行軌跡。
- 一種電子裝置,包括一處理器,該處理器用以載入一程式碼,以執行一作業系統之一多執行緒追蹤方法,該多執行緒追蹤方法包括:攔截一個以上之應用程式的至少四執行緒與至少二訊息佇列之間的至少四訊息佇列存取事件;記錄各該訊息佇列存取事件之一執行緒識別碼(Thread Identification)、一程序識別碼(Process Identification)、一輸入值(Input Value)及一回傳值(Return value);以及依據判斷該些執行緒識別碼、該些程序識別碼、該些輸入值及該些回傳值之間的關係,建立該些執行緒與該訊息佇列之一程式內相依關係,各該輸入值係為一儲存內容,各該回傳值係為一讀取內容;其中該多執行緒追蹤方法更包括:攔截該些應用程式之間的一程序間通訊(InterProcess Communication,IPC);以及 依據該程序間通訊,建立該些應用程式之一程式間相依關係。
- 如請求項11所述之電子裝置,其中建立該些執行緒與該訊息佇列之該程式內相依關係的步驟包括:判斷該些訊息佇列存取事件之該些執行緒識別碼是否不同,且該些訊息佇列存取事件之該些程序識別碼是否相同;若該些執行緒識別碼不同,且該些程序識別碼相同,則判定該些執行緒屬於同一應用程式之該程式內相依關係。
- 如請求項11所述之電子裝置,其中建立該些執行緒與該訊息佇列之該程式內相依關係的步驟更包括:判斷該些訊息佇列存取事件之其中一者的該輸入值與該些訊息佇列存取事件之其中另一者的該回傳值是否相同;若該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值相同,則建立該些執行緒與該訊息佇列之該程式內相依關係。
- 如請求項13所述之電子裝置,其中該些訊息佇列存取事件之該其中一者係為對該訊息佇列儲存一訊息單元之請求,該些訊息佇列存取事件之該其中另一者係為對該訊息佇列讀取一訊息單元之請求。
- 如請求項11所述之電子裝置,其中該多執行緒追蹤方法更包括:依據判斷該些執行緒識別碼以及該些程序識別碼之關係,建立該些執行緒屬於同一應用程式之該程式內相依關係;依據判斷該些訊息佇列存取事件之該其中一者的該輸入值與該些訊息佇列存取事件之該其中另一者的該回傳值之關係,建立該些執行緒與該訊息佇列之該程式內相依關係;依據該些應用程式之間的該程序間通訊,建立該些應用程式之該程式間相依關係;以及依據該些執行緒與該訊息佇列之該程式內相依關係及該些應用程式之該程式間相依關係,建立一服務執行軌跡。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW109140328A TWI840631B (zh) | 2020-11-18 | 2020-11-18 | 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 |
| GB2020660.3A GB2601201B (en) | 2020-11-18 | 2020-12-28 | Multi-threads tracking method, multi-threads tracking system for operating system and electronic device using the same |
| US17/135,224 US20220156127A1 (en) | 2020-11-18 | 2020-12-28 | Multi-threads tracking method, multi-threads tracking system for operating system and electronic device using the same |
| JP2020218194A JP7161517B2 (ja) | 2020-11-18 | 2020-12-28 | マルチスレッド追跡方法、オペレーティングシステムのマルチスレッド追跡システム、およびそれを使用した電子装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW109140328A TWI840631B (zh) | 2020-11-18 | 2020-11-18 | 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202221502A TW202221502A (zh) | 2022-06-01 |
| TWI840631B true TWI840631B (zh) | 2024-05-01 |
Family
ID=74532108
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109140328A TWI840631B (zh) | 2020-11-18 | 2020-11-18 | 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20220156127A1 (zh) |
| JP (1) | JP7161517B2 (zh) |
| GB (1) | GB2601201B (zh) |
| TW (1) | TWI840631B (zh) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110010715A1 (en) * | 2006-06-20 | 2011-01-13 | Papakipos Matthew N | Multi-Thread Runtime System |
| TW201324182A (zh) * | 2011-12-15 | 2013-06-16 | Ind Tech Res Inst | 在一或多個虛擬機器中產生應用層級相依性的系統與方法 |
| TW201732564A (zh) * | 2015-12-24 | 2017-09-16 | 英特爾股份有限公司 | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 |
| TW201737069A (zh) * | 2015-12-23 | 2017-10-16 | 財團法人工業技術研究院 | 產生虛擬機器訊息佇列應用程式之相依關係的方法與系統 |
| TW201741874A (zh) * | 2012-06-15 | 2017-12-01 | 英特爾股份有限公司 | 根據儲存資歷實施來自不同執行緒轉送的執行緒不可知之載入儲存緩衝區 |
| US10685034B2 (en) * | 2017-10-17 | 2020-06-16 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5758184A (en) * | 1995-04-24 | 1998-05-26 | Microsoft Corporation | System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads |
| US7627744B2 (en) | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
| US9027034B2 (en) | 2009-07-29 | 2015-05-05 | EchoStar Technologies, L.L.C. | Communication among execution threads of at least one electronic device |
| US10599551B2 (en) * | 2016-08-12 | 2020-03-24 | The University Of Chicago | Automatically detecting distributed concurrency errors in cloud systems |
-
2020
- 2020-11-18 TW TW109140328A patent/TWI840631B/zh active
- 2020-12-28 US US17/135,224 patent/US20220156127A1/en not_active Abandoned
- 2020-12-28 GB GB2020660.3A patent/GB2601201B/en active Active
- 2020-12-28 JP JP2020218194A patent/JP7161517B2/ja active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20110010715A1 (en) * | 2006-06-20 | 2011-01-13 | Papakipos Matthew N | Multi-Thread Runtime System |
| TW201324182A (zh) * | 2011-12-15 | 2013-06-16 | Ind Tech Res Inst | 在一或多個虛擬機器中產生應用層級相依性的系統與方法 |
| TW201741874A (zh) * | 2012-06-15 | 2017-12-01 | 英特爾股份有限公司 | 根據儲存資歷實施來自不同執行緒轉送的執行緒不可知之載入儲存緩衝區 |
| TW201737069A (zh) * | 2015-12-23 | 2017-10-16 | 財團法人工業技術研究院 | 產生虛擬機器訊息佇列應用程式之相依關係的方法與系統 |
| TW201732564A (zh) * | 2015-12-24 | 2017-09-16 | 英特爾股份有限公司 | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 |
| US10685034B2 (en) * | 2017-10-17 | 2020-06-16 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2601201A (en) | 2022-05-25 |
| GB2601201B (en) | 2023-01-04 |
| GB202020660D0 (en) | 2021-02-10 |
| US20220156127A1 (en) | 2022-05-19 |
| TW202221502A (zh) | 2022-06-01 |
| JP2022080814A (ja) | 2022-05-30 |
| JP7161517B2 (ja) | 2022-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10474471B2 (en) | Methods and systems for performing a replay execution | |
| US6591228B1 (en) | Centralized diagnostic logging service | |
| US6643802B1 (en) | Coordinated multinode dump collection in response to a fault | |
| EP2385472B1 (en) | Fine grain synchronization for database replay | |
| US8775837B2 (en) | System and method for enabling turbo mode in a processor | |
| US7065765B2 (en) | Serializing event handling in a threaded system with no wait states | |
| US9569399B2 (en) | Routing data communications packets in a parallel computer | |
| US9146843B2 (en) | Recording execution information | |
| US20080098003A1 (en) | Database workload replay remapping infrastructure | |
| US20080097995A1 (en) | Database workload capture and replay architecture | |
| EP1091294B1 (en) | Method and apparatus for assigning resources to logical partition clusters | |
| US20050171930A1 (en) | Dynamic Determination of Transaction Boundaries in Workflow Systems | |
| JPH0535453B2 (zh) | ||
| JPH0535454B2 (zh) | ||
| US20120054245A1 (en) | Transactionally consistent database replay in an environment with connection pooling | |
| US9652301B2 (en) | System and method providing run-time parallelization of computer software using data associated tokens | |
| CN106294169A (zh) | 一种基于符号执行虚拟机的数据竞争检测与重放方法 | |
| US20180052754A1 (en) | Performance metric contextualization in a distributed computing environment | |
| US20120059997A1 (en) | Apparatus and method for detecting data race | |
| TWI840631B (zh) | 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置 | |
| US9092333B2 (en) | Fault isolation with abstracted objects | |
| CN102214094B (zh) | 经由异步编程模型执行操作 | |
| Long | Improvement and implementation of a high performance CQRS architecture | |
| US20100217930A1 (en) | Managing processing systems access to control blocks providing information on storage resources | |
| US8707306B1 (en) | Implementing user-selectable concurrent access protection mechanism in a multi-tasking modeling environment |