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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > IC卡電表C語(yǔ)言程序結(jié)構(gòu)性能分析

          IC卡電表C語(yǔ)言程序結(jié)構(gòu)性能分析

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

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

          本文引用地址:http://www.ex-cimer.com/article/148963.htm

          2 與任務(wù)拆分

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

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

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

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

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

          結(jié)語(yǔ)

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


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

          評(píng)論


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