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 PDF

Info

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
Application number
TW092117489A
Other languages
English (en)
Other versions
TW200409020A (en
Inventor
Alfredo V Mendoza
Joel Howard Schopp
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW200409020A publication Critical patent/TW200409020A/zh
Application granted granted Critical
Publication of TWI235953B publication Critical patent/TWI235953B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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)
  • 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
TW092117489A 2002-09-19 2003-06-26 Method and apparatus for handling threads in a data processing system TWI235953B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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