999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于真實硬件的操作系統安全實驗設計

2024-06-03 11:35:25陳波何玲娜韓姍姍
中國信息技術教育 2024年10期
關鍵詞:實驗教學

陳波 何玲娜 韓姍姍

摘要:本文探索了基于開源硬件,教授低級安全概念的相關方法,包括與構建實踐學習環境相關的嘗試,并對嵌入式內核進行擴充,引導學生深入了解支持樹莓派3B+上的系統調用和內存保護,且設計的作業旨在幫助學生深入了解復雜的硬件細節。最終教學結果表明,基于真實硬件設計操作系統安全實驗,提供了一種培養學生分析和解決較復雜問題的有效方法。

關鍵詞:操作系統安全;開源硬件;實驗教學

中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2024)10-0090-05

引言

在硬件課程的教學中,真實硬件上的操作能夠激發學生的好奇心,增強學生的成就感和參與度。然而,硬件課程對教室、教師、物料有著較高的要求,如在教授操作系統和計算機安全等課程時,由于商用操作系統的龐大,學生的學習范圍被限制為單個組件或子組件,無法合理地呈現基于硬件的設計決策,而使用教學操作系統——用于觀察和開發操作系統的組件則可以有效解決這一問題。因此,筆者嘗試在操作系統安全課中引入嵌入式Xinu操作系統,并設計了系統服務及內存保護相關作業。

背景

嵌入式Xinu操作系統源自Xinu,其中心目標之一是讓學生接觸真實的硬件。現有嵌入式Xinu移植已用于嵌入式系統課程的教學,如移植到樹莓派3B+上,允許硬件系統和操作系統課程提供多核執行的實踐實驗,但對操作系統安全方面的關注較少,沒有實施明確的安全設施。

那么,如何設計一個操作系統,讓它既能監督特權執行又能安全地操作用戶線程?系統服務調用(Supervisor call,SVC)提供了此功能。SVC調用是非特權線程臨時訪問特權操作系統資源的接口。在arm架構上,系統模式功能強大,而用戶模式受到限制,SVC在稱為Supervisor模式的特權環境中執行。一般情況下,該模式具有與系統相同的高權限模式,而如修改CPU寄存器的指令,只能從特權模式訪問。一個簡單的操作系統(如教育操作系統)可能只包含幾個SVC應用程序,生產操作系統則提供更多保護,但復雜度高。

嵌入式Xinu操作系統依賴GNU交叉編譯器(GCC)來轉換主要用C語言編寫的內核源代碼到一系列目標文件。這些目標文件鏈接在一起以創建可傳輸的最終可執行操作系統映像到受支持的機器上并運行。GCC等編譯器有一組可用的優化選項,常見的優化程序的好處包括:更小的代碼大小、更快的程序執行,且采用更少的分支(執行指令重新排序,在當前位置繼續執行,而不是跳轉到內存中較遠的空間)。

系統服務調用SVC

筆者認為,學生應嘗試硬件提供的保護設施,如基于模式的保護。一個處理器的執行模式定義了其當前狀態,即它將用于執行svc等指令的方法。樹莓派3B+的CPU有七種執行模式:系統模式、用戶模式、管理員模式、中止模式、快速中斷請求(FIQ)模式、中斷請求(IRQ)模式、未定義模式。

在嵌入式系統課程中教授Embedded Xinu時,系統僅在System模式、IRQ模式或FIQ模式下執行。系統模式是特權模式,所有指令在此模式下均有效。對所有基本執行使用系統模式提供了優雅的設計,但是內置硬件安全設施未使用。當處理器在User模式下執行時,特權指令變得未定義。因為Pi 3B+的SoC沒有公開可用的文檔,很難準確確定哪些指令被認為是特權的,以及哪些在用戶模式下可用。

Supervisor模式與系統模式一樣,是一種特權模式,但它是一種異常模式,而系統模式不是。因此,要進入超級用戶模式(或任何異常模式),處理器生成一個異常,該異常被Xinu的異常處理程序捕獲。

