91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 220KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-13
  • 語言: 其他
  • 標(biāo)簽: 內(nèi)存管理??

資源簡介

隨機給出一個頁面執(zhí)行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求計算以下幾種置換算法的缺頁數(shù)、缺頁率和命中率。 ? 最佳置換算法OPT(Optimal) ? 先進先出算法FIFO(First In First Out) ? 最近最少使用算法LRU(Least Recently Used) 實驗報告(含流程圖及運行結(jié)果)&源代碼

資源截圖

代碼片段和文件信息

#include
#include
#include
#ifndef?_UNISTD_H
#define?_UNISTD_H
#include
#include
#endif
#define?TRUE?1
#define?FALSE?0
#define?INVALID?-1
#define?total_instruction?320?//指令流長
#define?total_vp?32?//虛頁長
#define?clear_period?50?//清周期
typedef?struct?//頁面結(jié)構(gòu)
{
int?pn?//頁面序號
pfn?//頁面所在內(nèi)存區(qū)的幀號
counter?//單位時間內(nèi)訪問次數(shù)
time;?//上次訪問的時間
}pl_type;
pl_type?pl[total_vp];?//頁面結(jié)構(gòu)數(shù)組

//頁面控制結(jié)構(gòu)
struct?pfc_struct{?
int?pn?//頁面號
pfn;?//內(nèi)存區(qū)頁面的幀號
struct?pfc_struct?*next;?//頁面指針,用于構(gòu)建內(nèi)存緩沖區(qū)鏈表?
};?
typedef?struct?pfc_struct?pfc_type;?//主存區(qū)頁面控制結(jié)構(gòu)類型別名
pfc_type?pfc[total_vp]?//主存區(qū)頁面控制結(jié)構(gòu)數(shù)組
*freepf_head?//主存區(qū)頁面控制結(jié)構(gòu)的空閑頁面頭指針
*busypf_head?//主存區(qū)頁面控制結(jié)構(gòu)的忙頁面頭指針
*busypf_tail;?//主存區(qū)頁面控制結(jié)構(gòu)的忙頁面尾指針
int?diseffect;?//頁錯誤計數(shù)器,初次把頁面載入主存時也當(dāng)做頁錯誤?
int?a[total_instruction];?//隨即指令流數(shù)組
int?page[total_instruction];?//指令對應(yīng)的頁面號
int?offset[total_instruction];?//指令所在頁面中的偏移量
int?initialize(int);?//初始化頁面結(jié)構(gòu)數(shù)組和頁面控制結(jié)構(gòu)數(shù)組
void?FIFO(int);?//先進先出算法
void?LRU(int);?//最近最久未使用算法
void?OPT(int);?//最佳置換算法

int?main(?)
{
int?s;?//隨機數(shù)
int?i;
srand(10*getpid());?/*每次運行時進程號不同*/
s?=?(int)((float)(total_instruction-1)*(rand()/(RAND_MAX+1.0)));
printf(“\n隨機執(zhí)行序列:\n“);
for?(i=0;?i{
a[i]=s;?//任選一指令訪問點
a[i+1]=a[i]+1;?//順序執(zhí)行一條指令
a[i+2]=(int)((float)a[i]*(rand()/(RAND_MAX+1.0)));//再次隨機產(chǎn)生一條指令?
a[i+3]=a[i+2]+1;?//再次順序執(zhí)行一條指令
printf(“%6d%6d%6d%6d\n“?a[i]a[i+1]a[i+2]a[i+3]);
s?=?(int)((float)((total_instruction-1)-a[i+2])*(rand()/(RAND_MAX+1.0)))?+?a[i+2];?//隨機產(chǎn)生新的指令?
}
printf(“\n“);
for?(i=0;i{?page[i]=a[i]/10;
offset[i]=a[i]%10;
}
printf(“\n不同置換算法對比:\n\n“);
printf(“\t?頁數(shù)\t?缺頁數(shù)\t?缺頁率\t?命中率\n“);
for(i=4;i<=32;i++)?
{
FIFO(i);
LRU(i);
OPT(i);
printf(“\n“);
}
return?0;
}

int?initialize(int?total_pf)
{
int?i;
diseffect=0;
for(i=0;i{
pl[i].pn=i;
pl[i].pfn=INVALID;?//置頁面所在主存區(qū)的幀號為-1.表示該頁不在主存中?
pl[i].counter=0;?//置頁面結(jié)構(gòu)中的訪問次數(shù)為
pl[i].time=-1;?//置頁面結(jié)構(gòu)中的上次訪問的時間為-1
}
for(i=0;i{
pfc[i].next=&pfc[i+1];?//連接pfc[i-1]和pfc[i]
pfc[i].pfn=i;?//初始化幀號
}
pfc[total_pf-1].next=NULL;
pfc[total_pf-1].pfn=total_pf-1;
freepf_head=&pfc[0];?//主存區(qū)頁面控制結(jié)構(gòu)的空閑頁面頭指針指向pfc[0]?
return?0;
}

void?LRU?(int?total_pf)
{
int?MinT;?//最小的訪問時間,即很久沒被訪問過
int?MinPn;?//擁有最小的訪問時間的頁的頁號
int?ij;
int?CurrentTime;?//系統(tǒng)當(dāng)前時間
initialize(total_pf);?//初始化頁面結(jié)構(gòu)數(shù)組和頁面控制結(jié)構(gòu)數(shù)組?
CurrentTime=0;
diseffect=0;
for(i=0;i{
if(pl[page[i]].pfn==INVALID)?//頁面失效
{
diseffect++;?//頁錯誤次數(shù)加

if(freepf_head==NULL)?//無空閑頁面
{
MinT=100000;
for(j=0;j{
if(MinT>pl[j].time&&pl[j].pfn!=INVALID)
{
MinT=pl[j].time;
MinPn=j;
}
}
freepf_head=&pfc[pl[MinPn].pfn];?//最久沒被訪問過的頁被釋放
pl[MinPn].pfn=INVALID;?//最久沒被訪問過的頁被換出主存
pl[MinPn].time=-1;?//最久沒被訪問過的頁的訪問時間置為無效?
freepf_head->next=NULL;
}

pl[page[i]].pfn=freepf_head->pfn;?//有空閑頁面把相應(yīng)的頁面換入主存,并把pfn改為相應(yīng)的幀號?
pl[page[i]].time=CurrentTime;?//令訪問時間為當(dāng)前系統(tǒng)時間
freepf_head=freepf_head->next

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????234185??2017-11-05?23:11??實驗三?內(nèi)存管理?實驗報告.docx
?????文件????????6243??2017-11-05?21:17??未命名1.cpp
?????文件???????55296??2017-12-30?11:19??實驗3?內(nèi)存管理.doc

評論

共有 條評論

相關(guān)資源