天天看點

【文獻心得】記憶體隔離技術

實時性、uc/OS-Ⅱ、空間域隔離、動态記憶體配置設定、隔離域間通信

文章目錄

  • ​​[1]闫廣明. 嵌入式系統記憶體空間域隔離技術的研究與實作[D].哈爾濱工程大學,2011.​​
  • ​​國外研究現狀​​
  • ​​國内研究現狀​​
  • ​​記憶體空間域隔離技術​​
  • ​​段保護技術[8]​​
  • ​​段比對技術​​
  • ​​位址沙箱技術[7]​​
  • ​​基于MMU或MPU的頁表技術​​

[1]闫廣明. 嵌入式系統記憶體空間域隔離技術的研究與實作[D].哈爾濱工程大學,2011.

如何利用MMU在不影響實時性的前提下實作嵌入式系統中各個任務之間的隔離保護。 為了滿足嵌入式作業系統對可靠性和實時性的要求,需要一種能夠适用于嵌入式作業系統的、具有隔離保護功能的、實時性好的記憶體管理子產品。

國外研究現狀

無MMU:

  1. 利用靜态源代碼分析來檢測記憶體通路沖突、指針越界和非法跳轉進而實作任務間的隔離,沒有實作真正的記憶體保護,無法解決程式運作期間通路非法記憶體位址的問題[5,6]。
  2. 基于軟體技術的動态故障隔離技術[7]。對軟體子產品分區,把不可信子產品加載到容錯分區中;改進編譯後的目标代碼,将在容錯分區中不安全的間接跳轉或間接讀寫指令前填充判斷代碼,防止此分區内指令通路其它分區内容。軟體實作難度大,需要對機器代碼二次編譯,涉及到大量的彙編代碼插入,不宜移植,會惡化系統的實時性。

uCLinux 是基于 Linux 的嵌入式作業系統,為了滿足低端的微控制器,無 MMU,屏蔽了 Linux 的虛拟記憶體機制,系統運作在實位址上,核心和應用程式運作在同一特權級上,互相沒有隔離,這就導緻任何應用程式的運作錯誤可能會對其它應用程式或核心造成影響。并不是高可靠的嵌入式作業系統。

Linux 雖然可以應用在具有 MMU 的嵌入式系統中,但傳統 Linux 的記憶體管理和保護機制是面對平均通路情況設計的,實時性很差,通過改進有 RTLinux 和 L4Linux。

具有MMU:在嵌入式系統上實作記憶體保護機制不僅要考慮應用程式的隔離,還要考慮系統實時性的問題。

  1. 基于硬體MMU和外存交換技術的的虛拟記憶體保護技術(分段和分頁機制來實作任務間的隔離)。這種記憶體保護技術己經在伺服器作業系統和桌面作業系統中得到了大量應用,但存在任務切換時間不确定,實時性差等缺點,無法直接應用在嵌入式作業系統中。
  2. RTLinux 采用實時任務與核心共享核心空間的方式。非實時任務運作在使用者空間。核心空間與使用者空間之間采用和特權級機制進行隔離。這樣使用者空間的運作錯誤不會影響到實時任務的運作,起到了一定的隔離保護作用。但是實時任務與核心之間卻沒有任何保護,當實時任務出錯時會影響到整個系統的穩定性。是以也不能滿足嵌入式作業系統對可靠性的全部要求。
  3. [16] 一方面解決傳統記憶體保護粒度過粗問題(傳統的記憶體保護都是以頁為基礎的),能精确到字一級的通路保護,通過在記憶體中建立每個記憶體位址的通路權限表,每次記憶體通路都要通過此表的權限檢查,若不通過則抛出異常;另一方面加快權限的驗證速度,對現有的 MMU 進行改造,加入權限表高速緩存,把常用的通路權限表放在緩存中,當通路某個記憶體位址時隻需要通路權限表緩存即可迅速獲得此位址的權限,不需要再次通路記憶體中的權限表了,減少訪存次數,這種細粒度的記憶體保護方法需要改進現有 CPU 硬體,CPU 需要內建此類高速緩存。類似方法還有:Linux 核心多尺寸頁的保護[17],[18] 将精細記憶體保護應用到基于權能的實時系統上。
  4. uc/OS-Ⅱ 是一種面向嵌入式系統的實時作業系統,具有實時性強、體積小、移植友善、代碼清晰、可裁剪、易于擴充的特點,但其記憶體管理過于簡單,任務間沒有任何保護,且核心任務實作結構多采用全局變量來實作,無法保障各個任務間的安全性,使其很難應用在安全關鍵系統場合。uc/OS-Ⅲ 加入了基于 MMU 的空間隔離子產品 uC/MMU,但由于其為商業軟體,具體實作技術未公開。
ARINC653 标準:闡述子產品化綜合航空電子裝置使用的應用軟體的基礎操作環境,定義航空應用與下層操作環境之間的接口和資料交換的模式以及服務的行為,并描述嵌入式航空電子軟體的運作環境,其中特别提到的是在安全關鍵系統中必需使用空間隔離和時間隔離技術來保障多任務環境下的各個任務之間的安全。此規範成為了絕大多數安全關鍵系統的事實标準。很多著名的安全關鍵系統軟體公司都在此标準基礎上開發了新的嵌入式作業系統以适用于各種安全關鍵系統。

國内研究現狀

  1. DeltaOS。國産的高可靠嵌入式實時作業系統,可以嵌入到以 32 位微控制器為核心的各種智能裝置中,作為應用程式的支撐環境。特别是其已經被成功應用于航空/航天的高可靠性裝置。據報道該作業系統于2005年進行了更新,加入了符合 ARINC653 規範的高可靠子產品并使用MMU實作實體空間隔離。
  2. EOSnux。以 Linux 操作為藍本,不适合實時性要求高的嵌入式系統。
  3. Hopen OS。北京凱思昊鵬軟體工程技術有限公司自主研發的一款嵌入式實時作業系統,其核心一般為左右。其特點是占用空間小、實時性好、易于定制、支援多任務和多線程。但其任務間并無任何保護措施,并不是高可靠的嵌入式作業系統。