管理員模式有自己的存儲堆棧指針(一個跟蹤運行時堆棧的寄存器)和鏈接寄存器(一個保存當前執行的函數完成時返回的指令地址的寄存器)。根據ARM調用約定,寄存器r0-r3在函數調用時被壓入堆棧。當處理Supervisor模式異常時,使用其各自的堆棧來保存這些參數是有益的。因此,它的堆棧是在引導加載程序中初始化的。

當樹莓派上電后,內核的bootloader會執行初始化步驟,如為每種潛在的執行模式準備堆棧內存。當處理Supervisor等異常時,平臺要求相應的堆棧根據ARM過程調用標準進行8字節對齊。在開始執行由異常處理程序分支到的函數(如處理程序例程)之后,模式切換意味著堆棧指針已更新。

雖然樹莓派3B+配備了四核處理器,但本課程使另外三個核心處于禁用狀態。當不存在多核并發問題時,擴展內核變得更加簡單。這對開發者有利,因為消除了對有關跨內核的系統調用的探索。這一決定也符合Xinu作為教學工具的用途。學生不必因與新硬件細節一起引入的多核系統而不知所措。

在嵌入式Xinu加載Null線程后,處理器仍處于系統模式(如圖1)。 接下來是一些關鍵的初始化步驟。為了在網絡傳輸后執行內核,必須首先初始化以太網設備,而樹莓派平臺的一個特點是網絡通信通過USB設備進行,所以,首先要啟用USB子系統。USB傳輸需要啟用中斷,因此整個過程在系統模式下進行。為了保持簡單性,在主線程開始執行之前盡可能晚地進入用戶模式。

SVC接口或系統調用接口是一種抽象,允許在非特權模式下運行的處理器安全地執行特權指令并返回到正常執行。圖2顯示了getcpuid()的系統調用序列,該函數返回當前處理器核心的數字標識。

svc指令是32位arm狀態指令集和16位thumb指令集的一部分。為了區分所提供的內核服務,每個svc編號在頭文件include/svc.h中唯一定義。

在使用USB(通用串行總線)設備等板載設備的嵌入式操作系統上,必須采用一種機制來促進操作系統和設備之間的通信。對于許多設備來說,中斷請求線是必要的通信媒介。在初始化后,操作系統將對與其連接的每個設備啟用請求線。在此工作之前,Xinu內核為許多設備啟用了中斷。最值得注意的是UART(通用異步接收器-發送器)和USB。UART中斷允許接收器傳輸數據,這對于獲取輸入的系統函數非常有用,如getc()。但是,如果沒有啟用中斷,用戶模式函數將無法獲取輸入。

如圖1所示,關鍵初始化序列可能發生在System模式。但是,當第一次從用戶模式進行上下文切換時,更新CPSR中斷位的msr(從寄存器傳送到狀態)指令未定義,這是因為如果不訪問該指令,就無法在啟用中斷的情況下啟動新線程。筆者試圖通過從上下文切換例程發出svc指令來回避這個問題,隨后,在更改SVC處理程序中的SPSR后,啟用中斷。然而,從svc返回后,系統定時器立即中斷了上下文切換代碼。在當前狀態下,時鐘處理程序(在系統定時器中斷后調用)無法在用戶模式下執行。最后,為了節省時間和簡單便捷,不需要啟動中斷來實現預期目標。

本節中設置的作業涉及ARM編程和更高級的C編程,允許更多的編程自由。這樣就為學生提供了一個啟動到用戶模式的內核,但尚未在引導加載程序中初始化Supervisor模式堆棧。他們的任務是:①建立Supervisor模式堆棧;

②實現create()的系統調用。這個功能接受可變數量的參數,使其API和調度案例寫起來更有挑戰性。

在學生不知道將要測試的參數數量的情況下,教師可以要求他們編寫一個優雅的C實現才能獲得滿分。此作業的書面測試用例可能包括準備創建執行參數檢查的線程。

內存保護

內存管理單元(MMU)是一個功能單元,負責監督處理器對可用物理內存的使用。因此,可以配置內存管理單元來實現內存保護,緩存是處理器之間的中介和物理內存。對于支持緩存的單元,標記為可緩存的區域相應地保存在翻譯后備緩沖區(TLB)中。

