一種高安全的內核對象內存分配方法
【技術領域】
[0001]本發(fā)明涉及計算機微內核技術領域,特別涉及一種高安全的內核對象內存分配方法。
【背景技術】
[0002]內核對象是操作系統(tǒng)為一些系統(tǒng)級的對象(像進程,線程,信號量)維護的一些數(shù)據結構。這些數(shù)據構保存了與系統(tǒng)級對象相關的系統(tǒng)級信息。
[0003]例如:所有內核對象都會保存該對象的引用計數(shù),進程對象會保存進程ID,文件對象會保存當前字節(jié)偏移量,共享模式,打開模式等。
[0004]操作系統(tǒng)中所有內核對象對是保存在一塊內存空間中,系統(tǒng)上所有的進程都共享這一塊內存空間。
[0005]這些內核對象不能被應用程序直接訪問,應用程序只能通過操作系統(tǒng)提供的API對他們進行操作。而對操作系統(tǒng)API的訪問過程中,操作系統(tǒng)會對訪問的安全性進行保證。這樣避免應用程序對內核對象進行操作而導致系統(tǒng)出現(xiàn)錯誤。
[0006]另外,多個進程可以共享訪問同一個內核對象。
[0007]當應用程序創(chuàng)建或打開一個新的內核對象時,系統(tǒng)API會返回給應用程序一個句柄,該句柄是進程級別的,之后便可以在應用程序中使用該句柄來指定對該內核對象進行操作。
[0008]由于系統(tǒng)API返回給應用程序的句柄是進程級別的,因此同一個內核對象在兩個不同進程中的句柄不會一樣。一個進程如果使用內核對象在其他進程中的句柄來訪問內核對象時會出錯。
[0009]每個內核對象都會有一個引用計數(shù)的概念,內核對象被創(chuàng)建的時候,該值是I。之后每一個新的進程獲得對該內核對象訪問,則引用計數(shù)加I。當每一個獲得訪問的進程釋放訪問權利后(進程關閉內核對象的句柄),引用計數(shù)會被減I。當引用計數(shù)減少至O后,操作系統(tǒng)將會把該內核對象銷毀掉。
[0010]頁高速緩存的優(yōu)點在于:1)訪問磁盤的速度遠遠低于訪問內存的速度,因此從內存訪問數(shù)據要比從磁盤訪問速度快。2)數(shù)據一旦被訪問,就很有可能在短期內被再次訪問至|J。這種在短期內集中訪問同一片數(shù)據的原理被稱作臨時局部原理temporal locality。臨時局部原理保證:如果在第一次訪問數(shù)據時緩存它,那就極有可能在短期內再次被高速緩存命中。
[0011]微內核(Micro kernel)是提供操作系統(tǒng)核心功能的內核的精簡版本,它設計成在很小的內存空間內增加移植性,提供模塊化設計,以使用戶安裝不同的接口。因此,也可以說微內核是操作系統(tǒng)(OS)的最小核心。IBM、Microsoft、開放軟件基金會(OSF)和UNIX系統(tǒng)實驗室(USL)等新操作系統(tǒng)都采用了這一研究成果的優(yōu)點。
[0012]它呈現(xiàn)的是今天通常被認為的操作系統(tǒng)的一個很小的子集。微內核的定義由利特克給出:一個概念僅在以下條件下是可以容忍放在微內核的,那就是當將它移到內核外時,例如,允許競爭的實現(xiàn),將防止系統(tǒng)所需功能的實現(xiàn)。
[0013]因此,微內核不提供硬件上的高層次的抽象(文件,進程,套接字等),如大多數(shù)現(xiàn)代操作系統(tǒng)Linux或Windows所做的那樣。相反,它提供了最少的機制用于控制物理地址空間訪問,中斷和處理器時間。使用這些機制的任何更高級別的結構是建立在微內核之上。這樣的更高級別的服務必然封裝策略。策略自由是一個精心設計的微內核的一個重要特征。
[0014]微內核是一種能夠提供必要服務的操作系統(tǒng)內核,其中這些必要的服務包括任務,線程,交互進程通信(IPC,Inter-Process Communicat1n)以及內存管理等等。所有服務(包括設備驅動)在用戶模式下運行,而處理這些服務同處理其他的任何一個程序一樣。因為每個服務只是在自己的地址空間運行。所以這些服務之間彼此之間都受到了保護。
[0015]微內核具有非常明顯的優(yōu)勢。首先,微內核能夠使得不同的API,文件系統(tǒng),甚至不同的操作系統(tǒng)的特性在一個系統(tǒng)中共存。
[0016]其次,微內核系統(tǒng)非常靈活。當運行一個應用程序時,只需把選定的系統(tǒng)服務加載到系統(tǒng)中即可。而修改了服務以后可以通過聯(lián)機進行測試;并不需要重新構建或者啟動一個新的內核,他們并不影響系統(tǒng)的運行。
[0017]第三,微內核的系統(tǒng)服務或者設備驅動故障和與它們有關的運行任務是隔絕的。
[0018]第四,依存關系的服務器系統(tǒng)可以加以限制,使為安全重要至關信賴的計算基數(shù)的應用可被削減。
[0019]第五,由微內核所決定的結構(IPC,多線程)能夠應用在所有的應用程序和服務上。一個精煉的微內核接口能夠有演繹成更多模塊的系統(tǒng)結構。
【發(fā)明內容】
[0020]本發(fā)明為了彌補現(xiàn)有技術的缺陷,提供了一種應用范圍廣泛,安全穩(wěn)定,使用方便的高安全的內核對象內存分配方法。
[0021]本發(fā)明是通過如下技術方案實現(xiàn)的:
一種高安全的內核對象內存分配方法,其特征在于:應用程序創(chuàng)建新的內核對象時,首先判斷是否有足夠的內存空間,若有足夠的內存空間,則微內核不動態(tài)的為內核對象分配內存,成功創(chuàng)建內核對象,精確地控制應用程序可用物理內存的大小,隔離應用程序之間的物理內存訪問;若沒有足夠的內存空間,則認為內存不足,創(chuàng)建新的內核對象失敗。
[0022]所述內核對象必須明確被應用程序控制的內存區(qū)域通過無類型內存控制功能創(chuàng)建。
[0023]為了創(chuàng)建新的內核對象,應用程序必須通過無類型的內存控制功能明確指向所述內核對象的內存位置,所有內核對象消耗的資源量必須一次創(chuàng)建完畢。
[0024]本發(fā)明的有益效果是:該高安全的內核對象內存分配方法,可以用來精確地控制應用程序可用物理內存的大小,以及能夠隔離應用程序之間的物理內存訪問。
【附圖說明】
[0025]附圖1為本發(fā)明高安全的內核對象內存分配方法示意圖。
【具體實施方式】
[0026]附圖為本發(fā)明的一種具體實施例,下面結合附圖對本發(fā)明進行詳細說明。
[0027]該高安全的內核對象內存分配方法,應用程序創(chuàng)建新的內核對象時,首先判斷是否有足夠的內存空間,若有足夠的內存空間,則微內核不動態(tài)的為內核對象分配內存,成功創(chuàng)建內核對象,精確地控制應用程序可用物理內存的大小,隔離應用程序之間的物理內存訪問;若沒有足夠的內存空間,則認為內存不足,創(chuàng)建新的內核對象失敗。
[0028]所述內核對象必須明確被應用程序控制的內存區(qū)域通過無類型內存控制功能創(chuàng)建。
[0029]為了創(chuàng)建新的內核對象,應用程序必須通過無類型的內存控制功能明確指向所述內核對象的內存位置,所有內核對象消耗的資源量必須一次創(chuàng)建完畢。
【主權項】
1.一種高安全的內核對象內存分配方法,其特征在于:應用程序創(chuàng)建新的內核對象時,首先判斷是否有足夠的內存空間,若有足夠的內存空間,則微內核不動態(tài)的為內核對象分配內存,成功創(chuàng)建內核對象,精確地控制應用程序可用物理內存的大小,隔離應用程序之間的物理內存訪問;若沒有足夠的內存空間,則認為內存不足,創(chuàng)建新的內核對象失敗。2.根據權利要求1所述的高安全的內核對象內存分配方法,其特征在于:所述內核對象必須明確被應用程序控制的內存區(qū)域通過無類型內存控制功能創(chuàng)建。3.根據權利要求1所述的高安全的內核對象內存分配方法,其特征在于:為了創(chuàng)建新的內核對象,應用程序必須通過無類型的內存控制功能明確指向所述內核對象的內存位置,所有內核對象消耗的資源量必須一次創(chuàng)建完畢。
【專利摘要】本發(fā)明特別涉及一種高安全的內核對象內存分配方法。該高安全的內核對象內存分配方法,在設備驅動程序的HAL層代碼中加入驅動認證與檢測機制,對要加載的驅動模塊進行認證與檢測,當所述驅動模塊通過認證與檢測時,正常加載驅動程序;當所述驅動模塊沒能通過認證與檢測時,不加載驅動程序。該高安全的內核對象內存分配方法,實現(xiàn)了Android運行環(huán)境中,對HAL驅動模塊的認證和監(jiān)控,避免了驅動模塊做一些不在本職范圍內的事情,尤其是違法行為,維護了系統(tǒng)安全,避免了用戶的損失。
【IPC分類】G06F21/51, G06F12/08
【公開號】CN105205013
【申請?zhí)枴緾N201510586611
【發(fā)明人】仇偉民, 劉秋杉, 戴鴻君, 于治樓
【申請人】浪潮集團有限公司
【公開日】2015年12月30日
【申請日】2015年9月15日