亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        多核實時操作系統(tǒng)TOPPERS/FMP移植研究※

        2013-09-25 03:05:18方華啟任慰何頂新
        關(guān)鍵詞:內(nèi)核調(diào)用隊列

        方華啟,任慰,何頂新

        (華中科技大學(xué)自動化學(xué)院,武漢430074)

        引 言

        TOPPERS/FMP是由日本名古屋大學(xué)高田廣章教授發(fā)起的開放實時嵌入式軟件平臺TOPPERS(Toyohashi Open Platform for Embedded Real-time Systems)中的一個面向于多核環(huán)境的嵌入式實時操作系統(tǒng),全稱是Flexible Multiprocessor Profile RTOS。FMP目前已經(jīng)移植到了部分ARM架構(gòu)的處理器、Nios II處理器以及瑞薩的SH處理器。

        1 TOPPERS/FMP的多核擴展

        TOPPERS組織為功能分散型多核處理器開發(fā)了一款實時操作系統(tǒng)TOPPERS/FDMP(Function Distributed MultiProcessor RTOS kernel),也是遵循μITRON規(guī)范標準功能集。在TOPPERS/FDMP內(nèi)核的基礎(chǔ)上,TOPPERS組織開發(fā)一個新的內(nèi)核TOPPERS/FMP,支持動態(tài)任務(wù)遷移功能,也是針對TOPPERS/ASP內(nèi)核實現(xiàn)的多核擴展,主要支持對稱多核處理器。

        1.1 總體結(jié)構(gòu)

        TOPPERS/FMP內(nèi)核總體結(jié)構(gòu)如圖1所示,F(xiàn)MP內(nèi)核支持對稱多核處理器,所有的處理器共享同一個程序鏡像。

        圖1 TOPPERS/FMP內(nèi)核總體結(jié)構(gòu)

        FMP內(nèi)核還引入了自旋鎖的機制,主要用在處理器間進行資源競爭時保護共享資源。

        1.2 內(nèi)核管理與調(diào)度

        TOPPERS/FMP內(nèi)核中新增了一個結(jié)構(gòu)體,叫做PCB(Processor Control Block),主要用于管理每個處理器的數(shù)據(jù),內(nèi)核為每個處理器維護一個這樣的結(jié)構(gòu)體。內(nèi)核可以單獨管理每個處理器的狀態(tài)。內(nèi)核中task、task excpt、cyc handler、alm handler這些可執(zhí)行單元(Processing Unit)被劃分到指定的處理器上,屬于處理器私有資源,對應(yīng)的處理器上的內(nèi)核代碼會對其進行初始化操作。而dataqueue、eventflag、mailbox、memfix、pridataq、spin_lock這些內(nèi)核對象(Kernel Object)屬于共享資源,由主處理器完成初始化操作。為了方便應(yīng)用開發(fā),TOPPERS/FMP內(nèi)核擴展了靜態(tài)配置器,使其支持對多核處理器進行配置,屬于某一個處理器內(nèi)核的可執(zhí)行單元和內(nèi)核對象,被歸為一個類型,在靜態(tài)配置腳本中叫做CLASS,配置腳本示例略——編者注。

        內(nèi)核采用了局部隊列調(diào)度的方式,在PCB中維護了一個局部的就緒隊列(ready_queue)。采用這種調(diào)度方式,任務(wù)基本無需在不同處理器間切換,提高了任務(wù)執(zhí)行的效率,但是如果應(yīng)用開發(fā)者沒有設(shè)計好應(yīng)用程序,有可能出現(xiàn)某些處理器核心負載很輕,某些處理器核心負載很重的負載不均衡的狀態(tài),多核處理器的性能將無法充分發(fā)揮。為了解決負載不均衡的狀態(tài),TOPPERS/FMP內(nèi)核提供了一組用于任務(wù)遷移的系統(tǒng)調(diào)用API,應(yīng)用開發(fā)者可以根據(jù)自己需求來進行應(yīng)用層的任務(wù)遷移管理,TOPPERS/FMP內(nèi)核沒有直接在內(nèi)核層提供動態(tài)遷移的功能的主要原因是由于無法確保內(nèi)核的實時性。

        1.3 中斷管理

        多核處理器中中斷管理分為兩種類型:①所有處理器共享一個中斷源;②每個處理器有自己的中斷源。多核處理器一般引入全局中斷控制器進行總體的中斷管理,每個處理器內(nèi)部有自己私有的中斷控制器。針對這樣的改變,F(xiàn)MP內(nèi)核也引入全局中斷的管理部分,將中斷號與中斷處理程序號的高位區(qū)域(如果是32位的編號,就是高16位)用于標示對應(yīng)進行處理的處理器ID。這樣對于那些中斷號一樣的中斷,通過高位區(qū)域進行處理器ID的判別也可以知道哪個處理器響應(yīng)哪個中斷[8]。對于每個處理器內(nèi)部的中斷處理流程還是采用TOPPERS標準中斷模型。

        1.4 處理器間通信

        多核操作系統(tǒng)實現(xiàn)處理器間系統(tǒng)調(diào)用(inter-processor system call)采用兩種實現(xiàn)方式:直接內(nèi)存操作(direct memory access)和遠程過程調(diào)用(remote procedure call)。遠程過程調(diào)用方式廣泛應(yīng)用于非對稱處理器,或是不存在共享內(nèi)存的消息傳遞型處理器中,執(zhí)行時間不確定。TOPPERS/FMP內(nèi)核為了保證實時性,采用了直接內(nèi)存操作的方式。

        1.5 同 步

        TOPPERS/FMP內(nèi)核啟動過程中,采用了多級屏障鎖的方式保證每個處理器的啟動進程一致,以確保內(nèi)核正確啟動。

        TOPPERS/FMP內(nèi)核采用了直接操作其他處理器控制塊(Control Block)的方式來實現(xiàn)處理器間的系統(tǒng)調(diào)用,這就需要保證處理器間的操作是互斥的。TOPPERS/FMP內(nèi)核采用了自旋鎖的方式來實現(xiàn)互斥,自旋鎖是通過test and set的方式實現(xiàn)的。鎖的粒度嚴重影響著系統(tǒng)調(diào)用的靈活性以及響應(yīng)時間,鎖的粒度越高,并行性越好,但是響應(yīng)時間就有可能得不到保證,TOPPERS/FMP實現(xiàn)了三種不同粒度的鎖,用戶可以在內(nèi)核配置的時候進行選擇。這三種粒度的鎖分別是巨鎖(giant lock)、處理器鎖(processor lock)、細粒度鎖(fine-grained lock)。FMP內(nèi)核在每個處理器上將會定義兩種鎖:任務(wù)鎖(task lock)和對象鎖(object lock)。為了避免死鎖,TOPPERS/FMP內(nèi)核規(guī)定了鎖獲取的順序。在進行系統(tǒng)調(diào)用時,先獲取對象鎖然后獲取任務(wù)鎖,釋放鎖時先釋放任務(wù)鎖,再釋放對象鎖。由于獲取到對象鎖后,其他的任務(wù)有可能修改了待獲取的任務(wù)控制塊,TOPPERS/FMP內(nèi)核采用一種簡單的重試機制,在獲取到任務(wù)鎖時,檢查對應(yīng)的任務(wù)是否已經(jīng)被修改,如果被修改就釋放對應(yīng)的任務(wù)鎖,開始重新獲取任務(wù)鎖,循環(huán)往復(fù)。

        2 TOPPERS/FMP在ZYNQ上的移植

        2.1 移植工作

        TOPPERS/FMP的代碼主要也是在GNU環(huán)境下進行開發(fā)的,而且開發(fā)移植大致與TOPPERS/ASP的移植[10]基本一致,只是增加了一些多核相關(guān)的移植工作。

        2.1.1 內(nèi)核的啟動

        TOPPERS/FMP內(nèi)核在ZYNQ上的啟動如圖2所示,主要分為三個流程:Bootloader階段,內(nèi)核啟動——匯編部分,內(nèi)核啟動——C語言部分。

        由于各自處理器執(zhí)行的初始化內(nèi)容不一樣,導(dǎo)致執(zhí)行每一階段的耗時不一樣,為了能保證每個階段處理器都能同時開始運行,引入屏障同步的功能來實現(xiàn)處理器同步。

        2.1.2 標準中斷處理模型移植

        ZYNQ上的中斷分為私有外設(shè)中斷(PPI)、共享外設(shè)中斷(SPI)和軟中斷(SGI)。軟中斷主要用于處理器間通信。中斷優(yōu)先級總共有32級,所有的中斷產(chǎn)生以后,將會產(chǎn)生IRQ或者FIQ異常。FMP內(nèi)核中配置成IRQ模式進行中斷處理,因此所有的中斷產(chǎn)生后,將直接跳轉(zhuǎn)到IRQ的中斷向量入口處,程序可以通過查詢中斷控制器中的相應(yīng)的寄存器獲知當(dāng)前的請求的中斷號,然后通過查表的方式就可以跳轉(zhuǎn)到對應(yīng)的中斷處理程序。

        中斷處理的實現(xiàn)的流程圖如圖3所示,需要注意的是如果內(nèi)核配置時采用了處理器鎖或者細粒度鎖的方式就需要釋放已經(jīng)獲取的第一階段和第二階段鎖。還有在進行中斷處理時還需要判斷對應(yīng)的中斷是不是偽中斷,如果是的話就直接返回。偽中斷表示原始的中斷已經(jīng)不再等待處理了,通常是因為另外一個處理器已經(jīng)在處理這個中斷了。

        圖2 TOPPERS/FMP內(nèi)核的啟動流程

        2.1.3 任務(wù)遷移支持

        為了實現(xiàn)任務(wù)遷移,需要在目標依賴部分實現(xiàn)如下功能的函數(shù):①用于當(dāng)前任務(wù)的遷移函數(shù)支持,dispatch_and_migrate;②用于任務(wù)結(jié)束時的遷移函數(shù)支持,exit_and_migrate。兩個函數(shù)均在任務(wù)上下文中,在CPU鎖定狀態(tài)下,獲取到待遷移任務(wù)的源處理器和目的處理器的鎖后被調(diào)用。實現(xiàn)的流程圖如圖4所示。

        本文分別實現(xiàn)采用私有定時器、私有看門狗定時器、全局定時器三種方式作為系統(tǒng)時鐘驅(qū)動。還有為了實現(xiàn)每個處理器單獨的日志輸出功能,在ZedBoard上通過MIO引出另外一路串口,并且在程序上實現(xiàn)了雙串口的驅(qū)動程序。然后采用FMP內(nèi)核自帶的sample測試例程進行測試,驗證功能正常,移植成功。

        2.2 內(nèi)核性能測試

        2.2.1 測試環(huán)境說明

        本文所做的評測實驗均是在ZedBoard上完成,ZYNQ處理器運行在667MHz,MMU和數(shù)據(jù)Cache、指令Cache均使能,所有測試均運行10 000次,分別在DDR RAM和片內(nèi)的OCM RAM單獨進行測試。

        FMP內(nèi)核配置:內(nèi)核采用巨鎖方式,內(nèi)核系統(tǒng)時鐘采用32位私有定時器實現(xiàn),測試所用計時器采用64位的全局定時器。

        2.2.2 測試結(jié)果

        本文對內(nèi)核進行了如下評測實驗:內(nèi)核啟動、任務(wù)切換、任務(wù)遷移、信號量、事件標志位以及優(yōu)先級數(shù)據(jù)隊列的時間消耗測試。

        測試發(fā)現(xiàn)啟用了MMU和Cache后,除了內(nèi)核啟動外,在DDR RAM和OCM RAM的測試時間基本一致。

        按照圖2中FMP內(nèi)核啟動流程所示,程序中將從各處理器的必要的硬件相關(guān)初始化開始到第三階段屏障同步開始記作FMP內(nèi)核啟動消耗時間,各處理器消耗的啟動時間表略——編者注。由于處理器1作為主處理器比從處理器多的任務(wù)因此啟動時間比處理器2長一些,由于MMU和Cache是在啟動過程使能的,導(dǎo)致在OCM中運行FMP內(nèi)核的啟動時間稍快于DDR。

        FMP內(nèi)核中各個API執(zhí)行的場景不同導(dǎo)致執(zhí)行時間不同,表略——編者注。

        任務(wù)激活A(yù)PI act_tsk按照5種測試場景進行測試。具體測試場景略——編者注。

        任務(wù)指定處理器激活A(yù)PI mact_tsk按照2種測試場景進行測試。具體測試場景略——編者注。

        任務(wù)遷移API mig_tsk按照以下3種測試場景進行測試。具體測試場景略——編者注。

        任務(wù)休眠API slp_tsk和任務(wù)喚醒API wup_tsk測試了均會引起任務(wù)切換的場景。

        信號量釋放API sig_sem按照以下2種測試場景進行測試。具體測試場景略——編者注。

        優(yōu)先級數(shù)據(jù)隊列發(fā)送API snd_pdq按照如下方法進行測試:在發(fā)送低優(yōu)先級的數(shù)據(jù)隊列前,先發(fā)送若干個高優(yōu)先級的數(shù)據(jù)隊列,測試了高優(yōu)先級數(shù)據(jù)隊列的個數(shù)與snd_pdq的執(zhí)行時間的關(guān)系,如圖5所示,執(zhí)行時間與高優(yōu)先級數(shù)據(jù)隊列個數(shù)近似成正比關(guān)系。

        圖3 TOPPERS/FMP內(nèi)核中斷移植

        圖4 任務(wù)遷移目標依賴部分需實現(xiàn)函數(shù)

        圖5 優(yōu)先級數(shù)據(jù)隊列發(fā)送snd_pdq執(zhí)行時間

        事件標志位設(shè)置API set_flg按照如下方法進行測試:在set_flg執(zhí)行之前,有若干個低優(yōu)先級的任務(wù)等待事件標志位,測試了等待事件標志位的任務(wù)的個數(shù)與set_flg執(zhí)行的時間的關(guān)系,如圖6所示,執(zhí)行時間與等待事件標志位的低優(yōu)先級的任務(wù)的個數(shù)近似成正比關(guān)系。

        結(jié) 語

        圖6 事件標志位設(shè)置set_flg執(zhí)行時間

        鑒于ZYNQ處理器上支持TrustZone功能,下一步將移植TOPPERS/SAFEG[9]嵌入式虛擬機到ZYNQ處理器上,以實現(xiàn)在該處理器上同時運行兩個操作系統(tǒng),一個實時操作系統(tǒng)用于實時控制,另外一個通用操作系統(tǒng)(如Linux)用于實現(xiàn)一些比較復(fù)雜的功能,如人機交互、網(wǎng)絡(luò)通信等。

        編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

        [1] 薛一波,王海霞.計算機系統(tǒng)發(fā)展的必然趨勢——多核計算[J] .中國計算機學(xué)會通訊,2010,11(6):60-62.

        [2] 多核[EB/OL] .[2013-06] .http://baike.baidu.com/view/2219502.htm.

        [3] 彭曉明,郭浩然,龐建民.多核處理器——技術(shù),趨勢和挑戰(zhàn)[J] .計算機科學(xué),2012,39(z3).

        [4] 李彥冬,雷航.多核操作系統(tǒng)發(fā)展綜述[J] .計算機應(yīng)用研究,2011,28(9):3215-3219.

        [5] Tomiyama H,Honda S,Takada H.Real-time operating systems for multicore embedded systems[C]//SoC Design Conference,2008.ISOCC'08.International.IEEE,2008:I-62-I-67.

        [6] 姜春茂,倪蘊濤,黃春梅.嵌入式多核操作系統(tǒng)關(guān)鍵技術(shù)[J] .科技導(dǎo)報,2012(11):30.

        [7] 黃國睿,張平,魏廣博.多核處理器的關(guān)鍵技術(shù)及其發(fā)展趨勢[J] .計算機工程與設(shè)計,2009,30(10):2414-2418.

        [8] Xilinx.Zynq-7000All Programmable SoC Technical Refer ence Manual(UG585V1.5),2013.

        [9] 任慰,何頂新,趙金.開放實時嵌入式軟件平臺TOPPERS的研究現(xiàn)狀[J] .單片機與嵌入式系統(tǒng)應(yīng)用,2012,12(10):8-11.

        [10] 任慰,何頂新,趙金.一種新型嵌入式實時操作系統(tǒng)的移植研究[J] .Computer Engineering,2013,39(5).

        猜你喜歡
        內(nèi)核調(diào)用隊列
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        核電項目物項調(diào)用管理的應(yīng)用研究
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        在隊列里
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        豐田加速駛?cè)胱詣玉{駛隊列
        国产亚洲av片在线观看18女人| 人妻精品人妻一区二区三区四区| 在线观看 国产一区二区三区| 亚洲欧美v国产一区二区| 久久精品免费观看国产| 麻豆精产国品| 加勒比精品一区二区三区| 亚洲av区一区二区三区| 漂亮人妻被强了完整版| 和黑人邻居中文字幕在线| 精品国精品无码自拍自在线| 亚洲欧美在线视频| 亚洲男人在线天堂av| 伊人加勒比在线观看视频| 国产亚洲成av人片在线观黄桃| 精品无码中文字幕在线| 亚洲国产香蕉视频欧美| 亚洲国产成人av第一二三区| 中文字幕色偷偷人妻久久一区 | 中文字幕亚洲一区视频| 亚洲av无码专区国产乱码4se| 久久99精品国产麻豆不卡| 无码人妻丰满熟妇精品区| 国产日产久久福利精品一区| 亚洲av乱码国产精品观| 国产午夜av秒播在线观看| 色五月丁香五月综合五月4438| 亚洲国产精品悠悠久久琪琪| 91国内偷拍一区二区三区| 国内精品少妇高潮视频| 国产无吗一区二区三区在线欢| 久热在线播放中文字幕| 在线观看极品裸体淫片av| 亚洲精品中文字幕导航 | 国产精成人品日日拍夜夜免费| 任你躁国产自任一区二区三区| 国产黄色一区二区福利| 亚洲av专区国产一区| 日韩精品一区二区午夜成人版| 國产一二三内射在线看片| 亚洲一区二区三区成人在线|