處理器請求的內存地址首先由MMU檢查以確保其有效。為了實現這一點,MMU檢查存儲在硬件寄存器中的信息,其中包含給定區域的讀寫權限。在確定地址可訪問后,進行地址轉換。這些翻譯存儲在TLB中,因此MMU只需引用此翻譯并抓取相應的物理內存地址。對于store操作,內存系統不需要返回值。如果執行load,請求將被更新以包含位于物理地址的值,并將其發送回請求者。

樹莓派3B+支持兩種虛擬內存系統選項——MMU和內存保護單元(MPU)。MPU對編程區域提供更簡單的接口,但由于嵌入式Xinu已經啟用了MMU,因此選用MMU。這個決定更符合硬件系統教學,因為MMU是學生熟悉的必要計算機組件。

樹莓派3B+定義了兩級緩存——L1和L2。在默認情況下,樹莓派3B+上禁用二級緩存。嵌入式Xinu最新移植初始化了MMU,但僅使用已啟用的L2系統進行原子操作,從而在內核之間強制執行互斥。在此工作之前,啟用的MMU并未利用其內存保護功能。

圖3顯示了該器件實現的存儲系統。當MMU初始化時,L2緩存已啟用,并且可以開始轉換。如上所述,需要一個硬件寄存器來確定訪問控制。在這個平臺上,協處理器寄存器15(CP15)保存有關正在訪問的內存區域的信息,如是否可緩存,或者是否允許當前執行模式訪問它。在地址轉換之后,物理地址可能駐留在兩個緩存層次結構中的任何一個中,或者駐留在RAM中。該內核以虛擬和物理轉換1∶1的方式配置MMU,這使得設計更加簡單,其中翻譯后的內存地址對請求者是可見的。該平臺的內存架構允許將內存區域編程為多種固定大小之一:4KB頁、64KB頁、1MB節或16MB超節。最新的內核移植使用1MB部分,無子頁面,以簡化設計。為使代碼更便于學生理解,此實現保留1MB部分。

MMU區域由轉換表描述符定義,所選的1MB節大小使用第一級描述符格式。當C位設置后,1MB區域是可緩存的。當考慮外設地址空間時,該區域的C位必須禁用,否則即使有基本輸出也可能會產生嚴重影響。描述符的12位保留用于該節的基址部分,AP位允許擴展正常訪問權限(AP)位。當設置APX時,將提供兩種額外的特權狀態,如特權只讀,而不是特權和用戶訪問控制權限的四種狀態。本實驗不設置APX位,而是使用完全訪問模式或使用AP位的用戶寫禁用模式。域格式定義了內存區域集合的訪問類型,從而使高級內核具有更大的靈活性。為簡單起見,在此實現中,為整個1MB部分定義了一個域。之前的嵌入式Xinu移植將域位設置為Manager訪問類型,這阻止了根據訪問描述符中的權限位對訪問進行檢查,因此永遠不會生成權限錯誤。因此,要實施一定程度的內存保護,不僅需要更改AP位,還要更改域位。將這些位更改為客戶端模式,根據條目中的AP位檢查訪問。嵌入式Xinu的MMU初始化代碼是用C和ARM匯編編寫的。mmu_init() C函數使用輔助函數mmu_section()來監督區域的一般初始化,以設置適當的描述符格式位。一個for循環循環訪問內存地址,調用helper,而一旦所有段基地址都被映射并且外設被標記為不可緩存,MMU就可以啟動。ARM例程啟動mmu()通過CP15執行必要的操作。首先,所有指令和數據高速緩存行都無效。在設置域和TLB基址之前,TLB會失效,以防止硬件留下無效引用重置。