實驗室方案:

  1. 熊光澤等學者在其開發的S-CRTOS系統上借鑒ARINC653思想,實作了基于空間和時間隔離保護機制[23]。S-CRTOS主要采用兩種方式來實作應用與核心以及應用之間的隔離和保護,第一種方式是使用MMU,第二種方式是TRAP系統調用。但對其實作方法和系統實時性未作深入說明。
  2. 龔育昌、唐玲等學者在分析現有作業系統安全機制的基礎上,針對空間隔離技術的不足之處,提出了功能隔離的新思想[24]。功能隔離可以提供更細緻的隔離粒度,并可使不同類别的功能請求在互相隔離的執行域中執行,進而提高系統的可靠性與安全性。但該思想主要面向通路的安全性,對系統的實時性影響未做讨論。而在嵌入式系統中不僅要滿足安全性要求,實時性也必須要考慮。
  3. 學者歐慶于證明了在分區核心系統中,其隔離安全性通過系統層層結構中的分區隔離機制能夠得到實作[25]。
提出了一種在 ARM9 等有 MMU 的微控制器上實作具有空間域隔離功能的嵌入式作業系統模型。
    + 在空間域上采用硬分區思想實作程序之間、程序與核心間、程序與空閑記憶體間、線程與其堆棧間的隔離;
    + 通過資源預留機制保障關鍵任務的記憶體需求,通過記憶體限額機制防止惡意程序占用大量記憶體;
    + 在時間域上采用兩級排程,程序間采用搶占式排程,保障高優先級任務的實時性;
    + 在記憶體管理上,本系統采用兩級記憶體管理來提高記憶體的使用效率和管理的實時性;
    + 程序内部采用 TLSF 算法進行動态記憶體管理,保證了記憶體配置設定的實時性和低碎片性;
    + 在程序間采用固定分區大小的動态記憶體管理方式,保證了實時性和隔離性;
    + 簡化了MAC機制以實作具有實時性的I/O通路保護。在保證明時性的前提下提高了I/O空間的通路安全性;      

記憶體空間域隔離技術

  1. 基于軟體的隔離技術
  • 段保護技術
  • 段比對技術
  • 位址沙箱技術
  1. 基于硬體與軟體的隔離技術
  • 基于MMU或MPU的頁表技術

段保護技術[8]

代碼段、資料段、堆棧段和全局段。

這種技術對于缺少虛拟記憶體的嵌入式系統而言,通過提供一個完整的自動軟體技術實作了段保護,提高了系統的可靠性。

在目标代碼中的記憶體通路指令前插入優化過的運作時檢測代碼,如果發現要通路的段位址與目前段寄存器沖突,則抛出異常,并在系統失效或崩潰前做出矯正動作。

實作方法與具體硬體結構和機器語言息息相關,很難有良好的移植性。

段比對技術

把嵌入式系統中的指令分為安全指令和不安全指令。針對不安全指令(跳轉指令、訪存指令)進行檢查。

不安全指令可分為:可靜态驗證的指令(不通過運作就可确定其通路位址的指令)和不可靜态驗證的指令(其通路位址在程式運作時可能變化的指令)。

  • 可靜态驗證的指令(可直接修改目标代碼的相關指令,保證不會通路非法的記憶體區域):直接轉移指令(goto、call)、存儲靜态變量經常使用立即位址模式、
  • 不能靜态驗證的指令(需要在每一個不安全的指令前插入檢驗代碼,檢測目标位址):有些通過寄存器等尋址方式間接跳轉的指令、用寄存器存儲的目标位址、

該技術需要四個專門的寄存器(可以通過重定向編譯器,使用對性能影響較小的寄存器集):1. 存儲指令位址、2. 存儲資料位址、3. 存儲段位移量、4. 存儲段辨別符

該技術采用了指令分類操作和專用寄存器方式,能夠進一步提高軟體隔離技術的執行效率。由于其專用寄存器的使用依賴于具體編譯器,很多商業編譯器是不公開源碼的,且該技術與特定處理器相關,移植困難。

位址沙箱技術[7]

在段比對技術的基礎上通過不提供故障處理能力來提高運作效率。

在段比對技術中,把每一個不安全指令的插入代碼中的位址高位填充為預定的段辨別符,位址填充并不捕捉非法位址,它僅僅阻止影響的擴散,保證目前任務的訪存位址都在本段内部。位址填充需要在每一個不安全的存儲或跳轉指令前插入兩條算術指令:1. 清除段辨別符位并把結果存儲到專用寄存器 2. 設定段辨別符的正确值。

需要五個專門的寄存器。

位址沙箱技術能夠進一步減小軟體的開銷,無論是位址沙箱技術、段保護、還是段比對技術都會影響原有程式的執行時間,會惡化系統的實時性。

基于MMU或MPU的頁表技術

  1. 虛拟位址到實體位址的映射。
  2. 提供硬體機制的存儲器通路授權。

記憶體中的每個頁表項都可以設定對某記憶體區的通路權限,當通路不可通路權限的存儲器時,會有一個存儲器異常通知處理器。系統軟體可以捕獲這個異常來判斷是否有非法的存儲器通路。可以捕獲和處理這種異常來實作空間域保護。

  1. 位圖法
  1. 分頁法
  2. 分段法
  3. 多級分頁法
  4. 段頁法
  5. 短路段樹法

繼續閱讀