資源描述:
《操作系統(tǒng)模擬實(shí)驗(yàn):?jiǎn)翁幚頇C(jī)系統(tǒng)的進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)學(xué)與計(jì)算機(jī)學(xué)院?jiǎn)翁幚頇C(jī)系統(tǒng)的進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告年級(jí)07學(xué)號(hào)2007429023姓名王陽成績(jī)專業(yè)信計(jì)實(shí)驗(yàn)地點(diǎn)主樓402指導(dǎo)教師王碩實(shí)驗(yàn)項(xiàng)目單處理機(jī)系統(tǒng)的進(jìn)程調(diào)度實(shí)驗(yàn)日期實(shí)驗(yàn)報(bào)告要求:一、實(shí)驗(yàn)?zāi)康?、加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別。2、深入了解系統(tǒng)如何組織進(jìn)程、創(chuàng)建進(jìn)程。3、進(jìn)一步認(rèn)識(shí)如何實(shí)現(xiàn)處理機(jī)調(diào)度。二、實(shí)驗(yàn)原理三、實(shí)驗(yàn)要求1、采用時(shí)間片輪轉(zhuǎn)調(diào)度算法實(shí)現(xiàn)進(jìn)程調(diào)度。2、確定進(jìn)程控制塊的內(nèi)容,進(jìn)程控制塊的組織方式。3、完成進(jìn)程創(chuàng)建原語和進(jìn)程調(diào)度原語。4、編寫主函數(shù)對(duì)所做工作進(jìn)行測(cè)試。四、實(shí)驗(yàn)結(jié)果(程序)及分析#include#defin
2、eN10//系統(tǒng)中所允許的最大進(jìn)程數(shù)量#defineSLOT5//時(shí)間片大小//進(jìn)程狀態(tài)枚舉typedefenum{共頁第頁Running,//運(yùn)行狀態(tài)Aready,//就緒狀態(tài)Blocking//阻塞狀態(tài)}ProStatus;//進(jìn)程控制塊typedefstruct{intname;//進(jìn)程標(biāo)識(shí)符ProStatusstatus;//進(jìn)程狀態(tài)intax,bx,cx,dx;//通用寄存器intpc;//程序計(jì)數(shù)器寄存器intpsw;//程序狀態(tài)字寄存器intnext;//指向下一個(gè)進(jìn)程的指針}PCB;//就緒隊(duì)列指針typedefstruct{inthead;//
3、頭指針inttail;//尾指針}Ready;//模擬寄存器intPSW,AX,BX,CX,DX,PC,TIME;//PCB的靜態(tài)鏈表PCBpcbArea[N];//模擬PCB區(qū)域的數(shù)組intrun;//運(yùn)行狀態(tài)程序的指針Readyready;//就緒隊(duì)列指針intpfree;//空閑隊(duì)列的指針//初始化運(yùn)行狀態(tài)進(jìn)程指針voidInitRun(){run=-1;}//初始化就緒狀態(tài)隊(duì)列voidInitReady(){ready.head=ready.tail=-1;}共頁第頁//初始化空閑隊(duì)列voidInitFree(){inttemp;for(temp=0;t
4、emp5、p;}//空閑隊(duì)列出隊(duì)intPopFree()//返回結(jié)點(diǎn)在PCB區(qū)域數(shù)組的編號(hào){inttemp;if(pfree==-1){printf("空閑隊(duì)列為空,不能出隊(duì)。");return-1;}temp=pfree;pfree=pcbArea[temp].next;pcbArea[temp].next=-1;returntemp;}共頁第頁//就緒隊(duì)列入隊(duì)voidPushReady(intx)//x為入隊(duì)結(jié)點(diǎn)的編號(hào){inttemp;if(ready.head==-1){ready.head=x;ready.tail=x;}else{temp=ready.tai
6、l;ready.tail=x;}pcbArea[ready.tail].next=-1;}//創(chuàng)建PCBvoidCreatePCB(intx,PCBpcb)//x為要?jiǎng)?chuàng)建PCB在PCB區(qū)域數(shù)組的編號(hào){pcbArea[x].ax=pcb.ax;pcbArea[x].bx=pcb.bx;pcbArea[x].cx=pcb.cx;pcbArea[x].dx=pcb.dx;pcbArea[x].name=pcb.name;pcbArea[x].next=-1;pcbArea[x].pc=pcb.pc;pcbArea[x].psw=pcb.psw;pcbArea[x].s
7、tatus=pcb.status;}//創(chuàng)建進(jìn)程函數(shù)voidCreate(PCBpcb){inttemp;if(pfree==-1){printf("空閑隊(duì)列為空,不能創(chuàng)建進(jìn)程。");return;}temp=PopFree();pcb.status=Aready;CreatePCB(temp,pcb);PushReady(temp);}共頁第頁//進(jìn)程調(diào)度函數(shù)voidSchedule(){inttemp;if(ready.head==-1){printf("系統(tǒng)內(nèi)沒有進(jìn)程可以調(diào)度。");return;}temp=PopReady();pcbArea[tem
8、p].status=Ru