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

正文內(nèi)容

嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告-文庫吧

2025-10-14 19:22 本頁面


【正文】 ,系統(tǒng)會(huì)重新進(jìn)行任務(wù)調(diào)度,運(yùn)行下一個(gè)優(yōu)先級(jí)最高的就緒任務(wù)。喚醒掛起任務(wù)需要調(diào)用 函數(shù) OSTaskResume()。任務(wù)的掛起是可以疊加到其他操作上的。例如,任務(wù)被掛起時(shí)正在進(jìn)行延時(shí)操作,那么 任務(wù)的喚醒就需要兩個(gè)條件:延時(shí)的結(jié)束以及其他任務(wù)的喚醒操作。又如,任務(wù)被掛起時(shí)正 在等待信號(hào)量,當(dāng)任務(wù)從信號(hào)量的等待對(duì)列中清除后也不能立即運(yùn)行,而必須等到被喚醒后。函數(shù)原型:INT8U OSTaskSuspend(INT8U prio)。參數(shù)說明:prio 為指定要獲取掛起的任務(wù)優(yōu)先級(jí),也可以指定參數(shù) OS_PRIO_SELF,掛起任務(wù)本 身。此時(shí),下一個(gè)優(yōu)先級(jí)最高的就緒任務(wù)將運(yùn)行。返回值:OSTaskSuspend()的返回值為下述之一: l OS_NO_ERR:函數(shù)調(diào)用成功。l OS_TASK_ SUSPEND_IDLE:試圖掛起 181。C/OSII 中的空閑任務(wù)(Idle task)。此為非法操作。l OS_PRIO_INVALID :參數(shù)指定的優(yōu)先級(jí)大于 OS_LOWEST_PRIO 或沒有設(shè)定 l OS_PRIO_SELF 的值。l OS_TASK_ SUSPEND _PRIO:要掛起的任務(wù)不存在。注意:在程序中 OSTaskSuspend()和 OSTaskResume()應(yīng)該成對(duì)使用。用 OSTaskSuspend()掛起的任務(wù)只能用 OSTaskResume()喚醒。 OSTaskResume()OSTaskResume()喚醒一個(gè)用 OSTaskSuspend()函數(shù)掛起的任務(wù)。OSTaskResume()也是唯一能“解掛”掛起任務(wù)的函數(shù)。函數(shù)原型:INT8UOSTaskResume(INT8U prio)。參數(shù)說明:prio 指定要喚醒任務(wù)的優(yōu)先級(jí)。返回值:OSTaskResume()的返回值為下述之一: l OS_NO_ERR:函數(shù)調(diào)用成功。l OS_TASK_RESUME_PRIO:要喚醒的任務(wù)不存在。l OS_TASK_NOT_SUSPENDED:要喚醒的任務(wù)不在掛起狀態(tài)。l OS_PRIO_INVALID:參數(shù)指定的優(yōu)先級(jí)大于或等于 OS_LOWEST_PRIO。五、實(shí)驗(yàn)過程中遇到的問題及體會(huì)實(shí)驗(yàn)過程中體會(huì)到了嵌入式開發(fā)的樂趣,對(duì)上課老師所講的內(nèi)容有了進(jìn)一步的認(rèn)識(shí)與理解。17 實(shí)驗(yàn)三 信號(hào)量:哲學(xué)家就餐問題的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康恼莆赵诨谇度胧綄?shí)時(shí)操作系統(tǒng) uC/OSII 的應(yīng)用中,任務(wù)使用信號(hào)量的一般原理。通 過經(jīng)典的哲學(xué)家就餐實(shí)驗(yàn),了解如何利用信號(hào)量來對(duì)共享資源進(jìn)行互斥訪問。二、實(shí)驗(yàn)原理及程序結(jié)構(gòu)掌握在基于嵌入式實(shí)時(shí)操作系統(tǒng) uC/OSII 的應(yīng)用中,任務(wù)使用信號(hào)量的一般原理。通 過經(jīng)典的哲學(xué)家就餐實(shí)驗(yàn),了解如何利用信號(hào)量來對(duì)共享資源進(jìn)行互斥訪問。五個(gè)哲學(xué)家任務(wù)(phphphphph5)主要有兩種過程:思考(即睡眠一段時(shí)間)和就餐。每個(gè)哲學(xué)家任務(wù)在就餐前必須申請(qǐng)并獲得一左一右兩支筷子,就餐完畢后釋放 這兩支筷子。五個(gè)哲學(xué)家圍成一圈,每?jī)扇酥g有一支筷子。一共有五支筷子,在該實(shí)驗(yàn)中 用了五個(gè)互斥信號(hào)量來代表。每個(gè)任務(wù)的代碼都一樣,如下所示: void Task(void *pdata){INT8U err。INT8U i。INT8U j。i=*(int *)pdata。j=(i+1)% 5。uC/OSII 實(shí)驗(yàn)指導(dǎo)書 for(。){TaskThinking2Hungry(i)。OSSemPend(fork[i], 0, amp。err)。OSSemPend(fork[j], 0, amp。err)。/* Acquire semaphores to eat */ TaskEat(i)。OSSemPost(fork[j])。OSSemPost(fork[i])。/* Release semaphore */ OSTimeDly(200)。/* Delay 10 clock tick */ } }操作系統(tǒng)配置修改 uC_OSII/: :: :define OS_MAX_EVENTS 10 /*最多可以有 10 個(gè)事件*/ define OS_MAX_FLAGS 5 /*最多可以有 5 個(gè)事件標(biāo)志*/define OS_MAX_MEM_PART 5 /*最多可以劃分 5 個(gè)內(nèi)存塊*/ define OS_MAX_QS 2 /*最多可以使用 2 個(gè)隊(duì)列*/ define OS_MAX_TASKS 8 /*最多可以創(chuàng)建 8 個(gè)任務(wù)*/define OS_LOWEST_PRIO 14 /*任務(wù)優(yōu)先級(jí)不可以大于 14*/ define OS_TASK_IDLE_STK_SIZE 1024 /*空閑任務(wù)堆棧大小*/ define OS_TASK_STAT_EN 1 /*是否允許使用統(tǒng)計(jì)任務(wù)*/ define OS_TASK_STAT_STK_SIZE 1024 /*統(tǒng)計(jì)任務(wù)堆棧大小*/ define OS_FLAG_EN 1 /*是否允許使用事件標(biāo)志功能*/define OS_FLAG_WAIT_CLR_EN 1 /*是否允許等待清除事件標(biāo)志*/ define OS_FLAG_ACCEPT_EN 1 /*是否允許使用 OSFlagAccept()*/ define OS_FLAG_DEL_EN 1 /*是否允許使用 OSFlagDel()*/define OS_FLAG_QUERY_EN 1 /*是否允許使用 OSFlagQuery()*/ define OS_MBOX_EN 0 /*是否允許使用郵箱功能*/define OS_MEM_EN 0 /*是否允許使用內(nèi)存管理的功能*/define OS_MUTEX_EN 0 /*是否允許使用互斥信號(hào)量的功能*/ define OS_Q_EN 0 /*是否允許使用隊(duì)列功能*/ define OS_SEM_EN 1 /*是否允許使用信號(hào)量功能*/define OS_SEM_ACCEPT_EN 1 /*是否允許使用 OSSemAccept()*/ define OS_SEM_DEL_EN 1 /*是否允許使用OSSemDel()*/define OS_SEM_QUERY_EN 1 /*是否允許使用OSSemQuery()*/ define OS_TASK_CHANGE_PRIO_EN 1 /* 是 否 允 許 使 用 OSTaskChangePrio()*/define OS_TASK_CREATE_EN 1 /*是否允許使用 OSTaskCreate()*/define OS_TASK_CREATE_EXT_EN 1 /*是否允許使用 OSTaskCreateExt()*/ define OS_TASK_DEL_EN 1 /*是否允許使用 OSTaskDel()*/define OS_TASK_SUSPEND_EN 1 /* 是 否 允 許 使 用 OSTaskSuspend()and OSTaskResume()*/define OS_TASK_QUERY_EN 1 /*是否允許使用 OSTaskQuery()*/ define OS_TIME_DLY_HMSM_EN 1 /* 是 否 允 許 使 用 OSTimeDlyHMSM()*/define OS_TIME_DLY_RESUME_EN 1 /* 是 否 允 許 使 用 OSTimeDlyResume()*/define OS_TIME_GET_SET_EN 1 /* 是否允許使用 OSTimeGet()和 OSTimeSet()*/define OS_SCHED_LOCK_EN 1 /* 是 否 允 許 使 用 OSSchedLock()和 OSSchedUnlock()*/define OS_TICKS_PER_SEC 200 /*設(shè)置每秒之內(nèi)的時(shí)鐘節(jié)拍數(shù)目*/三、運(yùn)行及觀察應(yīng)用輸出信息開始,所有的哲學(xué)家先處于 thinking 狀態(tài),然后都進(jìn)入 hungry 狀態(tài):后首先獲得兩個(gè)信號(hào)量的 3 號(hào)哲學(xué)家開始 eating,待他們釋放相關(guān)信號(hào)量之后,哲學(xué)家 4 獲得所需的信號(hào)量并 eating: 應(yīng)用如此這般地循環(huán)執(zhí)行程序下去??四、本實(shí)驗(yàn)中用到的181。C/OSⅡ相關(guān)函數(shù) OSSemCreate()OSSemCreate()函數(shù)建立并初始化一個(gè)信號(hào)量。信號(hào)量的作用如下: l 允許一個(gè)任務(wù)和其他任務(wù)或者中斷同步 l 取得設(shè)備的使用權(quán) l 標(biāo)志事件的發(fā)生函數(shù)原型:OS_EVENT *OSSemCreate((((WORD value))))參數(shù)說明:value 參數(shù)是所建立的信號(hào)量的初始值,可以取 0 到 65535 之間的任何值。返回值:OSSemCreate()函數(shù)返回指向分配給所建立的信號(hào)量的控制塊的指針。如果沒有可用的 控制塊,OSSemCreate()函數(shù)返回空指針。注意:必須先建立信號(hào)量,然后使用。 OSSemPend()OSSemPend()函數(shù)用于任務(wù)試圖取得設(shè)備的使用權(quán),任務(wù)需要和其他任務(wù)或中斷同步,任務(wù)需要等待特定事件的發(fā)生的場(chǎng)合。如果任務(wù)調(diào)用 OSSemPend()函數(shù)時(shí),信號(hào)量 的值大于零,OSSemPend()函數(shù)遞減該值并返回該值。如果調(diào)用時(shí)信號(hào)量等于零,OSSemPend()函數(shù)函數(shù)將任務(wù)加入該信號(hào)量的等待隊(duì)列。OSSemPend()函數(shù)掛起當(dāng)前 任務(wù)直到其他的任務(wù)或中斷置起信號(hào)量或超出等待的預(yù)期時(shí)間。如果在預(yù)期的時(shí)鐘節(jié)拍內(nèi)信 號(hào)量被置起,μC/OSⅡ默認(rèn)最高優(yōu)先級(jí)的任務(wù)取得信號(hào)量恢復(fù)執(zhí)行。一個(gè)被 OSTaskSuspend()函數(shù)掛起的任務(wù)也可以接受信號(hào)量,但這個(gè)任務(wù)將一直保持掛起狀態(tài)直到通過調(diào)用 OSTaskResume()函數(shù)恢復(fù)任務(wù)的運(yùn)行。函數(shù)原型: :: :Void OSSemPend(OS_EVNNT *pevent, INT16U timeout, int8u *err)。參數(shù)說明: :: :pevent是指向信號(hào)量的指針。該指針的值在建立該信號(hào)量時(shí)可以得到。(參考 OSSemCreate()函數(shù))。Timeout允許一個(gè)任務(wù)在經(jīng)過了指定數(shù)目的時(shí)鐘節(jié)拍后還沒有得到需要的信號(hào)量時(shí) 恢復(fù)就緒狀態(tài)。如果該值為零表示任務(wù)將持續(xù)地等待信號(hào)量,最大的等待時(shí)間為 65535 個(gè)時(shí)鐘節(jié)拍。這個(gè)時(shí)間長(zhǎng)度并不是非常嚴(yán)格的,可能存在一個(gè)時(shí)鐘節(jié)拍的誤差。Err 是指向包含錯(cuò)誤碼的變量的指針。OSSemPend()函數(shù)返回的錯(cuò)誤碼可能為下述幾 種:l OS_NO_ERR :信號(hào)量不為零。l OS_TIMEOUT :信號(hào)量沒有在指定數(shù)目的時(shí)鐘周期內(nèi)被設(shè)置。l OS_ERR_PEND_ISR :從中斷調(diào)用該函數(shù)。雖然規(guī)定了不允許從中斷調(diào)用該函數(shù),但 181。C/OSⅡ仍然包含了檢測(cè)這種情況的功能。lOS_ERR_EVENT_TYPE :pevent 不是指向信號(hào)量的指針。返回值: 無 注意:必須先建立信號(hào)量,然后使用。不允許從中斷調(diào)用該函數(shù)。 OSSemPost()OSSemPost()函數(shù)置起指定的信號(hào)量。如果指定的信號(hào)量是零或大于零,OSSemPost()函數(shù)遞增該信號(hào)量并返回。如果有任何任務(wù)在等待信號(hào)量,最高優(yōu)先級(jí)的任務(wù)將得到信號(hào)量并進(jìn)入就緒狀態(tài)。任務(wù)調(diào)度函數(shù)將進(jìn)行任務(wù)調(diào)度,決定當(dāng)前運(yùn)行的任務(wù)是否仍然為最高 優(yōu)先級(jí)的就緒狀態(tài)的任務(wù)。函數(shù)原型:INT8U OSSemPost(OS_EVENT *pevent)。參數(shù)說明:pevent是指向信號(hào)量的指針。該指針的值在建立該信號(hào)量時(shí)可以得到。(參考 OSSemCreate()函數(shù))。返回值:OSSemPost()函數(shù)的返回值為下述之一: lOS_NO_ERR :信號(hào)量被成功地設(shè)置 lOS_SEM_OVF :信號(hào)量的值溢出lOS_ERR_EVENT_TYPE :pevent 不是指向信號(hào)量的指針 注意:必須先建立信號(hào)量,然后使用。 OSTimeDly()OSTimeDly()將一個(gè)任務(wù)延時(shí)若干個(gè)時(shí)鐘節(jié)拍。如果延時(shí)時(shí)間大于 0,系統(tǒng)將立即進(jìn) 行任務(wù)調(diào)度。延時(shí)時(shí)間的長(zhǎng)度可從 0 到 65535 個(gè)時(shí)鐘節(jié)拍。延時(shí)時(shí)間 0 表示不進(jìn)行延時(shí),函數(shù)將立即返回調(diào)用者。延時(shí)的具體時(shí)間依賴于系統(tǒng)每秒鐘有多少時(shí)鐘節(jié)拍(由文件 中的常量 OS_TICKS_PER_SEC 設(shè)定)。函數(shù)原型:void OSTimeDly(INT16U ticks)。參數(shù)說明:ticks 為要延時(shí)的時(shí)鐘節(jié)拍數(shù)。返回值:無注意:注意到延時(shí)時(shí)間 0 表示不進(jìn)行延時(shí)操作,而立即返回調(diào)用者。為了確保設(shè)定的延時(shí)時(shí)間,建議用戶設(shè)定的時(shí)鐘節(jié)拍數(shù)加 1。例如,希望延時(shí) 10 個(gè)時(shí)鐘節(jié)拍,可設(shè)定參數(shù)為 11。五、實(shí)驗(yàn)過程中遇到的問題及體會(huì)在實(shí)驗(yàn)前要對(duì)該問題進(jìn)行深入的理解,即五個(gè)哲學(xué)家任務(wù)(phphphphph5)主要有兩種過程:思考(即睡眠一段時(shí)間)和就餐。每個(gè)哲學(xué)家任務(wù)在就餐前必須申請(qǐng)并獲得一左一右兩支筷子,就餐完畢后釋放這兩支筷子。五個(gè)哲學(xué)家圍成一圈,每?jī)扇酥g有一支筷子。只有理解了,才能更好的進(jìn)行實(shí)驗(yàn)。第二篇:操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)二進(jìn)程調(diào)度1.目的和要求通過這次實(shí)驗(yàn),理解進(jìn)程調(diào)度的過程,進(jìn)一步掌握進(jìn)程狀態(tài)的轉(zhuǎn)變、進(jìn)程調(diào)度的策略,進(jìn)一步體會(huì)多道程序并發(fā)執(zhí)行的特點(diǎn),并分析具體的調(diào)度算法的特點(diǎn),掌握對(duì)系統(tǒng)性能的評(píng)價(jià)方法。2.實(shí)驗(yàn)內(nèi)容閱讀教材《計(jì)算機(jī)操作系統(tǒng)》第二章和第三章,掌握進(jìn)程管理及調(diào)度相關(guān)概念和原理。編寫程序模擬實(shí)現(xiàn)進(jìn)程的輪轉(zhuǎn)法調(diào)度過程,模擬程序只對(duì)PCB進(jìn)行相應(yīng)的調(diào)度模擬操作,不需要實(shí)際程序。假設(shè)初始狀態(tài)為:有n個(gè)進(jìn)程處于就緒狀態(tài),有m個(gè)進(jìn)程處于阻塞狀態(tài)。采用輪轉(zhuǎn)法進(jìn)程調(diào)度算法進(jìn)行調(diào)度(調(diào)度過程中,假設(shè)處于執(zhí)行狀態(tài)的進(jìn)程不會(huì)阻塞),且每過t個(gè)時(shí)間片系統(tǒng)釋放資源,喚醒處于阻塞隊(duì)列隊(duì)首的進(jìn)程。程序要求如下:1)輸出系統(tǒng)中進(jìn)程的調(diào)度次序; 2)計(jì)算CPU利用率。3.實(shí)驗(yàn)環(huán)境Windows操作系統(tǒng)、VC++ C語言4設(shè)計(jì)思想:(1)程序中進(jìn)程可用PCB表示,其類型描述如下:stru
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1