<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > IC卡電表C語(yǔ)言程序結構性能分析

IC卡電表C語(yǔ)言程序結構性能分析

作者: 時(shí)間:2012-05-30 來(lái)源:網(wǎng)絡(luò ) 收藏

 則系統變?yōu)橐粋€(gè)以執行頻率為優(yōu)先級的任務(wù)調度系統。當然,設置此種方式得非常小心,并要注意時(shí)間片的分配,如果時(shí)間片過(guò)小,則可能導致執行頻率較低的任務(wù)難以被執行;而如果存在兩個(gè)同樣的時(shí)間片,則更加危險,可能導致第二個(gè)具有相同時(shí)間片的任務(wù)不被執行,因而,時(shí)間片的分配要合理,并保證其唯一性。

本文引用地址:http://dyxdggzs.com/article/148963.htm

2 與任務(wù)拆分

  以上兩種任務(wù)管理方式,前一種按任務(wù)棧的順序與時(shí)間片的大小依次進(jìn)行調度,暫且稱(chēng)其為流水作業(yè)調度;而后一種,且稱(chēng)其為頻率優(yōu)先調度。兩種方式各有優(yōu)缺點(diǎn)。流水作業(yè)調度的各任務(wù)具有等同優(yōu)先級,時(shí)間片一到即會(huì )被按序調用,時(shí)間片大小的次序與唯一性不作要求;缺點(diǎn)是可能導致時(shí)間片小的,即要求執行得較快的任務(wù)等待過(guò)長(cháng)的時(shí)間。頻率優(yōu)先調度的各任務(wù)按其時(shí)間片的大小,即執行頻率劃分優(yōu)先級,時(shí)間片小的任務(wù),其執行頻率高,總是具有較高的優(yōu)先權,但時(shí)間片的分配得協(xié)調,否則可能會(huì )導致執行頻率低的任務(wù)長(cháng)時(shí)間等待。

  要特別注意的是,兩種方式都有可能導致一些任務(wù)長(cháng)時(shí)間等待,時(shí)間片所設定的時(shí)間也因此不能作為精確時(shí)間的依據,根據系統的要求或需要,甚至要在任務(wù)執行過(guò)程中進(jìn)行某些保護工作,如中斷屏蔽等,因而在進(jìn)行任務(wù)規劃時(shí)要注意。如果一個(gè)任務(wù)較繁瑣或可能要等待很長(cháng)時(shí)間,則應當考慮任務(wù)的拆分,把一個(gè)較大的任務(wù)細化為較小的任務(wù),把一個(gè)費時(shí)長(cháng)的任務(wù)劃分為多個(gè)費時(shí)小的任務(wù),協(xié)同完成其功能。如在等待時(shí)間長(cháng)的情況下,可附加一個(gè)定時(shí)任務(wù),定時(shí)任務(wù)到則發(fā)送一個(gè)消息旗標,主過(guò)程沒(méi)有檢測到消息旗標就馬上返回,否則繼續執行。下面是示例代碼,假定該任務(wù)將等待很長(cháng)時(shí)間,現將其拆分為兩個(gè)任務(wù)proc1與proc2協(xié)同完成原來(lái)的工作,proc1每100個(gè)時(shí)間單位執行一次,而proc2每200個(gè)時(shí)間單位執行一次。

  //定義兩個(gè)任務(wù),并將其加入到任務(wù)棧中。
  code _op_ Op[proc_cnt]={…,{proc1,100},{proc2,200}};
  data int time1_Seg; //定義一個(gè)全局旗標
  //任務(wù)實(shí)現
  void proc1(void){
    if (time1_Seg)
      exit;
    else
      time1_Seg=const_Time1; //如果時(shí)間到了,則恢復初值并
                  //接著(zhù)執行下列代碼。
    …             //任務(wù)實(shí)際執行代碼
  }

  void proc2(void){
    if(time1_Seg)
    time1_Seg--;
  }

  由上例可以看出,任務(wù)拆分后,幾乎不占過(guò)多的CPU時(shí)間,使得任務(wù)的等待時(shí)間大減,讓CPU有足夠的時(shí)間進(jìn)行任務(wù)管理與調度。同時(shí)也讓程序的性與可讀性大為加強。

結語(yǔ)

  基于上述思路與工作程序進(jìn)行全部改寫(xiě)后,系統的得到了很大改善。全部編寫(xiě)完成后,程序代碼量約為3KB多一點(diǎn),可見(jiàn)此種結構的程序構造并不會(huì )造成很大的系統開(kāi)銷(xiāo)(大部分開(kāi)銷(xiāo)是由于使用C的結果),卻使開(kāi)發(fā)得到了簡(jiǎn)化。這只要將系統細分為一系列任務(wù),然后加入到任務(wù)棧進(jìn)行編譯即可,很適合小容量單片機系統的開(kāi)發(fā),而筆者也在多個(gè)系統中成功地應用了此種結構。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>