![進(jìn)程調(diào)度-銀行家算法-頁(yè)面置換-操作系統(tǒng)課程設(shè)計(jì)大全_第1頁(yè)](http://file4.renrendoc.com/view/f46e96c2feeac4aa127d2e96907537e9/f46e96c2feeac4aa127d2e96907537e91.gif)
![進(jìn)程調(diào)度-銀行家算法-頁(yè)面置換-操作系統(tǒng)課程設(shè)計(jì)大全_第2頁(yè)](http://file4.renrendoc.com/view/f46e96c2feeac4aa127d2e96907537e9/f46e96c2feeac4aa127d2e96907537e92.gif)
![進(jìn)程調(diào)度-銀行家算法-頁(yè)面置換-操作系統(tǒng)課程設(shè)計(jì)大全_第3頁(yè)](http://file4.renrendoc.com/view/f46e96c2feeac4aa127d2e96907537e9/f46e96c2feeac4aa127d2e96907537e93.gif)
![進(jìn)程調(diào)度-銀行家算法-頁(yè)面置換-操作系統(tǒng)課程設(shè)計(jì)大全_第4頁(yè)](http://file4.renrendoc.com/view/f46e96c2feeac4aa127d2e96907537e9/f46e96c2feeac4aa127d2e96907537e94.gif)
![進(jìn)程調(diào)度-銀行家算法-頁(yè)面置換-操作系統(tǒng)課程設(shè)計(jì)大全_第5頁(yè)](http://file4.renrendoc.com/view/f46e96c2feeac4aa127d2e96907537e9/f46e96c2feeac4aa127d2e96907537e95.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE40操作系統(tǒng)課程設(shè)計(jì)說(shuō)明書學(xué)院名稱:專業(yè)班級(jí):姓名:學(xué)號(hào):2010年7月16日
評(píng)分標(biāo)準(zhǔn)優(yōu)秀:有完整的符合標(biāo)準(zhǔn)的文檔,文檔有條理、文筆通順,格式正確,程序完全實(shí)現(xiàn)設(shè)計(jì)要求,獨(dú)立完成;良好:有完整的符合標(biāo)準(zhǔn)的文檔,文檔有條理、文筆通順,格式正確;程序完全實(shí)現(xiàn)設(shè)計(jì)要求,獨(dú)立完成,但存在少量錯(cuò)誤;中等:有完整的符合標(biāo)準(zhǔn)的文檔,有基本實(shí)現(xiàn)設(shè)計(jì)方案的軟件,設(shè)計(jì)方案正確;及格:有完整的符合標(biāo)準(zhǔn)的文檔,有基本實(shí)現(xiàn)設(shè)計(jì)方案的軟件,設(shè)計(jì)方案基本正確;不及格:沒(méi)有完整的符合標(biāo)準(zhǔn)的文檔,軟件沒(méi)有基本實(shí)現(xiàn)設(shè)計(jì)方案,設(shè)計(jì)方案不正確。沒(méi)有獨(dú)立完成,抄襲或雷同。成績(jī)?cè)u(píng)定為:。指導(dǎo)教師:年月日
目錄進(jìn)程調(diào)度模擬1.設(shè)計(jì)目的0052.任務(wù)及要求0053.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)0063.2算法具體實(shí)現(xiàn)0064.實(shí)驗(yàn)結(jié)果及分析4.1實(shí)驗(yàn)結(jié)果0164.2結(jié)果分析017銀行家算法1.設(shè)計(jì)目的0182.任務(wù)及要求0183.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)0183.2算法具體實(shí)現(xiàn)0184.實(shí)驗(yàn)結(jié)果及分析4.1實(shí)驗(yàn)結(jié)果0264.2結(jié)果分析027頁(yè)面置換模擬1.設(shè)計(jì)目的0282.任務(wù)及要求0283.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)0283.2算法具體實(shí)現(xiàn)0284.實(shí)驗(yàn)結(jié)果及分析4.1實(shí)驗(yàn)結(jié)果0394.2結(jié)果分析040課題一:進(jìn)程調(diào)度模擬1.設(shè)計(jì)目的通過(guò)課程設(shè)計(jì),加深對(duì)教材中進(jìn)程調(diào)度模擬算法的理解,同時(shí)通過(guò)用C語(yǔ)言編程,并在Windows平臺(tái)上實(shí)現(xiàn),以更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,提高綜合運(yùn)用各專業(yè)課知識(shí)的能力。2.任務(wù)及要求2.1用語(yǔ)言來(lái)實(shí)現(xiàn)對(duì)n個(gè)進(jìn)程采用不同調(diào)度算法的進(jìn)程調(diào)度。2.2每個(gè)用來(lái)標(biāo)識(shí)進(jìn)程的進(jìn)程控制塊PCB用結(jié)構(gòu)來(lái)描述,包括以下字段:(1)進(jìn)程優(yōu)先數(shù)ID,其中0為閑逛進(jìn)程,用戶進(jìn)程的標(biāo)識(shí)數(shù)為1,2,3…。(2)進(jìn)程優(yōu)先級(jí)Priority,閑逛進(jìn)程(idle)的優(yōu)先級(jí)為0,用戶進(jìn)程的優(yōu)先級(jí)大于0,且隨機(jī)產(chǎn)生,優(yōu)先數(shù)越大,優(yōu)先級(jí)越高。(3)進(jìn)程占用的CPU時(shí)間CPUtime,進(jìn)程每運(yùn)行一次,累計(jì)值等于4。(4)進(jìn)程總共需要運(yùn)行時(shí)間Alltime,利用隨機(jī)函數(shù)產(chǎn)生。(5)進(jìn)程狀態(tài),0:就緒態(tài);1:運(yùn)行態(tài);2:阻塞態(tài)。(6)隊(duì)列指針next,用來(lái)將多個(gè)進(jìn)程控制塊PCB鏈接為隊(duì)列。2.3優(yōu)先數(shù)改變的原則(1)進(jìn)程在就緒隊(duì)列中每呆一個(gè)時(shí)間片,優(yōu)先數(shù)增加1。(2)進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先數(shù)減3。2.4在調(diào)度前,系統(tǒng)中擁有的進(jìn)程數(shù)PCB_number由鍵盤輸入,經(jīng)初始化后,所有的進(jìn)程控制塊PCB鏈接成就緒隊(duì)列。3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)主程序模塊>初始化模塊>函數(shù)模塊3.2算法具體實(shí)現(xiàn)//編程比較四種調(diào)度算法“FCFS、SJF、PSA、RR”的調(diào)度方法和性能。#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<time.h>#defineready1#defineblock0#defineover2#defineT4typedefintstatus;//定義結(jié)構(gòu)體,表示進(jìn)程的PCB,用來(lái)標(biāo)志一個(gè)進(jìn)程typedefstructPpcb{intID;intPriority;intCPUtime;//進(jìn)程占用的cpu的時(shí)間,進(jìn)程每運(yùn)行一次,累計(jì)值等于4intArrtime;//進(jìn)程到達(dá)時(shí)間intStartime;//進(jìn)程開(kāi)始執(zhí)行時(shí)間intFinitime;//進(jìn)程結(jié)束時(shí)的時(shí)刻intAlltime;intCtime;intstate;structPpcb*next;}*pcb;pcbProcessCreate(intn){//創(chuàng)建n+1(包括idle)個(gè)進(jìn)程實(shí)體,并建立鏈表,初始化 inti; srand((unsigned)time(NULL));pcbIdle,last,p; //為Idle進(jìn)程賦初值 Idle=(pcb)malloc(sizeof(Ppcb)); Idle->ID=0; Idle->Priority=0; Idle->CPUtime=0; Idle->Arrtime=0; Idle->Startime=0; Idle->Finitime=0; Idle->Alltime=0; Idle->state=1; Idle->Ctime=0; Idle->next=NULL; last=Idle; for(i=1;i<=n;i++) {//為其他n個(gè)進(jìn)程賦初值 p=(pcb)malloc(sizeof(Ppcb)); p->ID=i; p->Priority=rand()%(100-1)+1; p->CPUtime=0; p->Arrtime=rand()%(50-1)+1; p->Startime=0; p->Finitime=0; p->Alltime=rand()%(25-1)+1; p->state=0;p->Ctime=0; p->next=NULL; last->next=p; last=last->next; } returnIdle;}pcbOrder(pcb&head){//將n個(gè)進(jìn)程按照到達(dá)時(shí)間由小到大排序Ppcb*cursor,*first,*prev,*max;first=NULL;if(head==NULL)returnNULL;for(cursor=max=head;cursor->next!=NULL;cursor=cursor->next){if(cursor->next->Arrtime<max->Arrtime){prev=cursor;max=cursor->next;}}first=max;if(max==head)head=head->next;elseprev->next=max->next;first->next=Order(head);returnfirst;}voidProcessPrint(Ppcb*Idle,intn){//輸出進(jìn)程的調(diào)度結(jié)果 inti;pcbp=Idle->next; printf("IDPriorityArrtimeAlltimeFinitimeCtime\n"); for(i=1;i<=n;i++,p=p->next) { printf("%-2d",p->ID); printf("%-2d",p->Priority); printf("%-2d",p->Arrtime); printf("%-2d",p->Alltime); printf("%-2d",p->Finitime); printf("%-2d",p->Ctime); printf("\n"); }}floatFCFSDispatch(Ppcb*Idle,intn){ pcbp=Idle;intj;floatactime=0; printf("先來(lái)先服務(wù)算法調(diào)度結(jié)果為:\n"); for(;p->next!=NULL;p=p->next) { if(p->next->Arrtime>p->Finitime) p->next->Finitime=p->next->Arrtime+p->next->Alltime; else p->next->Finitime=p->Finitime+p->next->Alltime; p->next->Ctime=p->next->Finitime-p->next->Arrtime; } ProcessPrint(Idle,n); for(j=1,p=Idle->next;j<=n;j++,p=p->next) { actime+=p->Ctime; } return(actime/n);}floatSJFDispatch(Ppcb*Idle,intn){ pcbp=Idle,q,r=NULL,s=NULL;intj;floatactime=0; printf("最短作業(yè)優(yōu)先算法調(diào)度結(jié)果為:\n"); for(;p->next!=NULL;p=p->next) { if(p->next->Arrtime>p->Finitime) p->next->Finitime=p->next->Arrtime+p->next->Alltime; else { q=p->next; while(q->next&&q->next->Arrtime<=p->Finitime) { for(r=p;r!=q;r=r->next) { if(r->next->Alltime>q->next->Alltime) { s=q->next->next; q->next->next->next=r->next; r->next=q->next; q->next=s; break; } } q=q->next; } p->next->Finitime=p->Finitime+p->next->Alltime; p->next->Ctime=p->next->Finitime-p->next->Arrtime; } }ProcessPrint(Idle,n); for(j=1,p=Idle->next;j<=n;j++,p=p->next) { actime+=p->Ctime; } return(actime/n);}floatPriorityDispatch(pcbIdle,intn){ pcbp=Idle,q,r=NULL,s=NULL;intj;floatactime=0; printf("優(yōu)先級(jí)算法調(diào)度結(jié)果為:\n"); for(;p->next!=NULL;p=p->next) { if(p->next->Arrtime>p->Finitime) p->next->Finitime=p->next->Arrtime+p->next->Alltime; else { q=p->next; while(q->next&&q->next->Arrtime<=p->Finitime) { for(r=p;r!=q;r=r->next) { if(r->next->Priority<q->next->Priority) { s=q->next->next; q->next->next->next=r->next; r->next=q->next; q->next=s; break; } } q=q->next; } p->next->Finitime=p->Finitime+p->next->Alltime; p->next->Ctime=p->next->Finitime-p->next->Arrtime; } } ProcessPrint(Idle,n); for(j=1,p=Idle->next;j<=n;j++,p=p->next) { actime+=p->Ctime; } return(actime/n);}floatRRDispatch(pcbIdle,intn){ pcbp=Idle;intnum=n;intj;floatactime=0; intcount=0; printf("時(shí)間片輪轉(zhuǎn)算法調(diào)度結(jié)果為:\n"); while(num) { for(p=Idle;p->next!=NULL;p=p->next) { if(p->next->Arrtime>T&&p->next->state==0) { count=p->next->Arrtime; p->next->state=1; } elseif(p->next->state==2) p=p->next; else{} if(p->next->CPUtime+T>p->next->Finitime) { p->next->Finitime=count+p->next->Finitime- p->next->CPUtime; p->next->Ctime=p->next->Finitime-p->next->Arrtime; count=p->next->Finitime; p->next->state=2; num--; } else { p->next->CPUtime+=T; count=p->next->CPUtime; } } } ProcessPrint(Idle,n); for(j=1,p=Idle->next;j<=n;j++,p=p->next) { actime+=p->Ctime; } return(actime/n);}voidAlgorCompare(float*a){ printf("比較算法之間的優(yōu)劣:\n"); printf("先來(lái)先服務(wù)算法的平均周轉(zhuǎn)時(shí)間:%f\n",a[0]); printf("最短作業(yè)優(yōu)先算法的平均周轉(zhuǎn)時(shí)間:%f\n",a[1]); printf("優(yōu)先級(jí)算法的平均周轉(zhuǎn)時(shí)間:%f\n",a[2]); printf("時(shí)間片輪轉(zhuǎn)算法的平均周轉(zhuǎn)時(shí)間:%f\n",a[3]);}voidmain(){ intn;pcbIdle,p;floata[4]; for(inti=0;i<4;i++) a[i]=0; printf("待執(zhí)行進(jìn)程的個(gè)數(shù)為:\n"); scanf("%d",&n); printf("各個(gè)進(jìn)程初始化情況如下:\n",n); Idle=ProcessCreate(n); ProcessPrint(Idle,n); Idle=Order(Idle); p=Idle; for(i=0;i<n;i++) p=p->next; p->next=NULL; printf("按到達(dá)時(shí)間排序:\n"); ProcessPrint(Idle,n); printf("用不同的算法進(jìn)行進(jìn)程調(diào)度的情況如下:\n"); a[0]=FCFSDispatch(Idle,n); a[1]=SJFDispatch(Idle,n); a[2]=PriorityDispatch(Idle,n); a[3]=RRDispatch(Idle,n);//時(shí)間片輪轉(zhuǎn)法調(diào)度 AlgorCompare(a);//比較不通調(diào)度算法的優(yōu)劣}4.實(shí)驗(yàn)結(jié)果及分析4.1實(shí)驗(yàn)結(jié)果4.2結(jié)果分析不同的算法平均周轉(zhuǎn)時(shí)間不同,實(shí)際應(yīng)用當(dāng)中應(yīng)該根據(jù)需求選擇最合適的算法。課題二:銀行家算法1.設(shè)計(jì)目的通過(guò)課程設(shè)計(jì),加深對(duì)教材中銀行家算法的理解,同時(shí)通過(guò)用C語(yǔ)言編程,并在Windows平臺(tái)上實(shí)現(xiàn),以更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,提高綜合運(yùn)用各專業(yè)課知識(shí)的能力。2.任務(wù)及要求編程序模擬銀行家算法,要求能體現(xiàn)算法的全過(guò)程3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)主程序模塊>初始化模塊函數(shù)模塊3.2算法具體實(shí)現(xiàn)#include<stdio.h>#include<stdlib.h>voidInit(intn,intm,int**&Max,int**&Allocation,int**&Need,int*&Available){//根據(jù)用戶輸入內(nèi)容,將Max、Allocation、Need以及Available各矩陣初始化 inti,j; //Max矩陣 printf("請(qǐng)輸入一個(gè)%d*%d的矩陣,代表每個(gè)進(jìn)程所需要的每種資源的最大需求個(gè)數(shù):\n",n,m); Max=(int**)malloc(n*sizeof(int*)); for(i=0;i<n;i++) { Max[i]=(int*)malloc(m*sizeof(int)); } for(i=0;i<n;i++) { for(j=0;j<m;j++) scanf("%d",&Max[i][j]); } printf("輸入的Max矩陣為:\n");for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%d",Max[i][j]); printf("\n"); } //Allocation矩陣 printf("請(qǐng)?jiān)佥斎胍粋€(gè)%d*%d的矩陣,代表每個(gè)進(jìn)程正在占用的各種資源的個(gè)數(shù):\n",n,m); Allocation=(int**)malloc(n*sizeof(int*)); for(i=0;i<n;i++) { Allocation[i]=(int*)malloc(m*sizeof(int)); } for(i=0;i<n;i++) { for(j=0;j<m;j++) scanf("%d",&Allocation[i][j]); } printf("您輸入的Allocation矩陣為:\n");for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%d",Allocation[i][j]); printf("\n"); } //Available矩陣 printf("請(qǐng)輸入每類資源可利用的數(shù)目:\n"); Available=(int*)malloc(m*sizeof(int)); for(i=0;i<m;i++) scanf("%d",&Available[i]); printf("您輸入的Available為:\n");for(i=0;i<m;i++) printf("%d",Available[i]); printf("\n"); //計(jì)算出Need矩陣代表每個(gè)進(jìn)程還需要各種資源的個(gè)數(shù) Need=(int**)malloc(n*sizeof(int*)); for(i=0;i<n;i++) { Need[i]=(int*)malloc(m*sizeof(int)); } printf("Need矩陣為:\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) { Need[i][j]=Max[i][j]-Allocation[i][j]; printf("%d",Need[i][j]); } printf("\n"); }}voidIsSafe(intn,intm,int**Need,int*Available,int**Allocation,int*SafeList,int*Work,bool*Finish){//判斷目前是否處于安全狀態(tài) inti,j,mark,k=0; printf("處理中……\n"); Work=(int*)malloc(m*sizeof(int));for(i=0;i<m;i++) Work[i]=Available[i]; Finish=(bool*)malloc(n*sizeof(bool)); SafeList=(int*)malloc(n*sizeof(int)); for(i=0;i<n;i++) {//初始化為0 Finish[i]=false; } while(k<=n) { mark=1; for(i=0;i<n;i++) { mark=1; if(!Finish[i]) { for(j=0;j<m;j++) { if(Need[i][j]>Work[j]) { mark=-1; break; } } if(mark!=-1) { for(j=0;j<m;j++) { Work[j]=Work[j]+Allocation[i][j]; } Finish[i]=true; SafeList[k]=i; k++; mark=-1; break; } } } if(mark==1) { if(k==n) { printf("系統(tǒng)處于安全狀態(tài),且安全序列為:\n"); for(i=0;i<n;i++) printf("%d",SafeList[i]); printf("\n"); } else printf("系統(tǒng)處于不安全狀態(tài)!\n"); break; } } }voidRequest(intn,intm,int**Need,int*Available,int**Allocation,int*SafeList,int*Work,bool*Finish){ inti,j; int*Request=NULL; printf("您想為哪個(gè)進(jìn)程請(qǐng)求資源:\n"); scanf("%d",&i); Request=(int*)malloc(m*sizeof(int)); printf("對(duì)于每類資源,您希望分別請(qǐng)求幾個(gè):\n"); for(j=0;j<m;j++) scanf("%d",&Request[j]); for(j=0;j<m;j++) { if(Request[j]>Need[i][j]) { printf("所需要的資源數(shù)超過(guò)了所宣布的最大值,錯(cuò)誤!\n"); break; } } if(j==m) { for(j=0;j<m;j++) { if(Request[j]>Available[j]) { printf("尚無(wú)足夠的資源可供使用,錯(cuò)誤!\n"); break; } } } if(j==m) { for(j=0;j<m;j++) { Available[j]-=Request[j]; Allocation[i][j]+=Request[j]; Need[i][j]-=Request[j]; } IsSafe(n,m,Need,Available,Allocation,SafeList,Work,Finish); }}voidmain(){ intn,m;//n:進(jìn)程個(gè)數(shù);m:資源種類數(shù) int**Max=NULL;//矩陣表示:每個(gè)進(jìn)程對(duì)每種資源的最大需求 int**Allocation=NULL;//矩陣表示:每個(gè)進(jìn)程已經(jīng)分配的每種資源個(gè)數(shù) int**Need=NULL;//矩陣表示:每個(gè)進(jìn)程尚需的各種資源的個(gè)數(shù) int*Available=NULL;//每類資源可利用的數(shù)目 int*SafeList=NULL; int*Work=NULL; bool*Finish=NULL; printf("請(qǐng)輸入進(jìn)程個(gè)數(shù)n:\n"); scanf("%d",&n); printf("請(qǐng)輸入資源種類數(shù)m:\n"); scanf("%d",&m);Init(n,m,Max,Allocation,Need,Available);IsSafe(n,m,Need,Available,Allocation,SafeList,Work,Finish);Request(n,m,Need,Available,Allocation,SafeList,Work,Finish);} scanf("%d",&m);Init(n,m,Max,Allocation,Need,Available);IsSafe(n,m,Need,Available,Allocation,SafeList,Work,Finish);Request(n,m,Need,Available,Allocation,SafeList,Work,Finish);}4.實(shí)驗(yàn)結(jié)果及分析4.1實(shí)驗(yàn)結(jié)果4.2結(jié)果分析首先對(duì)幾個(gè)數(shù)組進(jìn)行初始化,然后判斷初始狀態(tài)的安全性。輸入進(jìn)程的資源請(qǐng)求,嘗試分配并判斷安全性。課題三:頁(yè)面置換算法1.設(shè)計(jì)目的通過(guò)課程設(shè)計(jì),加深對(duì)教材中頁(yè)面調(diào)度算法的理解,同時(shí)通過(guò)用C語(yǔ)言編程,并在Windows平臺(tái)上實(shí)現(xiàn),以更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,提高綜合運(yùn)用各專業(yè)課知識(shí)的能力。2.任務(wù)及要求設(shè)計(jì)一個(gè)虛擬存儲(chǔ)區(qū)和內(nèi)存工作區(qū),編程序演示下述算法的具體實(shí)現(xiàn)過(guò)程,并計(jì)算訪問(wèn)命中率:2.1先進(jìn)先出的算法(FIFO)2.2最近最少使用算法(LRU)2.3最佳淘汰算法(OPT)2.4最不經(jīng)常使用算法(LFU)3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)主程序模塊初始化模塊函數(shù)模塊3.2算法具體實(shí)現(xiàn)#include<stdio.h>#include<stdlib.h>typedefstructBL{ intblock; structBL*next;}*BlockOrder;intNotin(intm,int*BlockList,intk,BlockOrdercur,BlockOrder&pre,int&flag){ intj=0;flag=0; if(BlockList[cur->block]==k) { pre=cur; flag=1; return0; } for(j=1;j<m;j++,cur=cur->next) { if(BlockList[cur->next->block]==k) { pre=cur; return0; } } return1;}voidPRAfifo(intm,intn,BlockOrderhead,BlockOrderlast,int*BlockList,int*PageList){ inti=0,j=0,count=0,flag=0; floatrr=0; BlockOrdercur=head,pre=NULL; printf("用FIFO算法進(jìn)行頁(yè)面置換:\n"); while(i<n) { printf("頁(yè)面%d:",PageList[i]); if(Notin(m,BlockList,PageList[i],head,pre,flag)) { BlockList[head->block]=PageList[i]; last->next=head; last=last->next; head=head->next; } else { /* if(pre==head&&flag==1) { last->next=head; last=last->next; head=head->next; } else { last->next=pre->next; last=last->next; pre->next=pre->next->next; }*/ count++; } i++; for(j=0;j<m;j++) { if(BlockList[j]==-1) printf("-"); else printf("%d",BlockList[j]); } printf("\n"); } rr=(float)count/n; printf("用FIFO算法進(jìn)行頁(yè)面置換的命中率為:%2.1f",rr*100);puts("%");printf("\n");}voidPRAlru(intm,intn,BlockOrderhead,BlockOrderlast,int*BlockList,int*PageList){ inti=0,j=0,count=0,flag=0; floatrr=0; BlockOrdercur=head,pre=NULL; printf("用FIFO算法進(jìn)行頁(yè)面置換:\n"); while(i<n) { printf("頁(yè)面%d:",PageList[i]); if(Notin(m,BlockList,PageList[i],head,pre,flag)) { BlockList[head->block]=PageList[i]; last->next=head; last=last->next; head=head->next; } else { if(pre==head&&flag==1) { last->next=head; last=last->next; head=head->next; } elseif(pre->next!=last) { last->next=pre->next; last=last->next; pre->next=pre->next->next; } else{} count++; } i++; for(j=0;j<m;j++) { if(BlockList[j]==-1) printf("-"); else printf("%d",BlockList[j]); } printf("\n"); } rr=(float)count/n; printf("用FIFO算法進(jìn)行頁(yè)面置換的命中率為:%2.1f",rr*100);puts("%");printf("\n");}voidPRAlfu(intm,intn,BlockOrderhead,BlockOrderlast,int*BlockList,int*PageList){ inti=0,j=0,count=0,flag=0; floatrr=0; BlockOrdercur=head,pre=NULL; printf("用lfu算法進(jìn)行頁(yè)面置換:\n"); while(i<n) { printf("頁(yè)面%d:",PageList[i]); if(Notin(m,BlockList,PageList[i],head,pre,flag)) { BlockList[head->block]=PageList[i]; last->next=head; last=last->next; head=head->next; } else { if(pre==head&&flag==1) { last->next=head; last=last->next; head=head->next; } elseif(pre->next!=last) { last->next=pre->next; last=last->next; pre->next=pre->next->next; } else{} count++; } i++; for(j=0;j<m;j++) { if(BlockList[j]==-1) printf("-"); else printf("%d",BlockList[j]); } printf("\n"); } rr=(float)count/n; printf("用lfu算法進(jìn)行頁(yè)面置換的命中率為:%2.1f",rr*100);puts("%");printf("\n");}intIsIn(intm,int*BlockList,intk) { for(inti=0;i<m;i++) { if(BlockList[i]==k) return1; } return0; } voidnextj(intm,int*BlockList,intn,int*PageList,inti,int*&nextoccur) { intj,k; for(j=0;j<m;j++) { for(k=i+1;k<n;k++) { if(BlockList[j]==PageList[k]) { nextoccur[j]=k; break; } } if(BlockList[j]==-1) { nextoccur[j]=4*n-j; } elseif(k==n) nextoccur[j]=3*n-j; } } intChooseNextOut(int
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Trilysine-TFA-生命科學(xué)試劑-MCE-4187
- KIF18A-IN-15-生命科學(xué)試劑-MCE-5317
- 4-4-Dimethoxyoctafluorobiphenyl-生命科學(xué)試劑-MCE-5198
- 1-3-Dinervonoyl-glycerol-生命科學(xué)試劑-MCE-1243
- 2025年度特色民宿體驗(yàn)住宿協(xié)議
- 二零二五年度消防設(shè)備定制設(shè)計(jì)與銷售合同
- 二零二五年度農(nóng)產(chǎn)品線上線下一體化購(gòu)銷合同標(biāo)準(zhǔn)
- 施工現(xiàn)場(chǎng)施工防傳染病傳播制度
- 個(gè)人兼職用工合同模板
- 鄉(xiāng)村別墅租賃合同樣本
- 老師呀請(qǐng)你別生氣教學(xué)反思
- 2023年北京市平谷區(qū)中考英語(yǔ)二模試卷
- 變壓器更換施工方案
- 【高分復(fù)習(xí)筆記】陳澄《新編地理教學(xué)論》筆記和課后習(xí)題詳解
- 安徽新宸新材料有限公司年產(chǎn)6000噸鋰離子電池材料雙氟磺酰亞胺鋰項(xiàng)目環(huán)境影響報(bào)告書
- 日本酒類消費(fèi)行業(yè)市場(chǎng)分析報(bào)告
- GB/T 29594-2013可再分散性乳膠粉
- 西子奧的斯電梯ACD2調(diào)試說(shuō)明書
- 成長(zhǎng)感恩責(zé)任高中主題班會(huì)-課件
- 建設(shè)項(xiàng)目全過(guò)程工程咨詢服務(wù)指引(咨詢企業(yè)版)(征求意見(jiàn)稿)
- 分手的協(xié)議書模板(5篇)
評(píng)論
0/150
提交評(píng)論