<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 多處理器下的硬實(shí)時(shí)操作系統研究

多處理器下的硬實(shí)時(shí)操作系統研究

作者: 時(shí)間:2012-03-21 來(lái)源:網(wǎng)絡(luò ) 收藏

0、引言

Linux 是一個(gè)具有廣闊前景的操作系統,從桌面工作站到低端服務(wù)器,處處都可見(jiàn)它的身影?,F如今,Linux 正全力進(jìn)軍嵌入式系統和高端服務(wù)器系統領(lǐng)域,但它的技術(shù)缺陷卻限制了它的競爭力:雖然Linux繼承了傳統Unix的公平調度機制即分時(shí)調度策略,提供了一個(gè)穩定的操作系統的管理系統,但是它仍然不能解決要求的納秒級的中斷延遲、任務(wù)切換時(shí)間,即便是當前的2.6內核,也只是在內核中添加了一些可搶占點(diǎn),對實(shí)時(shí)性的支持也還是不盡人意。

現如今提出了一種將實(shí)時(shí)任務(wù)與SMP體系結構相結合的方案,由于它將處理器以實(shí)時(shí)與非實(shí)時(shí)的方式進(jìn)行了劃分,所以稱(chēng)之為不對稱(chēng)的原則。盡管這種方案是可行的,但是它仍存在一個(gè)很大的弊端:在非實(shí)時(shí)處理器負載過(guò)重的情況下,實(shí)時(shí)處理器可能會(huì )處在空閑的狀態(tài),這樣就造成了極大的資源浪費。于是一種對這種方案進(jìn)行拓展的――ARTiS系統便應運而生。

1、 ATRiS簡(jiǎn)介

ATRiS是一個(gè)以(SMP)架構為基礎,對進(jìn)行實(shí)時(shí)拓展的系統。它的核心思想是:“將多個(gè)處理器進(jìn)行分類(lèi),即分為實(shí)時(shí)處理器(RT CPU)和非實(shí)時(shí)處理器(NRT CPU),在實(shí)際的運行當中,它將通過(guò)自身的遷移機制實(shí)現非實(shí)時(shí)任務(wù)在進(jìn)入不可強占狀態(tài)前遷移到非實(shí)時(shí)處理器,以便實(shí)時(shí)處理器及時(shí)響應實(shí)時(shí)任務(wù)。并通過(guò)改進(jìn)的負載平衡機制使ATRiS系統充分發(fā)揮SMP架構的優(yōu)勢。

1.1 ATRiS任務(wù)與處理器的劃分

在A(yíng)TRiS系統中不僅將處理器分為了實(shí)時(shí)處理器與非實(shí)時(shí)處理器,而且將任務(wù)也分成了三種類(lèi)型,分別是RT0任務(wù)、RT1+任務(wù)以及Linux任務(wù),分別對應于現實(shí)中的硬實(shí)時(shí)任務(wù),軟實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)。下面給出了處理器與任務(wù)之間的關(guān)系:

RT0任務(wù):對應于要處理的硬實(shí)時(shí)任務(wù),具有最高的優(yōu)先級。并且每一個(gè)RT0任務(wù)都會(huì )與唯一的一個(gè)實(shí)時(shí)處理器綁定,于是RT0任務(wù)就只能運行在實(shí)時(shí)的處理器上。

RT1+任務(wù):對應于要處理的軟實(shí)時(shí)任務(wù),可以運行在實(shí)時(shí)處理器,也可以運行在非實(shí)時(shí)處理器上。但是當它要運行在實(shí)時(shí)處理器上時(shí),必須是處于可搶占的狀態(tài),否則就要遷移到非實(shí)時(shí)處理器上。

Linux任務(wù):即非實(shí)時(shí)的任務(wù),與RT1+任務(wù)一樣,它也可以運行在實(shí)時(shí)處理器上,并且當它執行到一段不可搶占的代碼時(shí)需要遷移至非實(shí)時(shí)的處理器。

1.2 遷移機制

