




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學習與交流RTX-實時操作系統(tǒng).精品文檔.使用RTX增加Windows XP/2000/XP Embedded系統(tǒng)的硬實時特性收藏 內(nèi)容簡介 摘要 簡介 Windows XP平臺和實時系統(tǒng) RTX結(jié)構(gòu) 深入RTX 實時硬件抽象層 Windows XP停止保護 擴展HAL RTX和中斷延遲 RTX中斷延遲縮減技術(shù) RTX對象 RTSS調(diào)度器 服務請求中斷 Win32到RTSS的IPC RTSS代理模型 控制Windows XP I/O管理器 快速計時器支持 動態(tài)鏈接庫 RTSS中的結(jié)構(gòu)異常處理 性能 使用Visual Studio創(chuàng)建RTX應用程序 性能
2、工具 目標設計者SLD 未來方向 結(jié)論 獲取渠道 參考摘要由于很多商業(yè)和技術(shù)原因,Microsoft Windows NT、Microsoft Windows 2000、 Windows XP和Windows XP Embedded操作系統(tǒng)越來越多被考慮作為實時系統(tǒng)平臺。為了滿足硬實時系統(tǒng)嚴格的響應時間的要求,增加Windows XP系統(tǒng)的實時能力非常必要。這篇文章介紹了美國Ardence公司的RTX產(chǎn)品,其在Windows平臺上提供了一個實時子系統(tǒng)。RTX實現(xiàn)了確定性的實時線程調(diào)度、實時環(huán)境和與原始Windows環(huán)境之間的進程間通訊機制以及其它只在特定的實時操作系統(tǒng)中才有的對Windows系
3、統(tǒng)的擴展特性。這篇文章描述了RTX怎樣提供這些特性和目前的實時性能,并指出了未來性能增強的方向。簡介微軟公司的Windows XP操作系統(tǒng)的大眾接受程度和市場占有率日益擴大。這主要是基于以下幾點原因: Windows XP平臺更強的性能和更低的價格; 該平臺上可運行多種應用程序; 該平臺支持多種開發(fā)工具; 豐富的Win32應用程序接口; 大量的熟悉本系統(tǒng)的開發(fā)支持人員和最終用戶。鑒于多系統(tǒng)的計算環(huán)境的復雜度和所需要的額外維護成本,更多的公司傾向于將Windows XP應用到設備的所有級別上。將其作為網(wǎng)絡服務器或者桌面系統(tǒng)是很容易理解的,因為Windows XP就是為這些環(huán)境而設計的。但是,仍然
4、有很多其他環(huán)境有使用Windows XP的要求,譬如制造車間,醫(yī)療設備,仿真器械,測試設備和通信器材。這些環(huán)境的共同特點就是它們都要求系統(tǒng)擁有硬實時特性。Windows XP可以滿足這個需要嗎?答案是否定的。但是,通過附加軟件就可以在Windows XP上實現(xiàn)所需要的硬實時特性。否則的話,開發(fā)者必須增加一臺實時計算機,并承擔額外的費用和復雜度。下文討論了Ardence公司的硬實時產(chǎn)品RTX,其中包括RTSS實時子系統(tǒng)(Real-Time Sub-System),它是專門為PC架構(gòu)(Intel Pentium系列及其相應的操作系統(tǒng))的Windows平臺設計的。此前的一篇文章Carpenter 9
5、7討論了開發(fā)過程中的一些成果,這篇文章提供了對實現(xiàn)的更詳細的介紹,包括性能參數(shù),功能的提高以及發(fā)展前景的概述。Windows XP平臺和實時系統(tǒng)什么樣的系統(tǒng)可以被稱為實時?實時系統(tǒng)的特點在于:一個正確的運行不僅取決于結(jié)果的準確,更取決于實現(xiàn)的時間。需要注意的是,“實時”并不意味著“快”,它指的是系統(tǒng)的時間響應特性。換句話說,實時性的衡量標準不是系統(tǒng)的平均響應時間而是最壞情況下的響應時間。實時系統(tǒng)有時被進一步劃分為硬實時系統(tǒng)和軟實時系統(tǒng)。硬實時系統(tǒng)對響應時間的要求是嚴格的,絕對的;而軟實時系統(tǒng)允許有一些小的誤差。某些觀點認為“軟實時”的說法是自相矛盾的,在下文中凡涉及到“實時”都指的是硬實時系統(tǒng)
6、。一個硬實時系統(tǒng)的例子是壓蓋機給在傳送帶上傳送的瓶子加蓋。對于系統(tǒng),僅僅準確定位壓蓋機是不夠的,如果瓶蓋已經(jīng)移走而壓蓋機才剛剛到位那么所有的精確定位都是徒勞的。除了確定性,實時系統(tǒng)通常還有一些其他要求: 一個具有很多優(yōu)先級的多線程優(yōu)先級調(diào)度器(如典型的64-256); 可預測的線程同步機制; 具有優(yōu)先級繼承 快速的時鐘和定時器為什么Windows XP平臺不是實時的?Windows XP是一個通用操作系統(tǒng)平臺,同時適合于桌面交互系統(tǒng)和網(wǎng)絡服務器Solomon 98。Windows XP(同時適用于Windows XP Embedded)在實時應用方面的缺點已經(jīng)被很系統(tǒng)地研究過了: 線程優(yōu)先級太
7、少; 隱含的不確定的線程調(diào)度機制; 優(yōu)先級倒置,尤其體現(xiàn)在中斷處理中;盡管更快的處理器顯著的增加了處理能力和平均響應時間,甚至使某些人以為實現(xiàn)系統(tǒng)的實時性變?yōu)榭赡?,但是非確定性系統(tǒng)是不能變成確定系統(tǒng)的,最壞響應時間的提高也不是總能被保證的。所以,新的硬件平臺并不能改變Windows XP的實時特性。某些開發(fā)人員使用了兩臺計算機-一臺運行Windows XP ,另一臺運行實時系統(tǒng)。但是這增加了大量的硬件成本并使系統(tǒng)的開發(fā)和集成變得復雜,不是一種通用的、高效率的解決方案。為什么要對Windows XP 平臺進行實時擴展?RTX的設計邏輯基于以下幾個因素。通用的Windows XP操作系統(tǒng)是面向大眾
8、市場的,不適合實時性這樣非普遍的需求。盡管由微軟贊助的關(guān)于Windows XP實時性的研究已經(jīng)有了一些進展Sommer 96-尤其當應用程序事先聲明其資源需要的時候Sommer 97Sommer & Potter 96 -但對于Windows XP這種面向廣闊市場的操作系統(tǒng),吸收實時性系統(tǒng)的復雜性以完成其功能,其可行性是值得懷疑的Microsoft 95。這意味著使Windows XP具有實時性的最好方法是通過對原產(chǎn)品的擴展或者由插件實現(xiàn)Jones 98。同時,Windows XP平臺提供了豐富的和復雜的設備驅(qū)動模型,定制的硬件抽象層(hardware abstraction layer ,H
9、AL)和模型為開發(fā)者提供了對系統(tǒng)行為的靈活掌控能力和面對技術(shù)挑戰(zhàn)的創(chuàng)造性機會。這樣,實時功能可以按照微軟Windows XP驅(qū)動開發(fā)工具(Driver Development Kit,DDK)和HAL模型來實現(xiàn)Baker 97。最后,對于非微軟員工的Windows XP擴展內(nèi)核編寫人員,Windows XP的內(nèi)核就如同硅制芯片一樣,其接口和行為都是固定的。無需抱怨,利用現(xiàn)有的條件就可以設計出緊湊的實時性擴展,使其易于在不同的Windows版本之間進行移植。圖1說明了RTX如何實現(xiàn)可移植性的目標。那么,你需要一個硬實時的Windows XP環(huán)境嗎?為何將Windows XP擴展為實時系統(tǒng)?既然剛
10、才提到的微軟Windows XP平臺的許多缺點都是由于其線程模型和線程調(diào)度,那么實時擴展擁有自己的線程和調(diào)度也就十分必要了。同樣,Windows XP平臺的同步對象,例如事件,信號量,互斥體等缺乏必要的實時機制(尤其它們既無法防止線程侵占,又無法使線程按優(yōu)先級順序等待對象響應)。由于這些原因,實時擴展應該實現(xiàn)自己的同步對象Bollella 95。如果按照Windows XP的環(huán)境邏輯實現(xiàn)一個實時子系統(tǒng),這個實時環(huán)境應該能夠: 無論在任何時間其優(yōu)先級都應該高于Windows XP,至少在Windows XP中斷處理程序代碼的臨界區(qū)以外。 執(zhí)行實時任務時,延遲Windows XP的中斷和錯誤。 實
11、行實時任務時,要能夠處理實時中斷。搶占Windows XP和其驅(qū)動的高級別中斷請求(Interrupt Request Number,IRQ)讓給沒有時間約束的實時任務是一種危險的想法。但是這些事件是常見的,并且Windows XP被設計用來處理它們:高優(yōu)先級中斷請求(high-interrupt request level,IRQL)侵占低級的;DMA外設的總線控制和系統(tǒng)管理模式下的處理可以延遲最高級別的中斷請求;PCI設備可以拖延CPU對I/O空間的訪問。所以,從Windows XP的觀點來看,RTSS竊取Windows XP的執(zhí)行周期就等同于獲得中斷并返回。這樣的時間能被Windows
12、XP很好的處理,而不必考慮其持續(xù)時間。實時子系統(tǒng)的功能需要包括與Win32子系統(tǒng)的進程間通訊(interprocess communication,IPC),訪問Windows XP內(nèi)核功能(中斷管理,I/O端口,關(guān)機/崩潰處理器),最重要的是與Win32在源代碼級別上兼容。RTX結(jié)構(gòu)RTX被實現(xiàn)為一套庫的集合(動態(tài)庫與靜態(tài)庫),RTSS作為Windows XP的內(nèi)核設備驅(qū)動與HAL擴展(見圖1)Carpenter 97。子系統(tǒng)實現(xiàn)前面提到的實時對象和調(diào)度器。通過一套被稱作RtWinAPI的實時API(RtWinAPI 同時也被Windows CE 和Phar Lap ETS支持)這套庫提供了
13、對這些對象的訪問方法。注意,RtWinAPI可以被標準Win32環(huán)境和RTSS環(huán)境調(diào)用。雖然在Win32環(huán)境中使用RtWinAPI不能提供在RTSS下的確定性,但是卻可以允許應用程序在更加友好的Win32編程環(huán)境中開發(fā)而不是DDK環(huán)境Anschuetz 98。將Win32程序轉(zhuǎn)化為RTX程序只需要重新鏈接一套不同的庫而已。Windows XP服務控制管理器直接將RTX進程和動態(tài)鏈接庫(DLL)的可執(zhí)行映像裝入內(nèi)核的不分頁內(nèi)存中。圖1 RTX架構(gòu)深入RTX實時硬件抽象層(HAL)HAL是Windows XP系統(tǒng)提供的可被用來進行修改和擴展的資源的一部分。RTX修改HAL有以下3個目的: 在Win
14、dows XP和RTX線程之間增加獨立的中斷間隔; 實現(xiàn)高速時鐘和定時器; 實現(xiàn)關(guān)閉處理程序。中斷隔離意味著Windows XP線程和Windows XP管理的設備不可能中斷RTSS,同時Windows XP線程也不能屏蔽RTSS管理的設備。HAL通過控制處理器級的中斷屏蔽滿足這些條件。當運行RTSS線程時,所有Windows XP控制的中斷都被屏蔽掉。當Windows XP線程請求設置中斷屏蔽時,作為實際管理中斷屏蔽的軟件,HAL確保沒有任何RTSS中斷被屏蔽。Windows XP提供的計時器的最小計時單位為1000微秒(1毫秒)。RT-HAL將其降到了100納秒并且提供了同步(與計時器)的
15、時鐘。Windows XP停止保護除了中斷管理和更快的定時器服務,實時HAL也提供了Windows XP關(guān)機管理。當Windows XP正常關(guān)機或者藍屏崩潰時, RTSS應用程序可以被關(guān)聯(lián)到Windows XP關(guān)機管理器。正常關(guān)機允許RTSS不受影響的繼續(xù)運行,直到所有的RTSS關(guān)機處理器返回。但當出現(xiàn)藍屏時,RTSS關(guān)機處理器就會受到限制,它將無法調(diào)用Windows XP的服務(例如分配新內(nèi)存)。在實際中,這意味著當系統(tǒng)正常關(guān)機或者崩潰時,關(guān)機處理器清除一切并復位硬件,還可能向操作者發(fā)出警告,或者切換到備用狀態(tài)。圖2:RTSS詳細架構(gòu)擴展HAL自從RTX4.3,一直采用擴展HAL的方式而不是
16、替代。HAL擴展驅(qū)動在操作系統(tǒng)初始化時啟動(SERVICE_SYSTEM_START),在內(nèi)存中完成對HAL的動態(tài)檢測、中斷截取、定時器和關(guān)機的相關(guān)調(diào)用,并且重定向到RTX的相應位置。這種二進制鉤子技術(shù)比起替代HAL來有許多優(yōu)點: RTX可以處理很廣泛的OEM平臺,這種重定向調(diào)用被限制在一種對于不同的OEM和服務商之間很少區(qū)別的調(diào)用上。 RTX兼容更大范圍的Windows XP補丁包(Service Pack,SP),為了配合最新的HAL資源的補丁包而修改RTX是不必要的。 因為磁盤上的HAL未被改動,所以安裝變得更加容易,因此RTX也不受SP升級的影響。 升級到更新的Windows版本變得容
17、易,不費什么力氣。當RTX在Windows NT 和 Windows 2000的后續(xù)SP上不經(jīng)修改的成功安裝,擴展HAL的好處也就無需證明了。RTX和中斷延遲軟件引起的中斷當RTX高速時鐘或者其他設備產(chǎn)生RTX中斷時,就會發(fā)生從 Windows XP到RTX的轉(zhuǎn)換。所以,為達到RTX的ISR的確定性就必須減少Windows XP的中斷延遲。讓我們先來考察一下在沒有RTX的情況下Windows XP平臺的ISR延遲來源。最顯著的延遲是由Windows XP內(nèi)核和驅(qū)動引起的IRQ屏蔽,一般是通過Windows XP的KeRaise/LowerIrql函數(shù)調(diào)用在幾毫秒內(nèi)實現(xiàn)的。Windows XP內(nèi)
18、核,HAL和某些特殊驅(qū)動也通過x86 STI/CLI指令集在幾微秒內(nèi)完成處理器級的中斷屏蔽。Windows XP 和RTX中斷處理自然會屏蔽中斷,所以也肯定會增加ISR延遲。雖然在很多情況下Windows XP非常依賴于中斷處理(例如軟件異常,釋放線程堆棧),但其中斷順序依然取決于最壞情況下的延時。硬件引起的中斷和硬件有關(guān)的最明顯的問題就是應用程序和操作系統(tǒng)對高速緩存的污染和轉(zhuǎn)儲清除。TLB的重填也屬于這種情況。視頻驅(qū)動的緩存占有量是極大的,當RTX中斷啟動時會造成競爭性的轉(zhuǎn)儲清除。當應用程序引起緩存污染時,ISR的直方圖上將出現(xiàn)典型的雙駝峰型。大部分采樣靠近最好情況的區(qū)域,另外一大部分靠近存
19、儲清除的區(qū)域(見圖3)。電源管理,尤其是當其在移動設備上,當CPU經(jīng)過較長時間的停滯而處于低耗電量狀態(tài)時偶爾會產(chǎn)生較長的延遲。這種問題很容易被偵查到。一個典型的系統(tǒng)可以通過BIOS的設置來禁止這些特性。某些系統(tǒng),尤其是筆記本,使用Pentium處理器的系統(tǒng)管理模式(System Management Mode,SMM)在BIOS固化軟件中完成敲擊鍵盤和其他處理。同時,在SMM下,處理器不會處理增加ISR延遲的中斷。幸運的是,新一代系統(tǒng)平臺通過高級設置與電源接口(Advanced Configuration and Power Interface,ACPI)和Windows 2000轉(zhuǎn)而使用操作
20、系統(tǒng)而不是BIOS提供電源管理。因此,這些延遲的原因已經(jīng)變得微不足道了。總線控制事件會引起CPU長時間的延遲。這種情況包括小型電腦系統(tǒng)接口(small computer system interface ,SCSI)設備的高性能DMA所引起的數(shù)微秒的CPU延遲和為響應CPU訪問而加入等待周期的顯卡。有時這些外設的行為可以被驅(qū)動控制,通過交替處理從而減少延遲。雖然沒有任何系統(tǒng)能夠確保應用程序不受這些硬件因素的干擾,但是RTX提供了診斷平臺相關(guān)延遲的診斷工具,可以辨別那些行為錯誤的外設。留意這些因素并使用RTX工具來衡量開發(fā)平臺對于一個系統(tǒng)的整體性能來說是非常重要的。RTX中斷延遲縮減技術(shù)RTSS
21、 完全消除了由Windows XP平臺及其驅(qū)動的IRQL屏蔽所造成的延遲。當系統(tǒng)在Windows XP與RTX之間進行切換時,RT-HAL執(zhí)行中斷隔離,重新對可編程中斷控制器(programmable interrupt controller,PIC)進行編程。所以在RTX運行時,RTX可以屏蔽所有Windows XP 中斷,從而RTX中斷總能夠屏蔽Windows XP。另一方面,處理器級的中斷屏蔽不會失效,因此不必冒風險使用x86 NMIs(不可屏蔽中斷,non-maskable interrupts)。RTX采用一種靜態(tài)方案解決IRQ鎖定,它將多個中斷優(yōu)先級掛鉤,這種動態(tài)掛鉤功能使用旋轉(zhuǎn)鎖
22、定(或者在單處理器上的基于IRQ的同步)掃描HAL,尋找這些操作的信號。在典型的800MHZ的PC平臺上,這些技術(shù)提供了小于1微秒的時鐘中斷最壞延遲響應時間。RTX對象RTSS環(huán)境擁有快捷高效的對象管理器(見圖2)。它支持的對象滿足下列標準:1)可用于實時編程2)兼容Win32IPC對象同樣適用于Win32應用程序和設備驅(qū)動,允許程序員最大限度的發(fā)揮Windows XP的性能。IPC設置包括互斥體,事件,信號量和共享內(nèi)存對象。RTSS對象管理器使用Windows XP的不分頁內(nèi)存池以滿足它的存儲需要。使用Windows XP提供的機制可以減少RTX的資源消耗,但是對象的分配是不確定的。RTSS
23、調(diào)度器RTSS調(diào)度器采用搶占式策略實現(xiàn)優(yōu)先級,它可以提升優(yōu)先級以防止優(yōu)先級倒置。RTSS環(huán)境提供了128種優(yōu)先級,序號從0到127,0代表最低優(yōu)先權(quán)。RTSS調(diào)度器總是在準備運行的線程中運行優(yōu)先級最高的(當多個準備運行的線程處于同一優(yōu)先級時,等待時間最長的線程最先運行)。RTSS線程會一直運行直到一個高優(yōu)先級的就緒線程搶占它,或者它自動釋放處理器進入等待狀態(tài),還有一種情況是分配給它的時間片用光(缺省值是無限)而另一個同優(yōu)先級線程已經(jīng)就緒。調(diào)度器在編碼設計階段就被設計為滿足實時處理的需要。最重要的是它的操作是低延遲的,并且不受它所管理的線程數(shù)影響。每個優(yōu)先級都有自己的等待隊列,是一個雙向鏈表。這
24、就使得對于鏈表的插入(表尾)和刪除(表的任何位置)操作的執(zhí)行時間獨立于鏈表中的線程數(shù)。一個數(shù)組會紀錄哪些鏈表當前是空的,這個數(shù)組是由高速的由匯編代碼寫成的子程序進行維護的。當一個RTSS線程運行時,所有Windows XP管理的中斷以及任何擁有低優(yōu)先級的線程所管理的中斷都一律被屏蔽掉。相反地,所有擁有高優(yōu)先級的線程所管理的中斷都不會被屏蔽,并且允許其打斷當前線程。除了這些設備中斷,其他可以導致當前線程被中斷的機制包括一個使得擁有高優(yōu)先級的線程就緒的定時器的到期,一個標明高優(yōu)先級線程正在等待的同步對象信號(正在運行線程的同步對象)。為了解決線程搶占的問題,RTSS采用了經(jīng)典的優(yōu)先級提升的解決方案
25、Nakajima 93 Sha 90。當一個低優(yōu)先級線程擁有一個高優(yōu)先級線程等待的對象時,在它擁有對象的時間內(nèi)會被自動提升到較高的優(yōu)先級別。服務請求中斷(Service Request Interrupt,SRI)RTX的一個重要的架構(gòu)特征就是Windows XP和RTX之間的一個無鎖中斷驅(qū)動接口,這個接口實現(xiàn)了本地程序調(diào)用(Local Procedure Call,LPC)機制。這個完全分離的架構(gòu)使得RTSS能夠移植到不同的環(huán)境中(例如多處理器RTX產(chǎn)品),并能夠保證快速而有效的實現(xiàn)。Windows XP方面的RTX驅(qū)動和RTSS環(huán)境之間的通訊是通過向兩個緩存隊列(每個方向一個隊列)中的一個
26、插入命令行,并初始化服務請求中斷(Service Request Interrupt,SRI)來向另一方請求服務的。一個服務線程執(zhí)行請求,其應答信息的傳遞通過另一個隊列。典型的Windows XP到RTX的請求是一個與WaitForSingleObject 相似的IPC操作或者在RTSS對象上的釋放操作。而典型的RTX到Windows XP的操作是頁內(nèi)存的分配或者I/O請求。SRI的設計傾向于減少響應時間,盡快地響應RTSS請求。Win32到RTSS的IPC交互環(huán)境下的IPC是RTX的一個重要特征,它允許在運行實時程序的資源更加密集的RTSS環(huán)境下緊密的集成應用程序。應用程序的其余部分運行在W
27、in32子系統(tǒng)中,這一節(jié)描述了IPC的設計。RTSS代理模型IPC與其它Windows XP和RTSS之間的通信相同,使用SRI通道。由于SRI通道阻止Windows XP線程進入隊列直接獲得RTX對象,RTX使用代理進程和線程支持IPC與Win32的隔離。當Win32線程要訪問到RTX對象時,RTSS就會使用代理線程,這個模型簡捷有效,它的優(yōu)點如下: 在阻塞IPC請求時,在Windows XP端沒有狀態(tài)保留。 對于外部的Win32等待請求,RTSS沒有特例 當Win32進程或線程終止后句柄和對象的清理工作自動由RTX的代理進程和線程完成。雖然代理會涉及到內(nèi)存和CPU的一些額外開銷,但其簡潔的
28、設計和快速的實現(xiàn)使得這樣做還是值得的??刂芖indows XP I/O管理器為交互環(huán)境IPC保留無縫的Win32語義并且達到好的性能面臨幾大挑戰(zhàn)。當使用某個驅(qū)動的Win32線程終止時,Windows NT 4.0 DDK并不為驅(qū)動線程提供暴露的接口(Windows 2000 和Windows XP引入了全局聲明機制,但還存在一定的局限)。但Win32的互斥體需要這樣的機制。當某個線程終止時,被其獲得而不是釋放了的RTX互斥體必須被標注為“廢棄的”,以表明它所保護的共享數(shù)據(jù)可能并不一致。RTX利用I/O管理器的I/O請求包(IRP ,I/O Request Packet)實現(xiàn)線程終止時的清除工作
29、:每個關(guān)聯(lián)到RTX Win32 DLL的線程向RTX驅(qū)動發(fā)送一個“死IRP”信號。當這個線程終止時,Windows XP調(diào)用IRP的取消子程序通知RTX驅(qū)動和RTSS對象層。I/O管理器提了一個強大的,富有挑戰(zhàn)的環(huán)境,因為它的事件傳送是異步的。例如,調(diào)用MJ_CLEANUP驅(qū)動調(diào)度子程序和取消子程序可以按照任何順序,只要RTX的每個線程結(jié)構(gòu)和每個進程保持嚴格的同步。Win32-RTSS IPC的性能提出了另一個問題。在早期的執(zhí)行過程中,一個無須爭議的事實是對Win32中的RtWaitForSingleObject() 函數(shù)的調(diào)用的總延遲平均為130毫秒,分析表明,大約40毫秒(大于30%)被消
30、耗在Windows XP 的I/O管理器上。所以RTX4.2對IPC內(nèi)核進行了重新編碼,在Win32 IPC客戶和RTX驅(qū)動之間使用了直接信號和共享內(nèi)存Tomlinson 97。RTX用戶和內(nèi)核線程共享同步對象,直接與對方進行通信,這樣就減少了Windows XP I/O管理器的總開銷和總延遲。需要注意的是,被Win32應用程序鎖住的在RTX同步對象上的操作具有不確定性Carpenter 97:任何RTSS線程都可以搶占Windows XP中具有這種具有鎖性質(zhì)的線程,從而出現(xiàn)非常嚴重的優(yōu)先級倒置的現(xiàn)象。但這是程序設計上的問題:鎖定一個被Win32共享的對象應該留給一個非臨界的RTSS線程去做。
31、不過在多處理器RTX系統(tǒng)上,并且如果RTX和Windows XP分別運行于不同的處理器的話,這個問題可以得到改善??焖儆嫊r器支持在所有的PC平臺上,實時的HAL提供了精度為1微秒甚至更快的時鐘。如果沒有任何RTSS應用程序在執(zhí)行,那么在安裝了RTX的系統(tǒng)上和沒有安裝RTX的系統(tǒng)上就沒有任何時間上的區(qū)別了。動態(tài)鏈接庫提到Win32就不得不提到DLL庫。RTSS支持Win32 DLL API (LoadLibrary函數(shù),GetProcAddress函數(shù))?,F(xiàn)在,所有在RTSS的DLL中的靜態(tài)和全局變量都被鏈接到其上任何RTSS進程所共享。RTSS中的結(jié)構(gòu)異常處理結(jié)構(gòu)異常處理(Structured
32、 Exception Handling,SEH)是一個相對不為人知但是更為重要的Win32 和 Windows XP內(nèi)核環(huán)境的特征。它的實現(xiàn)可以追溯到OS/2 和OSF UNIX中。SEH通過Microsoft C中的try/except 和 try/finally結(jié)構(gòu)提供異常處理。C+異常處理在SEH之上被分層,就像libc signal/raise的調(diào)用一樣使得SEH在任意一個Win32的環(huán)境下都變成必須的。這個模型的顯著特征是: 具體編譯程序的異常處理 具體操作系統(tǒng)堆棧的釋放和異常調(diào)度子程序 用戶提供的異常篩選程序 兩極異常處理算法。首先調(diào)用具體操作系統(tǒng)的調(diào)度子程序掃描線程堆棧,以搜索合
33、適的處理者,然后在必要時,調(diào)用具體操作系統(tǒng)的解除裝置返回堆棧。 最后機會的缺省和用戶提供的異常處理子程序 一套專門解決嵌套異常和釋放沖突的特殊機制RTSS SEH與Microsoft結(jié)構(gòu),處理調(diào)用規(guī)律,SEH API運行等兼容。并且,它專為實時系統(tǒng)設計,能夠最小化RTSS線程中處理器層的中斷屏蔽和分裂: 當通過Win32 RaiseException API產(chǎn)生軟件異常時,Win32將產(chǎn)生一個軟件中斷;RTSS調(diào)用用戶模式下的異常調(diào)度器。 當釋放堆棧,并且在此之后設置了一個新的用戶環(huán)境后,Win32 SEH將會產(chǎn)生一個特殊的中斷,RTSS在用戶模式下恢復環(huán)境。 當中斷失效時,Windows X
34、P可能會編輯(移動)一個異常自陷幀,而RTSS在用戶模式下完成此操作。對于硬件異常,RTSS算法會診斷出自陷幀并調(diào)用RTSS異常調(diào)度器,然后從ISR返回到調(diào)度器,并處理異常。所以,軟件異常并不對其他線程造成ISR延遲負擔;而硬件異常也只是增加了單個中斷的最壞響應的負擔。性能下表顯示了在一個在擁有ACPI芯片組的800 MHz Pentium III處理器上運行的Windows XP重要性能指標,這個Windows XP安裝了RTX 6.0.1。表1 RTX與Windows XP和Windows CE .NET的實時性能比較Operation Windows XP Windows CE .NET
35、 RTX 6.0.1ReleaseMutexWFSO: min/max in usec 1.49 / 5000+ 4.9 / 13.3 0.10 / 3.26ReleaseSemaphoreWFSO: min/max in usec 1.39 / 5000+ 3.9 / 8.4 0.10 / 3.43Yield: min/max in usec 1.11 / 5000+ 2.6 / 63.9 0.10 / 3.37Win32-to-RTSS SetEvent call: min in usec NA NA 14注:在Windows XP頻繁裝載下的關(guān)鍵RTX線程切換調(diào)節(jié)(最大值包括定時器中斷處
36、理的消耗)。不包含RTX和Microsoft Windows CE 的Windows XP作為比較,時間單位為微秒。圖3 RTSS計時器中斷延遲柱狀圖(典型的Windows工作負載:磁盤搜索,視頻升級,網(wǎng)絡活動,屏幕保護等。X軸以微秒為單位,Y軸是按對數(shù)顯示的采樣數(shù)值。較低的有陰影的部分代表最后一秒的活動,較高的部分顯示的是總體運行的積累量)圖4 和圖3相同工作量的Win32計時器中斷延遲直方圖通過對RTX6.0.1的獨立測試以及在其他實時Microsoft Windows NT上進行擴展,可以發(fā)現(xiàn)RTX的豐富性能OMAC 98 Real-Time 98 Timmerman 98。當然不要忘記
37、RTX6.0.1提供了更快地線程切換計時器。使用Visual Studio創(chuàng)建RTX應用程序通過RTX提供的頭文件和庫函數(shù),RTX應用程序可以像其他任何Windows應用程序一樣被Microsoft Visual Studio編譯和鏈接。application wizard可以用來更改工程設置和創(chuàng)建源代碼框架。從RTX5.1開始,Visual Studio debugger可以像調(diào)試其他Win32進程一樣調(diào)試運行RTX進程。進程與線程的變量和斷點可以被設置和管理。RTX包括大量的應用工具,其中有圖5中顯示的RTSS Object Viewer。圖5 對RTSS Object Viewer的截屏(顯示出了一個擁有兩個線程的單進程,一個線程是計時器,另一個是共享內(nèi)存對象)性能工具RTX性能工具使得開發(fā)者可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司植樹節(jié)親子活動方案
- 公司生日感恩策劃方案
- 公司燒烤娛樂活動方案
- 城市交通規(guī)劃與管理的2025年考核試卷及答案
- 2025年心理健康教育課程期末考試試題及答案
- 2025年農(nóng)村經(jīng)濟與管理綜合能力考試卷及答案
- 2025年金融從業(yè)資格證考試試題及答案
- 2025年非營利組織管理師職業(yè)資格考試試卷及答案
- 保衛(wèi)科上半年工作總結(jié)精彩文章
- 2024年度浙江省護師類之主管護師真題練習試卷A卷附答案
- 光伏電站項目工程資料清單
- YY/T 0003-1990病床
- GB/T 22894-2008紙和紙板加速老化在80 ℃和65%相對濕度條件下的濕熱處理
- GB/T 16630-2012冷凍機油
- GB/T 12242-2005壓力釋放裝置性能試驗規(guī)范
- 第四章-食用香精的應用
- 課程替代申請表(模板)
- 浪琴環(huán)球馬術(shù)冠軍賽上海站官方贊助商合作方案課件
- 醫(yī)療器械臨床評價課件
- 現(xiàn)場工程量確認單
- 2022年廣東省佛山市順德區(qū)承德小學小升初數(shù)學試卷
評論
0/150
提交評論