freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

非操作系統(tǒng)下的實驗嵌入式實驗報告-資料下載頁

2025-03-23 12:42本頁面
  

【正文】 原理 應(yīng)用程序中的各個任務(wù),必須通過彼此之間的有效合作,才能完成一項大規(guī)模的工作。因為這些任務(wù)在運行時, 經(jīng)常需要互相無沖突地訪問同個共享資源, 或者需要互相支持和依賴, 甚至有時還要互相加以必要的制約, 才能保證任務(wù)的順利運行。因此, 操作系統(tǒng)必須具有對任務(wù)的運行進(jìn)行協(xié)調(diào)的能力, 從而使任務(wù)之間可以無沖突、流暢地同步運行, 而不致導(dǎo)致災(zāi)難性的后果。 與人們依靠通信來互相溝通, 從而使人際關(guān)系和諧, 工作順利的做法一樣, 計算機系統(tǒng)是依靠任務(wù)之間的良好通信來保證任務(wù)與任務(wù)的同步的。 嵌入式系統(tǒng)中的各個任務(wù)都是以并發(fā)的方式來運行的, 并為同一個大的任務(wù)服務(wù)。它們不可避免地要共同使用一些共享資源, 并且在處理一些需要多個任務(wù)共同協(xié)作來完成的工作時, 還需要相互的支持和限制。因此, 對于一個完善的多任務(wù)操作系統(tǒng)來說, 系統(tǒng)必須具有完各的同步和通信機制。1) 任務(wù)間的同步 為了實現(xiàn)各任務(wù)之間的合作和無沖突的運行, 在各任務(wù)之間必須建立一些制約關(guān)系。其中一種制約關(guān)系叫做直接制約關(guān)系,另一種制約關(guān)系則叫做間接制約關(guān)系。直接制約關(guān)系源于任務(wù)之間的合作。例如,有兩個任務(wù):任務(wù) A 和任務(wù) B,它們需要通過訪問同一個數(shù)據(jù)緩沖區(qū)合作完成一項工作,任務(wù) A 負(fù)責(zé)向緩沖區(qū)寫入數(shù)據(jù),任務(wù) B 負(fù)責(zé)從緩沖區(qū)讀取該數(shù)據(jù)。顯然,當(dāng)任務(wù) A 還未向緩沖區(qū)寫入數(shù)據(jù)時(緩沖區(qū)為空時),任務(wù) B 因不能從緩沖區(qū)得到有效數(shù)據(jù)而應(yīng)該處于等待狀態(tài);只有等任務(wù) A 向緩沖區(qū)寫入了數(shù)據(jù)之后,才應(yīng)該通知任務(wù) B 去取數(shù)據(jù)。相反,當(dāng)緩沖區(qū)的數(shù)據(jù)還未被任務(wù) B 讀取時(緩沖區(qū)為滿時),任務(wù) A 就不能向緩沖區(qū)寫入新的數(shù)據(jù)而應(yīng)該處于等待狀態(tài);只有等任務(wù) B 自緩沖區(qū)讀取數(shù)據(jù)后,才應(yīng)該通知任務(wù) A 去寫入數(shù)據(jù)。顯然,如果這兩個任務(wù)不能如此協(xié)調(diào)工作,將勢必造成嚴(yán)重的后果。 間接制約關(guān)系源于對資源的共享。例如,任務(wù) A 和任務(wù) B 共享一臺打印機,如果系統(tǒng)已經(jīng)把打印機分配給了任務(wù) A,則任務(wù) B 因不能獲得打印機的使用權(quán)而應(yīng)該處于等待狀態(tài);只有當(dāng)任務(wù) A 把打印機釋放后,系統(tǒng)才能喚醒任務(wù) B 使其獲得打印機的使用杈。如果這兩個任務(wù)不這樣做,那么也會造成極大的混亂。由上可知,在多任務(wù)合作工作的過程中,操作系統(tǒng)應(yīng)該解決兩個問題:一是各任務(wù)間應(yīng)該具有一種互斥關(guān)系, 即對于某個共享資源, 如果某個任務(wù)正在使用, 則其他任務(wù)只能等待,等到該任務(wù)釋放該資源后, 等待的任務(wù)之一才能使用它; 二是相關(guān)的任務(wù)在執(zhí)行上要有先后次序一個任務(wù)要等其伙伴發(fā)來通知,或建立了某個條件后才能繼續(xù)執(zhí)行,否則只能等待。 任務(wù)之問這種制約性的合作運行機制叫做任務(wù)間的同步。系統(tǒng)中任務(wù)的同步是依靠任務(wù) 與任務(wù)之間互相發(fā)送消息來保證同步的。2) 事件 任務(wù)間的同步依賴于任務(wù)間的通信。在μC/OSII 中,使用信號量、郵箱(消息郵箱)和消息隊列這些被稱作事件的中間環(huán)節(jié)來實現(xiàn)任務(wù)之間的通信。 圖 33 是兩個任務(wù)通過事件進(jìn)行通信的示意圖。任務(wù) 1 是發(fā)信方,任務(wù) 2 是收信方。作為發(fā)信方, 任務(wù) 1 的責(zé)任是把信息發(fā)送到事件上, 這項操作叫做發(fā)送事件。 作為收信方, 任務(wù) 2 的責(zé)任是通過讀事件操作對事件進(jìn)行查尋: 如果有信息, 則讀取信息;如果沒有, 則等待。讀事件操作叫做請求事件。 μC/OSII 把任務(wù)發(fā)送事件、請求事件以及其他對事件的操作都定義成為全局函數(shù),以供應(yīng)用程序的所有任務(wù)來調(diào)用3) 信號量 信號量是一類事件。使用信號量的最初目的, 是為了共享資源設(shè)立一個表示該共享資源被占用情況的標(biāo)志。這樣, 就可使任務(wù)在訪問共享資源之前, 先對這個標(biāo)志進(jìn)行查詢, 在了解資源被占用的情況之后,再來決定自己的行為。 觀察一下人們?nèi)粘I钪谐S玫囊环N共享資源——公用電話亭的使用規(guī)則, 就會發(fā)現(xiàn)它的規(guī)則很適合在協(xié)調(diào)關(guān)系時應(yīng)用。如果一個電話亭只允許一個人進(jìn)去打電話, 那么電話亭的門上就應(yīng)該有一個可以變換兩種顏色的牌子(例如, 用紅色表示“有人”用綠色表示“無人” )當(dāng)有入進(jìn)去時, 牌子會變成紅色; 出來時, 牌子又會變成綠色。 這樣來打電話的人就可根據(jù)牌子的顏色來了解電話亭的被占用情況。 例如, 如果某一個人去電話亭打電話時見到牌子上的顏色是綠色, 那么他就可以進(jìn)去打電話; 如果是紅色, 那么他只好等待; 如杲又陸續(xù)來了很多人,那么就要排隊等待。 顯然,電話亭門上的這個牌子就是一個表示電話亭是否已被占用的信號。 顯然, 這是一個二值信號, 由于這種二值信號可以實現(xiàn)共享資源的獨占式占用, 所以叫做互斥型信號量。 如果電話亭可以允許多人打電話, 那么電話亭門前就不應(yīng)該是只有紅色和綠色兩種狀態(tài)的牌子,而應(yīng)該是一個計數(shù)器,并且這個計數(shù)器在每進(jìn)去一個人時會自動減 1,而每出去一個人時會自動加 1。如果計數(shù)器的初值按電話亭的最大容量來設(shè)置,那么來人只要見到計數(shù)器的值大于 0,就可以進(jìn)去打電話;否則只好等待。這種計數(shù)式的信號叫做信號量。 圖 34 是兩個任務(wù)使用互斥型信號量進(jìn)行通信, 從而可便這兩個任務(wù)無沖突地訪問一個共享資源的示意圖。 任務(wù) 1 在訪問共享資源之前先進(jìn)行請求信號量的操作, 當(dāng)任務(wù) 1 發(fā)現(xiàn)信號量的標(biāo)志為“1”時,它一方面把信號量的標(biāo)志由“1”改為“0” ,另一方面進(jìn)行共享資源的訪問。如果任務(wù) 2 在任務(wù) 1 已經(jīng)獲得信號之后來請求信號量, 那么因為它獲得的標(biāo)志值是“0” ,所以任務(wù) 2 就只有等待而不能訪問共享資源了(見圖 34 (a))。顯然,這種做法可以有效地防止兩個任務(wù)同時訪問同一個共享資源所造成的沖突。 那么任務(wù) 2 何時可以訪問共享資源呢?當(dāng)是在任務(wù) 1 使用完共享資源之后,由任務(wù) 1向信號量發(fā)信號使信號量標(biāo)志的值由“0”再變?yōu)椤?”時, 任務(wù) 2 就有機會訪問共享資源了。同任務(wù) 1 一樣, 任務(wù) 2 一旦獲得了共享資源的訪問權(quán), 那么在訪問共享資源之前一定要把信號量標(biāo)志的值由“1”變?yōu)椤?” 。 實驗儀器與設(shè)備1. TQ2440 實驗平臺2. JLINK 調(diào)試器3. 串口線 實驗步驟1. 2. 閱讀代碼,熟悉任務(wù)的信號量的建立方法3. 修改例程代碼,建立三個任務(wù),程序結(jié)構(gòu)如圖32所示a) 修改工程,建立任務(wù)0:蜂鳴器唱歌任務(wù)(注意,單個音符的延遲應(yīng)該采用μC/OS II的延遲函數(shù)OSTimeDly()來實現(xiàn),不用自己寫延遲函數(shù)),進(jìn)行調(diào)試,知道能夠正常唱歌b) 建立任務(wù)1:仿照“”建立按鍵檢測LED控制任務(wù),并且創(chuàng)建信號量,當(dāng)檢測到按鍵按下后,通過OSSemPost()函數(shù)發(fā)出一個信號量c) 建立任務(wù)2:利用OSSemPend ()函數(shù)等待信號量,當(dāng)?shù)却叫盘柫亢笸ㄟ^串口輸出相應(yīng)的按鍵號d) 全速運行程序,觀察在唱歌的同時,按下按鍵,串口能否產(chǎn)生相應(yīng)的輸出e) 把三個任務(wù)的代碼列出來,填入下表中序號程序現(xiàn)象1OSTaskCreate(Task0,(void*)0,amp。Task0Stk[Task0StkLeng1],7)。OSTaskCreate(Task1,(void*)0,amp。Task1Stk[Task1StkLeng1],7)。OSTaskCreate(Task2,(void*)0,amp。Task2Stk[Task2StkLeng1],7)。建立三個優(yōu)先級分別為9的任務(wù)2void Task0(void *pdata){ unsigned char Temp1,Temp2。 U16 freq。// lci 1000 unsigned int Addr=0。 while(1) { Temp1=SONG[Addr++]。 Temp2=SONG[Addr++]。 switch ( Temp1) { case 01: freq=260。 break。 case 02: freq=294。 break。 case 03: freq=328。 break。 case 04: freq=347。 break。 case 05: freq=390。 break。 case 06: freq=438。 break。 case 07: freq=490。 break。 case 11: freq=520。 break。 case 12: freq=581。 break。 case 13: freq=657。 break。 case 14: freq=694。 break。 case 15: freq=781。 break。 case 16: freq=892。 break。 case 17: freq=1000。 break。 case 21: freq=1041。 break。 case 22: freq=1190。 break。 case 23: freq=1315。 break。 case 24: freq=1388。 break。 case 25: freq=1562。 break。 case 26: freq=1785。 break。 case 27: freq=1923。 break。 default: freq=39。e39。break。 } Buzzer_Freq_Set0( freq )。 OSTimeDly(120*Temp2)。 if(Addr440) //440, { Addr=0。 } }}任務(wù)0控制蜂鳴器唱歌3void Task1(void *pdata) //任務(wù)1,按鍵檢測{ unsigned char count1,count2。 count1=0。 count2=0。 rGPFCONamp。=~(0x3FF)。 //按鍵配置為輸入 while(1) { if((rGPFDATamp。0x17)!=0x17)//檢測到有按鍵按下 { count1++。 OSSemPost(Semp)。 //發(fā)出信號量 OSTimeDly(50)。 } else { count2++。 OSTimeDly(50)。 } } }任務(wù)1實現(xiàn)按鍵檢測當(dāng)檢測到有鍵按下時,發(fā)送一個信號量4void Task2(void *pdata){ unsigned char count=0。 while(1) { OSSemPend(Semp,0,amp。err)。 //等待信號量 count++。 OSPrintf(\nTask 2=%d\n,count)。 } }任務(wù)2實現(xiàn)串口打印當(dāng)接受到一個信號量時串口打印計數(shù)加1序號程序現(xiàn)象1234圖32信號量實現(xiàn)任務(wù)間通信示意圖 實驗思考題列舉出μC/OS II 的任務(wù)間通信的方式,并比較它們的異同答:信號量:當(dāng)一個任務(wù)在訪問共享資源前,可以先對這個標(biāo)志進(jìn)行查詢,從而在了解資源被占用情況后在決定自己的行為。消息郵箱:使一個任務(wù)或者中斷服務(wù)子程序向另一個任務(wù)發(fā)送一個指針型的變量。消息隊列:通過發(fā)送消息緩沖區(qū)指針數(shù)組的指針實現(xiàn)發(fā)送消息隊列。信號量集:信號量集實際上就是一個多輸入多輸出的組合邏輯。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1