過來人教你怎么成為編程高手架構師(Who taught you how to become a programming master architect)_第1頁
過來人教你怎么成為編程高手架構師(Who taught you how to become a programming master architect)_第2頁
過來人教你怎么成為編程高手架構師(Who taught you how to become a programming master architect)_第3頁
過來人教你怎么成為編程高手架構師(Who taught you how to become a programming master architect)_第4頁
過來人教你怎么成為編程高手架構師(Who taught you how to become a programming master architect)_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、多核嵌入式實時操作系統測試方法關鍵字: 多核嵌入式實時操作系統測試方法本文為Word文檔,感謝你的關注! 摘要:嵌入式實時操作系統測試結果是嵌入式應用軟件的重要參考依據,而對多核嵌入式實時操作系統需要考慮多核的因素對其功能、性能及安全性進行測試。評估多核嵌入式實時操作系統的時間性能,設計了不同的測試方法,考慮多核情況下核間同步時間。針對某國產多核嵌入式實時操作系統的測試方法,在測試項目實施過程中方法可行。 關鍵詞:多核嵌入式操作系統;時間性能;測試方法 TP316.2 A 1007-9416(2017)02-0184-04 在單核操作系統中,內核負責任務管理、資源管理、中斷管理、事件處理及通信

2、管理等工作。在多核操作系統中,這些功能同樣具有,除此之外,還包括核間通信與同步、核間任務調度管理、資源共享及設備管理等部分。性能方面主要考慮任務切換時間、中斷響應時間、運算性能、信量延遲時間、內存讀寫性能等常規的嵌入式實時操作系統性能以外,針對多核還需要檢測核間同步時間,針對圖形的操作系統檢測圖形的運行性能,針對文件系統進行文件讀寫性能。以下是針對某國產多核嵌入式實時操作系統的測試方法。 1 功能測試 針對多核嵌入式實時操作系統以下幾方面的功能進行測試: 多核管理功能:操作系統能在系統初始化階段,完成引導可用的所有處理器核。支持處理器集合操作,對處理器核能夠進行啟停狀態查詢的功能進行測試,通過

3、對已加載被測系統的目標機上電,在上電完成后監測所有處理器核的啟停狀態,驗證多核管理功能的正確性。 多核同步功能:提供自旋鎖、原子操作、內存屏障等機制實現多個處理器核間數據可重入的功能進行測試,通過運行測試程序,構建多個任務,對比使用和不使用自旋鎖的方式訪問共享的臨界資源,監測這些任務對臨界資源訪問的正確性(符合數據的可重入),驗證多核同步功能的正確性;通過在使用內存屏障的情況下,多任務并發訪問同一全局變量,通過對比編譯之后的匯編代碼及運行結果,驗證多核環境下內存屏障能夠保證數據運算順序的正確性;通過運行測試程序,對啟用原子操作和不啟用原子操作時程序運行結果進行對比,驗證多核環境下啟用原子操作能

4、夠保證運行結果的正確性。 多核調度功能:支持多核并行運行,支持核心可搶占、提供基于優先級搶占調度、時間片輪轉調度,保證任務不會有餓死的情況;采用統一的任務隊列管理,基于高效的核間中斷機制實現多核任務統一調度,賦予多核環境中各CPU調度本地就緒隊列的能力;支持處理器親和性,提供任務和中斷綁定到指定處理器核的編程接口,用戶可以根據應用的需要把任務綁定到指定的處理器核上運行的功能進行測試。通過運行測試程序,測試多種優先級任務組合情況下,同時運行的環境下監測任務調度情況,查看系統中各個CPU的負載情況,驗證多核調度功能的正確性。設置了如下幾種優先級任務組合情況,查看是否依據任務優先級進行調度,假設任務

