p[])這函數(shù)是產(chǎn)生n個(gè)1~10的隨機(jī)數(shù)放到p[]數(shù)組里面_第1頁(yè)
p[])這函數(shù)是產(chǎn)生n個(gè)1~10的隨機(jī)數(shù)放到p[]數(shù)組里面_第2頁(yè)
p[])這函數(shù)是產(chǎn)生n個(gè)1~10的隨機(jī)數(shù)放到p[]數(shù)組里面_第3頁(yè)
p[])這函數(shù)是產(chǎn)生n個(gè)1~10的隨機(jī)數(shù)放到p[]數(shù)組里面_第4頁(yè)
p[])這函數(shù)是產(chǎn)生n個(gè)1~10的隨機(jī)數(shù)放到p[]數(shù)組里面_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include <stdlib.h> #include <iostream.h>#include <time.h> void rand(int n,int p)/這函數(shù)是產(chǎn)生n個(gè)110的隨機(jī)數(shù)放到p數(shù)組里面  int START=1; int END=10; int v; int i; srand(time(NULL);     for(i=0; i<n; i+)    v=rand()%(END-START+1)+START;   

2、;      pi=v;    struct Pro int num,time;/num存放具體的內(nèi)容,time在不同算法里面有不同的意義;               /它們是物理塊和頁(yè)面的數(shù)據(jù)結(jié)構(gòu)int Input(int m,int N,Pro *p,Pro *page)/完成p數(shù)組和page的初始化工作   /p數(shù)組是存放頁(yè)面的空間,m是頁(yè)面的長(zhǎng)度&

3、#160; /page是可以使用的物理塊,N是物理塊的大小    cout<<endl<<"請(qǐng)輸入各頁(yè)面號(hào)"<<endl;    int *p2=new intm;    rand(m,p2);       for(int i=0;i<m;i+)   pi.num=p2i;  pi.time=0;   for(i=0

4、;i<N;i+)/初試化頁(yè)面基本情況    pagei.num=0;   pagei.time=N+2-i;  return m; int  Search(int e,Pro *page,int N)/算法里面都要用到它。/它是找e頁(yè)是否在page物理塊中,N是物理塊的大小 for(int i=0;i<N;i+)  if(e=pagei.num)   return i;/如果找到,就返回在物理塊中的位置給Searc

5、h return -1;/找不到,就返回-1 int Max(Pro *page,int N)/LRU算法用到的/找出在page塊中,time最大的值和位置,同時(shí)位置返回/time最大,就代表了最久沒(méi)被使用的數(shù) int e=page0.time,i=0; int k=0; while(i<N)/找出離現(xiàn)在時(shí)間最長(zhǎng)的頁(yè)面   if(e<pagei.time)        k=i;    

6、;i+;  return k; int Compfu(Pro *page,int i,int t,Pro p,int m)/OPT算法用到的/找出如果paget要等于p,并且zai pipm這個(gè)區(qū)間內(nèi),走的次數(shù),最大的數(shù) int count=0;/count是保存走的步數(shù) for(int j=i;j<m;j+)   if(paget.num=pj.num )break;/如果相等,跳出循環(huán)  else count+;/不等就步數(shù)加1  return count;

7、0;int Min(Pro page,int N)/LFU算法用到的    /page是可以使用的物理塊,N是物理塊的大小  /找到出現(xiàn)次數(shù)最小的的數(shù),并把位置返回 int k=0; int min=page0.time; for(int i=0;i<N;i+)   if(min>pagei.time)   k=i;  return k; void FIFO(Pro p,Pro page,int m,int N)/p數(shù)組是存

8、放頁(yè)面的空間,m是頁(yè)面的長(zhǎng)度    /page是可以使用的物理塊,N是物理塊的大小  float n=0;/n用來(lái)保存缺頁(yè)的次數(shù) int i=0;/i是循環(huán)變量,它是表示走到頁(yè)面的位置。 int t=0;/t是用來(lái)表示物理塊走到的位置 cout<<"頁(yè)面置換情況:   "<<endl; for(i=0;i<m;i+)   if(Search(pi.num,page,N)>=0)  

9、 continue;/找到相同的頁(yè)面,就跳到下一次循環(huán),不做處理。  else /在找不到的時(shí)候,通過(guò)t=t%N,求出這次來(lái)替換物理塊的位置        t=t%N;   n+;/缺頁(yè)數(shù)加1   paget.num=pi.num;           t+;/位置加1      

10、;   cout<<"缺頁(yè)次數(shù):"<<n<<"    缺頁(yè)率:"<<n/m<<"    命中率:"<<1-n/m<<endl;    void LFU(Pro p,Pro page,int m,int N)/p數(shù)組是存放頁(yè)面的空間,m是頁(yè)面的長(zhǎng)度    /page是可以使用的物理塊,N是物理塊的大小,&#

