<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 實時操作系統(tǒng)VxWorks

          實時操作系統(tǒng)VxWorks

          作者: 時間:2011-03-12 來源:網(wǎng)絡(luò) 收藏
          VxWorks組成部分

          VxWorks 操作系統(tǒng)包括了進程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運行。 VxWorks由以下幾個主要部分組成:

          1.高性能的實時操作系統(tǒng)核心 wind
          VxWorks 的核心,被稱作 wind,包括多任務(wù)調(diào)度(采用優(yōu)先級搶占方式),任務(wù)間的同步和進程間通信機制以及中斷處理,看門狗和內(nèi)存管理機制。一個多任務(wù)環(huán) 境允許實時應(yīng)用程序以一套獨立任務(wù)的方式構(gòu)筑,每個任務(wù)擁有獨立的執(zhí)行線程和 它自己的一套系統(tǒng)資源。進程間通信機制使得這些任務(wù)的行為同步、協(xié)調(diào)。

          wind使用中斷驅(qū)動和優(yōu)先級的方式。它縮短了上下文轉(zhuǎn)換的時間開銷和中斷的時延。在 VxWorks 中,任何例程都可以被啟動為一個單獨的任務(wù),擁有它自己的上下文和 堆棧。還有一些其它的任務(wù)機制可以使任務(wù)掛起、繼續(xù)、刪除、延時或改變優(yōu)先級。 wind 核提供信號量作為任務(wù)間同步和互斥的機制。在 wind 核中有幾種類型的信號
          量,它們分別針對不同的應(yīng)用需求:二進制信號量、計數(shù)信號量、互斥信號量和 POSIX 信號量。所有的這些信號量是快速和高效的,它們除了被應(yīng)用在開發(fā)設(shè)計過 程中外,還被廣泛地應(yīng)用在 VxWorks 高層應(yīng)用系統(tǒng)中。對于進程間通信,wind 核 也提供了諸如消息隊列、管道、套接字和信號等機制。


          2.I/O 系統(tǒng)
          VxWorks 提供了一個快速靈活的與 ANSI C 兼容的 I/O 系統(tǒng),包括 UNIX 標(biāo)準(zhǔn)的緩 沖 I/O 和POSIX 標(biāo)準(zhǔn)的異步 I/O。VxWorks 包括以下驅(qū)動程序:網(wǎng)絡(luò)驅(qū)動、管道驅(qū) 動、RAM盤驅(qū)動、SCSI驅(qū)動、鍵盤驅(qū)動、顯示驅(qū)動、磁盤驅(qū)動、并口驅(qū)動等。


          3.文件系統(tǒng)
          VxWorks 提供的快速文件系統(tǒng)適合于實時系統(tǒng)應(yīng)用。它包括幾種支持使用塊設(shè)備(如磁盤)的本地文件系統(tǒng)。這些設(shè)備都使用一個標(biāo)準(zhǔn)的接口從而使得文件系統(tǒng)能夠被靈 活地在設(shè)備驅(qū)動程序上移植。另外,VxWorks 也支持 SCSI 磁帶設(shè)備的本地文件系統(tǒng)。 VxWorks I/O 體系結(jié)構(gòu)甚至還支持在一個單獨的 VxWorks 系統(tǒng)上同時并存幾個不同的 文件系統(tǒng)。
          VxWorks 支持四種文件系統(tǒng): dosFs,rt11Fs,rawFs 和 tapeFs。
          另一方面,普通數(shù)據(jù)文件,外部設(shè)備都統(tǒng)一作為文件處理。它們在用戶面前有相同的 語法定義,使用相同的保護機制。這樣既簡化了系統(tǒng)設(shè)計又便于用戶使用。


          4.板級支持包 BSP(Board Support Package)
          板級支持包對各種板子的硬件功能提供了統(tǒng)一的軟件接口,它包括硬件初始化、中斷 的產(chǎn)生和處理、硬件時鐘和計時器管理、局域和總線內(nèi)存地址映射、內(nèi)存分配等等。 每個板級支持包括一個 ROM 啟動(Boot ROM)或其它啟動機制。


          5.網(wǎng)絡(luò)設(shè)施
          VxWorks的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,它提供了對其它網(wǎng)絡(luò)和 TCP/IP 網(wǎng)絡(luò)系統(tǒng)的"透明"訪問,包括與BSD套接字兼容的編程接口,遠程過程調(diào)用(RPC),SNMP(可選項),遠程文件 訪問(包括客戶端和服務(wù)端的NFS機制以及使用RSH,F(xiàn)TP 或 TFTP的非NFS機制)以及 BOOTP 和 ARP 代理。無論是松耦合的串行線路、標(biāo)準(zhǔn)的以太網(wǎng)連接還是緊耦合的利用 共享內(nèi)存的背板總線,所有的 VxWorks 網(wǎng)絡(luò)機制都遵循標(biāo)準(zhǔn)的 Internet 協(xié)議。


          6.先進的系列網(wǎng)絡(luò)產(chǎn)品
          VxWorks內(nèi)的WindNet 是先進的、系列的網(wǎng)絡(luò)產(chǎn)品,這些產(chǎn)品擴展了VxWorks的網(wǎng)絡(luò)特性 并增強了處理器的網(wǎng)絡(luò)特性。 WindNet SNMP
          WindNet STREAMS
          WindNet 第三方產(chǎn)品,包括 OSI、SS7、ATM、Frame Relay、CORBA、ISDN、X.25、
          CMIP/GDMO、分布式網(wǎng)絡(luò)管理等。



          7.虛擬內(nèi)存(即 VxVMI 選項)與共享內(nèi)存(即 VxMP 選項)
          VxVMI 為帶有 MMU 的目標(biāo)板提供了虛擬內(nèi)存機制。VxMP 提供了共享信號量,消息隊列 和在不同處理器之間的共享內(nèi)存區(qū)域。

          8.目標(biāo)代理(Target Agent)
          目標(biāo)代理遵循 WBD(Wind Debug)協(xié)議,允許目標(biāo)機與主機上的 Tornado 開發(fā)工具相 連。在目標(biāo)代理的缺省設(shè)置中,如圖3所示,目標(biāo)代理是以 VxWorks 的一個任務(wù)-- tWdbTask 的形式運行的。

          Tornado 目標(biāo)服務(wù)器(Target Server)向目標(biāo)代理發(fā)送調(diào)試請求。調(diào)試請求通常決定 目標(biāo)代理對系統(tǒng)中其它任務(wù)的控制和處理。缺省狀態(tài)下,目標(biāo)服務(wù)器與目標(biāo)代理通過網(wǎng) 絡(luò)進行通信,但是用戶也可以改變通信方式。

          9.實用庫
          VxWorks 提供了一個實用例程的擴展集,包括中斷處理、看門狗計時器、消息登錄、內(nèi)存分配、字符掃描、線緩沖和環(huán)緩沖管理、鏈表管理和 ANSI C 標(biāo)準(zhǔn)。


          10.基于目標(biāo)機的工具
          在 Tornado 開發(fā)系統(tǒng)中,開發(fā)工具是駐留在主機上的。但是也可以根據(jù)需要將基于目標(biāo)機的Shell 和裝載卸載模塊加入 VxWorks。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();