• / 10
  • 下載費用:30 金幣  

線程的處理方法和裝置.pdf

關 鍵 詞:
線程 處理 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201310662534.6

申請日:

2013.12.09

公開號:

CN103677750A

公開日:

2014.03.26

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/30申請日:20131209|||公開
IPC分類號: G06F9/30; G06F9/32 主分類號: G06F9/30
申請人: 龍芯中科技術有限公司
發明人: 蔡嵩松; 張戈; 劉奇
地址: 100190 北京市海淀區中關村科學院南路10號
優先權:
專利代理機構: 北京同立鈞成知識產權代理有限公司 11205 代理人: 劉芳
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201310662534.6

授權公告號:

||||||

法律狀態公告日:

2017.03.29|||2014.04.23|||2014.03.26

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明提供一種線程的處理方法和裝置,該方法包括:訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;根據所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。通過該線程的處理方法和裝置,可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率。

權利要求書

權利要求書
1.  一種線程的處理方法,其特征在于,包括:
訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;
根據所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。

2.  根據權利要求1所述的處理方法,其特征在于,在訪問第一寄存器之前,將所述當前線程對應的控制結構的首地址緩存至所述第一寄存器。

3.  根據權利要求2所述的處理方法,其特征在于,所述根據所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構,包括:
將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器,所述第二寄存器為所述當前線程中當前執行的函數所對應的寄存器;
控制所述當前執行的函數按照所述第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息。

4.  根據權利要求3所述的處理方法,其特征在于,所述將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器之前,所述處理方法還包括:
在至少一個可用寄存器中,向所述當前執行的函數分配第二寄存器;所述至少一個可用寄存器中不包括所述第一寄存器。

5.  根據權利要求1~4任一項所述的處理方法,其特征在于,所述第一寄存器為存儲寄存器。

6.  一種線程的處理裝置,其特征在于,包括:
獲取模塊,用于訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;
控制模塊,與所述獲取模塊連接,用于根據所述獲取模塊獲得的所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。

7.  根據權利要求6所述的處理裝置,其特征在于,所述處理裝置還包括存儲模塊,與所述獲取模塊連接,用于在所述獲取模塊訪問第一寄存器之前,將所述當前線程對應的控制結構的首地址緩存至所述第一寄存器。

8.  根據權利要求7所述的處理裝置,其特征在于,所述控制模塊具體用于將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器,所述第二寄存器為所述當前線程中當前執行的函數所對應的寄存器;
所述控制模塊具體用于控制所述當前執行的函數按照所述第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息。

9.  根據權利要求8所述的處理裝置,其特征在于,所述處理裝置還包括分配模塊,與所述控制模塊連接,用于在至少一個可用寄存器中,向所述當前執行的函數分配第二寄存器;所述至少一個可用寄存器中不包括所述第一寄存器。

10.  根據權利要求6~9任一項所述的處理裝置,其特征在于,所述第一寄存器為存儲寄存器。

說明書

