?? tao-architecture.htm
字號(hào):
<IMG SRC="i/corba_demux2.gif"></center><tr><td align=center>圖 4. 分層和DE分層的多路分解</table></center><p>通過所有層的多路分解客戶請(qǐng)求的代價(jià)是非常昂貴的,尤其是當(dāng)在一個(gè)IDL接口中存在大量的操作或者是一個(gè)ORB管理著大量的對(duì)象更表現(xiàn)的如此.為了減少開銷,TAO使用de-分層多路分解 (Figure 4(B)).這種近似使用多路分解鍵(demultiplexing keys)的方式把ORB指派給客戶端.這些鍵映射客戶請(qǐng)求到對(duì)象/操作在O(1)時(shí)間里不需要任何的哈西運(yùn)算或搜索. <P>為了將來減少多路分解層的數(shù)目,APIC能通過編程和使用ATM虛擬環(huán)路的方式直接分發(fā)客戶請(qǐng)求.這種策略減少了多路分解的執(zhí)行時(shí)間和支持在每請(qǐng)求或每對(duì)象基礎(chǔ)上的端對(duì)端QoS.<P><HR><P><H4><A NAME="ridl">4. 通過實(shí)時(shí)IDL模式實(shí)現(xiàn)QoS規(guī)范</a></H4>使用TAO的實(shí)時(shí)應(yīng)用程序必須明確指定它們要調(diào)度的資源請(qǐng)求所需要的TAO的<A HREF="PDF/TAO.pdf">實(shí)時(shí)調(diào)度服務(wù)</A>.在程序執(zhí)行前,一個(gè)基于每操作的QoS信息在程序執(zhí)行前提供給TAO.為了CPU的需要, 通過<TT>RT_Operation</TT>s使用<TT>RT_Info</TT>中的IDL<TT>struct</TT>屬性來表示Qos需求 圖 5. <P><center><table cellpadding=1 border=4 cellspacing=4><tr><td><center><IMG SRC="i/program_model.gif"></center><tr><td align=center>圖 5. TAO的QoS規(guī)范模型</table></center><p><TT>RT_Operation</TT>是一個(gè)調(diào)度操作, <EM>i.e.</EM>,它通過TAO使用<TT>RT_Info</TT> <TT>struct</TT>表示成一種被調(diào)度的資源需求.<TT>RT_Info</TT>屬性包含了worst-case執(zhí)行時(shí)間周期,重要的和數(shù)據(jù)依賴的.使用與RMS和RMA分析方法類似的調(diào)度技術(shù),TAO實(shí)時(shí)調(diào)度服務(wù)判斷在一個(gè)應(yīng)用中是否有一個(gè)基于所有<TT>RT_Info</TT>數(shù)據(jù)的知識(shí)為所有的<TT>RT_Operations</TT>的可行度量. <P>這些屬性對(duì)于通過使用TAO來 (1) 驗(yàn)證調(diào)度的可行性和 (2) 定位ORB系統(tǒng)和網(wǎng)絡(luò)資源是足夠的.目前,開發(fā)者必須通過CORBA接口手工來確定這些參數(shù)并將它們提供給TAO的<AHREF="#schedservice">實(shí)時(shí)調(diào)度服務(wù)</A>.我們應(yīng)計(jì)劃通過創(chuàng)建一個(gè)監(jiān)視examples腳本執(zhí)行的工具來自動(dòng)取出這些必要的實(shí)時(shí)參數(shù).同樣,作為真實(shí)執(zhí)行的替代,仿真結(jié)果能被用來為每個(gè)操作定義<TT>RT_Info</TT>屬性. <P><HR><P><H4><A NAME="schedservice">5. 實(shí)時(shí)調(diào)度服務(wù)</a></H4>TAO的實(shí)時(shí)調(diào)度服務(wù)是一個(gè)CORBA對(duì)象,它具有以下的離線和運(yùn)行時(shí)職責(zé):<P><UL><LI> <B>離線可行性調(diào)度分析</B> -- 它以調(diào)度服務(wù)的<TT>RT_Info</TT>倉庫方式處理離線可行性調(diào)度分析的IDL操作注冊(cè)用以檢測CPU的資源是否足夠用于請(qǐng)求任務(wù)的處理. <P><LI> <B>線程優(yōu)先級(jí)的指派 </B> -- 在離線分析的過程中,調(diào)度服務(wù)指派線程的優(yōu)先級(jí).在運(yùn)行時(shí),調(diào)度服務(wù)提供一個(gè)接口允許TAO的ORB核心能訪問這些優(yōu)先級(jí)這是它們以操作系統(tǒng)級(jí)分發(fā)器的形式為接口提供的機(jī)制. <P><LI> <B>協(xié)同模式的改變 </B> -- 在運(yùn)行時(shí),調(diào)度服務(wù)協(xié)同模式的改變. <P></UL>TAO運(yùn)行時(shí)調(diào)度模式的參與者顯示在<ANAME="schedulingfig">圖 6</A>中并描述如下: <P><center><table cellpadding=1 border=4 cellspacing=4><tr><td><center><IMG SRC="i/os_dispatcher-light1.gif"></center><tr><td align=center>圖 6. TAO的調(diào)度服務(wù)</table></center><p><ul> <li><strong><em>工作任務(wù)</em></strong> -- 一個(gè)<CODE>Work_Task</CODE> 是一個(gè)工作單元它概括了應(yīng)用級(jí)的處理和通信活動(dòng).在一些MDA項(xiàng)目中,一個(gè)工作任務(wù)也被稱為一個(gè) <em>模型</em> 或者 <em>過程</em>, 但是我們避免這些術(shù)語因?yàn)樗鼈冞^多使用.<p> <li><strong><em>RT_Task</em></strong> -- 一個(gè)<CODE>RT_Task</CODE>是一個(gè)具有時(shí)間約束的工作任務(wù). 每個(gè) <code>RT_Task</CODE> 被認(rèn)為 是一種在它們<EM>運(yùn)行時(shí)信息</EM> (<CODE>RT_Info</CODE>)描述的屬性條目中擁有自己特殊的QoS信息的``方法'' (函數(shù)). 因此, 一個(gè)具有多個(gè)方法的應(yīng)用級(jí)對(duì)象可能需要多個(gè)<CODE>RT_Task</CODE>實(shí)例. <P> <li><strong><em>線程</em></strong> -- 合作的一組單元. 相關(guān)的線程, <em>有:</em>, 一個(gè)Solaris或POSIX 線程, 一個(gè)Ada的任務(wù), 一個(gè)VxWorks任務(wù), 或一個(gè)Win32線程. 所有的線程被包含在<code>RT_Task</code>s中; 一個(gè) <code>RT_Task</code> 能包含零個(gè)或多個(gè)線程. 一個(gè) <code>RT_Task</code> 卻不能包含任何只能在另一個(gè)<code>RT_Task</code>上下文中運(yùn)行的線程, <EM>i.e.</EM>, 它必須``借用'' 另一個(gè) 控制運(yùn)行的任務(wù)線程(<EM>e.g.</EM>, 對(duì)象適配器的) .<p> <li><strong><em>操作系統(tǒng)分發(fā)器</em></strong> -- 操作系統(tǒng)分發(fā)器使用線程優(yōu)先級(jí)選擇下一個(gè)運(yùn)行的線程并將它指派給一個(gè)CPU. 當(dāng)線程被阻塞(即它不能繼續(xù)運(yùn)行)或被另一個(gè)優(yōu)先級(jí)更高的線程<em>搶占</em>時(shí),操作系統(tǒng)分發(fā)器將這個(gè)線程從CPU移出. 在<em>搶占的分發(fā)中</em></a>, 任何優(yōu)先級(jí)高的線程將取代優(yōu)先級(jí)低的線程序.在這個(gè)時(shí)候優(yōu)先級(jí)高的,運(yùn)行的線程序被分發(fā)到CPU上.<p> 在我們基于RMA的分析中,假設(shè)<em>固定的優(yōu)先級(jí)</em>(fixed priority), <em>i.e.</em>, 操作系統(tǒng)不能改變線程的優(yōu)先級(jí)別. 對(duì)比這些以時(shí)間共享的操作系統(tǒng)調(diào)度,典型的是通過降低它們?cè)跁r(shí)間上的優(yōu)先級(jí)而進(jìn)行<em>age</em>長時(shí)間的處理. 因此,從那時(shí)的操作系統(tǒng)分發(fā)器的視圖來看, 每個(gè)線程的優(yōu)先級(jí)是不變的.<p> <li><b><i>RT_Info</i></b> -- 一個(gè)<code>RT_Info</code>結(jié)構(gòu)明確講是一個(gè)<code>RT_Task</code>的調(diào)度特性集(比如計(jì)算時(shí)間和運(yùn)行周期). <P> <li><b><i>實(shí)時(shí)調(diào)度器</i></b> -- 在運(yùn)行時(shí), 調(diào)度服務(wù)最重要的部分是實(shí)時(shí)調(diào)度器. 實(shí)時(shí)調(diào)度器在系統(tǒng)中為每個(gè)<code>RT_Task</code>管理一個(gè)<code>RT_Info</code> 結(jié)構(gòu). 在使用<code>RT_Info</code>中的一個(gè)<code>RT_Task</code>時(shí) , 實(shí)時(shí)調(diào)度器能為<CODE>RT_Task</CODE>的調(diào)度特性提供查詢 (e.g., 一個(gè)任務(wù)的優(yōu)先級(jí)) . 當(dāng)前,在<code>RT_Info</code>結(jié)構(gòu)中的數(shù)據(jù)代表是離線計(jì)算的, <EM>i.e.</EM>, 優(yōu)先級(jí)是靜止賦予更早的運(yùn)行時(shí)間.<p></UL><HR><P><H4><A NAME="presentation">6. 構(gòu)件和最優(yōu)化的表現(xiàn)層</A></H4>表現(xiàn)層在一個(gè)高性能的通信系統(tǒng)中是個(gè)大的瓶頸.這層轉(zhuǎn)換從高級(jí)表現(xiàn)到低級(jí)表現(xiàn)的操作參數(shù)(即編組)反之(解組). 在TAO中,這些轉(zhuǎn)換操作是通過高效的IDL編譯器生成的客戶樁和服務(wù)器框架完成的.這些雜TAO表現(xiàn)層的優(yōu)化操作的實(shí)現(xiàn)描述如下.<P><B>6.1. 表現(xiàn)層的優(yōu)化</B><P>這種在IDL定義和目標(biāo)編程語言之間的轉(zhuǎn)換是通過TAO的IDL編譯器自動(dòng)完成的. 此外減少了客戶樁和服務(wù)器框架之間潛在的不一致性, 編譯器支持自動(dòng)更新優(yōu)化.TAO IDL編譯器被設(shè)計(jì)成可為IDL類型的編碼、解碼生成和配置多種策略. 舉例,基于一種運(yùn)行時(shí)應(yīng)用類型的測量, TAO 既能連接編譯,也能解釋IDL樁和骨架. 這樣一種靈活性能在解釋模式(運(yùn)行速度慢一些,但尺寸會(huì)更小一些)和編譯模式(速度會(huì)更快,但尺寸會(huì)大一些)之前獲得一種最佳的平衡點(diǎn).<P>同樣, TAO 能緩沖那些要反復(fù)使用的預(yù)編組的應(yīng)用數(shù)據(jù)單元(ADUs). 當(dāng)ADUs在``請(qǐng)求鏈''被順序傳遞時(shí)和and 每個(gè)ADU在從一處傳遞到另一處時(shí)的細(xì)微改變 能提高性能. 在下面的案例中, 在每一次的整個(gè)過程中,ADUs是不必編組的. 最優(yōu)化要求實(shí)時(shí)ORB執(zhí)行應(yīng)用程序代碼的流分析以確定請(qǐng)求字段能否被緩沖. <P>雖然這些技術(shù)在一般情況能相當(dāng)程度減少編組過載, 有嚴(yán)格實(shí)時(shí)服務(wù)要求的應(yīng)用程序經(jīng)常要考慮只有最壞情況的執(zhí)行. 這樣的結(jié)果是,流分析的最優(yōu)化描述只能使用在確定環(huán)境上, e.g., 目的是讓應(yīng)用程序能接收、統(tǒng)計(jì)實(shí)時(shí)服務(wù)的或當(dāng)最壞情況for applications that canaccept statistical real-time service or when the worst-case scenariosare still 足夠to meet deadlines. <P><B><A NAME="memory">6.2. 內(nèi)存優(yōu)化管理</b><P>通常CORBA工具經(jīng)常忍受過多的動(dòng)態(tài)存儲(chǔ)管理和數(shù)據(jù)拷貝. 因?yàn)?/span>堆棧的分段存儲(chǔ)能為不同的消息大小和不同的工作量表現(xiàn)出不均勻的性能的原因動(dòng)態(tài)存儲(chǔ)管理會(huì)是硬盤實(shí)時(shí)系統(tǒng)的問題.同樣, 在整個(gè)ORB端系統(tǒng)中過多的數(shù)據(jù)拷貝會(huì)很大程度上降低端到端的性能. <P>現(xiàn)存的ORBs為多處理器使用動(dòng)態(tài)存儲(chǔ)管理. ORB核心通常為每個(gè)接收到的客戶請(qǐng)求分配存儲(chǔ)空間. IIOP解組引擎通常為保持的解碼請(qǐng)求參數(shù)分配存儲(chǔ)空間. 最終, IDL 分別在上調(diào)之前和上調(diào)之后動(dòng)態(tài)分配和刪除客戶端請(qǐng)求時(shí)參數(shù)的拷貝.<P>這些存儲(chǔ)管理策略在一些環(huán)境中非常重要(e.g., 當(dāng)上調(diào)生成用于修改它們輸入的線程應(yīng)用時(shí)為了防止破壞內(nèi)部CORBA緩沖區(qū)).然而, 這種策略不需要為實(shí)時(shí)應(yīng)用增加內(nèi)存和總線負(fù)載, 和流媒體應(yīng)用一樣(比如 衛(wèi)星監(jiān)視和電視會(huì)議)在消耗它們輸入而不用立即修改它.<P>TAO 被設(shè)計(jì)為小型化和清除在多點(diǎn)的數(shù)據(jù)拷貝. 舉個(gè)例子, TAO的 ``零拷貝'' 緩沖區(qū)管理系統(tǒng)被描述在允許客戶請(qǐng)求被發(fā)送和接收和從不會(huì)導(dǎo)致任何數(shù)據(jù)拷貝開銷的網(wǎng)絡(luò)來.此外, 這些緩沖區(qū)能在ORB的不同傳輸階段被重新分配和傳遞. 另外, 集成層處理(ILP) 能用戶減少數(shù)據(jù)的移動(dòng). 因?yàn)?ILP需要維護(hù)順序的約束, 我們提供的編譯器技術(shù)(比如 控制和數(shù)據(jù)流分析) 用于檢測ILP能被有效用于哪些方面. <P>將編譯器技術(shù)用于表現(xiàn)層和存儲(chǔ)管理功能允許我們?cè)诓恍薷臉?biāo)準(zhǔn)OMG IDL和CORBA應(yīng)用程序的情況下優(yōu)化性能. <P> <HR><P>Back to the <A HREF="TAO-intro.html">TAO intro</A> page.<P><!--<EM>Visitor #from <EM><br> --><I> Last modified 09:10:05 CDT 23 June 2002 </I></BODY> </HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -