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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > μC/OS-II在80x86上的移植

          μC/OS-II在80x86上的移植

          作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

          OSMboxPost()

          最小運行時間是當(dāng)郵箱是空的,沒有任務(wù)等待消息的時候。

          最大運行時間是當(dāng)消息郵箱中有一個或多個任務(wù)在等待消息。此時,消息將發(fā)往等待隊列中優(yōu)先級最高的任務(wù),將此任務(wù)喚醒執(zhí)行。最大運行時間是同一任務(wù)執(zhí)行OSMboxPost()的累計時間,這個過程包括任務(wù)喚醒等待任務(wù),發(fā)送消息,調(diào)用任務(wù)切換函數(shù)OSSched(),切換到新任務(wù)。當(dāng)由于某種原因調(diào)用OSMboxPost()的任務(wù)又被喚醒執(zhí)行,從OSSched()中返回,發(fā)現(xiàn)返回的原因是由于延時結(jié)束(處理延時結(jié)束情況的代碼最長—譯者注),最后返回調(diào)用任務(wù)。OSMboxPost()的最大運行時間是上述時間的總和。

          OSMemGet()

          最小運行時間是當(dāng)系統(tǒng)中已經(jīng)沒有內(nèi)存塊,OSMemGet()返回錯誤碼。

          最大運行時間是OSMemGet()獲得了內(nèi)存塊,返回調(diào)用者。

          OSMemPut()

          最小運行時間是當(dāng)向一個已經(jīng)排滿的內(nèi)存分區(qū)中返回內(nèi)存塊。

          最大運行時間是當(dāng)向一個未排滿的內(nèi)存分區(qū)中返回內(nèi)存塊

          OSQPend()

          最小運行時間是當(dāng)消息隊列中有消息需要處理的時候。

          最大運行時間是當(dāng)消息隊列中沒有消息,任務(wù)需要等待的時候。此時調(diào)用OSQPend()的任務(wù)將被掛起,進(jìn)行任務(wù)切換。最大運行時間是同一任務(wù)執(zhí)行OSQPend()的累計時間,這個過程包括OSQPend()查看消息隊列,發(fā)現(xiàn)沒有消息,再調(diào)用任務(wù)切換函數(shù)OSSched(),切換到新任務(wù)。當(dāng)由于某種原因調(diào)用OSQPend()的任務(wù)又被喚醒執(zhí)行,從OSSched()中返回,發(fā)現(xiàn)返回的原因是由于延時結(jié)束(處理延時結(jié)束情況的代碼最長—譯者注),最后返回調(diào)用任務(wù)。OSQ`Pend()的最大運行時間是上述時間的總和。

          OSQPost()

          最小運行時間是當(dāng)消息隊列是空的,沒有任務(wù)等待消息的時候。

          最大運行時間是當(dāng)消息隊列中有一個或多個任務(wù)在等待消息。此時,消息將發(fā)往等待隊列中優(yōu)先級最高的任務(wù),將此任務(wù)喚醒執(zhí)行。最大運行時間是同一任務(wù)執(zhí)行OSQPost()的累計時間,這個過程包括任務(wù)喚醒等待任務(wù),發(fā)送消息,調(diào)用任務(wù)切換函數(shù)OSSched(),切換到新任務(wù)。當(dāng)由于某種原因調(diào)用OSQPost()的任務(wù)又被喚醒執(zhí)行,從OSSched()中返回,發(fā)現(xiàn)返回的原因是由于延時結(jié)束(處理延時結(jié)束情況的代碼最長—譯者注),最后返回調(diào)用任務(wù)。OSQPost()的最大運行時間是上述時間的總和。

          OSQPostFront()

          此函數(shù)與OSQPost()的過程相同。

          OSSemPend()

          最小運行時間是當(dāng)信號量可獲取的時候(信號量計數(shù)器大于0)。

          最大運行時間是當(dāng)信號量不可得,任務(wù)需要等待的時候。此時調(diào)用OSSemPend()的任務(wù)將被掛起,進(jìn)行任務(wù)切換。最大運行時間是同一任務(wù)執(zhí)行OSQPend()的累計時間,這個過程包括OSSemPend()查看信號量計數(shù)器,發(fā)現(xiàn)是0,再調(diào)用任務(wù)切換函數(shù)OSSched(),切換到新任務(wù)。當(dāng)由于某種原因調(diào)用OSSemPend()的任務(wù)又被喚醒執(zhí)行,從OSSched()中返回,發(fā)現(xiàn)返回的原因是由于延時結(jié)束(處理延時結(jié)束情況的代碼最長—譯者注),最后返回調(diào)用任務(wù)。OSSemPend()的最大運行時間是上述時間的總和。

          OSSemPost()

          最小運行時間是當(dāng)沒有任務(wù)在等待信號量的時候。

          最大運行時間是當(dāng)有一個或多個任務(wù)在等待信號量。此時,等待隊列中優(yōu)先級最高的任務(wù)將被喚醒執(zhí)行。最大運行時間是同一任務(wù)執(zhí)行OSSemPost()的累計時間,這個過程包括任務(wù)喚醒等待任務(wù),調(diào)用任務(wù)切換函數(shù)OSSched(),切換到新任務(wù)。當(dāng)由于某種原因調(diào)用OSSemPost()的任務(wù)又被喚醒執(zhí)行,從OSSched()中返回,發(fā)現(xiàn)返回的原因是由于延時結(jié)束(處理延時結(jié)束情況的代碼最長—譯者注),最后返回調(diào)用任務(wù)。OSSemPost()的最大運行時間是上述時間的總和。

          OSTaskChangePrio()

          最小運行時間是當(dāng)任務(wù)被改變的優(yōu)先級比當(dāng)前運行任務(wù)的低,此時不進(jìn)行任務(wù)切換,直接返回調(diào)用任務(wù)。

          最大運行時間是當(dāng)任務(wù)被改變的優(yōu)先級比當(dāng)前運行任務(wù)的高,此時將進(jìn)行任務(wù)切換。

          OSTaskCreate()

          最小運行時間是當(dāng)調(diào)用OSTaskCreate()的任務(wù)創(chuàng)建了一個比自己優(yōu)先級低的任務(wù), 此時不進(jìn)行任務(wù)切換。

          最大運行時間是當(dāng)調(diào)用OSTaskCreate()的任務(wù)創(chuàng)建了一個比自己優(yōu)先級高的任務(wù), 此時將進(jìn)行任務(wù)切換。

          上述兩種情況都是假定OSTaskCreateHook()不進(jìn)行任何操作。

          OSTaskCreateExt()

          最小運行時間是當(dāng)OSTaskCreateExt()不對堆棧進(jìn)行清零操作(此項操作是為堆棧檢查函數(shù)做準(zhǔn)備的)。

          最大運行時間是當(dāng)OSTaskCreateExt()需要進(jìn)行堆棧清零操作。但此項操作的時間取決于堆棧的大小。如果設(shè)清除每個堆棧單元(堆棧操作以字為單位—譯者注)需要100個時鐘周期(3μs),1000字節(jié)的堆棧將需要1,500μs(1000字節(jié)除以2再乘以3μs/每字)。在清除堆棧過程中中斷是打開的,可以響應(yīng)中斷請求。

          上述兩種情況都是假定OSTaskCreateHook()不進(jìn)行任何操作。

          OSTaskDel()

          最小運行時間是當(dāng)被刪除的任務(wù)不是當(dāng)前任務(wù),此時不進(jìn)行任務(wù)切換。

          最大運行時間是當(dāng)被刪除的任務(wù)是當(dāng)前任務(wù),此時將進(jìn)行任務(wù)切換。

          OSTaskDelReq()

          該函數(shù)很短,幾乎沒有最小和最大運行時間之分。

          OSTaskResume()

          最小運行時間是當(dāng)OSTaskResume()喚醒了一個任務(wù),但該任務(wù)的優(yōu)先級比當(dāng)前任務(wù)低,此時不進(jìn)行任務(wù)切換。

          最大運行時間是OSTaskResume()喚醒了一個優(yōu)先級更高的任務(wù),此時將進(jìn)行任務(wù)切換。

          OSTaskStkChk()

          OSTaskStkChk()的執(zhí)行過程是從堆棧的底端開始檢查0的個數(shù),估計堆棧所剩的空間。

          所以最小運行時間是當(dāng)OSTaskStkChk()檢查一個全部占滿的堆棧。 但實際上這種情況是不允許發(fā)生的,這將使系統(tǒng)崩潰。

          最大運行時間是當(dāng)OSTaskStkChk()檢查一個全空堆棧,執(zhí)行時間取決于堆棧的大小。例如檢查每個堆棧單元(堆棧操作以字為單位—譯者注)需要80鐘周期(2.4μs),1000字節(jié)的堆棧將需要1,200μs(1000字節(jié)除以2再乘以2.4μs/每字)。再加上其他的一些操作,總共需要大約1,218μs。在檢查堆棧過程中中斷是打開的,可以響中斷請求。

          OSTaskSuspend()

          最小運行時間是當(dāng)被掛起的任務(wù)不是當(dāng)前任務(wù),此時不進(jìn)行任務(wù)切換。



          關(guān)鍵詞:

          評論


          相關(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); })();