最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

小編給大家分享一下vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

從事成都電信服務(wù)器托管,服務(wù)器租用,云主機,網(wǎng)絡(luò)空間,域名與空間,CDN,網(wǎng)絡(luò)代維等服務(wù)。

VxWorks的內(nèi)核對象可以動態(tài)創(chuàng)建,也可以靜態(tài)實例化。

靜態(tài)實例化,指的是使用VxWorks的宏在編譯時(compile-time)聲明變量,這樣編譯器就會為其分配空間,而不是運行時(run-time)再動態(tài)申請空間。因此在系統(tǒng)啟動過程中,就可以初始化對象了

而動態(tài)申請,需要系統(tǒng)啟動后,調(diào)用運行時內(nèi)存分配機制;對應(yīng)的動態(tài)刪除,需要調(diào)用內(nèi)存釋放機制,通常也就是malloc()與free()函數(shù)。這種動態(tài)行為,存在著內(nèi)存不足的風(fēng)險,并且會減緩甚至阻塞調(diào)用者的執(zhí)行,因此對系統(tǒng)性能有一定影響

看一下動態(tài)與靜態(tài)的偽代碼對比

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

編譯時聲明的對象,如果沒有賦初值,并不會消耗系統(tǒng)鏡像的空間,編譯器只是把它放到鏡像的BSS段里

可執(zhí)行程序包括代碼段(也稱文本段)、數(shù)據(jù)段、BSS段。BSS(Block Started by Symbol)是指用來存放程序中未初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域。特點是:可讀寫的,在程序執(zhí)行之前BSS段自動清0。所以,未初始的全局變量在程序執(zhí)行之前已經(jīng)都被初始化為0了

靜態(tài)實例化的優(yōu)勢:

  • 性能與確定性

  • 簡化應(yīng)用邏輯,不用考慮動態(tài)申請失敗

  • 靜態(tài)聲明不會失敗,除非整個程序超出系統(tǒng)內(nèi)存的范圍

  • VxWorks系統(tǒng)可以裁剪掉動態(tài)申請的相關(guān)函數(shù),減小系統(tǒng)尺寸

因此,靜態(tài)實例化更適用于實時系統(tǒng)的需求。并且在多數(shù)嵌入式系統(tǒng)中(OS不限于VxWorks),系統(tǒng)對象從始至終需要一直存在,也就不需要動態(tài)刪除,甚至有些系統(tǒng)(例如CERT OS)都不支持內(nèi)存的動態(tài)使用。

VxWorks專門提供了一些宏來實例化對象,包括:任務(wù)、信號量、消息隊列、看門狗

任務(wù)

宏VX_TASK(name,stackSz)用來在編譯時聲明任務(wù)對象,兩個參數(shù)分別是任務(wù)名(不能為NULL)和棧尺寸(大于0的常量)

宏VX_TASK_INITIALIZE()用來初始化VX_TASK()聲明的任務(wù),并將其置于suspend狀態(tài),其參數(shù)和返回值與taskSpawn()一致

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

宏VX_TASK_INSTANTIATE()用來初始化VX_TASK()聲明的任務(wù),并將其置于ready狀態(tài),其參數(shù)和返回值與taskSpawn()一致

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

注意在宏中換行時,為了確保宏的正常展開,使用了"\"

信號量

宏VX_BINARY_SEMAPHORE(name)、VX_COUNTING_SEMAPHORE(name)、VX_MUTEX_SEMAPHORE(name)、VX_READ_WRITE_SEMAPHORE(name,numReaders)分別用于編譯時聲明四種信號量,然后須使用相應(yīng)的semXInitialize()進(jìn)行完整實例化。semXInitialize()的第一個參數(shù)是name,后面的參數(shù)與semXCreate()的相同。因此,實例化過程如下

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

消息隊列

宏VX_MSG_Q(name, max_msgs, max_msg_len)用于編譯時聲明消息隊列,然后使用msgQInitialize ()進(jìn)行完整實例化。msgQInitialize()的第一個參數(shù)是name,后面的參數(shù)與msgQCreate()的相同。因此,實例化過程如下

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

看門狗

宏VX_WDOG(name)用于編譯時聲明看門狗,然后使用wdInitialize()進(jìn)行完整實例化。wdInitialize()的參數(shù)就是name。因此,實例化過程如下

vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化

以上是“vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前名稱:vxworks如何實現(xiàn)內(nèi)核對象的靜態(tài)實例化
URL分享:http://fisionsoft.com.cn/article/gdgihi.html