在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置和方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及操作系統(tǒng)領(lǐng)域,尤其涉及一種在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置和方法?!?br>背景技術(shù):
】[0002]保護(hù)模式的概念最先出現(xiàn)在X86機(jī)器上,目前大部分的x86操作系統(tǒng)都在保護(hù)模式下運(yùn)行,比如Linux、Freebsd、以及Windows系列。比如最初的80286機(jī)器,它的段寄存器不再像之前的幾代機(jī)器那樣直接存儲(chǔ)段基址,而是通過(guò)高13位來(lái)指向全局描述表(globaldescriptortable,簡(jiǎn)稱(chēng):GDT)或者局部描述表(localdescriptortable,簡(jiǎn)稱(chēng):LDT)其中的某一項(xiàng),而低兩位用來(lái)表示訪問(wèn)權(quán)限,而該項(xiàng)就作為實(shí)際段的基址,至此80286可以定義多個(gè)段,并設(shè)置每個(gè)段的權(quán)限。而后來(lái)的幾代X86機(jī)器,雖然尋址空間在不斷提高,但是保護(hù)模式一直延續(xù),而且為了兼容最初的實(shí)模式,在機(jī)器啟動(dòng)的時(shí)候在實(shí)模式下運(yùn)行,而后通過(guò)操作系統(tǒng)再去打開(kāi)保護(hù)模式。保護(hù)模式通過(guò)對(duì)段表的權(quán)限控制來(lái)提供存儲(chǔ)器的保護(hù),可以避免某些任務(wù)去破壞其他程序任務(wù)或者操作系統(tǒng)所擁有的存儲(chǔ)器,保證了多任務(wù)多用戶(hù)模式下的系統(tǒng)穩(wěn)定性和安全性。保護(hù)模式不僅對(duì)于通用計(jì)算機(jī)系統(tǒng),而且對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)也意義非凡。只要是系統(tǒng)中有多種訪問(wèn)權(quán)限存在,為了區(qū)分多個(gè)具有不同訪問(wèn)對(duì)象和訪問(wèn)目的的用戶(hù),需要建立保護(hù)模式以便它們獲取到適用于它們自身的訪問(wèn)權(quán)限。[0003]在現(xiàn)有技術(shù)中,通常通過(guò)內(nèi)存管理單元(memorymanagementunit,簡(jiǎn)稱(chēng):MMU)實(shí)現(xiàn)內(nèi)存保護(hù)模式,該技術(shù)是由頁(yè)表完成的。如果系統(tǒng)可訪問(wèn)的邏輯地址空間較大,可以分為二級(jí)或者多級(jí)頁(yè)表,這些頁(yè)表除了完成邏輯地址映射外,還完成各個(gè)頁(yè)表的訪問(wèn)權(quán)限控制。在系統(tǒng)啟動(dòng)時(shí),地址映射系統(tǒng)處于直接映射模式,這個(gè)類(lèi)似于實(shí)地址模式,此時(shí)一部分頁(yè)表會(huì)被加載進(jìn)旁路轉(zhuǎn)換緩沖(translat1nlook-asidebuffer,簡(jiǎn)稱(chēng):TLB)cache中,以完成后續(xù)程序的地址映射操作,這加快了地址的映射速度,也保證了相關(guān)邏輯頁(yè)的權(quán)限控制。[0004]雖然MMU技術(shù)相對(duì)比較成熟,但是存在如下缺陷:當(dāng)需要映射的邏輯地址沒(méi)有被TLB中的頁(yè)表命中,則需要等待TLB重新去加載頁(yè)表,并按照某些規(guī)律去更新TLB中的頁(yè)表,這些會(huì)增加內(nèi)存訪問(wèn)的時(shí)間開(kāi)銷(xiāo)。此外,上述重新加載和更新頁(yè)表需要操作系統(tǒng)進(jìn)行支持,所以一定程度上增加了軟件設(shè)計(jì)的復(fù)雜性。由于以上缺陷,對(duì)于規(guī)模較小的操作系統(tǒng),MMU技術(shù)顯然不合適,所以需要一種簡(jiǎn)單而有效的內(nèi)存保護(hù)模式實(shí)現(xiàn)方案?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明提供一種在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置和方法,用以實(shí)現(xiàn)為小規(guī)模操作系統(tǒng)提供一種簡(jiǎn)單而有效的內(nèi)存保護(hù)模式實(shí)現(xiàn)方案。[0006]本發(fā)明提供一種在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置,包括:[0007]全局參數(shù)配置模塊,用于在所述操作系統(tǒng)進(jìn)行初始化之前,從非易失性存儲(chǔ)器中獲取地址分配表;[0008]地址保護(hù)模塊,用于根據(jù)所述地址分配表和當(dāng)前的程序計(jì)數(shù)器指針,獲取所述當(dāng)前訪問(wèn)者所屬的空間,根據(jù)所述當(dāng)前訪問(wèn)者所屬的空間、訪問(wèn)者的歷史訪問(wèn)記錄和訪問(wèn)目標(biāo)地址,獲取所述當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,根據(jù)所述當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)控制并對(duì)數(shù)據(jù)總線和指令總線進(jìn)行處理,其中,所述當(dāng)前訪問(wèn)者所屬的空間包括特權(quán)空間和非特權(quán)空間。[0009]本發(fā)明還提供一種在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的方法,包括:[0010]在所述操作系統(tǒng)進(jìn)行初始化之前,從非易失性存儲(chǔ)器中獲取地址分配表;[0011]根據(jù)所述地址分配表和當(dāng)前的程序計(jì)數(shù)器指針,獲取所述當(dāng)前訪問(wèn)者所屬的空間,根據(jù)所述當(dāng)前訪問(wèn)者所屬的空間、訪問(wèn)者的歷史訪問(wèn)記錄和訪問(wèn)目標(biāo)地址,獲取所述當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,根據(jù)所述當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)控制并對(duì)數(shù)據(jù)總線和指令總線進(jìn)行處理,其中,所述當(dāng)前訪問(wèn)者所屬的空間包括特權(quán)空間和非特權(quán)空間。[0012]本實(shí)施例實(shí)現(xiàn)了對(duì)訪問(wèn)者的權(quán)限控制,而且在操作系統(tǒng)運(yùn)行之前將地址分配表從非易失性存儲(chǔ)器中讀出并發(fā)送給地址保護(hù)模塊,無(wú)須維護(hù)頁(yè)表項(xiàng),降低了軟件設(shè)計(jì)的復(fù)雜性,提高了小規(guī)模操作系統(tǒng)的效率,增加了系統(tǒng)的安全性和可靠性,提高了內(nèi)存訪問(wèn)的靈活性,為小規(guī)模操作系統(tǒng)提供了一種簡(jiǎn)單而有效的內(nèi)存保護(hù)模式實(shí)現(xiàn)方案?!靖綀D說(shuō)明】[0013]圖1為本發(fā)明在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置實(shí)施例的結(jié)構(gòu)示意圖;[0014]圖2為本發(fā)明在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的方法實(shí)施例的流程示意圖;[0015]圖3為本發(fā)明在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的方法實(shí)施例中地址保護(hù)模塊12的一個(gè)工作實(shí)例的流程示意圖。【具體實(shí)施方式】[0016]下面結(jié)合說(shuō)明書(shū)附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步的描述。[0017]如圖1所示,為本發(fā)明在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的裝置實(shí)施例的結(jié)構(gòu)示意圖,該裝置可以包括全局參數(shù)配置模塊11和地址保護(hù)模塊12。[0018]全局參數(shù)配置模塊11用于在操作系統(tǒng)進(jìn)行初始化之前,從非易失性存儲(chǔ)器中獲取地址分配表。地址保護(hù)模塊12用于根據(jù)地址分配表和當(dāng)前的程序計(jì)數(shù)器指針,獲取當(dāng)前訪問(wèn)者所屬的空間,根據(jù)當(dāng)前訪問(wèn)者所屬的空間、訪問(wèn)者的歷史訪問(wèn)記錄和訪問(wèn)目標(biāo)地址,獲取當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,根據(jù)當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)控制并對(duì)數(shù)據(jù)總線和指令總線進(jìn)行處理,其中,當(dāng)前訪問(wèn)者所屬的空間包括特權(quán)空間和非特權(quán)空間。[0019]一般情況下,如果訪問(wèn)者所屬的空間為特權(quán)空間,則可以訪問(wèn)特權(quán)空間和非特權(quán)空間。如果訪問(wèn)者所屬的空間為非特權(quán)空間,則只能訪問(wèn)非特權(quán)空間,而不能訪問(wèn)特權(quán)空間,如果必須要訪問(wèn)特權(quán)空間,可以將訪問(wèn)者通過(guò)一些特殊指令來(lái)提升訪問(wèn)者的訪問(wèn)權(quán)限,這些特殊指令可以保存在訪問(wèn)者的歷史訪問(wèn)記錄中。[0020]本實(shí)施例的工作過(guò)程如下:如圖2所示,為本發(fā)明在小型操作系統(tǒng)中實(shí)現(xiàn)內(nèi)存保護(hù)模式的方法實(shí)施例的流程示意圖,該方法可以包括如下步驟;[0021]步驟21、全局參數(shù)配置模塊11在操作系統(tǒng)進(jìn)行初始化之前,從非易失性存儲(chǔ)器中獲取地址分配表;[0022]步驟22、地址保護(hù)模塊12根據(jù)地址分配表和當(dāng)前的程序計(jì)數(shù)器指針,獲取當(dāng)前訪問(wèn)者所屬的空間,根據(jù)當(dāng)前訪問(wèn)者所屬的空間、訪問(wèn)者的歷史訪問(wèn)記錄和訪問(wèn)目標(biāo)地址,獲取當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,根據(jù)當(dāng)前訪問(wèn)者的訪問(wèn)權(quán)限,對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)控制并對(duì)數(shù)據(jù)總線和指令總線進(jìn)行處理;[0023]其中,當(dāng)前訪問(wèn)者所屬的空間包括特權(quán)空間和非特權(quán)空間。[0024]可選地,特權(quán)空間的數(shù)量可以有兩個(gè)以上,非特權(quán)空間的數(shù)量可以有兩個(gè)以上,各個(gè)空間可以具有獨(dú)立的訪問(wèn)權(quán)限控制屬性。[0025]本實(shí)施例實(shí)現(xiàn)了對(duì)訪問(wèn)者的權(quán)限控制,而且在操作系統(tǒng)運(yùn)行之前將地址分配表從非易失性存儲(chǔ)器中讀出并發(fā)送給地址保護(hù)模塊12,無(wú)須維護(hù)頁(yè)表項(xiàng),降低了軟件設(shè)計(jì)的復(fù)雜當(dāng)前第1頁(yè)1 2 3