5、優先級由0255個級別。 運行4個任務,優先級相同(250),不指定運行在哪個cpu上,觀察4個任務在cpu上的分布情況,之后運行4個新任務,優先級逐一提高(251、252、253、254),觀察任務搶占調度。是否高優先級任務搶占低優先級任務。四個核上運行任務為(251、252、253、254),待這4個任務完成之后再運行優先級為250的4個任務。 運行4個任務,優先級各不相同(250、251、252、253),不指定運行在哪個cpu上,觀察4個任務在cpu上的分布,之后運行4個新任務,優先級逐一提高(251、252、253、254),觀察任務搶占調度。是否高優先級任務搶占低優先級任務。251

6、的搶250、252的搶251、253的搶251、254的搶252,此時四個核上運行的任務應該為254、253、253、252,待任務運行完之后再按順序調度252、251、251、250的任務。 運行4個任務,優先級相同(250),不指定運行在哪個cpu上,觀察4個任務在cpu上的分布,之后運行4個新任務,優先級逐一提高(251、252、253、254),觀察任務搶占調度;之后動態調整優先級252任務的優先級到249,觀察任務搶占調度。是否高優先級任務搶占低優先級任務。動態調整優先級252任務的優先級到249后,252任務運行的核被優先級為250的任務搶占。 運行4個任務,優先級各不相同(250

7、、251、252、253),指定cpu(對應順序0、1、2、3),觀察4個任務在cpu上的分布。是否每個任務運行在指定的核上。 運行4個任務,優先級各不相同(250、251、252、253),指定cpu(對應順序0、1、2、3),觀察4個任務在cpu上的分布;之后運行4個新任務,不指定CPU,優先級254,觀察任務搶占調度。是否高優先級任務搶占低優先級任務。四個核上運行的任務應該均為254,待任務運行完之后再按指定的CPU調度253、252、251、250的任務。 運行4個任務,優先級各不相同(250、251、252、253),指定cpu(對應順序0、1、2、3),觀察4個任務在cpu上的分布

8、;之后運行1個新任務,優先級252,指定CPU0(對應優先級250的任務),觀察任務搶占調度。是否高優先級任務搶占低優先級任務。優先級為252的任務搶占優先級250的任務運行在CPU0上,待任務運行完之后CPU0再運行優先級250的任務。 運行4個任務,優先級各不相同(245、246、247、248),不指定cpu,觀察4個任務在cpu上的分布,之后運行4個新任務,優先級為250、251、252、253,指定CPU(對應順序0、1、2、3),觀察任務搶占調度。是否高優先級任務搶占低優先級任務。優先級為250、251、252、253的任務運行在指定的核上,待運行完畢后再運行優先級245、246、

9、247、248的任務。 運行4個任務,優先級各不相同(245、246、247、248),指定CPU(對應順序0、1、2、3),觀察4個任務在CPU上的分布,之后運行4個新任務,優先級為250、251、252、253,指定CPU(對應順序3、2、1、0),觀察任務搶占調度。是否按照指定的核進行任務搶占,250搶248運行在CPU3上,251搶247運行在CPU2上,252搶246運行在CPU1上,253搶245運行在CPU0上,待新任務運行完畢后,優先級245、246、247、248的任務再運行在指定的核上。 運行2個任務,優先級各不相同(250、251),指定CPU0和1,觀察2個任務在CPU

10、上的分布;之后運行1個新任務,優先級252,指定CPU0(對應優先級250的任務),觀察任務搶占調度。高優先級任務搶占低優先級任務。優先級252的任務搶占CPU0,待運行完畢后CPU0再運行優先級250的任務。 運行2個任務,優先級各不相同(250、251),指定CPU0和1,觀察2個任務在CPU上的分布;之后運行1個新任務,優先級252,指定CPU0(對應優先級250的任務),觀察任務搶占調度;之后取消優先級250任務的CPU綁定,觀察任務搶占調度。高優先級任務搶占低優先級任務。優先級252的任務搶占CPU0,取消優先級250任務的CPU綁定后,優先級250的任務選擇空閑CPU繼續運行。 2