說明書線程的處理方法和裝置
技術領域
本發明涉及計算機技術領域,尤其涉及一種線程的處理方法和裝置。
背景技術
計算機系統是通過運行各個線程,以完成各種功能。常見的,在以Java(由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱)虛擬機為例,每個Java線程都擁有一塊獨立的控制結構。該控制結構為位于Java虛擬機內存中的存儲空間,保存了Java線程在運行過程中的一些全局信息,例如當前線程狀態、異常信息、虛擬機運行結果、棧狀態等。同一個線程內部的多個函數是可以共享該線程的控制結構,而線程中的各個函數是根據控制結構的首地址,使用該控制結構。
在現有技術中,獲取Java線程控制結構首地址是通過調用線程標準庫Pthreads中的函數pthread_getspecific實現的。具體實現方式為:在線程被創建時,選取計算機系統的內存的部分存儲空間,作為該線程的控制結構分配至該線程,同時調用pthread_key_create函數向當前創建的線程分配鍵值,該鍵值作為該線程針對控制結構的線程索引,且調用pthread_setspecific函數將該線程索引與該線程的控制結構首地址進行綁定;當在線程運行的過程中需要使用控制結構時,可以通過上述線程索引調用pthread_getspecific函數獲取該線程的控制結構的首地址。
在使用現有技術獲取線程的控制結構首地址時發現,在上述方案中,每次獲取線程的控制結構首地址都需要通過函數的調用和返回,導致獲取速度較慢,影響線程的處理效率。
發明內容
本發明提供一種線程的處理方法和裝置,用于優化獲取線程的控制結構 的首地址的方法。
第一方面,本發明提供一種線程的處理方法,包括:
訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;
根據所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。
結合第一方面,在第一實施方式中,在訪問第一寄存器之前,將所述當前線程對應的控制結構的首地址緩存至所述第一寄存器。
結合第一方面的第一實施方式,在第二實施方式中,所述根據所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構,包括:
將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器,所述第二寄存器為所述當前線程中當前執行的函數所對應的寄存器;
控制所述當前執行的函數按照所述第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息。
結合第一方面的第二實施方式,在第三實施方式中,所述將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器之前,所述處理方法還包括:
在至少一個可用寄存器中,向所述當前執行的函數分配第二寄存器;所述至少一個可用寄存器中不包括所述第一寄存器。
結合第一方面至第一方面第三實施方式中的任一種實施方式,在第四實施方式中,所述第一寄存器為存儲寄存器。
第二方面,本發明提供一種線程的處理裝置,包括:
獲取模塊,與所述獲取模塊連接,用于訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;
控制模塊,用于根據所述獲取模塊獲得的所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。
結合第二方面,在第一實施方式中,所述處理裝置還包括存儲模塊,與 所述獲取模塊連接,用于在所述獲取模塊訪問第一寄存器之前,將所述當前線程對應的控制結構的首地址緩存至所述第一寄存器。
結合第二方面第一實施方式,在第二實施方式中,所述控制模塊具體用于將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器,所述第二寄存器為所述當前線程中當前執行的函數所對應的寄存器;
所述控制模塊具體用于控制所述當前執行的函數按照所述第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息。
結合第二方面第二實施方式,在第三實施方式中,所述處理裝置還包括分配模塊,與所述控制模塊連接,用于在至少一個可用寄存器中,向所述當前執行的函數分配第二寄存器;所述至少一個可用寄存器中不包括所述第一寄存器。
結合第二方面至第二方面第三實施方式,在第四實施方式中,所述第一寄存器為存儲寄存器。
通過本發明提供的線程的處理方法和裝置,線程的控制結構的首地址被緩存至第一寄存器中,則線程的處理裝置可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率。
附圖說明
圖1為本發明線程的處理方法實施例一的流程圖;
圖2為本發明線程的處理方法實施例二的流程圖;
圖3為本發明線程的處理裝置實施例一的結構圖;
圖4為本發明線程的處理裝置實施例二的結構圖。
具體實施方式
圖1為本發明線程的處理方法實施例一的流程圖。如圖1所示,實現本實施例的執行主體為線程的處理裝置,該處理裝置可以采用軟件和/或硬件的方式實現,優選的,該處理裝置可以集成于計算機設備中的處理器,具體的,該處理方法包括:
S101、訪問第一寄存器,獲得第一寄存器中所緩存的當前線程對應的控制結構的首地址。
在計算機系統中,存在多個寄存器,例如在采取精簡指令集的處理器架構(Microprocessor without interlocked piped stages architecture,簡稱MIPS架構)中,含有多種寄存器,例如特殊寄存器(R0,SP,FP等)、臨時寄存器(T0-T9)、以及存儲寄存器(S0-S7)等。
本實施例中的第一寄存器可以根據需要選擇上述任意一種寄存器,但優選的,本實施例的第一寄存器為存儲寄存器,其原因在于,在一些特殊場景下,特殊寄存器具有特殊的用途,臨時寄存器中的賦值會被編譯器修改,而存儲寄存器中的賦值不會被任意修改,因此為了保證控制結構首地址的安全性,本實施例中優選存儲寄存器作為上述第一寄存器,緩存當前線程對應的控制結構首地址。
當計算機系統中的線程的處理裝置運行當前線程時,該當前線程需要使用對應的控制結構時,線程的處理裝置訪問該第一寄存器,獲取當前線程所對應的控制結構的首地址。
S102、根據當前線程對應的控制結構的首地址,控制當前線程使用該當前線程對應的控制結構。
線程的處理裝置獲取了控制結構的首地址,便可將當前線程運行過程中各個函數所確定的全局信息存儲至該控制結構,與線程內其他函數共享;或者,線程中的函數需要調用某個全局信息時,便可根據當前線程對應的控制結構的首地址,在該控制結構中獲取所需要的全局信息。
本實施例中,線程的控制結構的首地址被緩存至第一寄存器中,則線程的處理裝置可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率。
圖2為本發明線程的處理方法實施例二的流程圖。如圖2所示,本實施例是在圖1所示的實施例的基礎上,進一步描述線程的處理方法,該處理方法包括:
S201、將當前線程對應的控制結構的首地址緩存至第一寄存器。
在計算機系統中,一個線程在被創建時,則在計算機系統的內存中針對 該線程分配一段存儲空間,作為該線程的控制結構;但該線程被創建后,作為當前線程被運行時,并不立即使用控制結構,但會在該當前線程的運行過程中,例如需要存儲作為全局信息的數據時才使用該控制結構,因此為了便于當前線程在運行過程中使用該控制結構,則將當前線程對應的控制結構的首地址緩存至第一寄存器。
S202、訪問第一寄存器,獲得第一寄存器中所緩存的當前線程對應的控制結構的首地址。
可以理解的,當前線程中包含多條指令,則線程的處理裝置依次執行各個指令,以完成該當前線程的運行,因此當執行到當前線程中的某一條指令時,且該指令為需要使用控制結構的函數,則線程的處理裝置訪問第一寄存器,獲得第一寄存器中所緩存的當前線程對應的控制結構的首地址。
S203、向當前執行的函數分配第二寄存器。
在MIPS架構下,當前線程中當前執行的函數在尋址訪問存儲空間時,是需要在對應的寄存器中獲取所需要的地址,因此線程的處理裝置在處理線程時,會采用分配算法實時的向當前線程中的當前執行的函數分配寄存器,例如通過線性掃描算法、整數線性規劃算法等分配算法實時地向當前線程中的當前執行的函數分配寄存器,即上述第二寄存器為線程的處理裝置通過分配算法分配于當前線程中當前執行的函數的寄存器。
需要補充說明的是,線程的處理裝置在采用分配算法分配第二寄存器時,是在掃描到的至少一個可用寄存器中確定第二寄存器,而上述第一寄存器也為可用寄存器,為了防止第一寄存器被分配出去,造成第一寄存器中的存儲的信息被修改,因此,線程的處理裝置在實施本實施例時,即在可用寄存器中確定了第一寄存器后,便將該第一寄存器從計算機系統中的可用寄存器中去除,使得所述至少一個可用寄存器中不包括上述第一寄存器。具體可以通過更改寄存器的標識等方法,以使第一寄存器不再作為可用寄存器。
另外,線程的處理裝置可以同時執行上述S202和S203,或先執行S203再執行S202。
S204、將第一寄存器中的當前線程對應的控制結構的首地址緩存至第二寄存器。
由于線程中的函數須在第二寄存器中獲取所需要的地址,則線程的處理 裝置將在第一寄存器中獲取的控制結構的首地址緩存至第二寄存器。
S205、控制當前執行的函數按照所述第二寄存器中的控制結構的首地址,使用該控制結構。
具體的,由于當前執行的函數在第二寄存器中獲取了當前線程所對應的的控制結構的首地址,控制當前執行的函數按照第二寄存器中的控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取控制結構內已存儲的全局信息。
補充說明的是,本實施例應用在實際中,例如本實施例可以應用在JAVA虛擬機中,上述線程即為JAVA線程。
本實施例中,線程的控制結構的首地址被緩存至第一寄存器中,則線程的處理裝置可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率;另外,為了避免第一寄存器被其他指令占用,則線程的處理裝置在至少一個可用寄存器中確定了第一寄存器后,便將該第一寄存器從所述至少一個可用寄存器中去除,以保證該第一寄存器中的信息的安全性。
圖3為本發明線程的處理裝置實施例一的結構圖。如圖3所示,該處理裝置包括:
獲取模塊31,用于訪問第一寄存器,獲得所述第一寄存器中所緩存的當前線程對應的控制結構的首地址;
控制模塊32,與上述獲取模塊31連接,用于根據所述獲取模塊獲得的所述當前線程對應的控制結構的首地址,控制所述當前線程使用所述當前線程對應的控制結構。
本實施例中,線程的控制結構的首地址被緩存至第一寄存器中,則線程的處理裝置可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率。
圖4為本發明線程的處理裝置實施例二的結構圖。如圖4所示,本實施例是在圖3所示的實施例的基礎上做出進一步描述,具體的,該處理裝置還包括存儲模塊33,與上述獲取模塊31連接,用于在獲取模塊31訪問第一寄 存器之前,將所述當前線程對應的控制結構的首地址緩存至所述第一寄存器。
進一步的,上述控制模塊32具體用于將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至第二寄存器,所述第二寄存器為所述當前線程中當前執行的函數所對應的寄存器;
進一步的,上述控制模塊32具體用于控制所述當前執行的函數按照所述第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息。
另外,所述處理裝置還包括分配模塊34,與上述控制模塊32連接,用于在至少一個可用寄存器中,向所述當前執行的函數分配第二寄存器;所述至少一個可用寄存器中不包括所述第一寄存器,則上述控制模塊32在控制所述當前線程使用所述當前線程對應的控制結構時,具體是將所述第一寄存器中的所述當前線程對應的控制結構的首地址緩存至所述分配模塊34分配的第二寄存器,并控制所述當前執行的函數按照該第二寄存器中的所述控制結構的首地址,將新增全局信息存儲至所述控制結構;或者,獲取所述控制結構內已存儲的全局信息;而且,優選的,前述第一寄存器為存儲寄存器。
本實施例中,線程的控制結構的首地址被緩存至第一寄存器中,則線程的處理裝置可以直接訪問第一寄存器以獲取控制結構的首地址,不需要通過多個函數的調用和返回,提高了線程的控制結構首地址的獲取效率,從而提升了計算機系統處理線程的效率;另外,為了避免第一寄存器被其他指令占用,則線程的處理裝置在至少一個可用寄存器中確定了第一寄存器后,便將該第一寄存器從所述至少一個可用寄存器中去除,以保證該第一寄存器中的信息的安全性。
需要補充說明的是,上述各個裝置實施例中的各個模塊對應執行上述各個方法實施例中的各個步驟,在此不再贅述。
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對 其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。

關于本文
本文標題:線程的處理方法和裝置.pdf
鏈接地址:http://www.pqsozv.live/p-6180523.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
钻石光影