




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.任務(wù)的同步與通信同步:多個(gè)任務(wù)共同協(xié)作完成一件事情,其間存在的直接制約關(guān)系叫做任務(wù)同步。任務(wù)同步的主要工作就是對(duì)多個(gè)相關(guān)任務(wù)在執(zhí)行次序上進(jìn)行調(diào)協(xié)調(diào),以使并發(fā)執(zhí)行的豬任務(wù)之間能有效的共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。任務(wù)間單向同步的過(guò)程:一個(gè)任務(wù)進(jìn)行I/O操作并等待信號(hào)回應(yīng),當(dāng)I/O操作完成時(shí),中斷服務(wù)程序或另一個(gè)任務(wù)發(fā)出信號(hào),該任務(wù)得到信號(hào)后繼續(xù)往下執(zhí)行。任務(wù)之間雙向同步的過(guò)程:運(yùn)行到某處的第一個(gè)任務(wù)發(fā)信號(hào)給第二個(gè)任務(wù),然后等待信號(hào)返回,通用地,當(dāng)?shù)诙€(gè)任務(wù)運(yùn)行到某處時(shí),發(fā)信號(hào)給第一個(gè)任務(wù)并等待返回信號(hào)。
互斥:每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前,應(yīng)先對(duì)要訪問(wèn)的臨界資源進(jìn)行檢查,看他是否正在被訪問(wèn),如果此刻該臨界資源未被訪問(wèn),進(jìn)程便可進(jìn)入臨界區(qū),對(duì)該資源進(jìn)行訪問(wèn),并設(shè)置它正在被訪問(wèn)的標(biāo)志,如果此刻該臨界資源正在被某個(gè)其他進(jìn)程訪問(wèn),則本進(jìn)程不能進(jìn)入臨界區(qū),這就是任務(wù)之間互斥的概念。通信:任務(wù)之間任務(wù)與中斷服務(wù)程序之間僅有同步是不夠的,他們之間還需要通信,所謂任務(wù)之間的通信是指任務(wù)之間或者任務(wù)與中斷服務(wù)程序之間的信息交互。在μC/OSⅡ中,這通過(guò)事件控制塊及其操作實(shí)現(xiàn)。事件:任務(wù)間通信所使用的信息載體,統(tǒng)稱為事件,主要有信號(hào)量、互斥型信號(hào)量、消息郵箱、消息隊(duì)列等。即用于通訊的數(shù)據(jù)結(jié)構(gòu)叫做事件控制塊對(duì)事件控制塊進(jìn)行的一些通用操作如下所述:OS_EventWaitListInit():初始化一個(gè)事件控制塊OS_EventTaskRdy():使一個(gè)任務(wù)進(jìn)入就緒狀態(tài)OS_EventWait():使一個(gè)任務(wù)進(jìn)入事件的等待隊(duì)列OS_EventTO():因?yàn)榈却瑫r(shí)而使一個(gè)任務(wù)進(jìn)入就緒狀態(tài)ECB初始化:1.建立空閑事件控制鏈表2.獲取一個(gè)空閑的事件控制塊鏈表3.初始化事件控制塊的任務(wù)等待隊(duì)列將一個(gè)任務(wù)掛載到就緒隊(duì)列將一個(gè)任務(wù)加入時(shí)間的等待隊(duì)列使等待超時(shí)的任務(wù)進(jìn)入就緒狀態(tài)信號(hào)量機(jī)制μC/OSⅡ中的信號(hào)量由兩部分組成,一部分是信號(hào)量的計(jì)數(shù)值,(它是一個(gè)16位的無(wú)符號(hào)整數(shù)),另一部分是由等待該信號(hào)量的任務(wù)組成的等任務(wù)等待隊(duì)列。用于同步的信號(hào)量,其初始值在信號(hào)量創(chuàng)建石質(zhì)為0,表明所同步的事件尚未發(fā)生用于互斥的信號(hào)量初始值為1,表明當(dāng)前沒(méi)有任務(wù)獲取該信號(hào)量,而用于資源管理的計(jì)數(shù)信號(hào)量,其初始值為N表明需要管理的最大資源數(shù)為N創(chuàng)建信號(hào)量:OS_EVENT*OSSemCreate(INT16Ucnt)刪除信號(hào)量:OS_EVENT*OSSemDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)獲取信號(hào)量:OS_EVENT*OSSemPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)釋放信號(hào)量:INT8UOSSemPost(OS_EVENT*pevent)無(wú)等待請(qǐng)求一個(gè)信號(hào)量:INT16UOSSemAccept(OS_EVENT*pevent)查詢信號(hào)量當(dāng)前狀態(tài):INT8UOSSemQuery(OS_EVENT*pevent,OS_SEM_DATA*p_sem_data)重置信號(hào)量的值:voidOAAemSet(OS_EVENT&pevent,INT16Ucnt,INT8U*err)使用互斥信號(hào)量可能會(huì)出現(xiàn)的問(wèn)題:1、死鎖問(wèn)題:當(dāng)系統(tǒng)中的多個(gè)任務(wù)共享系統(tǒng)資源,而共享資源的數(shù)量不足以滿足各任務(wù)的需要時(shí),會(huì)引起各任務(wù)對(duì)資源的競(jìng)爭(zhēng)而產(chǎn)生死鎖。通常使用互斥信號(hào)量來(lái)完成對(duì)共享資源的互斥訪問(wèn),但如果使用不當(dāng)仍然會(huì)發(fā)生死鎖。
2、優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題:當(dāng)有多個(gè)任務(wù)需要使用共享資源時(shí),可能會(huì)出現(xiàn)高優(yōu)先級(jí)任務(wù)被低優(yōu)先級(jí)任務(wù)阻塞,并等待低優(yōu)先級(jí)任務(wù)執(zhí)行的現(xiàn)象。高優(yōu)先級(jí)任務(wù)需要等待低優(yōu)先級(jí)任務(wù)釋放共享資源,而低優(yōu)先級(jí)任務(wù)又在等待中等優(yōu)先級(jí)任務(wù)的現(xiàn)象被稱為優(yōu)先級(jí)反轉(zhuǎn)互斥鎖互斥所也叫做互斥型信號(hào)量任務(wù),可以用互斥型信號(hào)量實(shí)現(xiàn)對(duì)共享資源的獨(dú)占式處理。互斥型信號(hào)量也稱為mutex,可以在應(yīng)用程序代碼中用于解決優(yōu)先級(jí)問(wèn)題。μC/OSⅡ的互斥型信號(hào)量由三個(gè)元素組成:標(biāo)志,優(yōu)先級(jí),任務(wù)列表注意:中斷服務(wù)程序不可調(diào)動(dòng)互斥鎖創(chuàng)建互斥鎖:OS_EVENT*OSMutexCreate(INT8Uprio,INT8U*err)刪除互斥鎖:OS_EVENT*OSMutexDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)(opt:刪除互斥鎖方式)等待獲取互斥鎖:voidOSMutexPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)(timeout:最大等待時(shí)間)釋放互斥鎖:INT8UOSMutexPost(OS_EVENT*pevent)查詢互斥鎖的狀態(tài):INT8UOSMutexQUERY(OS_EVENT*pevent,OS_MUTEX_DATA*p_mutex-data)無(wú)等待地獲取互斥鎖:INT8UOSMutexAccept(OS_EVENT*pevent,INT8U*err)郵箱機(jī)制郵箱作為μC/OSⅡ的一種事件類型,是用于實(shí)現(xiàn)μC/OSⅡ中任務(wù)之間或者任務(wù)與中斷服務(wù)程序之間的一種通信機(jī)制,它可以使一個(gè)任務(wù)或者中斷服務(wù)程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針類型的變量。該指針指向一個(gè)包含了特定“消息”的數(shù)據(jù)結(jié)構(gòu)。中斷服務(wù)程序只能向郵箱發(fā)送消息,但是不能從郵箱獲取信息,其原因是防止中斷服務(wù)程序被消息阻塞建立一個(gè)郵箱:OS_EVENT*OSMboxCreate(OS_EVENT*pevent,void*msg)(中斷服務(wù)程序不能創(chuàng)建郵箱)刪除郵箱:OS_EVENT*OSMboxDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)(opt:刪除方式;err:錯(cuò)誤返回參數(shù))從郵箱中獲取一條消息:OS_EVENT*OSMboxPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)發(fā)送一個(gè)消息到郵箱:INT8UOSMboxPost(OS_EVENT*pevent,void*msg)無(wú)等待的從郵箱中得到一個(gè)消息:void*OSMboxAccept(OS_EVENT*pevent,void*msg)查詢一個(gè)郵箱的狀態(tài):INT8UOSMboxQuery(OS_EVENT*pevent,OS_MBOX_DATA*p_mbox_data)消息隊(duì)列μC/OSⅡ?qū)崿F(xiàn)任務(wù)之間通信的另一種機(jī)制,它可以使一個(gè)任務(wù)或者中斷服務(wù)程序向另一個(gè)任務(wù)發(fā)送以指針?lè)绞蕉x的變量。每個(gè)指針指向的數(shù)據(jù)結(jié)構(gòu)變量,應(yīng)具體的應(yīng)用不同也會(huì)有所不同。建立消息隊(duì)列:OS_EVENT*OSQCreate(void**start,INT16Usize)(start:首地址;size:可容納的消息最大值)刪除消息隊(duì)列:OS_EVENT*OSQDel(os_EVENT*pevent,INT8Uopt,INT8U*err)(opt:刪除方式)從消息隊(duì)列中獲取一條消息:void*OSQPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)以FIFO(先進(jìn)先出,OSQPost()函數(shù)向向消息隊(duì)列發(fā)送的消息插入隊(duì)尾)方式像消息隊(duì)列發(fā)送一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2人投資合同范本
- 《長(zhǎng)方形、正方形的周長(zhǎng)》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)西師大版
- 2024年空氣煙氣監(jiān)測(cè)系統(tǒng)項(xiàng)目評(píng)估報(bào)告
- 飯店供油合同范本
- 《負(fù)數(shù)的初步認(rèn)識(shí)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年蘇教版數(shù)學(xué)五年級(jí)上冊(cè)
- Unit 1 A new start (Developing ideas 2) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年外研版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 中學(xué)聯(lián)盟浙江省瑞安市塘下鎮(zhèn)新華中學(xué)八年級(jí)《歷史與社會(huì)》(人教舊版)上冊(cè)教學(xué)設(shè)計(jì):第四單元第三課 多元文化的交融與世俗的時(shí)代(7份)
- 2024-2030年藥用塑料瓶行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)前景預(yù)測(cè)報(bào)告
- 合股合同范本
- 弱點(diǎn)維修合同范本
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺(tái)建設(shè)合同3篇
- 小學(xué)班會(huì)-交通安全伴我行(共25張課件)
- 建筑施工現(xiàn)場(chǎng)安全警示(案例)
- 《生產(chǎn)與運(yùn)作管理 第4版》課件 第1、2章 概論、需求預(yù)測(cè)與管理
- 護(hù)理禮儀與人文關(guān)懷
- 患者隱私保護(hù)的考試試題及答案
- 2025年中考數(shù)學(xué)一輪教材復(fù)習(xí)-第六章 圓 與圓有關(guān)的概念及性質(zhì)
- 2025年村兩委工作計(jì)劃
- 2025年日歷(日程安排-可直接打印)
- 事業(yè)單位考試職業(yè)能力傾向測(cè)驗(yàn)(社會(huì)科學(xué)專技類B類)試題及答案指導(dǎo)(2025年)
- 中小學(xué)反詐宣傳課件
評(píng)論
0/150
提交評(píng)論