亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

setjmp構建簡單協作式多任務系統

時間:2024-08-30 16:35:24 理工畢業論文 我要投稿
  • 相關推薦

setjmp構建簡單協作式多任務系統

摘要:討論一個利用標準C語言setjmp庫函烽實現查詢式協作多任務系統,給出完整的內核和樣例程序并對源代碼進行說明。該系統具有簡單易用的特點,只需要編寫存取堆棧指針的宏就可方便地移植到新的平臺上。文章詳述了系統的優缺點,討論一些性能擴展的方法。該內核適用于中小規模的嵌入式軟件。

引言

本文介紹的是利用標準C語言setjmp庫函數實現的具備此特點的協作式多任務系統。從本質上講,實時多任務操作系統應該具備按照優先級搶占調度的內核。然而,在實際應用中,搶中式的多任務某種程序上帶來了用戶程序設計時數據保護的困難,并且,具備搶占功能的多任務內核設計時困難也比較多,這會增加操作系統自身的代碼,也使它在小資源單片機系統中應用較少;而協作多任務系統的調度只在用戶指定的時機發生,這會大大簡化內核和用戶系統的設計,尤其本文實現的系統通過條件查詢來放棄CPU,既符合傳統單片機程序設計的思維,又帶來了多任務、模塊化、可重入的編程便利。

Setjmp是標準C語言庫函數的組成部分,它可以實現程序執行中的遠程轉操作。具體來說,它可以在一個函數中使用setjmp來初始化一個全局標號,然后只要該函數未曾返回,那么在其它任何地方都可以通過longjmp調用來跳轉到setjmp的下一條語句執行。實際上,setjmp函數將發生調用處的局部環境保存在一個jmp_buf的結構當中,只要主調函數中對應的內存未曾釋放(函數返回時局部內存就失效了),那么在調用longjmp的時候就可以根據已保存的jmp_buf參數恢復到setjmp的地方執行。我們的系統中就是分析了setjmp標準庫函數的特點,以簡單的方式實現了協作式多任務。

1 演示程序

為了便于理解,首先給出多任務演示程序的源代碼。這個程序演示了協作式多任務切換、任務的動態生成、多任務共用代碼等功能,一共使用了init_coos初始化根任務(也就是C語言main函數)、creat_task創建新任務和WAITFOR查詢條件這3個基本的系統調用。由于面向嵌入式系統,因而程序不會中止并且運行中也沒有進行任何輸出,需要借助適合的調試工具來理解多任務系統的運行。

example.c文件清單:

#include

【setjmp構建簡單協作式多任務系統】相關文章:

基于VxWorks的多DSP系統的多任務程序設計03-18

單片機系統中的多任務多線程機制的實現03-18

手術排程系統的構建與實踐05-09

電力營銷管理系統的構建內涵11-29

計算機通信系統的構建論文11-16

廢舊鋼鐵回收物流系統構建研究11-26

基于MSP430單片機的實時多任務操作系統03-18

構建有效的銀行內控系統03-18

顧客投訴行為管理及其系統構建12-07

談飯店業人際傳播系統的構建03-22

主站蜘蛛池模板: 久久久国产99久久国产久麻豆 | 国产精品人成电影在线观看| 日本精品啪啪一区二区三区| 国产乱子伦农村叉叉叉| 亚洲欧洲无码av一区二区三区| 国产黑色丝袜在线观看下| 熟睡人妻被讨厌的公侵犯| 国产后入又长又硬| 国产人成无码视频在线软件| 亚洲一区二区三区在线播放无码| 无码精品a∨在线观看中文| 国产伦精品一区二区三区视频优播| 欧美丰满熟妇xxxx| 久久久精品人妻无码专区不卡| 国产欧美日韩在线观看一区二区| 国产精品白嫩初高生免费视频| 在线观看潮喷失禁大喷水无码| 精品国产一区二区三区四区vr| 国产自在自线午夜精品| 熟女肥臀白浆大屁股一区二区| 成人无码看片在线观看免费| v天堂中文在线| 丰满少妇69激情啪啪无| 色av综合av综合无码网站| 国产第四页| 国产v视频在线亚洲视频| 一区二区三区日本久久九| 国产精品_国产精品_k频道| 日韩欧美卡一卡二卡新区| 精品无码久久久久国产电影| 久热中文字幕在线| 久久精品国产99久久丝袜| 欧美放荡的少妇| 手机看片福利日韩国产| 成人在线91| 人妻体内射精一区二区三区| 成在人线av无码免费高潮水老板| yjizz视频国产网站在线播放| 日本护士毛茸茸高潮| 无码吃奶揉捏奶头高潮视频| 在线观看的黄网|