




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PV原語(yǔ)的模擬實(shí)現(xiàn)文檔編制序號(hào):[KKIDT-LLE0828-LLETD298-POI08]P、V原語(yǔ)的模擬實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康谋菊n題實(shí)習(xí)的目的是,加深對(duì)進(jìn)程概念及進(jìn)程管理各部分內(nèi)容的理解;熟悉進(jìn)程管理中主要數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)及進(jìn)程調(diào)度算法,進(jìn)程控制機(jī)構(gòu)、同步結(jié)構(gòu)、通迅機(jī)構(gòu)的實(shí)施。要求設(shè)計(jì)一個(gè)允許n個(gè)進(jìn)程并發(fā)運(yùn)行的進(jìn)程管理模擬糸統(tǒng)。該糸統(tǒng)包括有簡(jiǎn)單的進(jìn)程控制、同步及通迅機(jī)構(gòu),其進(jìn)程調(diào)度算法可任意選擇。每個(gè)進(jìn)程用一個(gè)PCB表示,其內(nèi)容可根據(jù)具體情況設(shè)置。各進(jìn)程之間應(yīng)有一定的同步關(guān)糸。糸統(tǒng)在運(yùn)行過程中應(yīng)能顯示或打印各進(jìn)程的狀態(tài)及有關(guān)參數(shù)的變化情況,以便觀察諸進(jìn)程的運(yùn)行過程及糸統(tǒng)的管理過程。1) 理解信號(hào)量相關(guān)理論;2) 掌握記錄型信號(hào)量結(jié)構(gòu);3)掌握P、V原語(yǔ)實(shí)現(xiàn)機(jī)制。二、 實(shí)驗(yàn)要求1) 輸入給定代碼;2) 進(jìn)行功能測(cè)試并得出正確結(jié)果。3) 分析P和V函數(shù)功能模塊;4) 在實(shí)驗(yàn)報(bào)告中畫出P和V函數(shù)流程圖;5) 撰寫實(shí)驗(yàn)報(bào)告。三、 實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)針對(duì)操作系統(tǒng)中信號(hào)量相關(guān)理論進(jìn)行實(shí)驗(yàn),要求實(shí)驗(yàn)者輸入實(shí)驗(yàn)指導(dǎo)書提供的代碼并進(jìn)行測(cè)試。代碼主要模擬信號(hào)量的P操作和V操作。1) 信號(hào)量信號(hào)量也稱為信號(hào)鎖,主要應(yīng)用于進(jìn)程間的同步和互斥,在用于互斥時(shí),通常作為資源鎖。信號(hào)量通常通過兩個(gè)原子操作P和V來(lái)訪問。P操作使信號(hào)量的值+1,V操作使信號(hào)量的值-1。2) 記錄型信號(hào)量記錄型信號(hào)量采用了“讓權(quán)等待”的策略,存在多個(gè)進(jìn)程等待訪問同一臨界資源的情況,所以記錄型信號(hào)量需要一個(gè)等待鏈表來(lái)存放等待該信號(hào)量的進(jìn)程控制塊或進(jìn)程號(hào)。在本實(shí)驗(yàn)中,使用記錄型信號(hào)量。四、 功能測(cè)試五.#include<>#defineTRUE1#defineFALSE0#defineMAXPRI100#defineNIL-1struct{intid;charstatus;intnextwr;intpriority;}pcb[1];struct{intvalue;intfirstwr;}sem[2];charsavearea[1][3],addr;inti,s1,s2,seed,exe=NIL;init(){intj;for(j=0;j<1;j++){pcb[j].id=j;pcb[j].status='r';pcb[j].nextwr=NIL;printf("\nprocess%dpriority",j+1);scanf("%d",&i);pcb[j].priority=i;}sem[0].value=1;sem[0].firstwr=NIL;sem[1].value=1;sem[1].firstwr=NIL;for(i=1;i<1;i++)for(j=0;j<3;j++)savearea[i][j]='0';}floatrandom(){intm;if(seed<0)m=-seed;elsem=seed;seed=(24151*seed+11839)%64416;return(m/;}timeint(charaddr){floatx;x=random();if((x<&&(exe==0))return(FALSE);if((x<&&(exe==1))return(FALSE);if((x<&&(exe==2))return(FALSE);savearea[exe][0]=i;savearea[exe][1]=addr;pcb[exe].status='t';printf("Timessilceinterrupt'\nprocess%denterintoready.\n",exe+1);exe=NIL;return(TRUE);}find(){intj,pd=NIL,w=MAXPRI;for(j=0;j<1;j++)if(pcb[j].status=='r')if(pcb[j].priority<w){w=pcb[j].priority;pd=j;}if(pd==NIL)for(j=0;j<1;j++)if(pcb[j].status=='t')if(pcb[j].priority<w){w=pcb[j].priority;pd=j;}return(pd);}scheduler(){intpd;if((pd=find())==NIL&&exe==NIL)return(NIL);if(pd!=NIL){if(exe==NIL){pcb[pd].status='e';exe=pd;printf("process%disexecuting.\n",exe+1);}elseif(pcb[pd].priority<pcb[exe].priority){pcb[exe].status='r';printf("process%denterintoready\n",exe+1);pcb[pd].status='e';exe=pd;printf("process%denterintoready\n",exe+1);}}i=savearea[exe][0];addr=savearea[exe][1];return(exe);}block(intse){intw;printf("process%disblocked\n",exe+1);pcb[exe].status='w';pcb[exe].nextwr=NIL;if((w=sem[se].firstwr)==NIL)sem[se].firstwr=exe;else{while(pcb[w].nextwr!=NIL)w=pcb[w].nextwr;pcb[w].nextwr=exe;}}p(intse,charad){if(--sem[se].value>=0)return(FALSE);block(se);savearea[exe][0]=i;savearea[exe][1]=ad;exe=NIL;return(TRUE);}wakeup(intse){intw;w=sem[se].firstwr;if(w!=NIL){sem[se].firstwr=pcb[w].nextwr;pcb[w].status='r';printf("process%diswakenup\n",w+1);}}v(intse,charad){if(++sem[se].value>0)return(FALSE);wakeup(se);savearea[exe][1]=ad;savearea[exe][0]=i;return(TRUE);}eexit(intn){pcb[n].status='c';printf("process%discompleted!\n",n+1);exe=NIL;}processl(){if(addr=='a')gotoa1;if(addr=='b')gotob1;if(addr=='c')gotoc1;if(addr=='d')gotod1;if(addr=='e')gotoe1;if(addr=='f')gotof1;for(i=1;i<6;i++){printf("process1callsPonthesemaphore1\n");if(p(0,'a'))break;a1:printf("process1isexecutinginthecreticalsection1\n");if(timeint('b'))break;b1:printf("s1=%d\n",++s1);printf("process1callsVonsemaphorelandquitcreticalsection1\n");if(v(0,'c'))break;c1:printf("process1callsPonesemaphorel2\n");if(p(1,'d'))break;d1:printf("process1isexectingcreticalsection2\n");if(timeint('e'))break;e1:printf("s2=%d\n",++s2);printf("process1callsVonsemaphore2andquitcreticalsection2\n");if(v(1,'f'))break;f1:printf("process1cyclecount=%d\n",i);}if(i<6)return;eexit(0);}process2(){if(addr=='a')gotoa2;if(addr=='b')gotob2;if(addr=='c')gotoc2;if(addr=='d')gotod2;if(addr=='e')gotoe2;if(addr=='f')gotof2;for(i=1;i<6;++i){printf("process2callsPonthesemaphore2\n");if(p(1,'a'))break;a2:printf("process2isexecutinginthecreticalsection2\n");if(timeint('b'))break;b2:printf("s2=%d\n",++s2);printf("process2callsVonsemaphore2andquitcreticalsection2.\n");if(v(1,'c'))break;c2:printf("process2callsPonesemaphore1.\n");if(p(0,'d'))break;d2:printf("process2isexectingcreticalsection1.\n");if(timeint('e'))break;e2:printf("s1=%d\n",++s1);printf("process2callsVonsemaphore1andquitcreticalsection1.\n");if(v(0,'f'))break;f2:printf("process2cyclecount=%d\n",i);}if(i<6)return;eexit(1);}process1(){if(addr=='a')gotoa1;if(addr=='b')gotob1;if(addr=='c')gotoc1;for(i=1;i<6;++i){printf("process1,callsPonsemaphore2\n");if(p(1,'a'))break;///*process1isbiocked*/a1:printf("process1isexeccutingonitscreticalsection\n");if(timeint('b'))break;b1:printf("s2=%d\n",++s2);printf("process1callsVonsemap
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境災(zāi)害應(yīng)急經(jīng)濟(jì)學(xué)重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 環(huán)境健康教育與培訓(xùn)重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 2024-2025學(xué)年度內(nèi)蒙古自治區(qū)北京師范大學(xué)烏蘭察布集寧附屬中學(xué)高一第二學(xué)期期中考試歷史試題(含答案)
- 學(xué)習(xí)妝容 清新自然的學(xué)習(xí)氣質(zhì)
- 深度修容 塑造立體面部輪廓
- 外墻保溫技術(shù)在綠色施工中的應(yīng)用
- 中餐快餐的品牌形象與市場(chǎng)印象
- 歡歡喜喜過春節(jié)故事講解
- 護(hù)理中的公共衛(wèi)生
- 房地產(chǎn)開發(fā)的市場(chǎng)渠道選擇
- 能源計(jì)量器具配備和管理
- 《食品經(jīng)營(yíng)許可證》申請(qǐng)報(bào)告書空白模板
- 國(guó)家開放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 《遺愛寺》-完整版課件
- 三相三線電能表
- 加油站相鄰企業(yè)安全應(yīng)急救援互助協(xié)議
- 傳媒公司合作合同
- 人工智能賦能教育教學(xué)變革的研究
- 思想道德與法治課件:第六章 第一節(jié) 社會(huì)主義法律的特征和運(yùn)行
- 五年級(jí)數(shù)學(xué)下冊(cè)測(cè)試題(高清打印版)
- 露天礦采坑邊坡穩(wěn)定性評(píng)價(jià)報(bào)告
評(píng)論
0/150
提交評(píng)論