在對某個區域應用受限訪問權限(即用戶模式只讀)并且啟用MMU后,中止模式成為可能的執行模式。Abort模式是內存中止時使用的異常模式。內存中止是由無效的數據內存訪問引起的,如變量存在于內存地址0x00300處,并且該區域由第一級描述符定義為用戶模式只讀,則嘗試從用戶更改該處的值的行為將導致數據存儲器中止。中止處理程序可以編程為以某種方式處理此類故障,具體方式取決于處理者的設計,它可能會在執行動態配置指令后再次嘗試錯誤指令。否則,簡單的中止處理程序將跳過錯誤指令。

在本節設計的作業中,學生將看到一個按順序創建并運行兩個線程的主程序。運行的第一個線程模擬普通線程,它進行一些系統調用,如gettid()、getcpuid(),并打印每個結果。第二個線程模擬全局變量的惡意賦值,將導致內核出現不可恢復的故障。學生的任務是防止故障發生,而無需刪除或更改惡意線程的指令。

該作業包含三個主要部分:

①將insert()函數設為系統調用;

②在mmu_init()例程期間修改訪問權限位;

③編寫一個簡單的中止模式處理程序來跳過無效指令。

全局線程就緒列表通過insert()修改,它將已就緒線程ID放入就緒列表中。將列表索引賦值為-1將導致調度程序發生故障,并打印內核錯誤消息,打印錯誤消息后不會繼續執行,所以學生可以先考慮執行模式提供的保護。如果在Supervisor模式下執行insert(),那么就緒列表將只能從特權模式寫入。因此,如果就緒列表的地址已知,則MMU可以配置為只允許從特權模式對該地址進行寫訪問。

該實現使用一種方案來挑選出就緒列表,將其放入遠離內核內存的已知位置。首先,為了使就緒列表地址已知,需要進行修改。在initialize.c中,聲明了就緒列表隊列,可以使用編譯器指令,與加載器腳本一起,將就緒列表復制到已知位置(如圖4)。因為MMU使用1MB的部分進行1:1轉換,就緒列表可以定義在較高的物理部分,如0x00800000。

通過可見的已知位置的就緒列表,學生可以開始修改mmu_init()以使用USER READONLY訪問權限位。最初,兩個AP位均被設置,允許對特權和非特權模式進行完全讀寫訪問。修改僅需要設置第二個AP位,從而授予用戶對保存就緒列表的區域進行只讀訪問。一旦完成,學生將注意到內核在嘗試進行現在無效的分配后掛起,這不是期望的行為,描述要求跳過無效指令,因此下一部分需要一些ARM匯編。內核掛起是因為它嘗試內存寫入時出現錯誤,導致內核陷入了中止模式。學生必須修改中止處理程序以跳過出錯的指令。當處理器進入中止模式時,鏈接寄存器被設置為中止指令的地址+8。因此,要返回到無效賦值之后的指令,中止處理程序必須從鏈接寄存器中減去4并跳轉到該地址。

結果與展望

本文引入了系統調用,這是嵌入式操作系統的一個重大結構變化。此外,還提供了基于模式的內存保護實現,所設計的作業提出了相關理論在實踐中的應用方式。通過教學實踐,取得了較好的效果。

未來工作的許多方向都涉及更高層次的擴展,如可以研究嵌套SVC調用。嵌套SVC指令的能力將簡化Xinu內核,特別是如果需要單獨的用戶和內核空間。另外,據學生反饋,他們對現代CPU的多核技術較感興趣,因此,筆者目前正在設計啟用樹莓派上其他三個核心的實驗材料。

參考文獻:

[1]劉威,常瑞,謝耀濱.面向系統能力培養的嵌入式系統課程教學模式改革與實踐[J].計算機教育,2019(01):39-43.

[2]ARM Ltd.ARM Architecture Reference Manual Armv8,for Armv8-A architecture profile[EB/OL].https://static.docs.arm.com/ddi0487/ea/DDI0487E.

[3]ARM Ltd. SVC Handlers.[EB.OL].https://infocenter.arm.com/help/index.js?topic=/com.arm.doc.dui0203j/Cacdfeci.html.

[4]Dennis Brylow. An experimental laboratory environment for teaching embedded operating systems[C].Proceedings of the 39th SIGCSE technical symposium on computer science education:192-196.

