INtime實(shí)時操作系統(tǒng)
INtime實(shí)時操作系統(tǒng)(RTOS)
For
Microsoft bbbbbbs XP
Microsoft bbbbbbs XP bbbbbded
Microsoft bbbbbbs XP bbbbbded with Service Pack 1
引言
人們正在越來越多地選擇 Microsoft bbbbbbs XP 和 bbbbbbs XP bbbbbded 操作系統(tǒng)來運(yùn)行需要某種實(shí)時性行為的專用應(yīng)用程序。bbbbbbs XP bbbbbded 與 bbbbbbs XP 桌面軟件基于相同的二進(jìn)制文件,它在許多方面都是可供選擇的最佳平臺,但 bbbbbbs XP bbbbbded 和 bbbbbbs XP 自己無法管理此類系統(tǒng)所需要的具有嚴(yán)格實(shí)時性要求,因此需要增強(qiáng)該平臺的實(shí)時功能。在bbbbbbs XP 平臺上添加實(shí)時擴(kuò)展方案時,已有許多解決方案在 bbbbbbs XP 內(nèi)核設(shè)備驅(qū)動程序提供了某種實(shí)時功能,但此類解決方案沒有考慮到為用戶提供可容易進(jìn)行應(yīng)用程序開發(fā)的應(yīng)用環(huán)境,也沒有考慮對于許多應(yīng)用程序進(jìn)行調(diào)用。TenAsys Corporation 出品的 INtime 軟件可以做到不僅為應(yīng)用程序增加實(shí)時性功能,并且使實(shí)時應(yīng)用程序存在于強(qiáng)大、可靠和可調(diào)用資源的環(huán)境。
主要特性和功能
*成熟的實(shí)時技術(shù)
*無縫實(shí)時運(yùn)行,適用于bbbbbbs XP、bbbbbbs XP bbbbbded、bbbbbbs 2000和bbbbbbs Server 2003
*支持多進(jìn)程或系統(tǒng)(SMP和HT)——用于多進(jìn)程/多處理器的共享或獨(dú)占式實(shí)時資源分配選項(xiàng)
*完全與Microsoft Visual Studio .NET相集成——可編輯、編譯、鏈接和調(diào)試實(shí)時應(yīng)用程序,而無需退出Visual Studio .NET環(huán)境
*集成的聯(lián)機(jī)幫助
*可伸縮的體系結(jié)構(gòu)——實(shí)時應(yīng)用程序可與bbbbbbs一起本地運(yùn)行或跨多節(jié)點(diǎn)運(yùn)行
*用于實(shí)時應(yīng)用程序的完全內(nèi)存保護(hù)和地址隔離
*實(shí)時TCP/IP通信stack——可獨(dú)立于bbbbbbs網(wǎng)絡(luò)stack運(yùn)行
*提供了DeviceNet、PROFIBUS、CANopen和ControlNet等驅(qū)動程序
*實(shí)時USB stack支持OHCI、UHCI和EHCI控制器
*提供了GPIB(IEEE-488)和運(yùn)動控制實(shí)時設(shè)備驅(qū)動程序
*直接I/O和內(nèi)存映射,可訪問所有的硬件
*用于周期性事件中斷的系統(tǒng)計時器粒度,其精度達(dá)100 μs
*郵箱、信號量、警報、區(qū)域和共享內(nèi)存IPC機(jī)制
*EC++庫符合最新的ANSI標(biāo)準(zhǔn)——同時支持異常處理和名稱空間
*可加載實(shí)時庫的實(shí)時共享庫(RSL)
*用于實(shí)時對象瀏覽和崩潰分析的INtime Explorer工具(INtex)
*INscope實(shí)時系統(tǒng)性能分析工具
一 INtime簡介
IRMX® RTOS 技術(shù)的發(fā)展已有25年以上的歷史,非常的成熟、可靠。INtime以此技術(shù)為基礎(chǔ),它將強(qiáng)大的工業(yè)級控制與豐富的bbbbbbs功能相結(jié)合,從而使得應(yīng)用程序能夠充分利用所有bbbbbbs特性和成千上萬現(xiàn)有的應(yīng)用程序,而無需犧牲實(shí)時響應(yīng)。使用TenAsys軟件來執(zhí)行實(shí)時bbbbbbs應(yīng)用程序不僅能夠降低軟件的復(fù)雜性,而且還可以壓縮冗余的硬件成本,顯著地壓縮了產(chǎn)品上市時間。
通過使用INtime軟件,可獲得非常精確且穩(wěn)定的的微秒級響應(yīng)時間,并絲毫不會降低安全性、可靠性和系統(tǒng)性能。正如bbbbbbs應(yīng)用程序在用戶模式下(ring3)執(zhí)行時一樣,通過INtime的保護(hù)模式編程模型來進(jìn)行管理的實(shí)時應(yīng)用程序也可在用戶模式下執(zhí)行,因而獲得高穩(wěn)定性。其他類型的解決方案要求實(shí)時應(yīng)用程序在bbbbbbs內(nèi)核中(ring0)完全無保護(hù)地運(yùn)行,在這種情況下,可導(dǎo)致錯誤指針、棧溢出、頁面錯誤等編程錯誤,這些將會十分明顯的影響到實(shí)時環(huán)境和bbbbbbs環(huán)境的穩(wěn)定性。但是,如果在INtime受保護(hù)的實(shí)時系統(tǒng)內(nèi)部運(yùn)行實(shí)時應(yīng)用程序,就絕對不會發(fā)生這種問題。
TenAsys實(shí)時操作系統(tǒng)已在全球成千上萬種應(yīng)用程序中得到驗(yàn)證,并且至今已無故障運(yùn)行了數(shù)百萬小時。
二INtime 系統(tǒng)體系結(jié)構(gòu)
INtime 是與 bbbbbbs 操作系統(tǒng)共享硬件平臺的實(shí)時操作系統(tǒng)。bbbbbbs中安裝的組件包括一個 bbbbbbs內(nèi)核驅(qū)動程序和一些 bbbbbbs 服務(wù)。該驅(qū)動程序管理用于運(yùn)行內(nèi)核和實(shí)時應(yīng)用程序的內(nèi)存,并且管理這兩個系統(tǒng)之間的通訊接口。
bbbbbbs將實(shí)時內(nèi)核加載到已分配的內(nèi)存中,然后使Context從 bbbbbbs 切換到 INtime 內(nèi)核。將創(chuàng)建一個低優(yōu)先級線程,其功能是將計算機(jī)Context切換回 bbbbbbs 系統(tǒng)。因?yàn)樵摼€程將被所有其他實(shí)時線程占先,所以只要牽涉到實(shí)時內(nèi)核,bbbbbbs 系統(tǒng)都是實(shí)時系統(tǒng)的空閑任務(wù)。 在 INtime中,任何實(shí)時中斷都被直接處理,并且所有其他中斷都在中斷控制器被屏蔽。當(dāng)Context返回到 bbbbbbs 時,這些中斷將被解除屏蔽,以使其可以被 bbbbbbs 正常處理。當(dāng)在 bbbbbbs Context中發(fā)生實(shí)時中斷時,將插入 bbbbbbs IDT 以引起到 INtime Context的上下文切換,以便可以處理中斷。
系統(tǒng)計時器通常在 bbbbbbs 和 INtime 之間共享。硬件計時器被改編以便以 bbbbbbs 要求的速率更高的速率中斷,并且只根據(jù)需要調(diào)用 bbbbbbs 處理程序。通常情況下,INtime 內(nèi)核以高得多的速率(時間間隔可以低至 100μs)獲得計時器中斷,以便提供更精確的計時服務(wù)。計時器處理優(yōu)化能夠避免在 bbbbbbs 和 INtime 之間進(jìn)行不必要的Context切換。
某些硬件抽象層 (HAL) 入口點(diǎn)被截獲和監(jiān)控,以便防止 bbbbbbs 內(nèi)核執(zhí)行某些不需要的操作,例如屏蔽實(shí)時中斷或者更改硬件系統(tǒng)計時器頻率。HAL 文件不是由軟件修改或替換的。
INtime 內(nèi)核為實(shí)時虛擬機(jī)提供操作系統(tǒng)服務(wù)。它提供此類內(nèi)核通常會提供的實(shí)時服務(wù),包括一個基于優(yōu)先級的搶先式計劃程序,該程序執(zhí)行基于優(yōu)先級的中斷處理。線程優(yōu)先級的范圍是從 0(最高優(yōu)先級)到 255(最低優(yōu)先級),低于可配置的優(yōu)先級閾值的線程可以與多個具有相同優(yōu)先級的線程分享其時間片。內(nèi)核計劃程序已經(jīng)進(jìn)行優(yōu)化,以獲得最佳的中斷性能。得到的平臺表現(xiàn)出良好的性能,最重要的是它的行為是可預(yù)測的。
1 應(yīng)用程序環(huán)境
INtime 應(yīng)用程序環(huán)境被設(shè)計為具有下列功能:
每個進(jìn)程都是其他對象(包括線程和物理內(nèi)存)的容器。由該進(jìn)程所屬線程創(chuàng)建的每個對象都由該進(jìn)程所有,并且在進(jìn)程終止時不再存在。
每個進(jìn)程都具有一個與其他進(jìn)程的地址空間隔離的平面虛擬地址空間。進(jìn)程中的代碼以用戶模式(IA 權(quán)限等級 3)執(zhí)行,從而防止意外訪問系統(tǒng)對象和數(shù)據(jù)。
每個進(jìn)程都可以直接訪問處理器的輸入/輸出 (I/O) 空間,而且可以直接訪問物在任何進(jìn)程中,都可以通過系統(tǒng)調(diào)用以及用戶為中斷處理程序和線程編寫的代碼來直接處理中斷。
錯誤是按進(jìn)程分別處理的。默認(rèn)情況下會掛起出錯的線程,并且向全局郵箱中寫入一個記錄??梢愿哪J(rèn)操作,以便能夠在出錯地址進(jìn)入靜態(tài)系統(tǒng)調(diào)試器或應(yīng)用程序調(diào)試器。進(jìn)程還可以選擇獲得有關(guān)該進(jìn)程中錯誤的通知。
2 提供了多個 API 以便進(jìn)程可以使用系統(tǒng)服務(wù)。下面的部分中將詳細(xì)介紹這些 API。
通過將請求轉(zhuǎn)發(fā)給 bbbbbbs 服務(wù)以執(zhí)行所請求的操作,向?qū)崟r應(yīng)用程序提供 bbbbbbs 服務(wù)(對注冊表、事件日志和文件系統(tǒng)的訪問)。
實(shí)時 API
INtime 內(nèi)核提供的標(biāo)準(zhǔn) API 提供了適合于同步和通訊的對象,以及在進(jìn)程之間(包括 INtime 和 bbbbbbs 進(jìn)程之間)共享內(nèi)存的手段。所有對象都通過句柄引用,并且所有句柄對于實(shí)時系統(tǒng)都是全局的。對象包括:
(1)進(jìn)程
進(jìn)程擁有其他對象(包括其他進(jìn)程)和物理內(nèi)存。當(dāng)進(jìn)程創(chuàng)建時,將向其分配一個內(nèi)存池,它限制了可以分配給該進(jìn)程的物理內(nèi)存的數(shù)量。盡管 INtime 內(nèi)核使用分頁硬件進(jìn)行內(nèi)存管理,但它并不采用請求調(diào)頁功能。因此,進(jìn)程被限制在它可以分配的物理內(nèi)存量的范圍內(nèi)。進(jìn)程還具有對象編錄,可以在此命名對象。可以按名稱搜索該編錄。
(2)線程
線程總是由某個進(jìn)程所有,并且線程所創(chuàng)建的對象由其進(jìn)程所有。線程會被分配一個優(yōu)先級,范圍為從 0 到 254,其中 0 是最高優(yōu)先級。
(3)信號量
這些同步對象由一個線程隊列和一個計數(shù)器組成,類似于 Microsoft Win32 信號量。對象創(chuàng)建時,所有 INtime 線程隊列都可以被指定為先入先出 (FIFO) 隊列或優(yōu)先級隊列。如果是 FIFO 隊列,則線程按照等待順序排隊;如果是優(yōu)先級隊列,則線程的排隊方式為優(yōu)先級較高的線程出現(xiàn)在隊頭。
(4)區(qū)域
這些對象是單個單元信號量,帶有防止優(yōu)先級顛倒的保護(hù)。它們采用標(biāo)準(zhǔn)的優(yōu)先級提升技術(shù),以避免這種情況。另外,擁有區(qū)域的線程不能刪除,除非它放棄該區(qū)域。這些對象類似于 Win32 臨界區(qū)。
(5)郵箱
這些對象由一個線程隊列和一個消息隊列組成。郵箱可以將兩種類型的消息排隊。消息可以是其他對象的句柄,也可以是最多包含 128 個字節(jié)的數(shù)據(jù)消息。在 Win32 中沒有直接等效的對象。
(6)堆
堆對象類似于 bbbbbbs 堆。它為應(yīng)用程序提供動態(tài)內(nèi)存源。
其他內(nèi)存對象
可以為內(nèi)存區(qū)域創(chuàng)建一個句柄,并且隨后將該句柄傳遞給另一個進(jìn)程以進(jìn)行映射。然后,可以從這兩個進(jìn)程中訪問該內(nèi)存。
實(shí)時 API 提供參數(shù)檢查和內(nèi)聯(lián)狀態(tài)報告。
(1) Win32 API
盡管 Win32 API 缺少一些用于實(shí)時編程的有用功能,INtime 仍然提供了一個 Win32 API,以便方便地從 bbbbbbs 應(yīng)用程序傳輸代碼。該實(shí)現(xiàn)是 bbbbbbs CE Win32 實(shí)現(xiàn)的豐富子集,包括 Win32 對象的有用子集 (Waitbbbbultiplebbbbbbs),并帶有擴(kuò)展以管理中斷和外圍設(shè)備互聯(lián) (PCI) 總線配置。
(2) bbbbbbs API
為 bbbbbbs 應(yīng)用程序提供了 API,以使其能夠共享在實(shí)時內(nèi)核上創(chuàng)建的對象。標(biāo)準(zhǔn)的實(shí)時對象和 Win32 對象都是可共享的,以便 bbbbbbs 和實(shí)時應(yīng)用程序可以同步和共享數(shù)據(jù)。阻塞調(diào)用由實(shí)時內(nèi)核上的代理線程池處理。
(3)C 庫與 C++ 支持
INtime 提供了美國國家標(biāo)準(zhǔn)局(與 ANSI 兼容)的 C 庫,以及用標(biāo)準(zhǔn)模板庫 (STL) 提供了對 EC++ (bbbbbded C++) ANSI 標(biāo)準(zhǔn)的支持。
(4)其他服務(wù)
提供了一個傳輸控制協(xié)議/網(wǎng)際協(xié)議 (TCP/IP) 的協(xié)議組,它派生于 BSD Net3 體系結(jié)構(gòu)。為 Inbbb、3Com 和 Realtek 接口適配器提供了以太網(wǎng)驅(qū)動程序,并且為與 NE2000 兼容的 ISA 接口提供了以太網(wǎng)驅(qū)動程序。通過串行線路網(wǎng)際協(xié)議 (SLIP) 支持串行鏈路。 以開發(fā)工具包的形式提供了 USB 支持,以便開發(fā) USB 客戶端軟件。為 Universal Host Controller (UHCI)、Open Host Controller (OHCI) 和 Enhanced Host Controller (EHCI) 接口提供了標(biāo)準(zhǔn)驅(qū)動程序。為一系列標(biāo)準(zhǔn)接口和行業(yè)接口提供了其他驅(qū)動程序。
(5)可靠性功能
INtime 的用于增強(qiáng)可靠性的功能包括針對非災(zāi)難性系統(tǒng)錯誤的異常處理以及 Distributed System Manager (DSM) ,它可以監(jiān)控 INtime 和 bbbbbbs 進(jìn)程,并可以在 bbbbbbs 操作系統(tǒng)失敗時進(jìn)行檢測和提供幫助。
(6)異常處理
INtime 內(nèi)核設(shè)計所關(guān)注的主要問題之一是提供處理系統(tǒng)異常錯誤(一般性保護(hù)錯誤、頁面錯誤、堆棧錯誤等等)的非災(zāi)難性手段,并且盡量減少對實(shí)時內(nèi)核和 bbbbbbs 系統(tǒng)的損害。因此,實(shí)時系統(tǒng)具有一個默認(rèn)異常處理程序,該程序會向全局郵箱中寫入一個記錄,詳細(xì)描述出錯的線程及其環(huán)境,然后掛起出錯的線程??梢詮?INtime 或 bbbbbbs 系統(tǒng)中監(jiān)控該郵箱,并且存在可以從錯誤記錄中提取信息(包括寄存器轉(zhuǎn)儲、堆棧跟蹤和相關(guān)調(diào)試信息)的工具。
(7)Distributed System Manager
Distributed System Manager(“DSM”)是一個協(xié)作性多進(jìn)程應(yīng)用程序,用于管理整個 INtime 系統(tǒng)。任何進(jìn)程(bbbbbbs 或 INtime)都可以選擇監(jiān)控任何其他參與協(xié)作的進(jìn)程,或者被其他參與協(xié)作的進(jìn)程監(jiān)控。如果被監(jiān)控的進(jìn)程被刪除,或者到該進(jìn)程的通訊途徑被中斷,或者 bbbbbbs 系統(tǒng)或 INtime 系統(tǒng)被破壞,都會向監(jiān)控進(jìn)程發(fā)送通知消息??梢允褂迷摲?wù)來提供系統(tǒng)級完整性。
(8)bbbbbbs 停止處理
DSM 的一個重要優(yōu)點(diǎn)是它能夠檢測到 bbbbbbs 平臺何時失敗。如果出現(xiàn)這種情況,INtime 內(nèi)核中的 DSM 軟件將通知所有參與的進(jìn)程 bbbbbbs 已經(jīng)失敗,并且還將負(fù)責(zé)調(diào)度 bbbbbbs 的線程掛起。此時,INtime 內(nèi)核可以繼續(xù)無限期地執(zhí)行其進(jìn)程,而這些進(jìn)程可以選擇在此情況下采取特殊操作,例如使外圍設(shè)備進(jìn)入已知狀態(tài)。在稍后某個時刻,實(shí)時進(jìn)程可以選擇恢復(fù) bbbbbbs 線程,并使 bbbbbbs 可以繼續(xù)關(guān)閉和重置計算機(jī)。
(9)可擴(kuò)展性功能
INtime 操作系統(tǒng)能夠支持復(fù)雜的大型應(yīng)用程序。在上述共享體系結(jié)構(gòu)中,已經(jīng)發(fā)現(xiàn)典型的平臺能夠允許 INtime 內(nèi)核消耗 CPU 帶寬的 50% 到 60%,然后 bbbbbbs 圖形用戶界面 (GUI) 和其他服務(wù)才會開始受到不利影響。INtime 中獨(dú)立內(nèi)核的優(yōu)勢是可以將它重定位到另一 CPU 或另一平臺,從而使應(yīng)用程序能夠隨著其對平臺的需求的增加而擴(kuò)大規(guī)模。接口模式將從虛擬機(jī)體系結(jié)構(gòu)更改為共享內(nèi)存,然后又更改為物理通訊鏈路(如以太網(wǎng)或串行線路),但 bbbbbbs 和實(shí)時應(yīng)用程序之間的軟件接口不會改變。這樣,無論選擇了哪種硬件體系結(jié)構(gòu),都可以使用相同的二進(jìn)制文件。
3 小結(jié)
TenAsys Corporation 的 INtime 軟件被設(shè)計為不僅能夠向 bbbbbbs 平臺添加實(shí)時功能,而且其添加這些功能的方式能夠?yàn)閷?shí)時應(yīng)用程序提供可靠且可伸縮的平臺。如果將該解決方案與 bbbbbbs XP bbbbbded 配合使用,則能夠?yàn)槟那度胧皆O(shè)備提供強(qiáng)大的、可擴(kuò)展的、確定性的操作系統(tǒng)。
For
Microsoft bbbbbbs XP
Microsoft bbbbbbs XP bbbbbded
Microsoft bbbbbbs XP bbbbbded with Service Pack 1
引言
人們正在越來越多地選擇 Microsoft bbbbbbs XP 和 bbbbbbs XP bbbbbded 操作系統(tǒng)來運(yùn)行需要某種實(shí)時性行為的專用應(yīng)用程序。bbbbbbs XP bbbbbded 與 bbbbbbs XP 桌面軟件基于相同的二進(jìn)制文件,它在許多方面都是可供選擇的最佳平臺,但 bbbbbbs XP bbbbbded 和 bbbbbbs XP 自己無法管理此類系統(tǒng)所需要的具有嚴(yán)格實(shí)時性要求,因此需要增強(qiáng)該平臺的實(shí)時功能。在bbbbbbs XP 平臺上添加實(shí)時擴(kuò)展方案時,已有許多解決方案在 bbbbbbs XP 內(nèi)核設(shè)備驅(qū)動程序提供了某種實(shí)時功能,但此類解決方案沒有考慮到為用戶提供可容易進(jìn)行應(yīng)用程序開發(fā)的應(yīng)用環(huán)境,也沒有考慮對于許多應(yīng)用程序進(jìn)行調(diào)用。TenAsys Corporation 出品的 INtime 軟件可以做到不僅為應(yīng)用程序增加實(shí)時性功能,并且使實(shí)時應(yīng)用程序存在于強(qiáng)大、可靠和可調(diào)用資源的環(huán)境。
主要特性和功能
*成熟的實(shí)時技術(shù)
*無縫實(shí)時運(yùn)行,適用于bbbbbbs XP、bbbbbbs XP bbbbbded、bbbbbbs 2000和bbbbbbs Server 2003
*支持多進(jìn)程或系統(tǒng)(SMP和HT)——用于多進(jìn)程/多處理器的共享或獨(dú)占式實(shí)時資源分配選項(xiàng)
*完全與Microsoft Visual Studio .NET相集成——可編輯、編譯、鏈接和調(diào)試實(shí)時應(yīng)用程序,而無需退出Visual Studio .NET環(huán)境
*集成的聯(lián)機(jī)幫助
*可伸縮的體系結(jié)構(gòu)——實(shí)時應(yīng)用程序可與bbbbbbs一起本地運(yùn)行或跨多節(jié)點(diǎn)運(yùn)行
*用于實(shí)時應(yīng)用程序的完全內(nèi)存保護(hù)和地址隔離
*實(shí)時TCP/IP通信stack——可獨(dú)立于bbbbbbs網(wǎng)絡(luò)stack運(yùn)行
*提供了DeviceNet、PROFIBUS、CANopen和ControlNet等驅(qū)動程序
*實(shí)時USB stack支持OHCI、UHCI和EHCI控制器
*提供了GPIB(IEEE-488)和運(yùn)動控制實(shí)時設(shè)備驅(qū)動程序
*直接I/O和內(nèi)存映射,可訪問所有的硬件
*用于周期性事件中斷的系統(tǒng)計時器粒度,其精度達(dá)100 μs
*郵箱、信號量、警報、區(qū)域和共享內(nèi)存IPC機(jī)制
*EC++庫符合最新的ANSI標(biāo)準(zhǔn)——同時支持異常處理和名稱空間
*可加載實(shí)時庫的實(shí)時共享庫(RSL)
*用于實(shí)時對象瀏覽和崩潰分析的INtime Explorer工具(INtex)
*INscope實(shí)時系統(tǒng)性能分析工具
一 INtime簡介
IRMX® RTOS 技術(shù)的發(fā)展已有25年以上的歷史,非常的成熟、可靠。INtime以此技術(shù)為基礎(chǔ),它將強(qiáng)大的工業(yè)級控制與豐富的bbbbbbs功能相結(jié)合,從而使得應(yīng)用程序能夠充分利用所有bbbbbbs特性和成千上萬現(xiàn)有的應(yīng)用程序,而無需犧牲實(shí)時響應(yīng)。使用TenAsys軟件來執(zhí)行實(shí)時bbbbbbs應(yīng)用程序不僅能夠降低軟件的復(fù)雜性,而且還可以壓縮冗余的硬件成本,顯著地壓縮了產(chǎn)品上市時間。
通過使用INtime軟件,可獲得非常精確且穩(wěn)定的的微秒級響應(yīng)時間,并絲毫不會降低安全性、可靠性和系統(tǒng)性能。正如bbbbbbs應(yīng)用程序在用戶模式下(ring3)執(zhí)行時一樣,通過INtime的保護(hù)模式編程模型來進(jìn)行管理的實(shí)時應(yīng)用程序也可在用戶模式下執(zhí)行,因而獲得高穩(wěn)定性。其他類型的解決方案要求實(shí)時應(yīng)用程序在bbbbbbs內(nèi)核中(ring0)完全無保護(hù)地運(yùn)行,在這種情況下,可導(dǎo)致錯誤指針、棧溢出、頁面錯誤等編程錯誤,這些將會十分明顯的影響到實(shí)時環(huán)境和bbbbbbs環(huán)境的穩(wěn)定性。但是,如果在INtime受保護(hù)的實(shí)時系統(tǒng)內(nèi)部運(yùn)行實(shí)時應(yīng)用程序,就絕對不會發(fā)生這種問題。
TenAsys實(shí)時操作系統(tǒng)已在全球成千上萬種應(yīng)用程序中得到驗(yàn)證,并且至今已無故障運(yùn)行了數(shù)百萬小時。
二INtime 系統(tǒng)體系結(jié)構(gòu)
INtime 是與 bbbbbbs 操作系統(tǒng)共享硬件平臺的實(shí)時操作系統(tǒng)。bbbbbbs中安裝的組件包括一個 bbbbbbs內(nèi)核驅(qū)動程序和一些 bbbbbbs 服務(wù)。該驅(qū)動程序管理用于運(yùn)行內(nèi)核和實(shí)時應(yīng)用程序的內(nèi)存,并且管理這兩個系統(tǒng)之間的通訊接口。
bbbbbbs將實(shí)時內(nèi)核加載到已分配的內(nèi)存中,然后使Context從 bbbbbbs 切換到 INtime 內(nèi)核。將創(chuàng)建一個低優(yōu)先級線程,其功能是將計算機(jī)Context切換回 bbbbbbs 系統(tǒng)。因?yàn)樵摼€程將被所有其他實(shí)時線程占先,所以只要牽涉到實(shí)時內(nèi)核,bbbbbbs 系統(tǒng)都是實(shí)時系統(tǒng)的空閑任務(wù)。 在 INtime中,任何實(shí)時中斷都被直接處理,并且所有其他中斷都在中斷控制器被屏蔽。當(dāng)Context返回到 bbbbbbs 時,這些中斷將被解除屏蔽,以使其可以被 bbbbbbs 正常處理。當(dāng)在 bbbbbbs Context中發(fā)生實(shí)時中斷時,將插入 bbbbbbs IDT 以引起到 INtime Context的上下文切換,以便可以處理中斷。
系統(tǒng)計時器通常在 bbbbbbs 和 INtime 之間共享。硬件計時器被改編以便以 bbbbbbs 要求的速率更高的速率中斷,并且只根據(jù)需要調(diào)用 bbbbbbs 處理程序。通常情況下,INtime 內(nèi)核以高得多的速率(時間間隔可以低至 100μs)獲得計時器中斷,以便提供更精確的計時服務(wù)。計時器處理優(yōu)化能夠避免在 bbbbbbs 和 INtime 之間進(jìn)行不必要的Context切換。
某些硬件抽象層 (HAL) 入口點(diǎn)被截獲和監(jiān)控,以便防止 bbbbbbs 內(nèi)核執(zhí)行某些不需要的操作,例如屏蔽實(shí)時中斷或者更改硬件系統(tǒng)計時器頻率。HAL 文件不是由軟件修改或替換的。
INtime 內(nèi)核為實(shí)時虛擬機(jī)提供操作系統(tǒng)服務(wù)。它提供此類內(nèi)核通常會提供的實(shí)時服務(wù),包括一個基于優(yōu)先級的搶先式計劃程序,該程序執(zhí)行基于優(yōu)先級的中斷處理。線程優(yōu)先級的范圍是從 0(最高優(yōu)先級)到 255(最低優(yōu)先級),低于可配置的優(yōu)先級閾值的線程可以與多個具有相同優(yōu)先級的線程分享其時間片。內(nèi)核計劃程序已經(jīng)進(jìn)行優(yōu)化,以獲得最佳的中斷性能。得到的平臺表現(xiàn)出良好的性能,最重要的是它的行為是可預(yù)測的。
1 應(yīng)用程序環(huán)境
INtime 應(yīng)用程序環(huán)境被設(shè)計為具有下列功能:
每個進(jìn)程都是其他對象(包括線程和物理內(nèi)存)的容器。由該進(jìn)程所屬線程創(chuàng)建的每個對象都由該進(jìn)程所有,并且在進(jìn)程終止時不再存在。
每個進(jìn)程都具有一個與其他進(jìn)程的地址空間隔離的平面虛擬地址空間。進(jìn)程中的代碼以用戶模式(IA 權(quán)限等級 3)執(zhí)行,從而防止意外訪問系統(tǒng)對象和數(shù)據(jù)。
每個進(jìn)程都可以直接訪問處理器的輸入/輸出 (I/O) 空間,而且可以直接訪問物在任何進(jìn)程中,都可以通過系統(tǒng)調(diào)用以及用戶為中斷處理程序和線程編寫的代碼來直接處理中斷。
錯誤是按進(jìn)程分別處理的。默認(rèn)情況下會掛起出錯的線程,并且向全局郵箱中寫入一個記錄??梢愿哪J(rèn)操作,以便能夠在出錯地址進(jìn)入靜態(tài)系統(tǒng)調(diào)試器或應(yīng)用程序調(diào)試器。進(jìn)程還可以選擇獲得有關(guān)該進(jìn)程中錯誤的通知。
2 提供了多個 API 以便進(jìn)程可以使用系統(tǒng)服務(wù)。下面的部分中將詳細(xì)介紹這些 API。
通過將請求轉(zhuǎn)發(fā)給 bbbbbbs 服務(wù)以執(zhí)行所請求的操作,向?qū)崟r應(yīng)用程序提供 bbbbbbs 服務(wù)(對注冊表、事件日志和文件系統(tǒng)的訪問)。
實(shí)時 API
INtime 內(nèi)核提供的標(biāo)準(zhǔn) API 提供了適合于同步和通訊的對象,以及在進(jìn)程之間(包括 INtime 和 bbbbbbs 進(jìn)程之間)共享內(nèi)存的手段。所有對象都通過句柄引用,并且所有句柄對于實(shí)時系統(tǒng)都是全局的。對象包括:
(1)進(jìn)程
進(jìn)程擁有其他對象(包括其他進(jìn)程)和物理內(nèi)存。當(dāng)進(jìn)程創(chuàng)建時,將向其分配一個內(nèi)存池,它限制了可以分配給該進(jìn)程的物理內(nèi)存的數(shù)量。盡管 INtime 內(nèi)核使用分頁硬件進(jìn)行內(nèi)存管理,但它并不采用請求調(diào)頁功能。因此,進(jìn)程被限制在它可以分配的物理內(nèi)存量的范圍內(nèi)。進(jìn)程還具有對象編錄,可以在此命名對象。可以按名稱搜索該編錄。
(2)線程
線程總是由某個進(jìn)程所有,并且線程所創(chuàng)建的對象由其進(jìn)程所有。線程會被分配一個優(yōu)先級,范圍為從 0 到 254,其中 0 是最高優(yōu)先級。
(3)信號量
這些同步對象由一個線程隊列和一個計數(shù)器組成,類似于 Microsoft Win32 信號量。對象創(chuàng)建時,所有 INtime 線程隊列都可以被指定為先入先出 (FIFO) 隊列或優(yōu)先級隊列。如果是 FIFO 隊列,則線程按照等待順序排隊;如果是優(yōu)先級隊列,則線程的排隊方式為優(yōu)先級較高的線程出現(xiàn)在隊頭。
(4)區(qū)域
這些對象是單個單元信號量,帶有防止優(yōu)先級顛倒的保護(hù)。它們采用標(biāo)準(zhǔn)的優(yōu)先級提升技術(shù),以避免這種情況。另外,擁有區(qū)域的線程不能刪除,除非它放棄該區(qū)域。這些對象類似于 Win32 臨界區(qū)。
(5)郵箱
這些對象由一個線程隊列和一個消息隊列組成。郵箱可以將兩種類型的消息排隊。消息可以是其他對象的句柄,也可以是最多包含 128 個字節(jié)的數(shù)據(jù)消息。在 Win32 中沒有直接等效的對象。
(6)堆
堆對象類似于 bbbbbbs 堆。它為應(yīng)用程序提供動態(tài)內(nèi)存源。
其他內(nèi)存對象
可以為內(nèi)存區(qū)域創(chuàng)建一個句柄,并且隨后將該句柄傳遞給另一個進(jìn)程以進(jìn)行映射。然后,可以從這兩個進(jìn)程中訪問該內(nèi)存。
實(shí)時 API 提供參數(shù)檢查和內(nèi)聯(lián)狀態(tài)報告。
(1) Win32 API
盡管 Win32 API 缺少一些用于實(shí)時編程的有用功能,INtime 仍然提供了一個 Win32 API,以便方便地從 bbbbbbs 應(yīng)用程序傳輸代碼。該實(shí)現(xiàn)是 bbbbbbs CE Win32 實(shí)現(xiàn)的豐富子集,包括 Win32 對象的有用子集 (Waitbbbbultiplebbbbbbs),并帶有擴(kuò)展以管理中斷和外圍設(shè)備互聯(lián) (PCI) 總線配置。
(2) bbbbbbs API
為 bbbbbbs 應(yīng)用程序提供了 API,以使其能夠共享在實(shí)時內(nèi)核上創(chuàng)建的對象。標(biāo)準(zhǔn)的實(shí)時對象和 Win32 對象都是可共享的,以便 bbbbbbs 和實(shí)時應(yīng)用程序可以同步和共享數(shù)據(jù)。阻塞調(diào)用由實(shí)時內(nèi)核上的代理線程池處理。
(3)C 庫與 C++ 支持
INtime 提供了美國國家標(biāo)準(zhǔn)局(與 ANSI 兼容)的 C 庫,以及用標(biāo)準(zhǔn)模板庫 (STL) 提供了對 EC++ (bbbbbded C++) ANSI 標(biāo)準(zhǔn)的支持。
(4)其他服務(wù)
提供了一個傳輸控制協(xié)議/網(wǎng)際協(xié)議 (TCP/IP) 的協(xié)議組,它派生于 BSD Net3 體系結(jié)構(gòu)。為 Inbbb、3Com 和 Realtek 接口適配器提供了以太網(wǎng)驅(qū)動程序,并且為與 NE2000 兼容的 ISA 接口提供了以太網(wǎng)驅(qū)動程序。通過串行線路網(wǎng)際協(xié)議 (SLIP) 支持串行鏈路。 以開發(fā)工具包的形式提供了 USB 支持,以便開發(fā) USB 客戶端軟件。為 Universal Host Controller (UHCI)、Open Host Controller (OHCI) 和 Enhanced Host Controller (EHCI) 接口提供了標(biāo)準(zhǔn)驅(qū)動程序。為一系列標(biāo)準(zhǔn)接口和行業(yè)接口提供了其他驅(qū)動程序。
(5)可靠性功能
INtime 的用于增強(qiáng)可靠性的功能包括針對非災(zāi)難性系統(tǒng)錯誤的異常處理以及 Distributed System Manager (DSM) ,它可以監(jiān)控 INtime 和 bbbbbbs 進(jìn)程,并可以在 bbbbbbs 操作系統(tǒng)失敗時進(jìn)行檢測和提供幫助。
(6)異常處理
INtime 內(nèi)核設(shè)計所關(guān)注的主要問題之一是提供處理系統(tǒng)異常錯誤(一般性保護(hù)錯誤、頁面錯誤、堆棧錯誤等等)的非災(zāi)難性手段,并且盡量減少對實(shí)時內(nèi)核和 bbbbbbs 系統(tǒng)的損害。因此,實(shí)時系統(tǒng)具有一個默認(rèn)異常處理程序,該程序會向全局郵箱中寫入一個記錄,詳細(xì)描述出錯的線程及其環(huán)境,然后掛起出錯的線程??梢詮?INtime 或 bbbbbbs 系統(tǒng)中監(jiān)控該郵箱,并且存在可以從錯誤記錄中提取信息(包括寄存器轉(zhuǎn)儲、堆棧跟蹤和相關(guān)調(diào)試信息)的工具。
(7)Distributed System Manager
Distributed System Manager(“DSM”)是一個協(xié)作性多進(jìn)程應(yīng)用程序,用于管理整個 INtime 系統(tǒng)。任何進(jìn)程(bbbbbbs 或 INtime)都可以選擇監(jiān)控任何其他參與協(xié)作的進(jìn)程,或者被其他參與協(xié)作的進(jìn)程監(jiān)控。如果被監(jiān)控的進(jìn)程被刪除,或者到該進(jìn)程的通訊途徑被中斷,或者 bbbbbbs 系統(tǒng)或 INtime 系統(tǒng)被破壞,都會向監(jiān)控進(jìn)程發(fā)送通知消息??梢允褂迷摲?wù)來提供系統(tǒng)級完整性。
(8)bbbbbbs 停止處理
DSM 的一個重要優(yōu)點(diǎn)是它能夠檢測到 bbbbbbs 平臺何時失敗。如果出現(xiàn)這種情況,INtime 內(nèi)核中的 DSM 軟件將通知所有參與的進(jìn)程 bbbbbbs 已經(jīng)失敗,并且還將負(fù)責(zé)調(diào)度 bbbbbbs 的線程掛起。此時,INtime 內(nèi)核可以繼續(xù)無限期地執(zhí)行其進(jìn)程,而這些進(jìn)程可以選擇在此情況下采取特殊操作,例如使外圍設(shè)備進(jìn)入已知狀態(tài)。在稍后某個時刻,實(shí)時進(jìn)程可以選擇恢復(fù) bbbbbbs 線程,并使 bbbbbbs 可以繼續(xù)關(guān)閉和重置計算機(jī)。
(9)可擴(kuò)展性功能
INtime 操作系統(tǒng)能夠支持復(fù)雜的大型應(yīng)用程序。在上述共享體系結(jié)構(gòu)中,已經(jīng)發(fā)現(xiàn)典型的平臺能夠允許 INtime 內(nèi)核消耗 CPU 帶寬的 50% 到 60%,然后 bbbbbbs 圖形用戶界面 (GUI) 和其他服務(wù)才會開始受到不利影響。INtime 中獨(dú)立內(nèi)核的優(yōu)勢是可以將它重定位到另一 CPU 或另一平臺,從而使應(yīng)用程序能夠隨著其對平臺的需求的增加而擴(kuò)大規(guī)模。接口模式將從虛擬機(jī)體系結(jié)構(gòu)更改為共享內(nèi)存,然后又更改為物理通訊鏈路(如以太網(wǎng)或串行線路),但 bbbbbbs 和實(shí)時應(yīng)用程序之間的軟件接口不會改變。這樣,無論選擇了哪種硬件體系結(jié)構(gòu),都可以使用相同的二進(jìn)制文件。
3 小結(jié)
TenAsys Corporation 的 INtime 軟件被設(shè)計為不僅能夠向 bbbbbbs 平臺添加實(shí)時功能,而且其添加這些功能的方式能夠?yàn)閷?shí)時應(yīng)用程序提供可靠且可伸縮的平臺。如果將該解決方案與 bbbbbbs XP bbbbbded 配合使用,則能夠?yàn)槟那度胧皆O(shè)備提供強(qiáng)大的、可擴(kuò)展的、確定性的操作系統(tǒng)。
本文標(biāo)簽:INtime實(shí)時操作系統(tǒng)
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《INtime實(shí)時操作系統(tǒng)》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
關(guān)于“INtime實(shí)時操作系統(tǒng)”的更多資訊










