前言:本站為你精心整理了汽車操作系統(tǒng)存儲保護機制的設(shè)計范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
OS-Application的實現(xiàn)
OS-Application的資源管理
作為資源統(tǒng)一管理的單元,OS-Application需要記錄其所管理的所有資源信息。在這里將各種類型資源的數(shù)量和標識號都以表的方式保存在OS-Application的配置結(jié)構(gòu)中。由于在操作某一資源時,需要通過該資源訪問其所隸屬的OS-Application,因此在對應(yīng)的資源的配置結(jié)構(gòu)中也需要記錄其所隸屬的OS-Application的標識號。
OS-Application與底層的映射
OS-Application作為域在邏輯層面上將系統(tǒng)劃分開來需要底層的支持。在存儲保護中,域主要體現(xiàn)了系統(tǒng)存儲空間的隔離。為了實現(xiàn)域與存儲空間之間的映射,需要在源程序中將若干個域劃分為各自的輸入段,然后通過鏈接腳本將域定位到程序可執(zhí)行印象的指定存儲空間中[6]。由于MPC5634中的存儲管理單元(MMU)是基于分頁的機制來實現(xiàn)存儲管理的,所以必須將物理存儲空間中的系統(tǒng)的各個部分根據(jù)各自的屬性劃分成相應(yīng)的頁。頁的大小以4的倍數(shù)遞增,從4k到4G不等。每一個頁具有讀、寫和可執(zhí)行的訪問屬性,以及表示其特權(quán)模式的屬性和標識其所隸屬的進程ID的PID屬性。通過PID屬性可以標識該頁所屬的域。通過將存儲空間分頁把系統(tǒng)的不同部分劃分開來。
TLB的管理實現(xiàn)
每當程序進行訪存時,MMU會將訪存地址、PID和當前的特權(quán)模式與TLB中的項目相比較,若命中并且滿足權(quán)限要求則會將有效地址轉(zhuǎn)換為物理地址,否則產(chǎn)生異常。基于硬件的存儲保護機制就是通過TLB來對訪存加以權(quán)限檢查從而達到保護的功能。TLB共有16項,為了有效地支持存儲保護,根據(jù)系統(tǒng)的運行特點這里將TLB的前8項作為固定項用以保存經(jīng)常被訪問的系統(tǒng)頁面,比如內(nèi)核代碼和數(shù)據(jù)。而剩下的8項用來動態(tài)地維護應(yīng)用使用的頁面。通常應(yīng)用的頁的數(shù)量會超過TLB中的項數(shù)。
頁表的設(shè)計
頁表分為兩種,系統(tǒng)頁表和應(yīng)用頁表。系統(tǒng)頁表中對應(yīng)的是系統(tǒng)初始化及內(nèi)核相關(guān)的數(shù)據(jù)和代碼。這些頁面信息是長駐TLB中的,其特權(quán)模式是內(nèi)核態(tài),并且其所對應(yīng)的程序是作為共享資源來訪問的。應(yīng)用頁表中對應(yīng)的是應(yīng)用的數(shù)據(jù)和代碼。這些頁面信息不是長駐TLB中的,當發(fā)生缺頁異常的時候TLB中某些應(yīng)用的頁面信息會被替換掉。為了有效地維護頁,這里以散列表的方式來記錄頁起始地址與頁在頁表中位置的關(guān)系。頁的起始地址作為散列表的關(guān)鍵碼,通過散列函數(shù)將其轉(zhuǎn)換為對應(yīng)的散列表中的位置。散列表該位置處的元素記錄了頁在頁表中的位置。
頁的替換算法
因為應(yīng)用的頁的數(shù)量通常可能會超過可用的TLB的項數(shù),所以在運行過程中可能會發(fā)生TLB未命中的情況。在TLB未命中異常處理函數(shù)中需要對TLB中的項進行替換,將需要訪問的應(yīng)用的頁置入TLB中。這里以先進先出的方式實現(xiàn)替換。在發(fā)生未命中異常的時候,我們能得到的信息有有效地址以及當前的PID,我們必須通過有效地址來找到需要置換進TLB的頁面,以及再找到需要置換出TLB的頁面。前者我們通過一個散列表表來查找需要置換進來的頁面,而后者我們維護一個先進先出的鏈表來決定需要置換出去的頁面。
系統(tǒng)調(diào)用的實現(xiàn)
系統(tǒng)調(diào)用的實現(xiàn)系統(tǒng)調(diào)用由兩部分構(gòu)成,接口函數(shù)和系統(tǒng)調(diào)用異常處理函數(shù)。
接口函數(shù)的實現(xiàn)
每個接口函數(shù)都對應(yīng)一個系統(tǒng)服務(wù)。在接口函數(shù)中以函數(shù)指針的方式來建立與系統(tǒng)服務(wù)的關(guān)聯(lián)。當用戶調(diào)用接口函數(shù)時,需要判斷當前的特權(quán)模式。如果當前是特權(quán)態(tài)則直接調(diào)用系統(tǒng)服務(wù)。否則需要保存系統(tǒng)服務(wù)函數(shù)的地址到寄存器,然后再通過匯編指令SC觸發(fā)系統(tǒng)調(diào)用異常處理函數(shù)來實現(xiàn)特權(quán)模式的切換。
系統(tǒng)調(diào)用異常處理函數(shù)的實現(xiàn)
進入到異常處理函數(shù)中后,系統(tǒng)進入特權(quán)態(tài)。其后需要根據(jù)當前任務(wù)分配系統(tǒng)棧,并使程序跳轉(zhuǎn)到保存在寄存器中的系統(tǒng)服務(wù)函數(shù)的入口地址處。
任務(wù)的管理
任務(wù)管理的核心在于當任務(wù)發(fā)生切換的時候,需要完成任務(wù)之間上下文環(huán)境的切換。與此同時任務(wù)執(zhí)行過程中所代表的域的保護信息也需要進行切換,從而保證域與域之間正確的轉(zhuǎn)換。這些信息包括:1)OS-Application的ID號;2)任務(wù)所隸屬的OS-Application的特權(quán)模式;3)任務(wù)的系統(tǒng)棧。若切換至的任務(wù)是第一次運行,則需要通過接口函數(shù)來實現(xiàn)到任務(wù)入口函數(shù)的跳轉(zhuǎn)。在接口函數(shù)中根據(jù)任務(wù)所屬OS-Application的特權(quán)模式來進行不同的處理。若是特權(quán)態(tài)則直接進行跳轉(zhuǎn),否則需要將當前特權(quán)模式更改為用戶態(tài)再進行跳轉(zhuǎn)。
本文作者:燕立明羅蕾作者單位:電子科技大學計算機學院嵌入式實驗室
汽車營銷 汽車制造 汽車維修 汽車創(chuàng)新技術(shù) 汽車技能技術(shù) 汽車金融論文 汽車工程論文 汽車電子 汽車設(shè)計論文 汽車質(zhì)量論文 紀律教育問題 新時代教育價值觀