11、 性能測試 2.1 任務切換時間 任務切換時間,即CPU 的控制權由運行任務主動轉移到另外一個就緒任務時所花費的時間。任務切換時間包括保存當前運行任務上下文的時間、選擇下一個任務的調度時間以及將要運行任務的上下文恢復時間。 為了測試任務切換時間,需要制造任務之間的切換事件。在非搶占情況下,制造的測試場景是讓當前正在執行的任務激活另一個任務,然后自身掛起,那么,被激活的任務將處于就緒狀態,從而引起調度。切換過程包含了一系列的操作,如當前任務上下文的保存、新任務上下文的恢復等,這一過程所需要的時間開銷就是任務切換時間。 設當前正在運行的任務為TASKi,將要運行的新任務為TASKi+I。用T1表示

12、新任務TASKi+I的激活時刻,T2表示新任務TASKi+I表示新任務開始運行的時刻,可以用T2.T1來近似地表示兩個任務之間的切換時間。 測試用例設計,構建my_test_performance工程,通過在任務一中調用pthread_suspend(此處任務調度函數為Posic通用接口)掛起任務二,之后調用pthread_resume恢復任務二的執行,插樁獲取從調用pthread_resume到任務二開始執行之間的時間,測試多核環境下的任務切換時間。 2.2 任務搶占時間 任務搶占時間,即系統將控制權從低優先級任務轉移到高優先級任務所花費的時間,它包括識別引起高優先級任務就緒的事件,比較兩個

13、任務的優先級,最后進行任務的切換。 構建my_test_performance工程,通過在任務一中調用pthread_suspend掛起任務二,之后調用pthread_resume恢復任務二的執行,插樁獲取從調用pthread_resume到任務二開始執行之間的時間,測試多核環境下的任務響應時間。 2.3 中斷響應時間 中斷響應時間,即從中斷產生到開始執行中斷處理程序的第一條指令之間的時間間隔。主要由系統鎖中斷時間和中斷執行準備時間組成。 系統中斷是一種重要的異步事件,使用中斷的目的在于提高系統的效率。避免CPU對某些事件的輪詢,占用資源。在中斷驅動的系統中,CPU運行正常執行程序,當輸入輸出

14、設備需要服務時,輸入輸出設備會通過中斷的方式通知CPU,CPU通過中斷服務程序對其作出快速的反應。 測試時制造場景IntrResp_test工程。安裝用戶自定義異常處理程序,之后觸發中斷,通過sys_timestamp獲取從中斷觸發時刻到進入異常處理程序所需時間,得到多核環境下的中斷響應時間。多次測試取最大值。 2.4 運算性能 多核設定不同的參與計算的CPU核數進行各種典型計算,比對消耗的運算時間,測試多核環境下CPU計算性能。PI運算、n皇后算法、Fibonacci數列算法。 此處同時還移植Linux平臺測試工具CPU2006,在操作系統上運行。獲取bzip、specrand、libqua

15、、hmmer等運算處理時間。 2.5 信號量延遲時間 信號量延遲時間,即一個任務釋放信號量到另一個任務等待信號量的任務獲得信號量的時間間隔。當無任務等待信號量時,信號量延遲即為其釋放操作和獲取操作所需時間。當信號量的等待隊列上有阻塞等待的任務時,信號量延遲時間包含從等待隊列中解除阻塞任務,到該任務被調度執行的時間間隔。 2.6 核間同步時間 通過構建cpc_call_test工程,測試多核環境下的核間同步時間。 運行my_test_performance工程。通過啟動兩個優先級相同任務,任務1調用spin_lock關任務搶占再spin_unlock開搶占,任務2也調用spin_lock關任務搶

16、占,使用Testbed RtInsight工具插樁獲取從任務1調用spin_unlock開搶占到任務2spin_lock關任務搶占之間的時間,測試多核環境下的核間同步時間。多次測試取最大值。 2.7 內存讀寫速度 程序代碼按預先分配好的地址空間存放在ROM中,不可能重新分配地址,程序的最終加載地址必須生成程序時重新分配,由于數據存儲在RAM中,系統要分別對代碼和數據定位,同時,為了節省昂貴的RAM,需要確定ROM中的只讀數據和可變數據,大量的只讀數據不用傳到RAM中。嵌入式系統存儲管理不僅僅包括RAM(片內RAM,SRAM)管理, 還包括ROM(MASK-ROM、FLASH)管理及虛擬內存管理

