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

正文內(nèi)容

嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告-在線瀏覽

2024-10-28 19:22本頁面
  

【正文】 子。一共有五支筷子,在該實(shí)驗(yàn)中 用了五個(gè)互斥信號(hào)量來代表。INT8U i。i=*(int *)pdata。uC/OSII 實(shí)驗(yàn)指導(dǎo)書 for(。OSSemPend(fork[i], 0, amp。OSSemPend(fork[j], 0, amp。/* Acquire semaphores to eat */ TaskEat(i)。OSSemPost(fork[i])。/* 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。信號(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ù)返回空指針。 OSSemPend()OSSemPend()函數(shù)用于任務(wù)試圖取得設(shè)備的使用權(quán),任務(wù)需要和其他任務(wù)或中斷同步,任務(wù)需要等待特定事件的發(fā)生的場(chǎng)合。如果調(diào)用時(shí)信號(hào)量等于零,OSSemPend()函數(shù)函數(shù)將任務(wù)加入該信號(hào)量的等待隊(duì)列。如果在預(yù)期的時(shí)鐘節(jié)拍內(nèi)信 號(hào)量被置起,μC/OSⅡ默認(rèn)最高優(yōu)先級(jí)的任務(wù)取得信號(hào)量恢復(fù)執(zhí)行。函數(shù)原型: :: :Void OSSemPend(OS_EVNNT *pevent, INT16U timeout, int8u *err)。該指針的值在建立該信號(hào)量時(shí)可以得到。Timeout允許一個(gè)任務(wù)在經(jīng)過了指定數(shù)目的時(shí)鐘節(jié)拍后還沒有得到需要的信號(hào)量時(shí) 恢復(fù)就緒狀態(tài)。這個(gè)時(shí)間長(zhǎng)度并不是非常嚴(yán)格的,可能存在一個(gè)時(shí)鐘節(jié)拍的誤差。OSSemPend()函數(shù)返回的錯(cuò)誤碼可能為下述幾 種:l OS_NO_ERR :信號(hào)量不為零。l OS_ERR_PEND_ISR :從中斷調(diào)用該函數(shù)。C/OSⅡ仍然包含了檢測(cè)這種情況的功能。返回值: 無 注意:必須先建立信號(hào)量,然后使用。 OSSemPost()OSSemPost()函數(shù)置起指定的信號(hào)量。如果有任何任務(wù)在等待信號(hào)量,最高優(yōu)先級(jí)的任務(wù)將得到信號(hào)量并進(jìn)入就緒狀態(tài)。函數(shù)原型:INT8U OSSemPost(OS_EVENT *pevent)。該指針的值在建立該信號(hào)量時(shí)可以得到。返回值:OSSemPost()函數(shù)的返回值為下述之一: lOS_NO_ERR :信號(hào)量被成功地設(shè)置 lOS_SEM_OVF :信號(hào)量的值溢出lOS_ERR_EVENT_TYPE :pevent 不是指向信號(hào)量的指針 注意:必須先建立信號(hào)量,然后使用。如果延時(shí)時(shí)間大于 0,系統(tǒng)將立即進(jìn) 行任務(wù)調(diào)度。延時(shí)時(shí)間 0 表示不進(jìn)行延時(shí),函數(shù)將立即返回調(diào)用者。函數(shù)原型:void OSTimeDly(INT16U ticks)。返回值:無注意:注意到延時(shí)時(shí)間 0 表示不進(jìn)行延時(shí)操作,而立即返回調(diào)用者。例如,希望延時(shí) 10 個(gè)時(shí)鐘節(jié)拍,可設(shè)定參數(shù)為 11。每個(gè)哲學(xué)家任務(wù)在就餐前必須申請(qǐng)并獲得一左一右兩支筷子,就餐完畢后釋放這兩支筷子。只有理解了,才能更好的進(jìn)行實(shí)驗(yàn)。2.實(shí)驗(yàn)內(nèi)容閱讀教材《計(jì)算機(jī)操作系統(tǒng)》第二章和第三章,掌握進(jìn)程管理及調(diào)度相關(guān)概念和原理。假設(shè)初始狀態(tài)為:有n個(gè)進(jìn)程處于就緒狀態(tài),有m個(gè)進(jìn)程處于阻塞狀態(tài)。程序要求如下:1)輸出系統(tǒng)中進(jìn)程的調(diào)度次序; 2)計(jì)算CPU利用率。//進(jìn)程名 intstate。//運(yùn)行需要的CPU時(shí)間(需運(yùn)行的時(shí)間片個(gè)數(shù))} 用PCB來模擬進(jìn)程;(2)設(shè)置兩個(gè)隊(duì)列,將處于“就緒”狀態(tài)的進(jìn)程PCB掛在隊(duì)列ready中;將處于“阻塞”狀態(tài)的進(jìn)程PCB掛在隊(duì)列blocked中。Struct QueueNode *next。//blocked隊(duì)列隊(duì)尾指針(3)設(shè)計(jì)子程序:start_state()。dispath()。calculate()。5源代碼:include includestruct PCB_type {int pid。//進(jìn)程狀態(tài)//2表示“執(zhí)行”狀態(tài)//1表示“就緒”狀態(tài)//0表示“阻塞”狀態(tài)int cpu_time。struct QueueNode{struct PCB_typePCB。}。//blocked隊(duì)列隊(duì)尾指針int use_cpu,unuse_cpu。int i。printf(“輸入就緒節(jié)點(diǎn)個(gè)數(shù)n:”)。n)。scanf(“%d”,amp。p=(struct QueueNode *)malloc(sizeof(struct QueueNode))。ready_head=ready_tail=p。i{p=(struct QueueNode *)malloc(sizeof(struct QueueNode))。p=1。scanf(“%d%d”,amp。p)。ready_tail=p。qnext =NULL。for(i=0。qnext=NULL。printf(“輸入阻塞進(jìn)程%d的pid和cpu_time:”,i+1)。q,amp。block_tailnext=q。}printf(“n處于就緒狀態(tài)的進(jìn)程有:n”)。i=1。p=pnext。} } void dispath()//模擬調(diào)度 {int x=0,t。unuse_cpu=0。scanf(”%d“,amp。printf(”開始調(diào)度n“)。if(ready_head!=ready_tail){p=ready_headnext。pnext=NULL。}p=2。state和use_cpu++。p。ready_tail=p。free(p)。x++。}if(x==tamp。block_head!=block_tail){q=block_headnext。qnext=NULL。}ready_tailnext=q。x=0。} void main(){start_state()。calculate()。模擬進(jìn)程調(diào)度幫我們鞏固了進(jìn)程三狀態(tài)之間的變遷??傊覀兠靼琢死碚撀?lián)系實(shí)際。實(shí)驗(yàn)三可變分區(qū)存儲(chǔ)管理1.目的和要求通過這次實(shí)驗(yàn),加深對(duì)內(nèi)存管理的認(rèn)識(shí),進(jìn)一步掌握內(nèi)存的分配、回收算法的思想。編寫程序模擬實(shí)現(xiàn)內(nèi)存的動(dòng)態(tài)分區(qū)法存儲(chǔ)管理。假定系統(tǒng)的內(nèi)存共640K,初始狀態(tài)為操作系統(tǒng)本身占用64K。要求編程序分別輸出tttt4時(shí)刻內(nèi)存的空閑區(qū)的狀態(tài)。每次作業(yè)運(yùn)行完,就要回收其占用的內(nèi)存大小,把作業(yè)節(jié)點(diǎn)按從大到小插入到空閑鏈隊(duì)中。int address。}。int len。struct busylinkNode *next。struct freelinkNode *free_head=NULL。//占用區(qū)隊(duì)列隊(duì)(帶頭結(jié)點(diǎn))首指針struct busylinkNode *busy_tail=NULL。struct busylinkNode *q。free_headnext=NULL。busy_headnext=NULL。paddress=64。//OS占用了64Kpnext=NULL。q=(struct busylinkNode *)malloc(sizeof(struct busylinkNode))。S39。qaddress=0。busy_headnext=q。} void requireMemo(char name, int require)/*模擬內(nèi)存分配*/ { freelinkNode *w,*u,*v。if(free_headnextlen=require){p=(struct busylinkNode*)malloc(sizeof(struct busylinkNode))。paddress=free_headnextaddress。pnext=NULL。busy_tail=p。t allocate“)。free_headnext=wnext。} else {waddress=waddress+require。}u=free_head。while((v!=NULL)amp。(vlenwlen)){u=v。}unext=w。} void freeMemo(char name)/* 模擬內(nèi)存回收*/ { int len。busylinkNode *q,*p。q=busy_head。while((p!=NULL)amp。(pname!=name)){q=p。}if(p==NULL){printf(”%c is not exist“,name)。}else{qnext=pnext。address=paddress。w=(struct freelinkNode*)malloc(sizeof(struct freelinkNode))。waddress=address。v=free_headnext。amp。v=vnext。wnext=v。} void printlink()/* 輸出內(nèi)存空閑情況(自由鏈的結(jié)點(diǎn))*/ {freelinkNode *p。p=(struct freelinkNode *)malloc(sizeof(struct freelinkNode))。while(p!=NULL){printf(”內(nèi)存的起始地址和內(nèi)存的大小%5dt%5d:n,paddress,plen)。} }void main(){int t1=1,t2=2,t3=3,t4=4。past(
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1