• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Barrelfish的實時libOS設(shè)計與實現(xiàn)*

      2013-11-24 02:17:58龍,龍翔,王
      關(guān)鍵詞:實時性內(nèi)核中斷

      陳 龍,龍 翔,王 雷

      (北京航空航天大學(xué) 計算機學(xué)院,北京100191)

      隨著當(dāng)前系統(tǒng)結(jié)構(gòu)中處理器核心數(shù)目的增加,傳統(tǒng)的微內(nèi)核和單一內(nèi)核結(jié)構(gòu)已經(jīng)無法滿足眾核結(jié)構(gòu)擴展性要求,因此,業(yè)界提出了如 FOS、Barrelfish等滿足多核要求的操作系統(tǒng)原型。但是這些系統(tǒng)原型都沒有實時性方面的考慮。而今,在國防科技、航空航天、工業(yè)控制、電信行業(yè)、醫(yī)療行業(yè)、信息家電等多個領(lǐng)域都同時提出對多核、實時性的需求。

      為了滿足這種需求,本文基于當(dāng)前現(xiàn)有多核操作系統(tǒng)和實時操作系統(tǒng),構(gòu)建一種同時滿足多核和實時性要求的系統(tǒng)框架。

      1 系統(tǒng)介紹

      1.1 Barrelfish操作系統(tǒng)

      Barrelfish的核心思想在于cpu driver的概念,為一部分體系結(jié)構(gòu)相關(guān)代碼,每個核心上都運行單個cpu driver,它們之間不共享任何狀態(tài),不做任何形式的同步,結(jié)構(gòu)上更像是一個分布式系統(tǒng)。與傳統(tǒng)操作系統(tǒng)結(jié)構(gòu)相比,Barrelfish系統(tǒng)可以保證很好的擴展性[1]。

      Barrelfish采用dispatcher和thread雙層調(diào)度模型,不支持搶占,使用輪轉(zhuǎn)調(diào)度策略。dispatcher相當(dāng)于進程,每個dispatcher可以有許多thread,這種調(diào)度模型奠定了整個系統(tǒng)框架的基礎(chǔ)。本文以此操作系統(tǒng)作為底層多核結(jié)構(gòu)的支撐。

      1.2 VxWorks以及l(fā)ibOS

      libOS是MIT在exokernel操作系統(tǒng)中提出的[1],libOS將一個操作系統(tǒng)作為應(yīng)用運行在下層kernel上,kernel上可以運行多個libOS,應(yīng)用開發(fā)者可以完全自由地使用它們,甚至可以將它們替換成自己的抽象以達到提高性能的目的。底層的硬件訪問允許程序員實現(xiàn)一個自定義的抽象,去掉不需要的,這通常可以大大地提高程序的性能。本文所要構(gòu)建的系統(tǒng)框架采用了libOS的概念,這也是本文的主要思想之一。

      本文采用VxWorks 5.5構(gòu)建上層libOS。VxWorks5.5與其他版本的系統(tǒng)對比具有系統(tǒng)結(jié)構(gòu)簡單、易于裁剪和分析等優(yōu)勢,采用基于搶占的優(yōu)先級調(diào)度,輔以同優(yōu)先級的時間片輪轉(zhuǎn)調(diào)度,具有256個優(yōu)先級供任務(wù)使用,VxWorks5.5不區(qū)分用戶態(tài)和內(nèi)核態(tài),所以沒有狀態(tài)切換的性能損耗,更有利于分析其實時性能。

      2 系統(tǒng)構(gòu)建過程

      本文構(gòu)建的系統(tǒng)框架如圖1所示。

      libOS的構(gòu)建過程主要包括對Barrelfish的結(jié)構(gòu)分析與改造、對VxWorks5.5的結(jié)構(gòu)分析與改造(包括啟動過程分析與裁剪、系統(tǒng)內(nèi)核任務(wù)管理以及內(nèi)存管理代碼的移植、內(nèi)核底層結(jié)構(gòu)相關(guān)匯編代碼部分的改造)及添加實時任務(wù)等。

      圖1 系統(tǒng)框架

      2.1 啟動分析及改造

      Barrelfish的用戶程序為常見的ELF格式,加載后的 ELF以 dispatcher的方式運行,dispatcher可以包含許多thread,在調(diào)用用戶main函數(shù)之前,libbarrelfish完成對dispatcher、thread初始化等操作,如圖2所示。其中barrelfish_init_disabled()為libbarrelfish的入口,這里設(shè)置dispatcher的入口為run_entry,即dispatcher被調(diào)度執(zhí)行的入口,thread_init_disabled()為線程初始化,這個線程最終會執(zhí)行用戶main()函數(shù)。

      dispatcher調(diào)度是Barrelfish最基本的部分。改造后的dispatcher初始化過程如圖3所示。VxWorks啟動包括兩個方面:BSP啟動和VxWorks系統(tǒng)鏡像啟動。改造VxWorks的啟動流程,裁剪掉不相關(guān)代碼,保留任務(wù)管理、存儲管理等核心代碼,將兩個啟動階段合并為一個,改造之后的libOS啟動過程如圖4所示。

      圖2 dispatcher初始化

      圖3 改造后的dispatcher啟動

      圖4 libOS啟動

      2.2 中斷處理

      libOS構(gòu)建過程中需要解決的一個關(guān)鍵問題是libOS如何做中斷處理,本文中l(wèi)ibOS作為dispather運行在Barrelfish的用戶空間,而Barrelfish的中斷處理發(fā)生在內(nèi)核態(tài),上層無法接收中斷,這將導(dǎo)致移植后的libOS無法保證搶占式調(diào)度策略。此外,在接收不到時鐘中斷的情況下,libOS也無法做任務(wù)掛起、定時等一系列基于時鐘的操作。

      為了解決這個問題,可以從以下幾個方面考慮:(1)dispatcher響應(yīng)時鐘中斷;(2)Barrelfish判斷中斷類型;(3)libOS處理中斷流程。

      除了由時鐘中斷處理程序調(diào)用dispatch()外,其他情況(如一個dispatcher退出)也可能引起 dispatch()被調(diào)用。想要只有時鐘中斷被libOS感知,就要對這些情況進行區(qū)分,在Barrelfish的kernel/dispatch.c中增加一個全局變量:

      enum dispatch_type dispatch_type=DISPATCH_TYPE_DEFAULT;

      每當(dāng)開始調(diào)度一個dispatcher時,根據(jù)調(diào)度的理由設(shè)置dispatch_type的值。若發(fā)生時鐘中斷,則在Barrelfish的中斷處理程序中將其設(shè)置為:

      dispatch_type=DISPATCH_TYPE_TIMER_INTERRUPT;

      libOS_run則是重新定義的libOS的disp_run的c函數(shù)入口,其函數(shù)原型為:

      第二個參數(shù)指定了調(diào)度libOS的理由,當(dāng)其值為DISPATCH_TYPE_TIMER_INTERRUPT時,說明是由于在libOS的時間片內(nèi)發(fā)生了時鐘中斷,可以進行相應(yīng)的時鐘中斷處理。整個流程如圖5、圖6所示。

      圖5 Barrelfish時鐘中斷響應(yīng)

      圖6 libOS時鐘中斷處理

      2.3 任務(wù)切換部分的改造

      VxWorks上下文切換分兩種情況:同步和異步[4]。VxWorks的這部分代碼由匯編指令寫成,其中涉及到一部分特權(quán)指令,這些指令無法在用戶態(tài)執(zhí)行。此外針對原來中斷處理的部分也要進行改造,改造后的流程如圖7所示。

      3 實驗

      3.1 測試平臺

      本文的測試平臺為qemu模擬器,qemu對 x86平臺有很好的支持,通過模擬4個x86核心來啟動Barrelfish。

      3.2 測試流程

      測試主要過程為:將用戶程序usr_test()添加到 usr-Root()根任務(wù)中啟動,使用 taskSpawn()創(chuàng)建 3個不同優(yōu)先級的任務(wù),任務(wù)見表1。

      這個流程能夠更好地體現(xiàn)系統(tǒng)基于搶占的優(yōu)先級調(diào)度策略。task3優(yōu)先級最低,被task2搶占,task2被task1搶占,最后task3改變自己的優(yōu)先級為最高又搶占task1。

      圖7 任務(wù)切換流程

      表1 實時任務(wù)

      3.3 測試結(jié)果

      將生成的libOS 鏡像添加到grub的 menu.lst中,通過module參數(shù)指定其目標(biāo)核的編號,啟動Barrelfish后會自動將其加載到目標(biāo)核上啟動。

      本文通過將libOS概念應(yīng)用到對多核系統(tǒng)Barrelfish的實時性改造上,構(gòu)建一個同時滿足多核實時要求的系統(tǒng)框架,并且通過實驗驗證了這種思路的可行性。本工作保證libOS在其時間片內(nèi)的實時調(diào)度,而底層Barrelfish沒有實時性方面的考慮,可以從分析libOS的中斷延遲、中斷響應(yīng)時間、任務(wù)切換時間等方面著手,與移植之前的相應(yīng)參數(shù)做比較,提出對整個系統(tǒng)框架實時性改進的意見。

      [1]BAUMANN A,BARHAM P,HARRIS T.The multikernel:a new OS architecture for scalable multicore systems.Systems Group[C].ETH Zurich,2009.

      [2]ENGLER D R.The exokernel operating system architecture[R].MIT USA,1998.

      [3]BAUMANN A,PETER S,SINGHANIA A.Your computer is already a distributed system,why isn′t your OS[C].12th Workshop on Hot Topics in Operating Systems,2009.

      [4]官賜田.一個高性能操作系統(tǒng)vxworks的移植及其實現(xiàn)[D].上海:上海交通大學(xué),2006.

      [5]BAUMANN A,PETER S.Embracing diversity in the Barrelfish manycore operating system[C].Systems Group,ETH Zurich,2008.

      猜你喜歡
      實時性內(nèi)核中斷
      萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于規(guī)則實時性的端云動態(tài)分配方法研究
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
      Linux內(nèi)核mmap保護機制研究
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
      跟蹤導(dǎo)練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      航空電子AFDX與AVB傳輸實時性抗干擾對比
      一種車載Profibus總線系統(tǒng)的實時性分析
      碌曲县| 湟源县| 措勤县| 锦屏县| 鸡东县| 富顺县| 延庆县| 灵武市| 华亭县| 阿拉善右旗| 永胜县| 龙口市| 沁水县| 囊谦县| 东山县| 泾川县| 肃宁县| 浦北县| 黄龙县| 浦江县| 永康市| 安阳市| 田林县| 高碑店市| 河池市| 土默特右旗| 镇安县| 定兴县| 远安县| 嘉兴市| 建瓯市| 六枝特区| 敦化市| 汾西县| 讷河市| 安新县| 锦屏县| 固始县| 亳州市| 隆尧县| 许昌县|