17、(僅對含有MMU的MCU/CPU)。本文不論虛擬內存管理。嵌入式系統的內存管理可以細分為: 全局內存管理:任務共享數據管理及設備驅動的內存管理。 虛擬內存管理:主要用于需要大內存并且FLASH大的情況,虛擬內存管理是頁式管理。 局部內存管理:使用全局內存管理時要內存管理狀態為malloc_mem_null時調用全局內存管理并設為臨界態。 系統內存管理:只能由系統使用的內存。 使用mbw測試程序進行用戶內存讀寫速度進行測試,包含MEMCPY、DUMB、MCBLOCK(固定塊大小的MEMCPY測試,默認塊大小262144)。導入mbw工程,分別以參數50調用mbw運行測試,獲取運行結果。 2.8

18、文件讀寫速率 簡單的嵌入式系統沒有文件系統的支持,也能運行的很好,但對于現代嵌入式系統,需要管理和傳輸固態硬盤或U盤上的文件數據,文件系統必不可少。文件系統應具有大容量持久性存儲數據管理支持功能和文件可攜帶性功能。文件系統可以放在閃存Flash中,當系統啟動時引導程序將文件系統拷貝到RAM中執行。一個嵌入式多任務文件系統主要具有如下功能: 實現文件命名、存取、更新及保護數據的基本功能。 提供嵌入式系統與其他系統之間的數據傳輸功能,處理多個用戶文件I/O存取,具有文件共享功能。 具有邏輯組織數據的能力,采用隨機存取數據方法,使系統能快速查找信息。 支持設備無關性,使應用程序文件操作獨立于存儲介質

19、,文件操作在其所支持的每個設備上產生同樣的結果。 兼容多個文件系統(FAT16,FAT32),標準的I/O接口(ANSI C、POSIX或WIN32)。 支持多種存儲介質(如固態硬盤和U盤)的可靠存儲。 文件系統的實現需要解決文件和目錄的存儲、存儲介質空間的管理工作。嵌入式文件系統測試的重點在性能測試,使用iozone工具進行測試。 U盤讀寫速率: 使用performance_test工程,調用iozone(-i 0 r 32k s 32m)和iozone(-i 1 r 32k s 32m)分別測試文件讀寫速率。 (-i #n 指定的測試項,n的值為0到12,其中0=write/rewrite

20、, 1=read/re-read。-r 為指定的文件塊大小,以KB為單位。-s 為指定的文件大小,其單位為MB。) performance_test,在C中運行iozone: mount(dosfs,/dev/umass0p1,/c) sp iozone,-i 0 -i 1 -r 32k -s 32m 2.9 圖形性能測試 對于GUI圖形系統的測試修改通用的性能工具DMA進行。 重點測試對于系統繪制矩形、直線、填充矩形的時間進行測試: 加載gtk_demo_new工程,通過調用canvas.c文件中的 do_canvas_test1函數,在畫布上使用surface-DrawRectangle函

21、數,得到畫矩形的時間。 加載gtk_demo_new工程,通過調用canvas.c文件中的 do_canvas_test1函數,在畫布上使用surface-DrawLine 和surface-DrawArc函數,得到畫線的時間。 加載gtk_demo_new工程,通過調用canvas.c文件中的 do_canvas_test1函數,在畫布上使用surface-FillRectangle函數填充矩形的時間。 另外對于GUI圖形系統的內存使用情況進行測試。對比加速和非加速情況下內存使用情況: 加載gtk_demo_new工程,設置canvas.c文件的 do_canvas2函數, 窗口大小為400

22、*300,編譯下載到目標機,通過調用 do_canvas_test2和mi函數記錄打開窗口后的內存使用情況,關閉400*300的窗口,通過調用mi函數記錄打開窗口后的內存使用情況,比較內存差值。 加載gtk_demo_new工程,設置canvas.c文件的 do_canvas2函數, 窗口大小為800*600,編譯下載到目標機,通過調用 do_canvas_test2和mi函數記錄打開窗口后的內存使用情況,關閉800*600的窗口,通過調用mi函數記錄打開窗口后的內存使用情況,比較內存差值。 加載gtk_demo_new工程,設置canvas.c文件的 do_canvas2函數, 窗口大小為1

