版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
文檔素材文檔素材X技術(shù)師范學(xué)院實(shí)驗(yàn)匯報(bào)學(xué)院:計(jì)算機(jī)科學(xué)學(xué)
院專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與學(xué)院:計(jì)算機(jī)科學(xué)學(xué)
院專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與專(zhuān)業(yè):技術(shù)〔師范〕班級(jí):姓名:學(xué)號(hào):組別:成績(jī)組員:預(yù)習(xí)情況操作情況考勤情況數(shù)據(jù)處理情況實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:指導(dǎo)教師簽名:實(shí)驗(yàn)名稱(chēng):實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康挠酶呒?jí)言語(yǔ)編寫(xiě)和調(diào)試一個(gè)進(jìn)程調(diào)度程序,以加深對(duì)進(jìn)程的概念及進(jìn)程調(diào)度算法的理解二、實(shí)驗(yàn)類(lèi)別綜合性實(shí)驗(yàn)。綜合高級(jí)言語(yǔ)編程、進(jìn)程調(diào)度模型、進(jìn)程調(diào)度算法及數(shù)據(jù)結(jié)構(gòu)等多方面的知識(shí)三、實(shí)驗(yàn)內(nèi)容和步驟1.編寫(xiě)并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,采納“最高優(yōu)先數(shù)優(yōu)先〞調(diào)度算法對(duì)五個(gè)進(jìn)程進(jìn)行調(diào)度?!白罡邇?yōu)先數(shù)優(yōu)先"調(diào)度算法的根本思想是把CPU分配給就緒隊(duì)列中優(yōu)先數(shù)最高的進(jìn)程。靜態(tài)優(yōu)先數(shù)是在創(chuàng)立進(jìn)程時(shí)確定的,并在整個(gè)進(jìn)程運(yùn)行期間不再改變。動(dòng)態(tài)優(yōu)先數(shù)是指進(jìn)程的優(yōu)先數(shù)在創(chuàng)立進(jìn)程時(shí)可以給定一個(gè)初始值,并且可以按肯定原則修改優(yōu)先數(shù)。例如:在進(jìn)程獲得一次CPU后就將其優(yōu)先數(shù)減少1。或者,進(jìn)程等待的時(shí)間超過(guò)某一時(shí)限時(shí)增加其優(yōu)先數(shù)的值,等等該題依據(jù)老師給的代碼用VisualC++運(yùn)行,結(jié)果以及分析如下:….rh“III屐「IIIIII:雖II…I■—=—zII三=▼弓Il丁■■■〒1l琵III±I■"C:\Users\pc\Desktop\Debu度wxh-請(qǐng)輸人進(jìn)程號(hào):3進(jìn)程號(hào)No-0:輸入進(jìn)程名:陶輸入進(jìn)程優(yōu)先數(shù)汐輸入進(jìn)程運(yùn)行時(shí)間汴進(jìn)程號(hào)No.l:輸入進(jìn)程名:血輸入進(jìn)程優(yōu)先數(shù)油輸入進(jìn)程運(yùn)行時(shí)間汚進(jìn)程號(hào)No-2:輸入進(jìn)程名"C:\User5\pc\Desktop\Debu①進(jìn)程調(diào)度exe""C:\User5\pc\Desktop\Debu①進(jìn)程調(diào)度exe"□進(jìn)程號(hào)Ho.2:輸入進(jìn)程名:比輸入進(jìn)程優(yōu)先數(shù)泊輸入進(jìn)程運(yùn)行時(shí)間Theexecutenuinbep:1****當(dāng)前正在運(yùn)彳亍的進(jìn)程是:CCqname!ccstateIRsuper!3ndtine11010runtine比*當(dāng)刖就緒隊(duì)列狀態(tài)為:qname良tEsuperndtimeruntirw!aa!u:2!6!0qnamestatesuperndtineruntine:bb!u!1i5i0.按任一鍵繼續(xù)……結(jié)果分析:依據(jù)上述輸入的三個(gè)進(jìn)程的信息可以得到:優(yōu)先級(jí)最高的是進(jìn)程CC最先調(diào)度進(jìn)程CC的狀態(tài)為運(yùn)行態(tài),需要執(zhí)行的時(shí)間為10當(dāng)前就緒隊(duì)列狀態(tài)為:進(jìn)程aa先級(jí)比擬高,處于就緒隊(duì)列前面,而進(jìn)程bb先級(jí)是三者中最低的,所以處于就緒隊(duì)列的最后。而此時(shí)這兩個(gè)進(jìn)程的狀態(tài)都為就緒態(tài)。
[按任-鍵繼續(xù)…1Theexecutenumbep:2.MMMM當(dāng)前正在運(yùn)行的進(jìn)程是"呂(jnantestatesuperndtineruntime!2!&!Q1****當(dāng)刖就緒隊(duì)列狀態(tài)為:statesuperndtineruntimeliCGilJ:2!10!1(jnctne:statesuperndtineruntimel;bbiu:1i516-鍵繼續(xù)…結(jié)果分析:當(dāng)進(jìn)程CC了一個(gè)時(shí)間片之后而它已占用CPU時(shí)間已到達(dá)所需要的運(yùn)行時(shí)間,則將它的優(yōu)先級(jí)減1之后,再將三個(gè)進(jìn)程按優(yōu)先級(jí)的大小排列,從中選擇優(yōu)先級(jí)大的進(jìn)程進(jìn)入運(yùn)行狀態(tài),則該次進(jìn)入運(yùn)行態(tài)的是進(jìn)程aa按照這種方法一直運(yùn)行下去:l:bb:u1按任一鍵繼續(xù)…x:115:01Theexecutenumber:31****當(dāng)前正在運(yùn)行的進(jìn)程是:sqnamestatesuperndtimeF-u.ntinelice::R!2lie!11****當(dāng)刖就緒隊(duì)列狀態(tài)為=qnanestatesuperndtiner-untine:bb:u:1:5:0qnamestatesuperndtimeruntime!aaiu:1;6;1按任一鍵繼續(xù)…扌矚衆(zhòng)法直到:
Theexecutenumber:Itqnanest-a-te!Bsupei'-!-3ndtime!5s*當(dāng)刖就緒隊(duì)列狀態(tài)為:qnavnestatesuper-ndtime!aa!-3i6qnavnestateSLipei*Theexecutenumber:Itqnanest-a-te!Bsupei'-!-3ndtime!5s*當(dāng)刖就緒隊(duì)列狀態(tài)為:qnavnestatesuper-ndtime!aa!-3i6qnavnestateSLipei*ndtime!cc:-3:10i5進(jìn)程thh]已完成.****當(dāng)前正在運(yùn)行的進(jìn)程是:hhruntimeruntimeruntime詩(shī)叟狗拼音輸人袪半:按任一鍵繼續(xù)Theexecutenumber:!?****當(dāng)前正在運(yùn)彳亍的進(jìn)程是二曰曰qnamestatesuperndtime:aa:R:-3:6:5****當(dāng)前就緒隊(duì)列狀態(tài)為:!cc!u!-3!10!&進(jìn)程Eaal!cc!u!-3!10!&進(jìn)程Eaal已完成-runtimepuntine結(jié)果分析:當(dāng)調(diào)度進(jìn)程中只剩下進(jìn)程aa程CC這時(shí)依據(jù)進(jìn)程優(yōu)先級(jí)的大小,進(jìn)程aa入運(yùn)行態(tài)。當(dāng)進(jìn)程aa調(diào)度時(shí),進(jìn)程調(diào)度程序中直剩下進(jìn)程cc這時(shí)進(jìn)程cc進(jìn)入運(yùn)行態(tài),而當(dāng)前就緒隊(duì)列將為空。直到:Theexecutenumber:21****當(dāng)前正在運(yùn)彳亍的進(jìn)程是兀匚q;nanestatesupei'ndtimeruntime!cc:R!-6:10:9F*當(dāng)前就緒隊(duì)列狀態(tài)為=進(jìn)程[cc]已完成-按任一鍵繼續(xù)結(jié)果分析:當(dāng)進(jìn)程i的CPU占用時(shí)間等于所需要的執(zhí)行時(shí)間時(shí),進(jìn)程CC調(diào)度完成,則這時(shí)進(jìn)程調(diào)度中已經(jīng)沒(méi)有需要調(diào)度的進(jìn)程了,則整個(gè)進(jìn)程調(diào)度完成。2、編寫(xiě)并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,采納“輪轉(zhuǎn)法〃調(diào)度算法對(duì)五個(gè)進(jìn)程進(jìn)行調(diào)度。輪轉(zhuǎn)法可以是簡(jiǎn)單輪轉(zhuǎn)法、可變時(shí)間片輪轉(zhuǎn)法,或多隊(duì)列輪轉(zhuǎn)法。簡(jiǎn)單輪轉(zhuǎn)法的根本思想是:全部就緒進(jìn)程按FCFS排成一個(gè)隊(duì)列,總是把處理機(jī)分配給隊(duì)首的進(jìn)程,各進(jìn)程占用CPU的時(shí)間片相同。如果運(yùn)行進(jìn)程用完它的時(shí)間片后還為完成,就把它送回到就緒隊(duì)列的末尾,把處理機(jī)重新分配給隊(duì)首的進(jìn)程。直至全部的進(jìn)程運(yùn)行完畢。將老師給的源程序修改成簡(jiǎn)單的時(shí)間片輪轉(zhuǎn)法流程圖如下:
時(shí)間片輪轉(zhuǎn)法#include<stdio.h>#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0#defineTIME2//時(shí)間片長(zhǎng)度/////////////typedefstructpcb{//////進(jìn)程治理塊charname[10];///////進(jìn)程名字charstate;///////進(jìn)程狀態(tài)intqueue;//////進(jìn)程所在的隊(duì)列intntime;/////進(jìn)程需要運(yùn)行的時(shí)間intrtime;//////進(jìn)程已經(jīng)運(yùn)行的時(shí)間intetime;////進(jìn)程在本隊(duì)列可運(yùn)行的時(shí)間片structpcb*link;}PCB;/*就緒隊(duì)PCB*ready=NULL,*pinsert=NULL,*pfend=NULL,*p=NULL;列,進(jìn)程插入位置的變量*//*就緒隊(duì)intgeti()//使用戶(hù)僅能輸入整數(shù){charch;inti=0;fflush(stdin);ch=getchar();while(ch=='\n'){printf("\tf輸入不能為空?.請(qǐng)重新輸入\n");fflush(stdin);ch=getchar();}while(ch!='\n'){if(ch>'9'||ch<'0'){printf("\t輸入有誤!!輸入只能為正整數(shù),請(qǐng)重新輸入???fflush(stdin);i=0;ch=getchar();}else{i=i*10+(ch-'0');ch=getchar();}}returni;}voidfindposO///////更新?tīng)顟B(tài)量{PCB*ps=pfend;if(!ps||!ps->link||(ps->link->queue-ps->queue)>1)pinsert=ps;else{while(ps->link&&ps->link->queue!=(pfend->queue+2))ps=ps->link;pinsert=ps;}}voidinsert()//////插入進(jìn)程{if(!ready){ready=p;pfend=p;pinsert=p;}elseif(ready->queue==1)//////第一隊(duì)列存在{p->link=pfend->link;pfend->link=p;pfend=p;findpos();}Else{p->link=ready;ready=p;findpos();}}voidinput()/*建立進(jìn)程操縱塊函數(shù)*/{inti,num;printf("\n請(qǐng)輸入進(jìn)程的個(gè)數(shù):");num=geti();for(i=0;i<num;i++){printf("\n進(jìn)程號(hào)No.%d:\n",i+1);p=getpch(PCB);printf("\n輸入進(jìn)程名:");scanf("%s",p->name);printf("\n輸入進(jìn)程運(yùn)行時(shí)間:");p->ntime=geti();printf("\n");p->rtime=0;p->state='w';p->queue=1;p->etime=TIME;p->link=NULL;insert();/*調(diào)用insert函數(shù)*/}}voiddisp(PCB*pr)/*建立進(jìn)程現(xiàn)實(shí)函數(shù),用于顯示當(dāng)前進(jìn)程*/{printf("\nname\tstate\tqueue'tntime\trtime\t在隊(duì)列可停留時(shí)間\t\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->queue);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);printf("|%d\t",pr->etime);printf("\n");}voidcheck()/*建立進(jìn)程查看函數(shù)*/{PCB*pr;printf("\n****當(dāng)前正在運(yùn)行的進(jìn)程是:%s",ready->name);/*顯示當(dāng)前運(yùn)行的進(jìn)程*/disp(ready);pr=ready->link;printf("\n****當(dāng)前就緒隊(duì)列狀態(tài)為:\n");/*顯示就緒隊(duì)列狀態(tài)*/while(pr!=NULL){disp(pr);pr=pr->link;}}voidsort()//調(diào)整進(jìn)程隊(duì)列{if(!ready->link||ready->queue<ready->link->queue)return;p=ready->link;ready->link=pinsert->link;pinsert->link=ready;pinsert=ready;ready=p;if(ready&&ready->queue==pinsert->queue){findpos();}}voidaddnewO//添加新的進(jìn)程{if(ready->queue!=1){(ready->queue)++;ready->etime*=2;ready->state='w';sort();/*調(diào)用sort函數(shù)*/input();}else{input();}}voiddestroy。/*建立進(jìn)程撤銷(xiāo)函數(shù)(進(jìn)程運(yùn)行結(jié)束,撤銷(xiāo)進(jìn)程)*/{printf("\n進(jìn)程[%s]已完成.\n",ready->name);p=ready;ready=ready->link;free(p);if(ready&&ready->queue==pinsert->queue)findpos();}voidrunning。/*建立進(jìn)程就緒函數(shù)(進(jìn)程運(yùn)行時(shí)間到,置就緒狀態(tài))*/{(ready->rtime)++;ready->etime--;if(ready->rtime==ready->ntime){destroy();return;}elseif(ready->etime==0){inttime=2;(ready->queue)++;for(inti=2;i!=ready->queue;++i)time*=2;ready->etime=time;ready->state='w';sort();/*調(diào)用sort函數(shù)*/}}voidmain(){charch;input();while(ready!=NULL){printf("\nTheexecutename:%s\n",ready->name);ready->state='R';check();running();printf("\n按i鍵添加新進(jìn)程????按其他任意鍵繼續(xù)運(yùn)行???");fflush(stdin);ch=getchar();if(ch=='i'||ch=='I')addnew();}printf("\n\n進(jìn)程已經(jīng)完成\n");getchar();運(yùn)行結(jié)果如下:依據(jù)題意輸入五個(gè)進(jìn)程按任意鍵繼續(xù)"C:\Users\pc\DesIctop\Debug\jj.exe"”i鍵添加新進(jìn)程.?…按其他任意鍵繼續(xù)運(yùn)行…丄ATheexecutename:bb****當(dāng)刖正在運(yùn)■!亍的進(jìn)程是在隊(duì)列可停留時(shí)間namequeuentimertime:bb!RSI:10:0!2:KKKJC當(dāng)前就緒隊(duì)列狀態(tài)為:namestatequeuentimertime在隊(duì)列可停留時(shí)間!cc!i-j:1:5:012namestatequeuentimertime在隊(duì)列可停留時(shí)間:dd!i-j!71012namestatequeuentimertime在隊(duì)列可停留時(shí)間!ee!i-j:1:9:0:2namestatequeuentineLtilDG在隊(duì)列可停留時(shí)間!aa!w:2:12:2:2魁■■■按i鍵添加新進(jìn)程-?按其他任意鍵繼續(xù)運(yùn)行Theexecutename::aa****當(dāng)刖正在運(yùn)4亍的進(jìn)程是:aa在隊(duì)列可停留時(shí)間■namestatequeLien
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店總經(jīng)理年終工作計(jì)劃參考模板
- 小學(xué)心理工作計(jì)劃集錦
- 2025年度班主任工作實(shí)習(xí)計(jì)劃范文
- 小學(xué)語(yǔ)文第二學(xué)期教研計(jì)劃
- 《食品安全事故總結(jié)》課件
- 2025年一周工作計(jì)劃表格式
- 幼兒園工作計(jì)劃:個(gè)人工作計(jì)劃
- 《蔬菜陳列培訓(xùn)》課件
- 《復(fù)合傷的麻醉》課件
- 《地面工程質(zhì)量事故》課件
- 產(chǎn)能合作共建協(xié)議書(shū)
- 2024年執(zhí)業(yè)醫(yī)師考試-中醫(yī)師承及確有專(zhuān)長(zhǎng)考核筆試考試歷年高頻考點(diǎn)試題摘選含答案
- 光伏支架巡回檢查、維護(hù)管理制度
- 小班戶(hù)外運(yùn)動(dòng)案例分析與反思
- 天津市河?xùn)|區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 巖體力學(xué)與工程智慧樹(shù)知到期末考試答案章節(jié)答案2024年合肥工業(yè)大學(xué)
- 精氨酸在肥胖中的作用
- 2024年醫(yī)藥衛(wèi)生考試-醫(yī)院信息科筆試參考題庫(kù)含答案
- 微觀(guān)經(jīng)濟(jì)學(xué)(對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué))智慧樹(shù)知到期末考試答案2024年
- 初中語(yǔ)文文言文《狼》習(xí)題
- 醫(yī)院總值班培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論