[發明專利]內核棧的分配方法及裝置有效
| 申請號: | 201811626288.8 | 申請日: | 2018-12-28 |
| 公開(公告)號: | CN109857677B | 公開(公告)日: | 2023-03-31 |
| 發明(設計)人: | 曾濤;潘建新 | 申請(專利權)人: | 晶晨半導體(上海)股份有限公司 |
| 主分類號: | G06F12/02 | 分類號: | G06F12/02;G06F8/41 |
| 代理公司: | 上海申新律師事務所 31272 | 代理人: | 俞滌炯 |
| 地址: | 201203 上海市浦東新區中國*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內核 分配 方法 裝置 | ||
1.一種內核棧的分配方法,其特征在于,預先劃分一段虛擬地址空間供線程內核棧使用,所述分配方法包括:
S1.當接收到創建線程指令時,基于所述虛擬地址空間為線程內核棧分配連續的目標地址空間;
S2.采用位圖對所有線程的所述目標地址空間進行映射管理;
S3.所述目標地址空間包括異常緩存區和存儲區,所述異常緩存區位于所述目標地址空間的頭區域;
S4.對所述內核棧分配一存儲頁,并將所述存儲頁映射到所述目標地址空間的所述存儲區,所述線程運行時棧指針指向所述內核棧的所述存儲頁所在的目標地址空間,所述存儲頁映射的目標地址空間的底部為地址邊界;
S5.當所述線程的棧指針下溢出所述地址中的頁邊界時,硬件產生缺頁異常,在缺頁異常處理程序中對所述內核棧分配一新的存儲頁,并將所述新的存儲頁映射到所述內核棧指向的目標地址空間。
2.根據權利要求1所述的內核棧的分配方法,其特征在于,S2采用位圖對所述目標地址空間進行映射管理,包括:
在位圖中當bit值為0時表示對應的地址空間未使用,當bit值為1時表示對應的地址空間已使用,采用公式(1)表示地址空間的線性映射關系:
T=A+N×16KB (1)
其中,T表示創建的線程地址;A表示虛擬地址空間的起始地址;N表示與線程對應的bit值在位圖的位置。
3.根據權利要求1所述的內核棧的分配方法,其特征在于,所述存儲頁映射到所述目標地址空間的所述存儲區的容量為16KB。
4.根據權利要求1所述的內核棧的分配方法,其特征在于,S5當所述線程的棧指針下溢出所述地址中的頁邊界時,對所述內核棧分配一新的存儲頁,并將所述新的存儲頁映射到所述內核棧指向的目標地址空間,包括:
提供一備份存儲器用于存儲所述缺頁異常發生時的棧指針,還提供一臨時存儲器用于存儲處理缺頁異常時所需的每個處理器棧內存;
當所述線程的棧指針下溢出所述地址內的頁邊界時,發生缺頁異常,所述棧指針指向所述每個處理器棧內存,所述備份存儲器存儲所述缺頁異常的異常現場的棧指針;
對所述內核棧分配一新的存儲頁,并將所述新的存儲頁映射到所述內核棧指向的目標地址空間;
將所述備份存儲器的棧指針切換至所述目標地址空間指向當前線程的內核棧,并使所述棧指針返回發生異常時所述棧指針指向的位置。
5.一種內核棧的分配裝置,其特征在于,預先劃分一段虛擬地址空間供線程內核棧使用,所述分配裝置包括:
分配單元,用于當接收到創建線程指令時,基于所述虛擬地址空間為線程內核棧分配連續的目標地址空間;
管理單元,用于采用位圖對所有線程的所述目標地址空間進行映射管理,所述目標地址空間包括異常緩存區和存儲區,所述異常緩存區位于所述目標地址空間的頭區域;
映射單元,用于對所述內核棧分配一存儲頁,并將所述存儲頁映射到所述目標地址空間的所述存儲區,所述線程運行時棧指針指向所述內核棧的所述存儲頁所在的目標地址空間,所述存儲頁映射的目標地址空間的底部為地址邊界;
處理單元,用于當所述線程的棧指針下溢出所述地址中的頁邊界時,硬件產生缺頁異常,在缺頁異常處理程序中對所述內核棧分配一新的存儲頁,并將所述新的存儲頁映射到所述內核棧指向的目標地址空間。
6.根據權利要求5所述的內核棧的分配裝置,其特征在于,所述管理單元采用位圖對所述目標地址空間進行映射管理時,在位圖中當bit值為0時表示對應的地址空間未使用,當bit值為1時表示對應的地址空間已使用,采用公式(1)表示地址空間的線性映射關系:
T=A+N×16KB (1)
其中,T表示創建的線程地址;A表示虛擬地址空間的起始地址;N表示與線程對應的bit值在位圖的位置。
7.根據權利要求5所述的內核棧的分配裝置,其特征在于,所述存儲頁映射到所述目標地址空間的所述存儲區的容量為16KB。
8.根據權利要求5所述的內核棧的分配裝置,其特征在于,所述處理單元提供一備份存儲器用于存儲所述缺頁異常的棧指針,還提供一臨時存儲器用于存儲處理缺頁異常所需的每個處理器棧內存;當所述線程的棧指針下溢出所述地址內的頁邊界時,發生缺頁異常,所述棧指針下溢出所述每個處理器棧內存,所述備份存儲器存儲所述缺頁異常的異常現場的棧指針;對所述內核棧分配一新的存儲頁,并將所述新的存儲頁映射到所述內核棧指向的目標地址空間;將所述備份存儲器的棧指針切換至所述目標地址空間指向當前線程的內核棧,并使所述棧指針返回發生異常時所述棧指針指向的位置。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于晶晨半導體(上海)股份有限公司,未經晶晨半導體(上海)股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811626288.8/1.html,轉載請聲明來源鉆瓜專利網。