23、024*768,編譯下載到目標機,通過調用 do_canvas_test2和mi函數記錄打開窗口后的內存使用情況,關閉1024*768的窗口,通過調用mi函數記錄打開窗口后的內存使用情況,比較內存差值。記錄打開關閉1024*768的窗口所使用的內存差值。 加載GTK_DMA工程,確認配置文件中勾選圖形系統配置和顯示驅動,設置df_dok_2.c中PRIMARY為0(開啟DMA加速,屏下)執行df_dok_demo2(0,0)命令獲得測試結果,設置PRIMARY為1(關閉DMA加速,屏上)獲得測試結果。得到開啟和關閉硬加速的情況下對比數據。 3 安全性測試 操作系統安全評測的基礎是需求說明,即把

24、一個操作系統稱為“安全”的真實含義是什么。一般來說,安全系統規定安全特性、控制對信息的存取,使得只有授權的用戶才有讀、寫、建立或刪除信息的存取權等。主要對以下幾方面進行測試: 測試嵌入式操作系統的死鎖檢測機制。系統可以檢測到死鎖并打破死鎖。 測試可能發生優先級反轉的各種情況下,系y防止優先級反轉的措施。系統防止優先級反轉。 測試引用無效內存地址的情況下,系統能否進行出錯處理。系統進行出錯處理。 測試系統出現異常狀況(例如:虛擬存儲區缺頁、算術溢出、非法操作碼等)時,操作系統能否檢測到異常錯誤并進行處理。操作系統能檢測到異常錯誤,并由異常處理程序進行處理。 測試應用程序資源使用超出范圍時,操作系

25、統的處理能力。系統進行出錯處理。 測試系統的內核運行狀態監視機制。系統提供內核運行狀態監視機制。 測試系統的內核故障檢測能力。系統能成功檢測到故障,并進行出錯處理。 測試系統的應用故障檢測能力。系統檢測到故障并終止故障運行。 測試安全關鍵數據的冗余備份機制。提供安全關鍵數據的冗余備份。 在具有內存管理單元(MMU)的硬件平臺上;設計并運行應用進程試圖對內核數據進行訪問的測試用例,測試系統能否給出出錯提示。系統給出出錯提示。 在配置網絡通信模塊時,設計并運行系統在一個時間段內的并發會話數量超過最大值的測試用例,測試系統能否給出出錯提示。系統給出出錯提示。 在配置網絡通信模塊時,測試操作系統能否提

26、供端口訪問控制。提供端口訪問控制。 在配置網絡通信模塊時,y試系統對非法攻擊的檢測、預警和防范機制。系統提供檢測、預警和防范機制。 具體方法包括: 測試方法:采用人工模擬故障的方法,驗證嵌入式實時操作系統在出現異常時是否會采取保護措施不影響其他任務的執行;在操作系統使用過程中輸入錯誤數據,驗證操作系統是否具有提示或報警功能,系統資源監控功能在系統監控測試項中進行。判斷準則:嵌入式實時操作系統在出現異常時能夠采取保護措施不影響其他任務的執行,應對用戶的錯誤輸入具有提示或報警功能。 測試方法:操作系統與用戶應用地址空間進行隔離,用戶空間和內核空間將映射到不同的地址空間。用戶應用地址空間進一步基于MMU機制對應用構件進行地址空間隔離,不同的應用構件將占用不同的地址。一個應用構件訪問其它應用構件的地址空間時將發生異常。同時對構件中的任務棧空間作了棧溢出保護,當構件中的任務出現棧溢出時將會觸發異常。對構件中的文本段也作只讀保護,當試圖改寫時,將發生異常。判斷準則:嵌入式實時操作系統在出現異常時能夠采取保護措施不影響其他任務的執行,應對用戶的錯誤輸入具有提示或報警功能。 測試方法:系統在發生TLB無效異常、保留指令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論