[5]Douglas Comer.Operating System Design:The Xinu Approach[M].鄒恒明,周亮,曹浩,等,譯.北京:機械工業出版社,2013.

[6]陳剛,關楠,呂鳴松,等.實時多核嵌入式系統研究綜述[J].軟件學報,2018,29(07):2152-2176.

猜你喜歡
實驗教學
問題引導在初中化學實驗教學中實踐探索
家長(2023年2期)2023-03-14 06:55:16
關于基礎教育階段實驗教學的幾點看法
科學與社會(2022年1期)2022-04-19 11:38:42
光反應與有機化學實驗教學結合的研究
云南化工(2021年8期)2021-12-21 06:38:04
小議初中化學演示實驗教學
甘肅教育(2020年4期)2020-09-11 07:42:36
電容器的實驗教學
物理之友(2020年12期)2020-07-16 05:39:20
對初中化學實驗教學的認識和體會
甘肅教育(2020年8期)2020-06-11 06:10:04
幾何體在高中數學實驗教學中的應用
基于云計算的計算機實驗教學探討
高中生物實驗教學中形成性評價的實施——以“觀察根尖分生區組織細胞的有絲分裂”實驗教學為例
中學生物學(2016年8期)2016-01-18 09:08:21
高中自然地理課堂實驗教學的探討
地理教學(2015年13期)2016-01-06 11:59:56
主站蜘蛛池模板: 九九热这里只有国产精品| 国产精品太粉嫩高中在线观看| 精品超清无码视频在线观看| 国产成人1024精品| 制服丝袜一区| 国产精品亚洲天堂| 色AV色 综合网站| AV网站中文| 无码精品国产VA在线观看DVD| 国产不卡在线看| 色噜噜狠狠狠综合曰曰曰| 91娇喘视频| 亚洲国产精品日韩专区AV| 99久久精品免费观看国产| 国产欧美在线观看精品一区污| 在线视频亚洲色图| 操操操综合网| 国产99在线观看| 国产免费看久久久| 色综合久久无码网| 亚洲第一视频免费在线| 国产成人综合日韩精品无码不卡| 91无码人妻精品一区| 国产呦视频免费视频在线观看| 久久国产亚洲偷自| 成人午夜久久| 亚洲第一区精品日韩在线播放| 久久国产精品波多野结衣| 人妻中文久热无码丝袜| 老司机aⅴ在线精品导航| 亚洲成AV人手机在线观看网站| 91在线无码精品秘九色APP| 天天干天天色综合网| 欧美国产日韩一区二区三区精品影视| 黄色片中文字幕| 青青草91视频| 四虎免费视频网站| 国产一区在线视频观看| 91小视频在线观看| 人妻无码一区二区视频| 制服丝袜一区二区三区在线| 国产毛片基地| 久久综合九色综合97婷婷| 国产欧美日韩免费| 久久久亚洲国产美女国产盗摄| 综合网天天| 夜夜拍夜夜爽| 日本高清免费一本在线观看| 亚洲aaa视频| 精品综合久久久久久97超人| 国产乱子伦手机在线| 91精品视频在线播放| 亚洲色图在线观看| 粉嫩国产白浆在线观看| 久久美女精品| 91精品国产一区| 亚洲国产欧洲精品路线久久| 99久久亚洲综合精品TS| 亚洲国产欧美国产综合久久 | 91福利免费视频| 天堂成人av| 亚洲国产清纯| 国产三级韩国三级理| 伊伊人成亚洲综合人网7777| 久青草网站| 午夜丁香婷婷| 国产手机在线ΑⅤ片无码观看| 亚洲另类第一页| 欧美色丁香| 人妻丝袜无码视频| 看av免费毛片手机播放| 伊人色天堂| 亚洲欧洲日韩久久狠狠爱| 色综合天天娱乐综合网| 亚洲成人在线免费观看| 99热这里都是国产精品| 亚洲精品在线观看91| 国产永久在线视频| 国内精品视频区在线2021| 18禁黄无遮挡免费动漫网站| 伊人激情综合网| 成年网址网站在线观看|