RTX64常見問題
本章節的資訊已更新至RTX64 4.5.1版本
什麼是即時 (Real-Time)?
「即時」指的是一個應用程式需要在某個小的時間範圍內對一個事件做出回應,通常回應的時間在毫秒或微秒以內。
硬即時和軟即時的不同之處為何?
所謂「硬即時」是指要求其回應是邏輯上正確的,且必須在某個截止期限或結果不正確之前發生,要是失敗了就無法得到任何數值。
所謂「軟即時」是要求其回應也是邏輯上正確的,但必須在某個截止期限或結果漸漸變得不精確之前發生,也就是即使回應發生在所要求的截止期限之後,仍然可以保有某些數值。
在即時環境下,決定性代表了什麼意義?
決定性被定義為能夠理性預測一個事件一定會發生的能力,並且伴隨一定程度的精確性。決定性加上即時環境,保證事件一定會在很小的回應時間內發生,而且這個事件的效能是可以重複的。
什麼是即時作業系統 (RTOS)?
一個經由特定排程器向特定事件回應時,可提供決定性與可預測性的即時作業系統。
微軟的Windows® 是即時作業系統嗎?
Windows通常被認為是一般用途的作業系統,因為它不允許應用程式或核心等級的驅動程式屏蔽中斷和控制整個作業系統。隨著硬體的不同,Windows的中斷延遲可能展現出很好的數值,平均可以在幾微秒內;但在最壞的情況下,中斷延遲有可能是不回應或超過數百毫秒。因為有可能不回應延遲,就無法確保決定性的回應時間,因此標準的Windows桌上型或伺服器的作業系統便無法當作即時使用。
什麼是RTX64?
英特蒙的RTX64軟體將微軟的Windows轉變成一個即時作業系統 (RTOS)。
對那些需要Windows使用者經驗和硬即時或決定性的專案而言,RTX64 RTOS 平台可讓OEM製造商和終端用戶善用Windows、X64多核多處理器科技、對稱多處理 (SMP)、以及即時乙太網路 – 所有的功能都整合在同一個開發環境中。
- 降低 25% – 50% 物料清單 (BOM) 成本
- 提升品質與效能
- 快速擴展並縮短產品週期
- 有效減少對專用硬體,例如DSP的依賴
什麼是 SMP?
RTX64支援對稱多處理系統 (SMP)。SMP是一種讓作業系統工作和排程使用者執行緒交給可用處理器的電腦架構。依循這個模式,多處理器就可以配置作為即時活動而用, RTSS 執行緒也可以被指派在 RTSS 處理器上執行,並同時運行。
在啟動SMP功能的系統上執行RTX64時,可以自行配置有多少個CPU內核指派給Windows,和多少個CPU內核給RTX64 即時子系統 (Real-time Subsystem, RTSS)。RTX64最多可支援SMP系統到63個CPU內核 (數量會根據所授權的版本而不同)。
RTX64如何擴充Windows以提供”硬”即時?
RTX64的整體設計能讓開發者得到”兩個世界裡最好的”,也就是提供Windows的所有功能和技術,加上在獨立且可控子系統中的”硬”即時行為。RTX64包含了即時硬體抽象層 (HAL) 擴充,RTX64並不會取代原先存在的Windows HAL。這個擴充用來維持RTSS和Windows的中斷獨立,同時也提供處理器間中斷 (IPI) 溝通。 即時子系統會將RTSS工作排程到另外的處理器中,而不會被Windows作業系統或Windows 行程干擾。
RTX64的好處為何?
RTX64 Runtime支援一般用途的Windows行程、高效能的即時行程和對商用現成 (COTS) 機器的控制。RTX64 Runtime可配置加入Windows小型傾印檔案,或如果Windows發生錯誤時,可以控制和安全地關閉即時行程。
RTX64 SDK提供開發者豐富的行程間通訊以及同步的能力,允許RTSS應用程式和Windows應用程式 (32位元與64位元) 溝通並分享資料。除此之外,RTX64提供開發者直接存取I/O位址空間、實體記憶體或硬體的能力,並且不需強制執行驅動程式。
RTX64完全善用64位元的暫存器與編譯器,讓即時開發者做到同樣的事。
在SMP系統上使用RTX64的好處有哪些?
在SMP系統上使用RTX64能夠提供非常顯著的好處,包含了:
- 效能提升 – 可以指派多個CPU內核給重要、即時的工作。可以在有64個CPU內核的系統上同時最多跑63個即時執行緒。
- 效能擴展 – 擴展效能不需要重新寫程式。只要改變RTSS和Windows兩邊處理器的數量,就可以調整即時和非即時的效能平衡。
- 可用性高 – 重要的工作可以排程給一個以上的RTSS處理器。
- IRQ Affinity – 可以指定一個專用RTSS處理器給硬體每個部件處理輸入輸出。
- 系統錯誤處理 – 即時工作在系統當機的時候仍可運行。
同一個應用程式能在RTX64的任何一個版本上運行嗎?
RTX64 Runtime有幾個不同版本,並針對解決方案授權給所需要的處理器數量。RTX64產品的版本有:
版本… | 支援即時操作的… |
---|---|
單機版 | 1個專用的RTSS處理器 |
入門版 | 最多2個專用的RTSS處理器 |
基礎版 | 最多3個專用的RTSS處理器 |
專業版 | 最多7個專用的RTSS處理器 |
進階版 | 最多15個專用的RTSS處理器 |
終極版 | 最多63個專用的RTSS處理器 |
RTX64啟動及設置工具能指派可用的處理器給Windows或RTX64。RTX64啟動工具會自動偵測系統中處理器的數量。想知道更多訊息,請看RTX64使用說明「Configuring your System」。
所有Runtime的版本都包含同樣的功能。經由SDK所開發的應用程式,可以在同一種RTX64的任何一個版本上執行。這樣做讓開發者在開發應用程式的時候有更大的自由。
RTX64上市多久了?
RTX64在2013年發布,為Windows 7提供一個即時子系統。持續進化的RTX64現在已能支援多處理器運行在下列64位元作業系統:
Windows 11
- Windows 11 (up to General Availability Channel Version 23H2)
- Windows 11 IoT Enterprise LTSC
RTX64 Support for Windows 11 Updates
Windows 10
- Windows 10 (up to Semi-Annual Channel Version 22H2)
- Windows 10 IoT Enterprise LTSC (Long Term Servicing Channel Version 22H2)
RTX64最新版本為何?
最新版本是2024年發布的RTX64 4.5.1。
哪種產業或產品會使用RTX64?
RTX64用在各式各樣不同的產品以及垂直整合的市場。任何人想要需要設計系統控制、決定性與Windows即時效能的應用程式,都可以藉由導入RTX64到產品設計而得到助益。
RTX64會被用到下列市場中:
- 工業自動化
- 數位音訊
- 測試及測量
- 醫療
- 軍事航空
RTX64有幾種套件?
英特蒙提供六種版本的RTX64 Runtime:
版本… | 支援即時操作的… |
---|---|
單機版 | 在單一處理器或多核/多處理器的環境中使用1個專用RTSS處理器 |
入門版 | 在單一處理器或多核/多處理器的環境中最多使用2個專用RTSS處理器 |
基礎版 | 在單一處理器或多核/多處理器的環境中最多使用3個專用RTSS處理器 |
專業版 | 在單一處理器或多核/多處理器的環境中最多使用7個專用的RTSS處理器 |
進階版 | 在單一處理器或多核/多處理器的環境中最多使用15個專用的RTSS處理器 |
終極版 | 在單一處理器或多核/多處理器的環境中最多使用63個專用的RTSS處理器 |
我可以導入RTX64安裝到自己的產品中嗎?
可用下列幾種方法安裝RTX64 Runtime:
- RTX64 Runtime安裝 – RTX64可使用靜默安裝、指令執行安裝程式或者在自己的產品安裝中啟動,因此安裝過程中不需跟使用者互動。
- RTX64 Runtime的合併模組功能 – RTX64元件可被視為合併模組,包含在OEM產品的安裝程式中。另外的安裝程式會將合併模組放置於系統以供使用。
想了解更多資訊,請看RTX64部署指南。
RTX64 Runtime有哪些功能?
RTX64 Runtime有下列功能:
- 擴充Windows HAL以支援即時控制與中斷獨立
- 可在專用設定下處理多核心的排程器
- 經由可設置的MSpaces工具,提供決定性的本機記憶體
- 於RTSS環境中藉由網路抽象層 (NAL) 及可選配的RT-TCP/IP協定堆疊所得到的處理與網路能力。
- 可配置RTX64子系統的控制台
- 展示RTSS行程並輸出到控制台視窗,可設定為展示每一個即時應用程式或集結所有應用程式的單一事例。
- 工作管理員可檢視和RTX64(.exe)連接的即時行程(.rtss)及Windows行程。可使用工作管理員開啟新工作和結束正在運行的工作。可從子系統開始排程工作,還有檢視所有處理器指派給Windows或RTX64的CPU使用資訊。
- 監視架構允許開發者側寫所有RTSS處理器的RTSS應用程式行為。其中也包含一個簡單的小程式,可將資料輸出成可讀取的文字檔。
- Latency View工具可用來檢視Windows和RTSS核心的時間延遲。
- 指令工具用來觀測CPU的使用與物件的狀態。
- 完整使用說明及用戶指南
想知道更多RTX64和RTX之間的差別,請看RTX與RTX64的比較指南在客戶中心
RTX64 SDK有哪些功能?
RTX64 SDK包含下列元件:
- 標頭檔和函式庫
- 支援Visual Studio 2022, 2019 2017和2015 (不建議使用)
- 支援微軟C Runtime
- 建立應用程式和動態連結資料庫 (DLL) 的模板
- API程式碼片段
- RTX64 WinDbg Extension能擴充WinDbg的微軟64位元版本,也提供分析和解讀RTSS行程與RTX64子系統狀態的方法。
- Tracealyzer for RTX64 – Percepio公司的診斷工具,用來查看監視區間資料
- RTX64 Runtime的主要元件符號
- 完整使用說明以及精簡教學指南
- 幫助解釋更多進階開發主題的原始碼樣本
如何啟動 RTX64?
必須要有效的授權才能啟動 RTX64 元件。用戶可使用RTX 64啟動及配置工具,這個程式會在主程式安裝之後馬上出現,並啟動和鎖定產品在特定的機器或英特蒙提供的dongle上。關於第一次啟動訊息,請看RTX64安裝指南或RTX64部署指南。
啟動RTX64的方法會根據是否連接到網路而不同。另外還有連接網路和不連網路的啟動程序影片,可以在這裡看到:https://www.intervalzero.com/tw/tw-resources/tw-videos/.
RTX64有任何硬體或平台的要求嗎?
RTX64 Runtime可在任何支援Windows 64位元的商用現成 (COTS) 平台上執行。RTX64支援行動處理器、多處理器、以及多核心平台。然而,因為並非所有系統都是相同的,開發者必須評估他們選擇平台的延遲時間,以確保平台能支援即時或控制的需求。RTX64也可在超執行緒 (hyper-threaded) 系統上使用,但建議先評估RTX64的效能,以確保超執行緒開啟時能達到即時需求。
關於RTX64 處理器相容文件,請參照在客戶中心,裡面有相容的處理器列表。
RTX64支援處理器叢集嗎?
RTX64能夠運行在最多64個處理器的系統上,其中最多有63個處理器內核可以指派給RTX64。
RTX64可以用在行動處理器系統嗎?
RTX64可以用在行動處理器系統。但是因為行動處理器在Windows閒置的時候特別會以節能科技來降低處理器速度和保存能源,所以當速度轉換無法存取處理器時,延遲時間有可能會變長。RTX64會控制Windows電源管理選項並取消其功能,使得處理器無法被存取。如果使用者的應用程式可以接受這種程度的延遲,使用者可以重新開啟Windows的閒置偵測。
RTX64支援x2APIC系統的Windows 11/10嗎?
不行,RTX64不支援x2APIC系統,只支援能夠關閉x2APIC的系統。當可行的時候,RTX64安裝程式會關閉x2APIC。
RTX64支援超執行緒 (hyper-threading) 嗎?
RTX64可以在超執行緒系統上使用。RTX64把英特爾超執行緒 (Intel Hyper-Threading) 的邏輯處理器當作一個獨立的處理器。因為兩個邏輯處理器分享同一個實體處理器,其中一個邏輯處理器可能會影響到另一個的效能。建議使用偶數Windows處理程序,這樣Windows邏輯處理器和RTSS邏輯處理器就不會共用一個實體處理器了。建議評估RTX64效能以確保開啟超執行緒功能的時候,也能達到即時需求。
防毒軟體會影響RTX64嗎?
只要RTX64能存取所需的系統資料夾和目錄,RTX64 Runtime就可以和第三方防毒軟體一起使用。如果RTX64沒辦法正常的在第三方防毒軟體系統下運行,建議將RTX64加入防毒軟體規則的例外區。舉例來說,可以指示防毒軟體忽略RTX64的元件RTX_RTSS和RTX_HALEXT等,或忽略RTX64整個安裝資料夾。在某些情況下可能需要忽略二元執行碼所在的資料夾。更多微軟資安功能和RTX64 Runtime在同一個系統上運作的資訊,請參考支援網站的「RTX64 Compatibility with Microsoft Security Features」。
RTX64支援虛擬機器嗎?
採用RTX64 Runtime不建議使用虛擬機器,因為即時子系統在虛擬環境中無法保證決定性。然而虛擬機器可以使用在開發和測試階段。更多訊息請參考技術文件「 Virtual Machines Tested with RTX64/RTX」,裡面有英特蒙內部已使用過並可以和RTX64一起運行的虛擬機器。
注意: 當授權RTX64到一台虛擬機器時,會需要一個dongle。
部署應用程式時需要做哪些準備?
要部署RTSS應用程式,必須在每一台需要執行應用程式的電腦上購買RTX64 Runtime授權。RTX64 Runtime有多種不同的版本,可以按照解決方案所需的處理器數量執行授權。想知道更多部署RTX64的訊息,請參照「RTX64 Deployment Guide」。
可以在另一個安裝程式中啟動RTX64 Runtime安裝程式嗎?
英特蒙提供靜默指令安裝RTX64選項,讓OEM廠商打包RTX64安裝程式並隱藏在另一個安裝程式裡。RTX64 Runtime元件也可當作合併模組包含在OEM產品的安裝程式裡。
如何配置客戶的即時子系統?
英特蒙提供託管程式碼及原生架構來程式設定RTX64子系統。這可以讓客戶配置自己的軟體子系統需求,而不需要終端用戶的幫忙。
如何協助客戶除錯?
在Visual Studio裡,RTX64對使用Visual Studio 2022, 2019, 2017 和2015 (不建議使用) 的RTSS應用程式提供本地及遠端執行和附加的除錯能力。
RTX64也能完美靈活地處理例外狀況。可使用結構化例外處理器配置RTX64、生成除錯中斷或停止行程和傾印記憶體。
RTX64提供WinDbg擴充套件,使用在Windows記憶體傾印檔的postmortem 除錯上。
RTX64也提供了監看功能,不需改變即時應用程式碼即可追蹤應用程式行為。所提供的Tracealyzer是用來分析監看區間資料的圖形化工具。
可以限制終端用戶使用的功能嗎?
可以。一旦RTX64安裝成功,所有登入系統的授權使用者,即使不是電腦或網域管理者,都可控制、配置、並且運行RTX64子系統和RTSS應用程式。系統管理者可藉由設置RTX64Administrators和RTX64Users群組的成員來控制及存取RTX64資源。想知道更多訊息,請參考「RTX64 Runtime Install Guide」。
RTX64如何縮短開發時間?
RTX64是 Windows的擴充套件,因此不需要在開發應用程式之前花時間設計和開發一個新的作業系統。RTX64開發者可利用Windows提供的所有功能來建立使用者介面和應用程式;開發者只需要專注在能讓RTSS應用程式順利運行的即時控制部分就可以了。就算是設計即時控制元件,也能在不需要變更程式碼的前提下,先開發Windows應用程式,再重新編譯成RTSS應用程式。
因為所有的即時API (RTAPI) 呼叫都屬於Windows 合規,開發者可使用既有的呼叫,不需要寫驅動程式碼或遵循嚴格的驅動模式即可配置和使用裝置。
需要特別的開發和除錯工具建立RTSS應用程式嗎?
不需要。可使用微軟的Visual Studio開發RTSS應用程式。RTX64 SDK提供了簡單專案的開發精靈和幫助開始的模板。Visual Studio Debugger支援在熟悉的環境中除錯RTSS應用程式。RTX64藉由在Visual Studio 2022, 2019, 2017, 和2015 (不建議使用) 的執行和本地夾帶,支援本地與遠端除錯,也提供Windows記憶體傾印檔的postmortem除錯 WinDbg擴充套件。
RTX64也支援在Visual Studio IDE使用Intel C++編譯器。
可以使用Windows API呼叫嗎?或者所有RTX64呼叫都是專用的呢?
RTX64支援超過50種在即時環境中有用的Windows API呼叫。
另外,RTX64還提供大量的即時API呼叫讓開發者存取RTSS和系統資源。即時API (RTAPI) 是由一組獨特的API呼叫和Windows-based API呼叫所共同組成。
獨特的即時API呼叫是提供即時應用程式所需基本程式能力的Windows-modelled呼叫,同時還能存取RTSS和系統資源。這些獨特的RTAPI呼叫和Windows 呼叫是不同的。
RTX64支援的Windows-based API呼叫不像是前述的獨特RTAPI呼叫,雖然兩者在Windows環境下有類似的功能,但需要以不同的執行方式來支援RTSS的即時需求。所有Windows-based呼叫都和Windows的程式介面語法相容,使得原本熟悉Windows API的開發者工作起來更簡單。
如何在開發階段善用使用者模式的記憶體保護呢?
RTX64是為了讓開發者能夠研發RTSS或Windows應用程式而設計的。當建立Windows應用程式時,開發者就可利用例如用戶模式記憶體保護,和其他第三方特別給用戶模式應用程式的除錯工具。應用程式按照預期的運行之後,可以在不改變程式碼的情況下重新編譯,使其變成可以在專用處理器的即時子系統裡運行的RTSS應用程式。
RTX64支援結構化例外處理 (Structured Exception Handling)嗎?
不像其他運行在核心模式的應用程式,RTSS應用程式支援結構化例外處理。RTX64讓開發者在RTSS應用程式內呼叫結構化例外處理功能例如try、catch、和throw。舉例來說,如果一個應用程式參照了NULL指標,RTSS 應用程式就可以終止或凍結造成錯誤的應用程式,而不需要關閉整個系統。
可以在RTX64應用程式裡使用微軟的開發函式庫和例如C Runtime的技術嗎?
可以。RTX64支援能從RTSS應用程式呼叫的微軟C Runtime呼叫子集,也支援微軟 Visual Studio 2022, 2019, 2017, 和2015 (不建議使用) 的C Runtime。
RTX64支援SSE和AVX/AVX2嗎?
是的。只要硬體支援,RTX64支援並儲存以下的狀態資訊:AVX/AVX2 (YMM0~YMM15)、AVX-512、SSE (SSE/SSE2/SSE3/SSE4)、和MMX暫存器。
RTX64提供範例程式嗎?
RTX64 SDK包含各種支援功能的詳盡API參考指南以及用來解釋複雜觀念的簡短程式片段。
RTX64 SDK也提供範例程式的原始碼,其中有些是RTX64的測量工具。這些範例可以被編譯和執行,也可以展示重要的概念和應用程式的互動。對於購買技術支援的客戶,英特蒙支援網站也包含了許多RTX64範例程式和工具。
有任何測量的工具嗎?
RTX64提供許多幫助開發者測量系統回應和時間延遲的工具以及API:
- 系統回應時間測量 (SRTM, System Response Timer Measurement) 是一個指令應用程式,用來測量時間延遲並且以報告和直方圖的方式呈現結果。
- 核心系統回應時間測量 (KSRTM, Kernel System Response Timer Measurement) 是一個測量工具,用來測量硬體抽象層等級的時間延遲和中斷服務常式 (ISR),並且以報告和直方圖的方式呈現結果
- Latency View是一個用視覺來比較Windows和RTX64核心時間延遲的工具
- RtPerfMonitor是一個指令程式,用來顯示系統資訊包括RTX64處理器的速度及種類、硬體抽象層類型、CPU的使用率和其他可檢測RTSS應用程式負載的資訊
- 數種用來側寫處理器的API,包含有:
- RtGetThreadTimes會擷取一個執行緒的執行時間
- RtGetProcessTimes會擷取一個RTSS行程的時間資訊
- QueryPerformanceCounter 和 QueryPerformanceFrequency提供在多個處理器之間的精確時間追蹤。
RTX64建立出來的執行緒或物件有數量的限制嗎?
除了一開始為執行緒堆疊所分配的空間外,執行緒和物件創建牽涉到數個小RTSS結構的分佈。子系統並沒有限制執行緒的數量,唯一的限制就是系統上的可用非分頁記憶體大小。
即時應用程式可以跟一般的Windows應用程式溝通嗎?
RTX64讓Windows和RTSS應用程式經由許多行程間通訊 (Inter-Process Communication, IPC) 物件相互溝通。使用RTAPI功能建立可被Windows行程 (32位元和64位元) 檢視和使用的物件。如同Windows的行程間通訊,RTSS和Windows應用程式在即時 (RTSS) 和非即時 (Windows) 應用程式之間,建立或打開控制代碼到已命名物件或記憶體區域上,並允許簡單和標準的通訊與同步。共享記憶體區域 (Shared Memory) 允許Windows和RTSS應用程式檢視同樣的實體記憶體,而不需要在兩個環境間傳送額外的訊息或資料。
標準物件:
- 事件 (Event) – 事件是一個同步物件,對於傳送訊號給執行緒很有用,可以表明一個特定的動作已經發生了。
- 互斥鎖 (Mutex) – 互斥鎖是一個同步物件,當不被任何執行緒擁有的時候,狀態為有訊號 (signaled);反之當被執行緒擁有時,狀態為無訊號 (not signaled)。互斥鎖可評斷一個共享資源是否被獨佔。
- 號誌 (Semaphore) – 號誌是一個同步物件,維持一個0到特定最大數字的計數。當執行緒完成一個號誌物件的等待,計數值就會減1。號誌被釋放的時候,計數值就會增加一個變數。當計數值變為0時,號誌物件的狀態就變成無訊號,也表示沒有執行緒能完成號誌物件等待,直到有別的執行緒增加了計數值。
- 共享記憶體 (Shared Memory) – 共享記憶體物件是一個非分頁實體記憶體的區塊,可以被對映到行程的虛擬位置空間。當一個共享記憶體物件有名字的時候,額外的行程就可以對映到這個記憶體區塊。控制代碼和虛擬位置都可存取共享記憶體。 如果行程想完全終止對共享記憶體的存取,就必須關閉所有開啟的控制代碼。
RTX64如何支援隨插即用裝置?
RTX64是從Windows的隨插即用管理員獲取裝置所需的資源。要做到這一點,裝置的驅動模組必須更新並指向RTX64的隨插即用樁模組 (stub driver)。當裝置被RTX64控制之後,裝置的資源必須更新並要求一個不被Windows使用的獨特中斷。(共享中斷可能會喪失決定性)。請注意只有使用line-based中斷的裝置需要這個獨特中斷。一旦裝置設定好了,任何RTSS應用程式都可存取和使用這個裝置。
RTX64支援Message-based中斷 (MSI/MSI-X) 裝置嗎?
RTX64支援MSI 和 MSI-X裝置,提供除了line-based中斷之外的另一個選擇。 這個功能在所有RTX64支援的作業系統中都可使用。
RTX64的thread-based優先權和Windows的執行緒優先權關係為何?
Windows有一組從0到63的64個優先權層級,這些層級再更進一步的被定義為4種優先權類別,而「即時」優先權是分類中最高的等級。
「即時」優先權分類裡又有7個層級。RTX64則使用127個優先權層級的扁平優先權規則。
RTX64支援優先權提升 (Promotion) 嗎?
當高優先權執行緒等待被低優先權執行緒限制的互斥鎖時,RTX64提供設定下列其中一種優先權反轉協定的選項:
- 分層降級 (Tiered Demotion) 的優先權提升,會提高一個低優先權執行緒的等級到正在等待共享互斥鎖的最高優先權執行緒,直到釋放更高優先權執行緒所要求的互斥鎖。
- 停用 – 當高優先權執行緒等待被低優先權執行緒限制的互斥鎖時,不提升優先權。
RTX64如何保證Windows不會屏蔽即時中斷呢?
RTX64包含了一個即時的硬體抽象層 (HAL) 擴充套件。這個擴充套件不會取代原本的Windows硬體抽象層。這個擴充套件會維持RTSS和Windows之間的中斷獨立。Windows不能夠 (在中斷控制層級) 屏蔽這些由RTSS所管理的中斷。Windows中斷在RTSS的處理器/核心裡是被屏蔽的。即時硬體抽象層擴充套件支援高解析度的RTSS時鐘和計時器,同時也支援非即時的Windows時鐘和計時器。其他的即時硬體抽象層擴充套件功能包含了RTSS和Windows之間的軟體中斷機制、基本的例外管理、以及決定性的加強。硬體抽象層計時器的數值可經由一個事先定義好的數值表來改變,最小可到1微秒,或是可以由SDK指定為一個特定的值。
RTX64如何處理Windows的共享快取和記憶體總線?
RTX64支援英特爾的資源控管技術 (Resource Director Technology , RDT),提供一組資源分配 (或控制) 的能力,以控制例如末級快取記憶體 (LLC) 和記憶體頻寬的共享資源如何被應用程式使用。這些能力包含了快取配置技術 (Cache Allocation Technology, CAT) 和記憶體頻寬配置 (Memory Bandwidth Allocation, MBA)。
在英特爾RDT的主要設定中,RTX64在Windows和RTSS核心間分離了L3/L2的快取空間,藉此排除Windows或其他系統活動造成的的快取記憶體競爭。RTX64將Windows核心設定為最大記憶體節流,而RTSS核心的記憶體節流則為零。為了更進一步區分同時運行的RTSS執行緒效能,RTX64針對CAT和MBA引進了兩種RDT模式: Flat效能模式和Priority-based CLOS效能模式。
更多資訊請參照 「RTX64 Help」。
發生Windows“Stop Conditions”時,該怎麼辦?
Windows的STOP或Bug Check來自於核心級驅動程式或作業系統元件在安全測試時失敗的結果,目的是引導Windows到一個可控的停止狀態。Windows STOP設計用來使資料損毀降到最低和幫助開發者找到出錯的地方。
既然RTSS能在Windows STOP之後繼續運行,開發者可以在RTSS應用程式裡建立一個安全的關機程序。當Windows發布STOP訊號時,RTX64會呼叫關機控制代碼,讓系統即時元件安全的關機。一旦所有的關機代碼都結束執行,RTX64就會讓Windows的關機行程繼續進行。
如果RTSS決定Windows需要關機,RTX64就會發布STOP訊號;此時不會出現傳統的Windows藍色當機畫面,而是出現RTX64的綠色畫面和STOP發生時RTX64的相關狀態資訊。
當Windows當機的時候,系統不會儲存任何狀態。
RTX常見問題
本章節的資訊已更新至RTX 2016 Update 3版本
什麼是即時 (Real-Time)?
「即時」指的是一個應用程式需要在某個小的時間範圍內對一個事件做出回應,通常回應的時間在毫秒或微秒以內。
硬即時和軟即時的不同之處為何?
所謂「硬即時」是指要求其回應是邏輯上正確的,且必須在某個截止期限或結果不正確之前發生,要是失敗了就無法得到任何數值。
所謂「軟即時」是要求其回應也是邏輯上正確的,但必須在某個截止期限或結果漸漸變得不精確之前發生,也就是即使回應發生在所要求的截止期限之後,仍然可以保有某些數值。
在即時環境下,決定性代表了什麼意義?
決定性被定義為能夠理性預測一個事件一定會發生的能力,並且伴隨一定程度的精確性。決定性加上即時環境,保證事件一定會在很小的回應時間內發生,而且這個事件的效能是可以重複的。
什麼是即時作業系統 (RTOS)?
一個經由特定排程器向特定事件回應時,可提供決定性與可預測性的即時作業系統。
微軟的Windows® 是即時作業系統嗎?
Windows通常被認為是一般用途的作業系統,因為它不允許應用程式或核心等級的驅動程式屏蔽中斷和控制整個作業系統。隨著硬體的不同,Windows的中斷延遲可能展現出很好的數值,平均可以在幾微秒內;但在最壞的情況下,中斷延遲有可能是不回應或超過數百毫秒。因為有可能不回應延遲,就無法確保決定性的回應時間,因此標準的Windows桌上型或伺服器的作業系統便無法當作即時使用。
什麼是RTX?
英特蒙的RTX軟體將微軟的Windows轉變成一個即時作業系統 (RTOS)。
對那些需要Windows使用者經驗和硬即時或決定性的專案而言,RTX RTOS 平台可讓OEM製造商和終端用戶善用Windows、X86多核多處理器科技、對稱多處理 (SMP)、以及即時乙太網路 – 所有的功能都整合在同一個開發環境中。
- 降低 25% – 50% 物料清單 (BOM) 成本
- 提升品質與效能
- 快速擴展並縮短產品週期
- 有效減少對專用硬體,例如DSP和MCU的依賴
英特蒙的RTX是一個已被認可且可靠的科技,取得了Saftey Integrity Level 3 (SIL3) 的工業自動化認證,並與許多醫療設備的製造商一同取得FDA Class II認證。
什麼是 SMP?
RTX支援對稱多處理系統 (SMP)。SMP是一種讓作業系統工作和排程使用者執行緒交給可用處理器的電腦架構。依循這個模式,多處理器就可以配置作為即時活動而用, RTSS 執行緒也可以被指派在 RTSS 處理器上執行,並同時運行。
在啟動SMP功能的系統上執行RTX時,可以自行配置有多少個CPU內核指派給Windows,和多少個CPU內核給RTX即時子系統 (Real-time Subsystem, RTSS)。RTX最多可支援SMP系統到31個CPU內核 (數量會根據所授權的版本而不同)。
RTX如何擴充Windows以提供”硬”即時?
RTX的整體設計能讓開發者得到”兩個世界裡最好的”,也就是提供Windows的所有功能和技術,加上在獨立且可控子系統中的”硬”即時行為。RTX包含了即時硬體抽象層 (HAL) 擴充,並且不會取代原先存在的Windows HAL。這個擴充用來維持RTSS和Windows的中斷獨立,同時也提供處理器間中斷 (IPI) 溝通。在共享的環境中,HAL提供了包含排程器的即時子系統,可以讓所有的RTSS應用程式得到比Windows應用程式或Windows作業系統功能更高的優先執行順序。在特定的環境下,即時子系統會將RTSS工作排程到另外的處理器中,而不會被Windows作業系統或Windows 行程干擾。
RTX的好處為何?
RTX Runtime支援一般用途的Windows行程、高效能的即時行程和對商用現成 (COTS) 機器的控制。RTX Runtime可配置加入Windows小型傾印檔案,或如果Windows發生錯誤時,可以控制和安全地關閉即時行程。
RTX SDK提供開發者豐富的行程間通訊以及同步的能力,允許RTSS應用程式和Windows應用程式溝通並分享資料。除此之外,RTX提供開發者直接存取I/O位址空間、實體記憶體或硬體的能力,並且不需強制執行驅動程式。
在SMP系統上使用RTX的好處有哪些?
在SMP系統上使用RTX能夠提供非常顯著的好處,包含了:
- 效能提升 – 可以指派多個CPU內核給重要、即時的工作。可以在有32個CPU內核的系統上同時跑31個即時執行緒。
- 效能擴展 – 擴展效能不需要重新寫程式。只要改變RTSS和Windows兩邊處理器的數量,就可以調整即時和非即時的效能平衡。
- 可用性高 – 重要的工作可以排程給一個以上的RTSS處理器。
- IRQ Affinity – 可以指定一個專用RTSS處理器給硬體每個部件處理輸入輸出。
- 系統錯誤處理 – 即時工作在系統當機的時候仍可運行。
同一個應用程式能在RTX的任何一個版本上運行嗎?
RTX Runtime有幾個不同版本,並針對解決方案授權給所需要的處理器數量。RTX產品的版本有:
版本… | 支援即時操作的… |
---|---|
單機版 | 在多核/多處理器的環境中使用1個專用RTSS處理器 |
入門版 | 在多核/多處理器的環境中最多使用2個專用RTSS處理器 |
基礎版 | 在多核/多處理器的環境中最多使用3個專用RTSS處理器 |
專業版 | 在多核/多處理器的環境中最多使用7個專用RTSS處理器 |
進階版 | 在多核/多處理器的環境中最多使用15個專用RTSS處理器 |
終極版 | 在多核/多處理器的環境中最多使用31個專用RTSS處理器 |
有Runtime的版本都包含同樣的功能。經由SDK所開發的應用程式,可以在同一種RTX的任何一個版本上執行。這樣做讓開發者在開發應用程式的時候有更大的自由。
RTX上市多久了?
RTX在1955年發布,為Windows NT提供一個即時子系統。持續進化的RTX對所有專業版的微軟作業系統提供即時支援。RTX 2016支援多處理器,可在32位元的Windows 7 和Windows Embedded Standard 7上執行。
RTX最新版本為何?
最新版本是2019年發布的RTX 2016 with Update 3。
哪種產業或產品會使用RTX?
RTX用在各式各樣不同的產品以及垂直整合的市場。任何人想要需要設計系統控制、決定性與Windows即時效能的應用程式,都可以藉由導入RTX到產品設計而得到助益。
RTX會被用到下列市場中:
- 工業自動化
- 數位音訊
- 測試及測量
- 醫療
- 軍事航空
RTX有幾種套件?
英特蒙提供六種版本的RTX Runtime:
版本… | 支援即時操作的… |
---|---|
單機版 | 在多核/多處理器的環境中使用1個專用RTSS處理器 |
入門版 | 在多核/多處理器的環境中最多使用2個專用RTSS處理器 |
基礎版 | 在多核/多處理器的環境中最多使用3個專用RTSS處理器 |
專業版 | 在多核/多處理器的環境中最多使用7個專用RTSS處理器 |
進階版 | 在多核/多處理器的環境中最多使用15個專用RTSS處理器 |
終極版 | 在多核/多處理器的環境中最多使用31個專用RTSS處理器 |
我可以導入RTX安裝到自己的產品中嗎?
可用下列幾種方法安裝RTX 2016 Runtime:
- RTX安裝 – RTX 2016可使用靜默安裝、指令執行安裝程式或者在自己的產品安裝中啟動,因此安裝過程中不需跟使用者互動。也可使用Windows Embedded Standard 7 Image Configuration Editor (ICE) 把RTX 安裝程式當作一個Distribution Share元件。靜默安裝是由OEM/Site授權並且包含在試用版中。
- RTX Runtime的合併模組功能 – RTX元件可被視為合併模組,包含在OEM產品的安裝程式中並且由OEM/Site授權。另外的安裝程式會將合併模組放置於系統以供使用。試用版本也提供合併模組。
想了解更多資訊,請看RTX部署指南。
RTX Runtime有哪些功能?
RTX Runtime有下列功能:
- 擴充Windows HAL以支援即時控制與中斷獨立
- 可以在共享配置或多核心專用配置裡將所有RTSS執行緒排程在Windows執行緒之前的排程器
- 支援Windows應用程式和RTSS應用程式之間的通訊
- 支援Windows核心驅動程式和RTSS應用程式之間的通訊
- 支援RTSS行程與socket level雙向通訊的網路
- 可配置RTX子系統的控制台
- 展示RTSS行程並輸出到控制台視窗
- 指令工具用來控制RTSS應用程式的開始與結束
- 可以展示物件和執行應用程式側寫的有用工具
- 完整使用說明及用戶指南
想知道更多RTX和RTX64之間的差別,請看RTX與RTX64的比較指南在客戶中心
RTX SDK有哪些功能?
RTX SDK包含下列元件:
- 標頭檔和函式庫
- 支援Visual Studio 2015和 2013
- 支援微軟C Runtime
- 開發精靈
- 即時除錯程式
- 微軟 WinDbg的Debugger Data Extension
- 完整使用說明以及精簡教學指南
- 幫助解釋更多進階開發主題的原始碼樣本
如何啟動 RTX?
必須要有效的授權才能啟動 RTX元件。用戶可使用RTX 啟動及配置工具,這個程式會在主程式安裝之後馬上出現,並啟動和鎖定產品在特定的機器或英特蒙提供的dongle上。關於第一次啟動訊息,請看RTX安裝指南或RTX部署指南。
啟動RTX的方法會根據是否連接到網路而不同。另外還有連接網路和不連網路的啟動程序影片,可以在這裡看到:https://www.intervalzero.com/tw/tw-resources/tw-videos/.
RTX有任何硬體或平台的要求嗎?
RTX Runtime可在任何支援Windows的商用現成 (COTS) 平台上執行。RTX支援行動處理器、多處理器、以及多核心平台。然而,因為並非所有系統都是相同的,開發者必須評估他們選擇平台的延遲時間,以確保平台能支援即時或控制的需求。RTX也可在超執行緒 (hyper-threaded) 系統上使用,但建議先評估RTX的效能,以確保超執行緒開啟時能達到即時需求。
RTX支援處理器叢集嗎?
RTX能夠運行在最多32個處理器的系統上。
- 硬體不強制處理器叢集並包含8個或8個以內處理器的系統,可以把1到7個處理器指派給Windows系統,其餘的指派給RTX。
- 超過8個處理器(但不超過32個)、或低於8個且硬體會強制處理器叢集的系統,可以以Dedicated (Cluster) 模式運行。在這些系統中,最多可指派4個處理器給Windows,31個處理器給RTX。
可經由RTX啟動及配置工具指派可用的處理器給Windows或RTX。RTX啟動工具會自動偵測系統上有多少個處理器。更多訊息請參考 RTX Help的「Configuring your System」。
RTX可以用在行動處理器系統嗎?
RTX可以用在行動處理器系統。但是因為行動處理器在Windows閒置的時候會以英特爾的 SpeedStep®科技來降低處理器速度和保存能源,所以當速度轉換無法存取處理器時,延遲時間有可能會變長。RTX可藉由禁止處理器變動速度,排除這些有可能的延遲。
RTX支援超執行緒 (hyper-threading) 嗎?
RTX可以在超執行緒系統上使用。RTX把英特爾超執行緒 (Intel Hyper-Threading) 的邏輯處理器當作一個獨立的處理器,因此可設置RTX以支援共享或專用多處理器。也因為兩個邏輯處理器分享同一個實體處理器,其中一個邏輯處理器可能會影響到另一個的效能。建議評估RTX效能以確保開啟超執行緒功能的時候,也能達到即時需求。
RTX支援實體位址擴充 (Physical Address Extension, PAE)嗎?
RTX支援所有支援PAE的Windows版本。在RTX 2009 SP1之前,只有在共享配置上才能支援PAE。因為RTX仰賴Windows管理記憶體分頁(把虛擬位址轉換成實體位址),因此RTX無法存取沒有分頁表項的實體記憶體。為了讓64位元和32位元Windows的主要實體記憶體被限制在最多4GB,系統開機時也會啟用PAE。
想知道更多資訊,請看微軟PAE的文章 http://technet.microsoft.com/en-us/library/cc736309.
RTX支援資料執行防止 (Data Execution Prevention , DEP)嗎?
是的,RTX支援DEP。
RTX有任何工具可以協助挑選最適合即時需求的平台嗎?
RTX SDK包含了Platform Evaluator工具,可執行許多延遲測量的測試以決定平台是否符合即時和控制需求。
部署應用程式時需要做哪些準備?
要部署RTSS應用程式,必須在每一台需要執行應用程式的系統上購買RTX Runtime授權。RTX Runtime有多種不同的版本,可以按照解決方案所需的處理器數量執行授權。想知道更多部署RTX的訊息,請參照「RTX Deployment Guide」。
可以在另一個安裝程式中啟動RTX Runtime安裝程式嗎?
英特蒙提供靜默指令安裝RTX選項,讓OEM廠商打包RTX安裝程式並隱藏在另一個安裝程式裡。RTX Runtime元件也可當作合併模組包含在OEM產品的安裝程式裡。同時也提供試用版。
如何配置客戶的即時子系統?
英特蒙提供專用API來程式設定RTX子系統。這可以讓客戶配置自己的軟體子系統需求,而不需要終端用戶的幫忙。
如何協助客戶除錯?
在Visual Studio裡,RTX對使用Visual Studio 2015和2013的RTSS應用程式提供遠端除錯能力。
RTX也能完美靈活地處理例外狀況。可使用結構化例外處理器配置RTX、生成除錯中斷或停止行程和傾印記憶體。
追蹤API允許開發者在子系統追蹤中建立客製化的追蹤事件,以查明有問題的區域。
RTX可被配置並增加主動RTSS行程資訊到Windows的minidump檔,以提供給微軟WinDbg分析。WinDbg 的RTX Debugger Data Extension可幫助了解RTSS的狀態和所有在當機時的RTSS行程- 不管是現場核心除錯時發生的或來自於客戶系統的kernel dump。
可以限制終端用戶使用的功能嗎?
可以。一旦RTX安裝成功,所有登入系統的授權使用者,即使不是電腦或網域管理者,都可控制、配置、並且運行RTX子系統和RTSS應用程式。系統管理者可藉由設置RTXAdministrators和RTXUsers群組的成員來控制及存取RTX資源。想知道更多訊息,請參考「RTX Install Guide」。
RTX如何縮短開發時間?
因為RTX是 Windows的擴充套件,所以不需要在開發應用程式之前花時間設計和開發一個新的作業系統。RTX開發者可利用Windows提供的所有功能來建立使用者介面和應用程式;開發者只需要專注在能讓RTSS應用程式順利運行的即時控制部分就可以了。就算是設計即時控制元件,也能在不需要變更程式碼的前提下,先開發Windows應用程式,再重新編譯成RTSS應用程式。
因為所有的即時API (RTAPI) 呼叫都屬於Win32 合規,開發者可使用既有的呼叫,不需要寫驅動程式碼或遵循嚴格的驅動模式即可配置和使用裝置。
RTX 2016和之前建立的RTSS應用程式相容嗎?
RTX 2016 與RTX 2012 Update 1或以上的版本二進位相容。
需要特別的開發和除錯工具建立RTSS應用程式嗎?
不需要。可使用微軟的Visual Studio開發RTSS應用程式。RTX SDK提供了簡單專案的開發精靈和幫助開始的模板。Visual Studio Debugger外掛支援在熟悉的環境中除錯RTSS應用程式。RTX支援Visual Studio 2015和2013 。
因為RTSS應用程式以核心模式運行,所以能夠使用核心等級的除錯器像是微軟WinDbg。RTX SDK包含WinDbg的RTX Debugger Data Extension,可以檢視正在進行的RTSS行程和物件。
可以使用Win32 API呼叫嗎?或者所有RTX呼叫都是專用的呢?
RTX支援超過50種在即時環境中有用的Win32 API呼叫。
另外,RTX還提供大量的即時API呼叫讓開發者存取RTSS和系統資源。即時API (RTAPI) 是由一組獨特的API呼叫和Win32-based API呼叫所共同組成。
獨特的即時API呼叫是提供即時應用程式所需基本程式能力的Win32-modelled呼叫,同時還能存取RTSS和系統資源。這些獨特的RTAPI呼叫和Win32 呼叫是不同的。
RTX支援的Win32-based API呼叫不像是前述的獨特RTAPI呼叫,雖然兩者在Win32環境下有類似的功能,但需要以不同的執行方式來支援RTSS的即時需求。所有Win32-based呼叫都和Win32的程式介面語法相容,使得原本熟悉 Win32 API的開發者工作起來更簡單。
如何在開發階段善用使用者模式的記憶體保護呢?
RTX是為了讓開發者能夠研發RTSS或Win32應用程式而設計的。當建立Win32應用程式時,開發者就可利用例如用戶模式記憶體保護,和其他第三方特別給用戶模式應用程式的除錯工具。應用程式按照預期的運行之後,可以在不改變程式碼的情況下重新編譯,使其變成可以在核心模式裡運行的RTSS應用程式。
RTX支援結構化例外處理 (Structured Exception Handling)嗎?
不像其他運行在核心模式的應用程式,RTSS應用程式支援結構化例外處理。RTX讓開發者在RTSS應用程式內呼叫結構化例外處理功能例如try、catch、和throw。舉例來說,如果一個應用程式參照了NULL指標,RTSS 應用程式就可以終止或凍結造成錯誤的應用程式,而不需要關閉整個系統。
可以在RTX應用程式裡使用微軟的開發函式庫和例如C Runtime的技術嗎?
可以。RTX支援能從RTSS應用程式呼叫的微軟C Runtime呼叫子集,也支援微軟 Visual Studio 2015和2013 的C Runtime。
可以指派多個IP位址到一個網路卡嗎?
RTX 8.1以及之後的版本支援虛擬IPv4位址。可以指派最多32個虛擬IP位址給單一一個網路卡。
RTX支援SSE和AVX嗎?
是的。只要硬體支援,RTX支援並儲存以下的狀態資訊:AVX/AVX2 (YMM/YMM8)、SSE (SSE/SSE2/SSE3/SSE4)、和MMX暫存器。
需要使用核心除錯器來除錯RTSS應用程式嗎?
不一定要使用核心除錯器來除錯RTSS應用程式。RTX SDK包含了Visual Studio除錯外掛程式,允許開發者在熟悉的Visual Studio開發環境下為以核心模式運行的即時或控制應用程式除錯。Visual Studio 2015 和 Visual Studio 2013的除錯外掛程式也支援遠端除錯,因此開發者可以遠端在有特定硬體需求的目標系統上除錯RTSS應用程式。
但如果想使用微軟WinDbg,RTX SDK即可提供符號以幫助RTSS應用程式除錯,和Debugger Data Extension讓使用者查看RTSS行程、執行緒、以及物件的資訊。請注意WinDbg不能夠在一個專用配置上使用break in 和 step through 程式碼。
有任何用來追蹤的工具嗎?
RTX SDK 提供了一個TimeView工具可設置系統追蹤。這些系統能追蹤時間戳記和紀錄一群可配置的系統與行程事件,允許開發者追蹤在對系統即時效能最小的影響下,即時應用程式的行為。RTAPI也提供了在RTSS應用程式中的儀器追蹤功能。
RTX提供範例程式嗎?
RTX SDK包含各種支援功能的詳盡API參考指南以及用來解釋複雜觀念的簡短程式片段。
RTX SDK也提供範例程式的原始碼,其中有些是RTX的測量工具。這些範例可以被編譯和執行,也可以展示重要的概念和應用程式的互動。
有任何測量的工具嗎?
RTX提供許多幫助開發者測量系統回應和時間延遲的工具以及API:
- 系統回應時間測量 (SRTM, System Response Timer Measurement) – 指令應用程式,用來測量時間延遲並且以報告和直方圖的方式呈現結果。
- 核心系統回應時間測量 (KSRTM, Kernel System Response Timer Measurement) – 驅動程式和Win32的工具,用來測量硬體抽象層等級的時間延遲,並且以報告和直方圖的方式呈現結果
- RTX Demo – 展示時間延遲的SRTM圖形版本
- PerformanceView – 是一個圖像的工具,顯示藉由即時應用程式、Windows行程、以及系統閒置時間的CPU使用率。PerformanceView還可展示在共享系統中RTX佔有CPU的最大時間。
- ObjectViewer – 一種圖形化工具,用來展示RTSS環境中所有正在進行的物件,包含執行緒建立日期、時間、和期間。
- 數種用來側寫處理器的API,包含有:
- RtGetThreadTimes會擷取一個執行緒的執行時間
- QueryPerformanceCounter 和 QueryPerformanceFrequency提供在多個處理器之間的精確時間追蹤。
RTX建立出來的執行緒或物件有數量的限制嗎?
除了一開始為執行緒堆疊所分配的空間外,執行緒和物件創建牽涉到數個小RTSS結構的分佈。子系統並沒有限制執行緒的數量,唯一的限制就是系統上的可用非分頁記憶體大小。
即時應用程式可以跟一般的Windows應用程式溝通嗎?
RTX讓Windows和RTSS應用程式經由許多行程間通訊 (Inter-Process Communication, IPC) 物件相互溝通。使用RTAPI功能建立可被Windows行程檢視和使用的物件。如同Windows的行程間通訊,RTSS和Windows應用程式在即時 (RTSS) 和非即時(Windows) 應用程式之間,建立或打開控制代碼到已命名物件或記憶體區域上,並允許簡單和標準的通訊與同步。共享記憶體區域 (Shared Memory) 允許Windows和RTSS應用程式檢視同樣的實體記憶體,而不需要在兩個環境間傳送額外的訊息或資料。
標準物件:
- 事件 (Event) – 事件是一個同步物件,對於傳送訊號給執行緒很有用,可以表明一個特定的動作已經發生了。
- 互斥鎖 (Mutex) – 互斥鎖是一個同步物件,當不被任何執行緒擁有的時候,狀態為有訊號 (signaled);反之當被執行緒擁有時,狀態為無訊號 (not signaled)。互斥鎖可評斷一個共享資源是否被獨佔。
- 號誌 (Semaphore) – 號誌是一個同步物件,維持一個0到特定最大數字的計數。當執行緒完成一個號誌物件的等待,計數值就會減1。號誌被釋放的時候,計數值就會增加一個變數。當計數值變為0時,號誌物件的狀態就變成無訊號,也表示沒有執行緒能完成號誌物件等待,直到有別的執行緒增加了計數值。
- 共享記憶體 (Shared Memory) – 共享記憶體物件是一個非分頁實體記憶體的區塊,可以被對映到行程的虛擬位置空間。當一個共享記憶體物件有名字的時候,額外的行程就可以對映到這個記憶體區塊。控制代碼和虛擬位置都可存取共享記憶體。 如果行程想完全終止對共享記憶體的存取,就必須關閉所有開啟的控制代碼。
Windows驅動程式能夠跟即時應用程式溝通嗎?
RTX提供一組即時核心API (RTKAPI) 呼叫,允許Windows驅動程式從Windows核心裝置驅動程式存取RTX的行程間通訊物件。這些RTKAPI呼叫和其RTAPI副本是類似的。舉例來說,RtkOpenSemaphore類似於RtOpenSemaphore。
RTKAPI和 RTAPI功能的使用方法是一樣的,但RTKAPI功能專門使用在Windows核心環境中。
RTX如何支援隨插即用裝置?
RTX是從Windows的隨插即用管理員獲取裝置所需的資源。要做到這一點,裝置的驅動模組必須更新並指向RTX的隨插即用樁模組 (stub driver)。當裝置被RTX控制之後,裝置的資源必須更新並要求一個不被Windows使用的獨特中斷。(共享中斷可能會喪失決定性)。一旦裝置設定好了,任何RTSS應用程式都可存取和使用這個裝置。
RTX支援Message-based中斷 (MSI/MSI-X) 裝置嗎?
RTX支援MSI 和 MSI-X裝置,提供除了line-based中斷之外的另一個選擇。 這個功能在所有RTX支援的作業系統中都可使用。
RTX的thread-based優先權和Windows的執行緒優先權關係為何?
Windows有一組從0到31的32個優先權層級,這些層級再更進一步的被定義為4種優先權類別,而「即時」優先權是分類中最高的等級。
「即時」優先權分類裡又有7個層級。RTX則使用127個優先權層級的扁平優先權規則。不管Windows執行緒所獲得的優先層級為何,當有任何RTX任務或執行緒準備要運行時,RTX都會得到系統資源的所有控制權。
所有RTX的優先權都高於Windows的最高優先權。
Windows優先權規則只有在一種時候才可以與RTX優先權相提並論,就是在RTX應用程式以Win32應用程式而不是RTSS應用程式來編譯的時候。這個時候RTX的優先權就會對映到Windows優先權層級。這樣的對映是固定的,並且是設計來保留執行緒優先權的相對順序。
RTX支援優先權提升 (Promotion) 嗎?
當高優先權執行緒等待被低優先權執行緒限制的互斥鎖時,RTX提供設定下列其中一種優先權反轉協定的選項:
- 分層降級 (Tiered Demotion) 的優先權提升 – 會提高一個低優先權執行緒的等級到正在等待共享互斥鎖的最高優先權執行緒,直到釋放更高優先權執行緒所要求的互斥鎖。
- 有限降級(Limited Demotion)的優先權提升 – 提升一個低優先權執行緒到一個正等待共享互斥鎖的最高優先權執行緒等級,直到釋放出所擁有的互斥鎖為止。
- 停用 – 當高優先權執行緒等待被低優先權執行緒限制的互斥鎖時,不提升優先權。
RTX如何保證Windows不會屏蔽即時中斷呢?
RTX包含了一個即時的硬體抽象層 (HAL) 擴充套件。這個擴充套件不會取代原本的Windows硬體抽象層。這個擴充套件會維持RTSS和Windows之間的中斷獨立。Windows不能夠 (在中斷控制層級) 屏蔽這些由RTSS所管理的中斷。Windows中斷在RTSS行程時是被屏蔽的。即時硬體抽象層擴充套件支援高解析度的RTSS時鐘和計時器,同時也支援非即時的Windows時鐘和計時器。其他的即時硬體抽象層擴充套件功能包含了RTSS和Windows之間的軟體中斷機制、基本的例外管理、以及決定性的加強。硬體抽象層計時器的數值可經由一個事先定義好的數值表來改變,最小可到1微秒,或是可以由SDK指定為一個特定的值。
發生Windows“Stop Conditions”時,該怎麼辦?
Windows的STOP或Bug Check來自於核心級驅動程式或作業系統元件在安全測試時失敗的結果,目的是引導Windows到一個可控的停止狀態。Windows STOP設計用來使資料損毀降到最低和幫助開發者找到出錯的地方。
既然RTSS能在Windows STOP之後繼續運行,開發者可以在RTSS應用程式裡建立一個安全的關機程序。當Windows發布STOP訊號時,RTX會呼叫關機控制代碼,讓系統即時元件安全的關機。一旦所有的關機代碼都結束執行,RTX就會讓Windows的關機行程繼續進行。
如果RTSS決定Windows需要關機,RTX就會發布STOP訊號;此時不會出現傳統的Windows藍色當機畫面,而是出現RTX的綠色畫面和STOP發生時RTX6的相關狀態資訊。
當Windows當機的時候,系統不會儲存任何狀態。