11、160;float n=0; int i=0; int t=0; for(i=0;i<N;i+)  pagei.time=0; cout<<"頁(yè)面置換情況:   "<<endl; for(i=0;i<m;i+)   if(Search(pi.num,page,N)>=0)     pagei.time+;/找到相同的頁(yè)面,time加1  

12、0;continue;/    else    /找出使用最少的頁(yè)面進(jìn)行調(diào)換   t=Min(page,N);/找到出現(xiàn)次數(shù)最小的的數(shù),并把位置返回t   paget.num=pi.num;   paget.time=0;/該頁(yè)time清零   n+;/缺頁(yè)數(shù)加1     cout<<"缺頁(yè)次數(shù):"<<n<&

13、lt;"    缺頁(yè)率:"<<n/m<<"    命中率:"<<1-n/m<<endl;   void OPT(Pro p,Pro page,int m,int N)/p數(shù)組是存放頁(yè)面的空間,m是頁(yè)面的長(zhǎng)度    /page是可以使用的物理塊,N是物理塊的大小     float n=0;/n用來(lái)保存缺頁(yè)的次數(shù)    &

14、#160;   int i=0;/i是循環(huán)變量,它是表示走到頁(yè)面的位置。         int t=0; /t是用來(lái)表示物理塊走到的位置   while(i<m)       if(Search(pi.num,page,N)>=0)     i+;/如果找到了,就不做處理。    else/如果

15、找不到         int temp=0,cn;/cn用來(lái)保存離后面最遠(yuǎn)的數(shù)     for(t=0;t<N;t+)/對(duì)物理塊里面的每個(gè)數(shù)進(jìn)行遍歷           if(temp<Compfu(page,i,t,p,m)/temp用來(lái)保存      /paget= pi

16、pm這個(gè)區(qū)間內(nèi),走的次數(shù),最大的數(shù)       temp=Compfu(page,i,t,p,m);       cn=t;                pagecn=pi;/把當(dāng)前的值放要發(fā)生要走最遠(yuǎn)的數(shù),也就最不可能最近出現(xiàn)的數(shù)     n=n

17、+1;/缺頁(yè)數(shù)加1     i+;/跳到下一次循環(huán)          cout<<"缺頁(yè)次數(shù):"<<n<<"    缺頁(yè)率:"<<n/m<<"    命中率:"<<1-n/m<<endl;  void LRU(Pro p,Pro pag

18、e,int m,int N)/p數(shù)組是存放頁(yè)面的空間,m是頁(yè)面的長(zhǎng)度    /page是可以使用的物理塊,N是物理塊的大小    float n=0;/n用來(lái)保存缺頁(yè)的次數(shù) int i=0;/i是循環(huán)變量,它是表示走到頁(yè)面的位置。 int t=0;  /t是用來(lái)表示物理塊走到的位置         cout<<"頁(yè)面置換情況:   "<<endl;  &

19、#160;     while(i<m)              int k;      k=t=Search(pi.num,page,N);      if(t>=0)      paget.time=0;/如果找到,就要把當(dāng)前的paget.time次數(shù)  

20、60;                          /清零         else/找不到的時(shí)候,發(fā)生缺頁(yè)              n+;

21、/缺頁(yè)數(shù)加1        t=Max(page,N);/找出page物理塊里面,最久沒(méi)被時(shí)候的數(shù)                      /同時(shí)把最久沒(méi)被時(shí)候的數(shù)在物理塊里的位置傳給t        paget.num=pi.num;/最久沒(méi)被使

22、用的是被現(xiàn)在的數(shù)代替        paget.time=0;/同時(shí)清零             for(int j=0;j<N;j+)/把缺頁(yè)以外的數(shù),把它沒(méi)被使用的次數(shù)加1          if(j=t)      continue;  

23、   paget.time+;              i+;/跳到下一次循環(huán)           cout<<"缺頁(yè)次數(shù):"<<n<<"    缺頁(yè)率:"<<n/m<<"    命中率:

24、"<<1-n/m<<endl;  void main() int m=0,t=0,N=0; cout<<"請(qǐng)輸入實(shí)際頁(yè)數(shù):" cin>>m;     Pro *p=new Prom;/p是用來(lái)放頁(yè)面的地方    cout<<"可用內(nèi)存頁(yè)面數(shù)"<<endl; cin>>N;     Pro *page=new ProN;/page是放物理塊的地方 char c;  float n=0; Input(m,N,p,page);/m是頁(yè)面的總長(zhǎng),N是物理塊的長(zhǎng)度  do                  cout<<"f:FIFO頁(yè)面置換"<&l

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論