TWI235953B - Method and apparatus for handling threads in a data processing system - Google Patents
Method and apparatus for handling threads in a data processing system Download PDFInfo
- Publication number
- TWI235953B TWI235953B TW092117489A TW92117489A TWI235953B TW I235953 B TWI235953 B TW I235953B TW 092117489 A TW092117489 A TW 092117489A TW 92117489 A TW92117489 A TW 92117489A TW I235953 B TWI235953 B TW I235953B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- user
- core
- core thread
- threads
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
1235953 玖、發明說明: 註:本說明書中,’pthread’及’thread’均譯為「執行緒 兩者係指不同作業系統下之同一事物。 【發明所屬之技術領域】 本發明概言之與一改進之資料處理系統相關,尤指 資料處理系統中管理執行緒之方法和設備。尤有甚者, 發明對控制休眠和喚醒執行緒提供一增進效能之方法及 統0 【先前技術】 執行緒為中央處理器(CPU)之基本單位。一執行緒 常擁有程式計數器、登錄設定、及堆疊空間。一執行緒 其他執行緒共用它的編碼區段、資料區段以及它的作業 統資源,諸如開啟檔案及訊息。這些元件亦被稱之為「 務」。一些系統部署使用者執行緒於使用者層級函式庫, 非利用系統呼叫,因此執行緒的轉換不需要呼叫作業系 而對核心造成中斷。 從許多方面來看,執行緒之作業即為處理程序。一 行緒可能有的狀態為下列之一:備便、鎖定、休眠、執 或終止。使用者空間中之使用者執行緒為核心中之核心 行緒所執行。一核心執行緒亦被稱為虛擬處理器。在某 情形下,人們利用一對一模組,其中,每一使用者執行 擁有對應之核心執行緒。在其他的情形下,人們利用Μ 模組,其中,許多使用者執行緒在一些核心執行緒上執 本 系 通 和 系 任 而 統 執 行 執 些 緒 ••Ν 行 3 1235953 以增進效能。在這模組中,會發生一些狀況,例如,共用 互斥下之鎖定,其中,一核心執行緒不再須要去執行特定 之使用者執行緒。一共用互斥是一鎖定機制,和用以抓取 和釋放一物件之程式旗標相關。當資料被要求不能共享, 或啟始之程序不能為系統中他處同時執行時,該共用互斥 被設定為「鎖定」,以鎖定其他意欲使用它的人。當資料不 被需要或者副程式已經完成,該共用互斥被設為「解鎖」。 如果當下沒有其他使用者執行緒可使用,該核心執行緒將 自特定使用者執行緒分離自身並進入休眠狀態。 一核心執行緒分離以進入休眠狀態會引發許多動作。 其中一個動作為該核心執行緒自一使用者堆疊轉換至它自 身之較小堆疊。此外,該核心執行緒建立訊號遮罩以鎖定 大部份訊號。當該核心執行緒再度被需要時,該核心執行 緒將轉換至上述使用者執行緒堆疊並建立幾個執行緒專屬 屬性,例如訊號遮罩。 本發明確認當下所使用之分離及隨後之再連結機制與 一大量之工作過載(performance over flow)相關。任一分離 或再連結需求一系統呼叫以自使用者空間複製資料至核心 空間或自核心空間至使用者空間。此外,核心函式庫及核 心中皆用到鎖定,導致增加鎖定競爭的機會。此類之分離 亦牽涉到潛在的訊號控制問題。尤其是一小型視窗在核心 執行緒鎖定訊號之前出現。其中,在它的小塊核心堆疊上 執行時,該核心執行緒可能接收到訊號。本發明亦確認在 較大之使用者執行緒堆疊上執行良好之訊號操作者可能在 4 1235953 車乂】之核〜執仃緒堆疊上溢流,破壞了記憶體和/或導致磁 心傾印的發生。 上述兩個工作過載和堆疊溢流是不同的問題,但有相 同的原因1¾原因即為「間置」核心執行緒之分離。因此, 奪4之U法為採用改進之方法、設備和電腦指令以操作閒 置核。執行緒’可以減少工作過載及避免堆疊溢流。 【發明内容】 本發明提供一方法、設備和電令指令以管理執行緒。 相關於使用者執行緒之核心、執行緒在不被使用者執行緒 所扃要時刀離。但供核心執行緒所需之資料並不因核心執 行緒不被需要而改變堆疊,該核心執行緒是為半分離狀態。 【實施方式】 士圖示尤其為圖1,依據本發明較佳實施例,圖示 為本發明可以部署之資料處理系統。圖示之電腦1 00包括 系統單位102、視訊顯示終端1〇4,鍵盤1〇6、儲存儀器1〇8, 和滑鼠1 1 0 °又該儲存儀器可能包括軟碟機及其他型態之 永久而可移除之儲存媒體。額外之輸入儀器亦可能被包括 在個人電腦1 〇〇當中,例如,一搖桿、觸控盤、觸控螢幕、 軌跡球、麥克風、及其他類似者。電腦丨〇 〇可以是任何適 合之電腦’例如一 IBM eServer電腦或IntelliStation電 腦。該IntelliStation電腦為位於美國紐約州阿默克 (Armonk, New York, U.S.)之國際商業機器公司 1235953 (International Business Machines Corporation)的產品 〇 雖 然該圖顯示者為一電腦,但本發明其他的實施例亦可部署 於其他型態之資料處理系統。例如,一網路電腦。較佳之 電腦100亦包括一圖形使用者介面(GUI),該圖形使用者介 面可以藉由在電腦1 00之電腦可讀取媒體中之系統軟體所 部署。 如圖2所示,為一本發明可以部署之資料處理系統之 區塊圖。資料處理系統200為電腦之一例,例如圖1中之 電腦100。其中,可以為用以部署本發明之程式碼和指令 所在。資料處理系統200使用一週邊元件介面(PCI)區域匯 流排架構。雖然圖示為一 p CI匯流,其他匯流排架構,例 如,加速圖形埠(AGP)和工業標準架構(ISA)亦能使用。處 理器202及主記體204經由PCI橋接器208連接至PCI區 域匯流排206。 PCI橋接器208亦可以包括一整合性記憶體控制器和 供處理益用之快取記憶體。在示例中,區域網路(lan)介 面卡2 1 0 ’小型電腦系統介面s c S I主機匯流排介面卡2 1 2 和擴充匯流排介面2 1 4元件直接連接至p c〗區域匯流排 206。反之,音效介面卡216、圖形介面卡218和音效/視 訊判面卡2 1 9則插入可外掛式主機板上的擴充插槽,以連 接至pci區域匯流排206。擴充匯流排介面214可藉以連 接至一鍵盤和滑鼠介面卡22〇,數據機222,和額外的記憶 體224。SCSI主機匯流排介面卡212提供至硬碟226、磁 帶機228和光碟機230之連結。典型的pci區域匯流排之 1235953 部署可支援三或四個PCI擴充插槽或外掛連接器。 圖2中,一作業系統在處理器202上執行並被用在資 料處理系統中控制各式元件。 該作業系統可以是商業上可獲得之作業系統,例如, 進階互動執行(Advanced Interactive executive,AIX)或視 窗XP(Windows XP)。AIX是UNIX之一版本,並且為自國 際商業機器公司所獲得。WindowsXP可自微軟公司獲得。 作業系統及應用或程式之指令位於儲存儀器中,例如硬碟 機2 26。亦可以位於主記憶體204供處理器執行。 一般習知本項技藝者可了解圖2所示之硬體可能依部 署之方式而變。其他内部硬體或週邊儀器,例如,快閃唯 讀記憶體(ROM),相等之非揮發性記憶體,或光碟機及類 似者亦可用於增加或替代圖2所示者。此外,本發明亦可 用於微處理器資料處理系統。 例如,資料處理系統2 0 0,如果選擇性地設定為一網 路電腦亦可能包括SCSI主機匯流排介面卡2 1 2,硬碟機 226,磁帶機228,和光碟機230。此例中,該電腦(精確的 稱呼為客戶端電腦)包括一些型態之網路通訊介面,例如, LAN介面卡210,數據機2 22,或相似者。在另一例中, 資料處理系統200可以是設定為不依靠網路通訊介面以開 機之獨立系統,不論是否資料處理系統200包含網路通訊 介面。在進一步之示範例中,資料處理系統200可以是一 個人數位助理(PDA),它被設定為以ROM和/或快閃ROM 提供非揮發性記憶體供儲存作業系統檔和/或使用者所產 7 1235953 生之資料。 圖2所示及上述示例並不意指對其設限。例如,資料 處理系統200亦可以是一筆記型電腦以及含有PDA型式之 手持式電腦。資料處理系統 2 0 0亦可以是一觸控式電腦 (k i 〇 s k)或一網頁應用程式。
本發明係藉由處理器以電腦部署之指令執行程序。該 指令可以位於一記憶體中,例如,主記憶體 2 0 4,記憶體 224,或在一或多個週邊儀器226-230上。 現在請參見圖3,圖示為依據本發明較佳實施例,用 以控制核心執行緒之元件。本例中,使用者執行緒 3 0 0, 3 02,3 04,3 06及3 0 8位於使用者空間3 1 0。而核心執行緒 3 1 2、3 1 4、3 1 6位於核心空間3 1 8。本例中,那些執行緒依 循Μ :N模組,其中,許多使用者執行緒可以在少數核心執 行緒上執行以增進效能。
現在,使用者執行緒3 00由核心執行緒3 1 2所執行, 使用者執行緒3 0 4由核心執行緒3 1 4所執行,而使用者執 行緒3 0 6由核心執行緒3 1 6所執行,這些使用者執行緒所 執行之操作位於使用者執行緒堆疊 3 2 0。每一使用者執行 緒和一使用者執行緒堆疊相關。核心執行緒3 1 2、3 1 4和 316有資料放置於使用者執行緒堆疊320中。在使用者執 行緒堆疊320之特定堆疊與被核心執行緒所執行之使用者 執行緒相關。 一般而言,如果一核心執行緒(例如,核心執行緒3 1 2) 不再須要執行一使用者執行緒(例如,使用者執行緒300), 8 1235953 該核心執行緒3 1 2將自己分離開來並與 進入休眠狀態。在休眠狀態之核心執行 行緒函式庫3 2 4所管理之分離列表3 2 2, 為一動態可載入函式庫,用於AIX’中。 行緒3 00分離,提供給核心執行緒3 1 2 至使用者執行緒堆疊3 2 0之堆疊指標被 它的核心執行緒堆疊3 2 6之區域。當使 休眠狀態被喚醒,核心執行緒3 1 2可以 被移除,並再連接至使用者執行緒3 00 依據本發明之較佳實施例,當使用 一狀態,其中,核心執行緒 312不被Ϊ 態),則核心執行緒3 1 2被執行緒函式庫 表3 28,而非置於分離列表322。在半分 3 1 2不改變它的堆疊或訊號遮罩。相反ό 被置於半分離列表3 28並和使用者執行 在這同步休眠狀態中,核心執行緒3 1 2 例如,該堆疊及供使用者執行緒在休眠 這類資訊亦被稱作「使用者執行緒專屬 中,核心執行緒3 12確認自身能夠執 緒,但傾向於優先執行在分離列表3 22 執行緒3 1 2傾向於與其相關聯之使用者 離列表 3 2 8可以以不同方式部署在特 中,該列表被部署作執行緒架構之連結 如果使用者執行緒3 0 0自一休眠狀 使用者執行緒300 緒通常被置於由執 ’執行緒函式庫324 伴隨著自使用者執 之訊息顯示當下指 修改為指至保留給 用者執行緒3 00自 被自分離列表322 中 〇 者執行緒300進入 I要(例如,休眠狀 3 24置於半分離列 離中,核心執行緒 6,核心執行緒3 1 2 緒3 0 0同步休眠。 所維持之資訊為, 時用之訊號遮罩。 屬性」。在同步休眠 行其他使用者執行 中之執行緒。核心 •執行緒300。半分 定之執行體。此例 核心。 態醒來,核心執行 9 1235953 緒3 12將自半分離列表328移除自身並持續 行緒3 00。該機制提供一途徑,其中,在執行 中喚醒一執行緒時,能招致較少之延遲。此 自一鎖定競爭、一狀態變數或一訊號中喚醒 這些事件後所執行之動作通常需要在處理 成。 如果位於半分離列表3 2 8之一核心執行 去執行另一使用者執行緒,便可藉由自當下 之狀態分離至新使用者狀態以避免作業違規 離核心執行緒。例如,如果核心執行緒3 12 3 28上而另一使用者執行緒(例如,使用者執 核心執行緒3 1 2以執行該執行緒。與使用者 關之堆疊可以被連接至使用者執行緒 3 02。 改變使用者執行緒 3 00之堆疊屬性以符合 3 02者。例如,堆疊指標及訊號遮罩可以自 300者改變至使用者執行緒302者。 如此,一核心執行緒只能在一與該核心 使用者執行緒離開或結束時完全地分離。因 狀況中,與一般分離相關之效能浪費便可避 接下來,圖4A至4C所示為依據本發 例,用於半分離列表之資料結構。這些資料 部署一半分離列表,例如圖3之半分離列表 如圖4A,一連結列表被用於指向不同的 例如,項目4 0 0和4 02被用於指向不同之核 執行使用者執 •緒函式庫324 類機制有助於 ’因為跟隨在 其餘程式前完 緒需要在稍後 使用者執行緒 ,而且無需分 在半分離列表 行緒302)需求 執行緒300相 其方法為藉由 使用者執行緒 使用者執行緒 執行緒相關之 此,在大部份 免。 明較佳之實施 結構可以用於 328。 核心執行緒。 心執行緒。列 10 1235953 表標頭標誌、406標示連結列表之開始。項目400包 指標408和下一指標410。項目402包含先前指標 下一指標 4 1 4。在連結列表中,這些指標被用來指 前和下一項目。尤有甚者,項目400包括指標416 4 0 2包括指標4 1 8,而這些指標指向核心執行緒,例 心執行緒420及422。 接下來,在圖4B中,用於列表結構之資訊配 行緒結構。此例中,列表標頭標誌43 0指向起始處 執行緒,即核心執行緒432。核心執行緒432包含 心執行緒436之下一指標434。核心執行緒432亦 向列表中某一先前核心執行緒之先前指標 43 8。核 緒436包含指回核心執行緒432之先前指標440。 行緒436中之下一指標442指列表中之向下一核 緒。本例為示例之較佳列表結構。 圖4C,陣列45 0被用以指向不同之核心執行緒 標頭標誌452指向陣列450之開始處,而陣列450 標454、456和45 8。這些指標分別指向核心執行緒 46 2、464。這些例子僅供解說半分離列表如何部署 型態之結構,例如,樹狀,亦可以依據個別之部署而 請見圖 5,流程圖所示為一用於控制鎖定呼叫 方法。圖5所示之方法可以部署於一函式庫,例如 中之執行緒函式庫 3 2 4。一鎖定呼叫為任何可以令 層級之執行緒自執行中或可執行狀態改變為另一種 休眠狀態之呼叫。 含先前 412及 向一先 而項目 如,核 合著執 或第一 指向核 包括指 心執行 核心執 心執行 。列表 包含指 460、 。其他 使用。 之習知 ,圖3 使用者 等待或 11 1235953 該 法自使 需要花 疊。其 接下來 果一可 用者執 核心執 立一訊 方法自 再 心執行 因此, (步驟 行之該 被核心 現 用以管 式庫, 該 該可能 眠狀態 緒。該 如果一 方法始於偵知一可能之鎖定呼叫(步驟5〇〇)。該方 用者執行緒分離核心執行緒(步驟5〇2)。步驟502 費自使用者執行緒堆疊複製資訊至一核心執行緒堆 他的操作亦然,例如,將訊號遮罩改為區塊訊號。 ,該方法找尋一新的執行緒以執行(步驟5 〇 4)。如 執行執行緒被發現,該核心執行緒連接至該新的使 行緒(步驟506)。步驟506所牽涉之花費,如自一 行緒堆登複製資料至使用者執行緒堆疊,同時亦建 號遮罩。該使用者執行緒被執行後(步驟5 〇 8 ),該 此結束。 -人參考步驟5 〇4,如果沒有可執行之執行緒,該核 緒被置於一分離列表並轉為休眠狀態(步驟5 1 〇)。 本方法等待並偵測一轉變為可執行之使用者執行緒 5 1 2)。而後,該核心執行緒被連接至被偵知為玎執 使用者執行緒(步驟5 1 4)。此時,該使用者執行緒 執仃緒執行(步驟5 16),而該方法自此結束。 在清見圖6 ’ 一流程圖顯示依據本發明實施例所繪 里閒置執行緒之方法。圖示之方法可以部署於〆轟 例如圖3之執行緒函式庫324。 •人_ 、、馭 、 、以偵測一可能鎖定之呼叫為開始(步驟6〇0)。 呼叫為一放置使用者層級執行緒至等候或休 。一休眠或等候之執行緒被視為一不可執行執行 方去尋找一新的使用者執行緒以執行(步驟6〇2) ° 可執行使用者執行緒被發現,該方法轉換核心執行 12 1235953 緒至新使用者執行緒(步驟604)。在步驟604中之該轉換 可以經由一使用者層級之分派器而達成。依據個別之部 署,該轉換可以需要亦可以不需要分離和再連接核心執行 緒。藉由核心執行緒以執行該使用者執行緒(步驟 606), 而該方法自此結束。
再次執行步驟 6 0 2,如果沒有可執行之使用者執行緒 被尋得,該核心執行緒被置於一半分離休眠(步驟 6 0 8)。 在該類休眠中,該核心幸行緒被置於一半分離列表而後轉 入一休眠狀態。與該核心執行緒相關之該使用者執行緒與 該核心執行緒被維護或表列於一分離列表。該關聯被設定 為標示核心執行緒所傾向於執行之使用者執行緒,除非必 要否則不會執行另一使用者執行緒。
因此,一事件被偵知和處理(步驟 6 1 0),如果該事件 為一與核心執行緒相關之使用者執行緒轉變為可執行,則 該使用者執行緒為核心執行緒所執行(步驟 6 1 2)而該方法 自此結束。再次參考步驟 6 1 0,如果與核心執行緒關聯之 使用者執行緒離開或不為核心執行緒所需,該核心執行緒 被置於一分離列表並休眠(步驟6 1 4),而該方法自此結束。 更詳細的說,步驟6 14進入一連串如圖5中所示之步驟, 而開始於步驟5 1 0。 回頭參閱步驟 6 1 0,如果該事件為任何其他事件,該 方法尋找一使用者執行緒以執行(步驟6 1 6)。如果沒有發 現可執行執行緒,該方法轉換該核心執行緒至已變為可使 用之使用者執行緒(步驟6 1 8)。該步驟可能包括兩項操作, 13 1235953 一分離及一連接。可自兩者擇一,其中一項操作可能被使 用,當核心執行緒自當下使用者執行緒轉換至新的使用者 執行緒時。而後,該使用者執行緒被核心執行緒所執行(步 驟62 0),而該方法自此結束。 現在,請參考圖 7,圖示之流程圖為一用以喚醒一 核心執行緒之習知方法。圖7所示之方法可以部署於一函 式庫,例如,圖3之執行緒函式庫324。圖示之該方法允 許一執行緒等候或休眠,直至一使用者執行緒被偵知為可 執行。 該方法以替核心執行緒檢查一分離列表(步驟700)開 始。如果該分離列表不是空的,則一核心執行緒自該分離 列表移除(步驟702)。該核心執行緒被喚醒(步驟704),而 該方法自此結束。再次參考圖 700,如果該分離列表是空 的,則該方法結束。 現在,請參考圖 8,圖示之流程圖為依據本發明較佳 實施例,用以控制一核心執行緒之方法。圖8所示之方法 可以部署於一函式庫,例如,圖3之執行緒函式庫3 2 4。 該方法初始於一核心執行鍺令另一核心執行緒可執行時。 該方法以替一核心執行緒檢查一分離列表開始(步驟 8 0 0)。如果該分離列表是空的,則該方法替一核心執行緒 檢查一半分離列表(步驟802)。如果該半分離列表是空的, 則該方法結束。否則,如果該分離列表不是空的,一核心 執行緒自半分離列表移除(步驟 804)。自半分離列表移除 之該核心執行緒被喚醒(步驟 8 06),而該方法自此結束。 14 1235953 此刻,該核心執行緒開始執行。 再次參考步驟 8 0 0 ’如果分離列表不是空的,則一核 心執行緒自該分離列表移除(步驟 8 0 8)。該核心執行緒被 喚醒(步驟 8 1 0),而該方法自此結束。本發明之機制仍然 利用分離列表,而非利用半分離列表,因為分離列表在某 些情況下仍有需要。該列表可能在離開使用者執行緒時有 需要。在此例中,當喚醒使用者執行緒時,自該分離列表 選出核心執行緒較自半分離列表選出核心執行緒為佳。 因此,本發明提供一改進之方法、設備和用以控制閒 置核心執行緒之電腦指令。本發明之機制避免分離及之後 再連接核心執行緒之浪費。尤有甚者,本發明之機制亦可 以避免可能發生之堆疊溢流。優點係利用半分離方法所提 供,該方法牽涉到放置該核心執行緒至一半分離列表和之 後放置該核心執行緒至一休眠狀態。這些步驟可以發生, 而無需一般需要將核心執行緒和使用者執行緒分離之步 驟。 請注意很重要的一點,當本發明以完整功能之資料處 理系統之内容敘述時,那些習知此項技藝者將認同本發明 能以電腦可讀取媒體之指令之型態及其變型散佈。而本發 明不論是否真的以特定型態之訊息承載媒體散佈,同樣能 被利用。電腦可讀取媒體之例,包括可記錄型態之媒體, 例如,軟碟、硬碟機、RAM、CD-ROMs、DVD-ROMs以及 傳輸型態媒體,例如,數位和類比通訊連結,利用諸如廣 播頻率和光波傳輸之有線或無線通訊連結。該電腦可讀取 15 1235953 媒體可以是可解譯供作特定資料處理系統之用之編碼型 態。 對本發明之敘述内容旨在圖解和解說,並非意指本發 明須完全符合或限定於所揭露型態。許多修改和變化對熟 知本項技藝者而言將是顯而易見的。所選擇並加以描述之 實施例用於對本發明之精神、實施應用做最佳之闡釋。並 使其他熟知本項技藝者得以了解本發明適合用途之各式變 化之實施例 【圖式簡單說明】 本發明足以信任之新穎性之特徵係於附加之專利申請 範圍中提出。然而,本發明本身以及應用上較佳之模式、 進一步之物件和優點可以藉由下列附圖所示實施例之詳述 内容獲得最佳之了解。 結合下列附圖是為本發明所闡述各項的一部份,附註的解 說用以解釋發明的宗旨,如圖示; 第1圖為一資料處理系統之圖示,本發明之較佳實施例可 以部署於其中; 第2圖為一資料處理系統之區塊圖,本發明可以部署於其 中; 16 1235953 第3圖為一元件示意圖,依據本發明較佳之實施例,該元 件用於控制核心執行緒; 第 4A-4C圖為依據本發明較佳實施例,用於半分離列表 之資料架構不意圖, 第5圖為一用於控制鎖定呼叫之習知方法之流程圖。 第6圖為一依據本發明較佳實施例,用於管理閒置執行緒 之方法之流程圖。 第7圖為一用於喚醒核心執行緒之習知方法之流程圖。 第8圖為依據本發明較佳實施例,用於控制一核心執行緒 之方法之流程圖。 【元件代表符號簡單說明】 100電腦 102系統單位 104視訊顯示終端 106鍵盤 108儲存儀器 110滑鼠 200資料處理系統 17 1235953 202處理器 204主記體 2 0 6區域匯流排 208 PCI橋接器 210區域網路介面卡 2 1 2 S C SI主機匯流排介面卡 2 1 4擴充匯流排介面 2 1 8圖形介面卡 219音效/視訊判面卡 220滑鼠介面卡 222數據機 224記憶體 226硬碟 228磁帶機 230光碟機 3 00使用者執行緒 3 02使用者執行緒 3 04使用者執行緒 3 06使用者執行緒 3 08使用者執行緒 3 1 0使用者空間 3 1 2核心執行緒 3 1 4核心執行緒 3 1 6核心執行緒 18 1235953 3 1 8核心空間 3 2 0使用者執行緒堆疊 3 2 2分離列表 3 24執行緒函式庫 3 2 6核心執行緒堆疊 3 2 8半分離列表 400項目
402項目 406列表標頭標誌 408先前指標 4 1 0下一指標 4 1 2先前指標 4 1 4下一指標 4 1 6指標
4 1 8指標 420核心執行緒 422核心執行緒 430列表標頭標誌 432核心執行緒 434下一指標 436核心執行緒 438先前指標 440先前指標 442下一指標 19 1235953 450陣列
452列表標頭標誌 I 454指標 456指標 458指標 460核心執行緒 462核心執行緒 464核心執行緒 5 00偵知可能之鎖定呼叫之步驟 5 02自使用者執行緒分離核心執行緒之步驟 5 0 4找尋新的執行緒以執行之步驟 5 06連接至新的使用者執行緒之步驟 508執行新的使用者執行緒 5 1 0置於分離列表並轉為休眠狀態之步驟 5 1 2等待並偵測一轉變為可執行之使用者執行緒之步驟 5 1 4連接至使用者執行緒之步驟 5 1 6執行使用者執行緒之步驟 6 0 0偵測可能鎖定之呼叫之步驟 602尋找新的使用者執行緒以執行之步驟 6 04轉換核心執行緒至新使用者執行緒之步驟 606執行使用者執行緒之步驟 6 0 8將核心執行緒置於半分離休眠之步驟 6 1 0偵知並處理事件之步驟 6 1 2執行使用者執行緒之步驟 20 1235953 6 1 4將執行緒置於一分離列表並休眠之步驟 6 1 6尋找一使用者執行緒以執行之步驟 6 1 8轉換至使用者執行緒之步驟 620執行使用者執行緒之步驟 700檢查分離列表之步驟 702將核心執行緒自分離列表移除之步驟 704喚醒核心執行緒之步驟 800檢查分離列表之步驟 8 02檢查半分離列表之步驟 8 04將核心執行緒自半分離列表移除之步驟 8 0 6喚醒核心執行緒之步驟 8 0 8將核心執行緒自分離列表移除之步驟 8 1 0將核心執行緒喚醒之步驟 21
Claims (1)
1235953 拾、申請專利範圍: 1 . 一種在資料處理系統中管理執行緒之方法,該方法包 括: 偵知一與使用者執行緒相關之不為使用者執行緒所 需的核心執行緒;以及 回應該不為使用者執行緒所需的核心執行緒,半分 離該執行緒,其中供執行緒所需之資料不改變堆疊。 2.如申請專利範圍第1項所述之方法,更包括: 放置該核心執行緒於一半分離列表;以及 將該核心執行緒與上述使用者執行緒同時放置於一 不可執行狀態。 3 .如申請專利範圍第2項所述之方法,更包括: 回應自休眠中被喚醒之該使用者執行緒,自上述半 分離列表中移除該核心執行緒,其中,不需要再與該使 用者執行緒連結。 4. 如申請專利範圍第1項所述之方法,其中,該執行緒係 執行於一 AIX系統。 5. 如申請專利範圍第1項所述之方法,其中供核心執行緒 所用之資料係於不需要複製資料至核心執行緒以半分 22 1235953 離該核心執行緒的情況下被維特於一使用者堆疊中。 6. 如申請專利範圍第1項所述之方法,其中偵測及半分離 之步驟係利用函式庫來執行。 7. 如申請專利範圍第2項所述之方法,更包括: 回應自休眠狀態喚醒之使用者執行緒,決定是否一 第二核心執行緒是被分離,而非被半分離;以及 回應該被分離的第二核心執行緒,連接該第二核心 執行緒至使用者執行緒。 8. 如申請專利範圍第2項所述之方法,其中該不可執行狀 態為一種等候狀態或一種休眠狀態。 9. 一種管理執行緒之資料處理系統,該資料處理系統包 括: 一匯流排系統; 一連接至該匯流排系統之通訊單元; 一連接至該匯流排系統之記憶體,其中該記憶體包 含一組指令;和 一連接至該匯流排系統之處理位元,其中該處理位 元執行一組指令,以偵測一與使用者執行緒相關之不為 該使用者執行緒所需的核心執行緒;和半分離該核心執 23 1235953 行緒,其中,該執行緒之資料不改變對應至不需要之核 心執行緒之堆疊。 1 0. —種管理執行緒之資料處理系統,該資料處理系統包 括: 偵測構件,供作偵知一與使用者執行緒相關之不為 使用者執行緒所需的核心執行緒; 半分離構件,回應該不為使用者執行緒所需的核心 執行緒,且供作半分離該核心執行緒,其中,為該執行 緒所用之資料並不改變堆疊。 1 1.如申請專利範圍第1 0項所述之資料處理系統,更包括: 第一放置構件,供放置該核心執行緒至一半分離列 表;以及 第二放置構件,供同時放置該核心執行緒和使用者 執行緒至一可執行狀態。 1 2.如申請專利範圍第11項所述之資料處理系統,更包括: 移除構件,回應該自休眠被喚醒之使用者執行緒, 供自半分離列表移除該核心執行緒,其中,不需再連接 至該使用者執行緒。 1 3 .如申請專利範圍第1 0項所述之資料處理系統,其中, 24 1235953 該執行緒執行於一 AIX操作系統。 1 4.如申請專利範圍第1 0項所述之資料處理系統,其中, 供作該核心執行緒之用的資料係於無需複製資料至一 核心堆疊以半分離該核心執行緒的情況下被維持在一 使用者堆疊中。 1 5.如申請專利範圍第1 0項所述之資料處理系統,其中, 該偵測和半分離之步驟係利用一函式庫以執行。 1 6.如申請專利範圍第11項所述之資料處理系統,更包括: 偵測構件,回應該自休眠狀態醒來的使用者執行 緒,以決定是否第二核心執行緒被分離而非被半分離; 和 連接構件,回應該被分離的第二核心執行緒,以連 接該第二核心執行緒至該使用者執行緒。 1 7.如申請專利範圍第11項所述之資料處理系統,其中, 該不可執行狀態為一種等候狀態或一種休眠狀態。 1 8. —種在電腦可讀取媒體中管理執行緒之電腦程式產 品*該電腦程式產品包括· 第一指令,供作偵測與一使用者執行緒相關之一不 25 1235953 為該使用者執行緒所需的核心執行緒;以及 第二指令,供作回應該不為該使用者執行緒所需之 核心執行緒,半分離該核心執行緒,其中,供作該執行 緒所需之資料不改變堆疊。
26
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/246,889 US7275247B2 (en) | 2002-09-19 | 2002-09-19 | Method and apparatus for handling threads in a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200409020A TW200409020A (en) | 2004-06-01 |
TWI235953B true TWI235953B (en) | 2005-07-11 |
Family
ID=31992385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW092117489A TWI235953B (en) | 2002-09-19 | 2003-06-26 | Method and apparatus for handling threads in a data processing system |
Country Status (9)
Country | Link |
---|---|
US (1) | US7275247B2 (zh) |
JP (1) | JP4418752B2 (zh) |
KR (1) | KR100745888B1 (zh) |
CN (1) | CN100356328C (zh) |
AU (1) | AU2003249094A1 (zh) |
BR (1) | BRPI0314853B1 (zh) |
CA (1) | CA2498050C (zh) |
TW (1) | TWI235953B (zh) |
WO (1) | WO2004027599A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI386814B (zh) * | 2007-12-31 | 2013-02-21 | Ind Tech Res Inst | 具動態工作管理能力之多處理器界面及其程式載卸方法 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185895B2 (en) * | 2005-11-30 | 2012-05-22 | International Business Machines Corporation | Method, apparatus and program storage device for providing an anchor pointer in an operating system context structure for improving the efficiency of accessing thread specific data |
US8214834B2 (en) * | 2007-04-30 | 2012-07-03 | Hewlett-Packard Development Company, L.P. | Asynchronous wakeup mechanism that places reference to process on sleep queue if execution of copyout functionality is caused to sleep |
US20080307419A1 (en) * | 2007-06-06 | 2008-12-11 | Microsoft Corporation | Lazy kernel thread binding |
US20080313647A1 (en) * | 2007-06-18 | 2008-12-18 | Microsoft Corporation | Thread virtualization techniques |
US20080313656A1 (en) * | 2007-06-18 | 2008-12-18 | Microsoft Corporation | User mode stack disassociation |
US8752057B1 (en) * | 2008-06-30 | 2014-06-10 | Emc Corporation | Techniques for synchronizing processing of at least two code threads |
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 |
DE102012104461A1 (de) | 2012-05-23 | 2013-12-12 | B. Braun Avitum Ag | Medizinisches Gerät zur extrakorporalen Blutbehandlung mit mehreren Sensoreinheiten |
US8930956B2 (en) * | 2012-08-08 | 2015-01-06 | International Business Machines Corporation | Utilizing a kernel administration hardware thread of a multi-threaded, multi-core compute node of a parallel computer |
US20150074436A1 (en) * | 2013-09-10 | 2015-03-12 | Nvidia Corporation | In-Kernel CPU Clock Boosting on Input Event |
US9411642B2 (en) | 2014-01-17 | 2016-08-09 | Nvidia Corporation | Using high priority thread to boost CPU clock rate |
US9594660B2 (en) * | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9792232B2 (en) | 2015-11-16 | 2017-10-17 | International Business Machines Corporation | Techniques for queueing interrupts in a data processing system |
US10503576B2 (en) | 2016-02-19 | 2019-12-10 | International Business Machines Corporation | Maintaining core dump privacy during application fault handling |
US10331500B2 (en) | 2017-04-05 | 2019-06-25 | Cavium, Llc | Managing fairness for lock and unlock operations using operation prioritization |
US10248420B2 (en) | 2017-04-05 | 2019-04-02 | Cavium, Llc | Managing lock and unlock operations using active spinning |
US10895954B2 (en) * | 2017-06-02 | 2021-01-19 | Apple Inc. | Providing a graphical canvas for handwritten input |
CN115934372A (zh) * | 2023-03-09 | 2023-04-07 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、系统、设备及计算机可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US6732138B1 (en) * | 1995-07-26 | 2004-05-04 | International Business Machines Corporation | Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process |
US5812852A (en) * | 1996-11-14 | 1998-09-22 | Kuck & Associates, Inc. | Software implemented method for thread-privatizing user-specified global storage objects in parallel computer programs via program transformation |
US5950221A (en) * | 1997-02-06 | 1999-09-07 | Microsoft Corporation | Variably-sized kernel memory stacks |
US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US5907702A (en) * | 1997-03-28 | 1999-05-25 | International Business Machines Corporation | Method and apparatus for decreasing thread switch latency in a multithread processor |
KR100280460B1 (ko) * | 1998-04-08 | 2001-02-01 | 김영환 | 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 |
US6654781B1 (en) * | 1998-12-11 | 2003-11-25 | International Business Machines Corporation | Enhanced thread processing |
US6542920B1 (en) * | 1999-09-24 | 2003-04-01 | Sun Microsystems, Inc. | Mechanism for implementing multiple thread pools in a computer system to optimize system performance |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US6832266B1 (en) * | 2000-02-07 | 2004-12-14 | Sun Microsystems, Inc. | Simplified microkernel application programming interface |
US6931641B1 (en) * | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US6728722B1 (en) * | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
-
2002
- 2002-09-19 US US10/246,889 patent/US7275247B2/en not_active Expired - Fee Related
-
2003
- 2003-06-26 TW TW092117489A patent/TWI235953B/zh not_active IP Right Cessation
- 2003-08-11 AU AU2003249094A patent/AU2003249094A1/en not_active Abandoned
- 2003-08-11 KR KR1020057002791A patent/KR100745888B1/ko not_active IP Right Cessation
- 2003-08-11 BR BRPI0314853A patent/BRPI0314853B1/pt active IP Right Grant
- 2003-08-11 CN CNB038221942A patent/CN100356328C/zh not_active Expired - Fee Related
- 2003-08-11 JP JP2004537251A patent/JP4418752B2/ja not_active Expired - Fee Related
- 2003-08-11 WO PCT/GB2003/003497 patent/WO2004027599A2/en active Application Filing
- 2003-08-11 CA CA2498050A patent/CA2498050C/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI386814B (zh) * | 2007-12-31 | 2013-02-21 | Ind Tech Res Inst | 具動態工作管理能力之多處理器界面及其程式載卸方法 |
US8972699B2 (en) | 2007-12-31 | 2015-03-03 | Industrial Technology Research Institute | Multicore interface with dynamic task management capability and task loading and offloading method thereof |
Also Published As
Publication number | Publication date |
---|---|
CA2498050A1 (en) | 2004-04-01 |
US7275247B2 (en) | 2007-09-25 |
JP2005539322A (ja) | 2005-12-22 |
BRPI0314853B1 (pt) | 2016-03-22 |
AU2003249094A8 (en) | 2004-04-08 |
AU2003249094A1 (en) | 2004-04-08 |
KR100745888B1 (ko) | 2007-08-02 |
CN1735865A (zh) | 2006-02-15 |
US20040060049A1 (en) | 2004-03-25 |
WO2004027599A2 (en) | 2004-04-01 |
JP4418752B2 (ja) | 2010-02-24 |
CN100356328C (zh) | 2007-12-19 |
BR0314853A (pt) | 2005-08-09 |
KR20050058362A (ko) | 2005-06-16 |
CA2498050C (en) | 2010-07-27 |
TW200409020A (en) | 2004-06-01 |
WO2004027599A3 (en) | 2005-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI235953B (en) | Method and apparatus for handling threads in a data processing system | |
US7802022B2 (en) | Generic USB drivers | |
US8806502B2 (en) | Batching resource requests in a portable computing device | |
US8631414B2 (en) | Distributed resource management in a portable computing device | |
US20040088531A1 (en) | Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset | |
JP6219445B2 (ja) | 中央処理ユニット及び画像処理ユニットの同期機構 | |
CN111984402A (zh) | 一种线程池统一调度监控方法及系统 | |
US8291436B2 (en) | Synchronization of event handlers | |
EP1693743A2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
CN102754080B (zh) | 多核处理器系统、中断程序、以及中断方法 | |
WO2011089223A2 (en) | Efficient multi-core processing of events | |
US20130275791A1 (en) | Method and System for Tracking and Selecting Optimal Power Conserving Modes of a PCD | |
US7797473B2 (en) | System for executing system management interrupts and methods thereof | |
CN104794006A (zh) | 多核处理器系统、中断程序、以及中断方法 | |
CN103942059A (zh) | 具多个开机模式的电子装置 | |
WO2008157455A2 (en) | Notifying user mode scheduler of blocking events | |
JP2009266113A (ja) | メモリ管理方法およびシステム | |
US7743234B2 (en) | Facilitating communication within an emulated processing environment | |
JP2009251681A (ja) | スタック領域の拡張方法及びプログラム | |
CN118838658A (zh) | 基于多核异构的系统关闭方法及计算机程序产品 | |
CN114443255A (zh) | 一种线程调用方法和装置 | |
CN112559054A (zh) | 用于同步指令的方法和计算系统 | |
JP2007018454A (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |