<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • setjmp構(gòu)建簡(jiǎn)單協(xié)作式多任務(wù)系統(tǒng)

    時(shí)間:2024-08-30 16:35:24 理工畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    setjmp構(gòu)建簡(jiǎn)單協(xié)作式多任務(wù)系統(tǒng)

    摘要:討論一個(gè)利用標(biāo)準(zhǔn)C語(yǔ)言setjmp庫(kù)函烽實(shí)現(xiàn)查詢(xún)式協(xié)作多任務(wù)系統(tǒng),給出完整的內(nèi)核和樣例程序并對(duì)源代碼進(jìn)行說(shuō)明。該系統(tǒng)具有簡(jiǎn)單易用的特點(diǎn),只需要編寫(xiě)存取堆棧指針的宏就可方便地移植到新的平臺(tái)上。文章詳述了系統(tǒng)的優(yōu)缺點(diǎn),討論一些性能擴(kuò)展的方法。該內(nèi)核適用于中小規(guī)模的嵌入式軟件。

    引言

    本文介紹的是利用標(biāo)準(zhǔn)C語(yǔ)言setjmp庫(kù)函數(shù)實(shí)現(xiàn)的具備此特點(diǎn)的協(xié)作式多任務(wù)系統(tǒng)。從本質(zhì)上講,實(shí)時(shí)多任務(wù)操作系統(tǒng)應(yīng)該具備按照優(yōu)先級(jí)搶占調(diào)度的內(nèi)核。然而,在實(shí)際應(yīng)用中,搶中式的多任務(wù)某種程序上帶來(lái)了用戶(hù)程序設(shè)計(jì)時(shí)數(shù)據(jù)保護(hù)的困難,并且,具備搶占功能的多任務(wù)內(nèi)核設(shè)計(jì)時(shí)困難也比較多,這會(huì)增加操作系統(tǒng)自身的代碼,也使它在小資源單片機(jī)系統(tǒng)中應(yīng)用較少;而協(xié)作多任務(wù)系統(tǒng)的調(diào)度只在用戶(hù)指定的時(shí)機(jī)發(fā)生,這會(huì)大大簡(jiǎn)化內(nèi)核和用戶(hù)系統(tǒng)的設(shè)計(jì),尤其本文實(shí)現(xiàn)的系統(tǒng)通過(guò)條件查詢(xún)來(lái)放棄CPU,既符合傳統(tǒng)單片機(jī)程序設(shè)計(jì)的思維,又帶來(lái)了多任務(wù)、模塊化、可重入的編程便利。

    Setjmp是標(biāo)準(zhǔn)C語(yǔ)言庫(kù)函數(shù)的組成部分,它可以實(shí)現(xiàn)程序執(zhí)行中的遠(yuǎn)程轉(zhuǎn)操作。具體來(lái)說(shuō),它可以在一個(gè)函數(shù)中使用setjmp來(lái)初始化一個(gè)全局標(biāo)號(hào),然后只要該函數(shù)未曾返回,那么在其它任何地方都可以通過(guò)longjmp調(diào)用來(lái)跳轉(zhuǎn)到setjmp的下一條語(yǔ)句執(zhí)行。實(shí)際上,setjmp函數(shù)將發(fā)生調(diào)用處的局部環(huán)境保存在一個(gè)jmp_buf的結(jié)構(gòu)當(dāng)中,只要主調(diào)函數(shù)中對(duì)應(yīng)的內(nèi)存未曾釋放(函數(shù)返回時(shí)局部?jī)?nèi)存就失效了),那么在調(diào)用longjmp的時(shí)候就可以根據(jù)已保存的jmp_buf參數(shù)恢復(fù)到setjmp的地方執(zhí)行。我們的系統(tǒng)中就是分析了setjmp標(biāo)準(zhǔn)庫(kù)函數(shù)的特點(diǎn),以簡(jiǎn)單的方式實(shí)現(xiàn)了協(xié)作式多任務(wù)。

    1 演示程序

    為了便于理解,首先給出多任務(wù)演示程序的源代碼。這個(gè)程序演示了協(xié)作式多任務(wù)切換、任務(wù)的動(dòng)態(tài)生成、多任務(wù)共用代碼等功能,一共使用了init_coos初始化根任務(wù)(也就是C語(yǔ)言main函數(shù))、creat_task創(chuàng)建新任務(wù)和WAITFOR查詢(xún)條件這3個(gè)基本的系統(tǒng)調(diào)用。由于面向嵌入式系統(tǒng),因而程序不會(huì)中止并且運(yùn)行中也沒(méi)有進(jìn)行任何輸出,需要借助適合的調(diào)試工具來(lái)理解多任務(wù)系統(tǒng)的運(yùn)行。

    example.c文件清單:

    #include

    【setjmp構(gòu)建簡(jiǎn)單協(xié)作式多任務(wù)系統(tǒng)】相關(guān)文章:

    基于VxWorks的多DSP系統(tǒng)的多任務(wù)程序設(shè)計(jì)03-18

    單片機(jī)系統(tǒng)中的多任務(wù)多線程機(jī)制的實(shí)現(xiàn)03-18

    手術(shù)排程系統(tǒng)的構(gòu)建與實(shí)踐05-09

    電力營(yíng)銷(xiāo)管理系統(tǒng)的構(gòu)建內(nèi)涵11-29

    計(jì)算機(jī)通信系統(tǒng)的構(gòu)建論文11-16

    廢舊鋼鐵回收物流系統(tǒng)構(gòu)建研究11-26

    基于MSP430單片機(jī)的實(shí)時(shí)多任務(wù)操作系統(tǒng)03-18

    構(gòu)建有效的銀行內(nèi)控系統(tǒng)03-18

    顧客投訴行為管理及其系統(tǒng)構(gòu)建12-07

    談飯店業(yè)人際傳播系統(tǒng)的構(gòu)建03-22

    主站蜘蛛池模板: 一本色道久久88精品综合| 亚洲无线观看国产精品| 久久久久九国产精品| 国内少妇偷人精品视频免费| 精品91自产拍在线观看 | 日韩一区精品视频一区二区| 国产亚洲精品自在线观看| 国产精品久久久久无码av| 无码人妻精品一区二区三区东京热| 精品国产免费一区二区三区| 四虎国产精品永久地址49| 97视频在线观看这里只有精品 | 久久99精品久久久久久久久久| 国产精品乱视频| 久久精品一区二区国产| 国产精品jizz视频| 人妻少妇精品视频一区二区三区| 色婷婷久久久SWAG精品| 久久精品无码专区免费| 黑人巨茎精品欧美一区二区| 丰满人妻熟妇乱又伦精品劲| 久久国产精品成人免费| 国产精品嫩草影院一二三区入口| 国产色婷婷五月精品综合在线| 中文字幕在线精品视频入口一区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久精品国产免费一区| 国产精品1024香蕉在线观看| 国产综合精品一区二区三区| 亚洲国产一二三精品无码| 亚洲国产精品碰碰| 亚洲成人国产精品| 亚洲精品无码日韩国产不卡?V| 少妇亚洲免费精品| 亚洲精品A在线观看| 三级高清精品国产| 亚洲中文字幕久久精品无码APP | 久久精品国产99国产精品| 精品一区二区三区免费视频| 久久91这里精品国产2020| 久久99精品国产麻豆不卡|