ARTiS中遷移機制的目標是:在保證可以實(shí)時(shí)響應RT0任務(wù)的前提下,盡可能多的發(fā)揮的并行特性。為了滿(mǎn)足這一目標,它要求實(shí)時(shí)處理器上的非RT0任務(wù)在進(jìn)入到不可搶占的代碼段時(shí)必須自動(dòng)遷移到非實(shí)時(shí)處理器。為了使遷移不受阻礙的發(fā)生,ARTiS去掉了處理器之間的共享鎖,取而代之的是一個(gè)FIFO隊列,用它來(lái)實(shí)現非實(shí)時(shí)處理器與實(shí)時(shí)處理器之間的交互。也就是說(shuō),ARTiS中的處理器將通過(guò)這個(gè)FIFO隊列來(lái)存放或者取出需要遷移的非RT0任務(wù)。

1.3 負載平衡機制

通常的負載平衡機制是指:通過(guò)在多臺計算機之間合理地分配負載,使各臺計算機的負載基本均衡。但是在A(yíng)RTiS系統中RT0任務(wù)是不可遷移的,而且 linux原有的負載平衡機制只是針對于處理對稱(chēng)處理器(實(shí)時(shí)處理器與實(shí)時(shí)處理器,非實(shí)時(shí)處理器與非實(shí)時(shí)處理器)之間的負載平衡,并未設計不對稱(chēng)處理器之間平衡負載的方法。所以相對的負載平衡機制也更加復雜。

2、ATRiS機制實(shí)現

ATRiS系統的實(shí)現機制是通過(guò)改變內核源碼實(shí)現的,由于它所要實(shí)現的只是在實(shí)時(shí)處理器空閑時(shí)將非實(shí)時(shí)任務(wù)遷移至實(shí)時(shí)處理器,而在非實(shí)時(shí)任務(wù)到達不可搶占代碼時(shí)遷移出實(shí)時(shí)處理器,所以它所要執行的主要功能就是:在實(shí)時(shí)處理器空閑的狀態(tài)下,通過(guò)自身的負載平衡機制將非實(shí)時(shí)處理器上的任務(wù)遷移至實(shí)時(shí)處理器。而當非實(shí)時(shí)任務(wù)執行到不可搶占的代碼時(shí),利用自身的遷移機制將非實(shí)時(shí)任務(wù)遷移至非實(shí)時(shí)處理器。

盡管如此,ARTiS并不是完全另起爐灶,它只是在linux原有的任務(wù)遷移和負載平衡機制上添加一些自己的函數,由此來(lái)實(shí)現自身特有的任務(wù)遷移和負載平衡機制。

2.1 任務(wù)遷移機制

ATRiS系統的遷移機制的核心就是:當一個(gè)非RT0任務(wù)將要執行到不可搶占的代碼部分時(shí),將會(huì )自動(dòng)的從實(shí)時(shí)處理器遷移至非實(shí)時(shí)處理器??梢詫⒃摍C制看作兩步:第一步是確定非RT0任務(wù)的不可搶占點(diǎn),即確定遷移的時(shí)機;第二步則是要將任務(wù)從實(shí)時(shí)處理器遷移至非實(shí)時(shí)處理器,即實(shí)現遷移。

確定遷移的時(shí)機

在A(yíng)RTiS系統中的任務(wù)是通過(guò)注冊而產(chǎn)生的(RT0任務(wù)就是通過(guò)int artis_enter_rt0(pid_t pid, int rt_cpu)函數注冊的,RT1+任務(wù)是通int artis_enter_rt1plus(pid_t pid, int policy, int priority)函數注冊),由于RT0任務(wù)是不存在被搶占的問(wèn)題的,所以這里只考慮RT1+問(wèn)題發(fā)生遷移的時(shí)機,ARTiS系統認為,如果一個(gè)任務(wù)執行了系統函數preempt_disable()或local_irp_disable()時(shí),則表明他將要進(jìn)入不可搶占狀態(tài),即需要進(jìn)行任務(wù)的遷移。 ARTiS系統在上述的兩個(gè)函數中添加了函數artis_try_to_migrate(),該函數首先會(huì )判斷是否滿(mǎn)足遷移其他條件(例如:判斷當前運行的處理器是否是實(shí)時(shí)處理器等),然后調用函數artis_request_for_migration()請求遷移。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>