多個表的方式存放在物理內(nèi)存中。每個表可以用對應(yīng)一個或多個物理內(nèi)存頁面存放數(shù)據(jù),把這種內(nèi)存頁面稱為“數(shù)據(jù)頁”;
[0065]b)為每個表建立連續(xù)且獨立的虛擬地址空間,即表虛擬地址空間(Table VirtualAddress Space,簡稱FVAS),其表現(xiàn)形式是表頁表(Table Page Table,簡稱TPT);所述表頁表為一級頁表或多級頁表,每一級表頁表都存放在單個或多個物理內(nèi)存頁面中。每一級表頁表都劃分為多個條目,每個條目都可以存放下一級表頁表的某一個物理內(nèi)存頁的起始物理地址。最低一級的表頁表用于存放數(shù)據(jù)頁的起始物理地址。
[0066]c)將數(shù)據(jù)在內(nèi)存中的物理地址存儲在表頁表中;
[0067]d)將表和表頁表的映射關(guān)系存放在內(nèi)存關(guān)系數(shù)據(jù)庫的索引表中,索引表的數(shù)據(jù)結(jié)構(gòu)為數(shù)組、鏈表或結(jié)構(gòu)體;索引表中保存有表及其表頁表的最高級指針,所述最高級指針指向表頁表。
[0068]e)用內(nèi)存關(guān)系數(shù)據(jù)庫管理數(shù)據(jù)和進程頁表的物理內(nèi)存。
[0069]二、內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪問方法。
[0070]在訪問數(shù)據(jù)的過程中,需要用到的系統(tǒng)組件有CPU中的內(nèi)存映射設(shè)備、數(shù)據(jù)庫管理的內(nèi)存、進程頁表、內(nèi)存關(guān)系數(shù)據(jù)庫的索引表和表頁表。
[0071 ]其中內(nèi)存映射設(shè)備和數(shù)據(jù)庫管理的內(nèi)存是系統(tǒng)中的硬件設(shè)備,內(nèi)存可以是DRAM、新型非易失性內(nèi)存或其他高速存儲介質(zhì)。
[0072]進程頁表是進程虛擬地址空間的表現(xiàn)形式,在64位系統(tǒng)中通常分為4級,在32位系統(tǒng)中通常只使用兩級頁表。
[0073]內(nèi)存關(guān)系數(shù)據(jù)庫的表頁表是表虛擬地址空間的表現(xiàn)形式,是一個獨立且連續(xù)的地址空間。表頁表的組織形式可以是一級或多級系統(tǒng)頁表。索引表是內(nèi)存關(guān)系數(shù)據(jù)庫中用于指明表的存儲位置的數(shù)據(jù)結(jié)構(gòu)。
[0074]參見圖2,內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪問操作包括建立映射、讀數(shù)據(jù)、寫數(shù)據(jù)、取消映射,具體如下:
[0075]I)建立映射;具體包括如下步驟:
[0076]11)接收到進程為表建立映射的請求;
[0077]12)從發(fā)出請求的進程的虛擬地址空間中獲得一塊獨立且連續(xù)的虛擬地址空間,作為要訪問的表在進程中的虛擬地址空間,并返回表在虛擬地址空間的起始地址;返回的表在虛擬地址空間的起始地址記錄在關(guān)系數(shù)據(jù)庫中、用戶進程中或索引表中;
[0078]13)利用控制寄存器,訪問進程的進程頁表,找到表的虛擬地址空間在進程頁表中對應(yīng)的條目;
[0079 ] 14)在內(nèi)存關(guān)系數(shù)據(jù)庫的索引表中找到表的最高級指針;
[0080]15)將最高級指針的值寫入進程頁表中對應(yīng)的條目,即完成表在進程頁表中的映射;
[0081]2)讀數(shù)據(jù)或?qū)憯?shù)據(jù);
[0082]讀數(shù)據(jù)時包括如下步驟:
[0083]211)接收進程讀取表中數(shù)據(jù)的請求;
[0084]212)通過表在虛擬地址空間的起始虛擬地址加上進程所請求的數(shù)據(jù)在表中的偏移量,計算出所請求的數(shù)據(jù)的虛擬地址;
[0085]213)通過內(nèi)存映射設(shè)備和連接到進程頁表的表頁表,將步驟212)中獲得的數(shù)據(jù)的虛擬地址轉(zhuǎn)換為數(shù)據(jù)在內(nèi)存關(guān)系數(shù)據(jù)庫所管理的內(nèi)存上的物理地址;
[0086]214)進程訪問物理地址所指數(shù)據(jù)頁中的數(shù)據(jù);
[0087]寫數(shù)據(jù)時包括如下步驟:
[0088]221)接收進程向表中寫數(shù)據(jù)的請求;
[0089]222)通過表在虛擬地址空間的起始虛擬地址,加上進程寫數(shù)據(jù)的位置在表中的偏移量,計算出所請求的數(shù)據(jù)的虛擬地址;
[0090]223)判斷寫操作是否需要分配新的存儲空間,如是,則執(zhí)行步驟224),如否,執(zhí)行步驟225);
[0091]224)從內(nèi)存關(guān)系數(shù)據(jù)庫所管理的物理內(nèi)存中獲取空閑物理頁面,并加入到表的表頁表中,完成映射;
[0092]225)進程將數(shù)據(jù)寫入表在內(nèi)存關(guān)系數(shù)據(jù)庫中對應(yīng)的物理頁面,并通過內(nèi)存映射設(shè)備和插入到進程頁表的表頁表,將步驟222)中得到的虛擬地址轉(zhuǎn)換為內(nèi)存關(guān)系數(shù)據(jù)庫管理的內(nèi)存的物理地址,完成映射;
[0093]3)取消映射;具體包括如下步驟
[0094]31)接收到進程為表取消映射的請求;
[0095]32)釋放表建立映射時獲得的進程中的虛擬地址空間;
[0096]33)清除虛擬地址空間在進程的進程頁表中對應(yīng)的條目。
[0097]最后說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。
【主權(quán)項】
1.內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)組織方法,其特征在于:包括如下步驟: a)以表的形式組織數(shù)據(jù); b)以表頁表的方式為每個表建立連續(xù)且獨立的虛擬地址空間; c)將數(shù)據(jù)在內(nèi)存中的物理地址存儲在表頁表中; d)將表和表頁表的映射關(guān)系存放在內(nèi)存關(guān)系數(shù)據(jù)庫的索引表中; e)用內(nèi)存關(guān)系數(shù)據(jù)庫管理數(shù)據(jù)和表頁表的物理內(nèi)存。2.如權(quán)利要求1所述的內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)組織方法,其特征在于:所述步驟b)中,所述表頁表為一級頁表或多級頁表,為多級頁表時,上級頁表的每一個條目可以存放一個下級頁表的物理頁面的起始物理地址;其中,最后一級頁表中存放有數(shù)據(jù)頁的起始物理地址。3.如權(quán)利要求1所述的內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)組織方法,其特征在于:所述步驟d)中,索引表的數(shù)據(jù)結(jié)構(gòu)為數(shù)組、鏈表或結(jié)構(gòu)體。4.如權(quán)利要求1-3中任一項所述的內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)組織方法,其特征在于:所述索引表中保存有表及其表頁表的最尚級指針,所述最尚級指針指向表頁表。5.內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪問方法,包括如下步驟: 1)建立映射;具體包括如下步驟: 11)接收到進程為表建立映射的請求; 12)從發(fā)出請求的進程的虛擬地址空間中獲得一塊獨立且連續(xù)的虛擬地址空間,作為要訪問的表在進程中的虛擬地址空間,并返回表在虛擬地址空間的起始虛擬地址; 13)利用控制寄存器,訪問進程的進程頁表,找到表的虛擬地址空間在進程頁表中對應(yīng)的條目; 14)在內(nèi)存關(guān)系數(shù)據(jù)庫的索引表中找到表頁表的最高級指針; 15)將表頁表的最高級指針的值寫入進程頁表中對應(yīng)的條目,即完成表在進程頁表中的映射; 2)讀數(shù)據(jù)或?qū)憯?shù)據(jù); 讀數(shù)據(jù)時包括如下步驟: 211)接收進程讀取表中數(shù)據(jù)的請求; 212)通過表在虛擬地址空間的起始虛擬地址加上進程所請求的數(shù)據(jù)在表中的偏移量,計算出所請求的數(shù)據(jù)的虛擬地址; 213)通過內(nèi)存映射設(shè)備和連接到進程頁表的表頁表,將步驟212)中獲得的數(shù)據(jù)的虛擬地址轉(zhuǎn)換為數(shù)據(jù)在內(nèi)存關(guān)系數(shù)據(jù)庫所管理的內(nèi)存上的物理地址; 214)進程訪問物理地址所指數(shù)據(jù)頁中的數(shù)據(jù); 寫數(shù)據(jù)時包括如下步驟: 221)接收進程向表中寫數(shù)據(jù)的請求; 222)通過表在虛擬地址空間的起始虛擬地址,加上進程寫數(shù)據(jù)的位置在表中的偏移量,計算出寫數(shù)據(jù)的位置的虛擬地址; 223)判斷寫操作是否需要分配新的存儲空間,如是,則執(zhí)行步驟224),如否,執(zhí)行步驟225); 224)從內(nèi)存關(guān)系數(shù)據(jù)庫所管理的物理內(nèi)存中獲取空閑物理頁面,并加入到表的表頁表中,完成映射; 225)進程通過內(nèi)存映射設(shè)備和插入到進程頁表的表頁表,將步驟222)中得到的虛擬地址轉(zhuǎn)換為內(nèi)存關(guān)系數(shù)據(jù)庫管理的內(nèi)存的物理地址,將數(shù)據(jù)寫入表在內(nèi)存關(guān)系數(shù)據(jù)庫中對應(yīng)的物理頁面,完成映射; 3)取消映射;具體包括如下步驟 31)接收到進程為表取消映射的請求; 32)釋放表建立映射時獲得的進程中的虛擬地址空間; 33)清除表頁表在進程的進程頁表中對應(yīng)的條目。6.如權(quán)利要求5所述的內(nèi)存關(guān)系數(shù)據(jù)庫的數(shù)據(jù)訪問方法,其特征在于:步驟12)中,返回的表在虛擬地址空間的起始地址記錄在關(guān)系數(shù)據(jù)庫中、用戶進程中或索引表中。
【專利摘要】本發(fā)明屬于計算機技術(shù)領(lǐng)域,具體涉及一種關(guān)系數(shù)據(jù)庫在內(nèi)存中的數(shù)據(jù)組織及訪問方法,數(shù)據(jù)組織方法中,以表頁表的方式為每個表建立連續(xù)且獨立的虛擬地址空間;將表和表頁表的映射關(guān)系存放在內(nèi)存關(guān)系數(shù)據(jù)庫的索引表中;并用內(nèi)存關(guān)系數(shù)據(jù)庫管理數(shù)據(jù)和表頁表的物理內(nèi)存;而數(shù)據(jù)訪問方法包括建立映射、讀數(shù)據(jù)、寫數(shù)據(jù)和取消映射的步驟,數(shù)據(jù)的組織使用連續(xù)的地址空間,可以從讀寫數(shù)據(jù)的起始虛擬地址開始,一次性訪問讀寫長度內(nèi)的數(shù)據(jù)頁,不需要用軟件反復(fù)查找不同數(shù)據(jù)頁的物理地址,表的組織格式與進程頁表格式相同,實現(xiàn)零切換,無需重建,只需要將表頁表的指針插入進程頁表,能實現(xiàn)快速映射和高速訪問表中的數(shù)據(jù)。
【IPC分類】G06F17/30
【公開號】CN105677879
【申請?zhí)枴緾N201610018195
【發(fā)明人】諸葛晴鳳, 沙行勉, 陳咸彰
【申請人】諸葛晴鳳
【公開日】2016年6月15日
【申請日】2016年1月12日