最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

操作系统LRU和FIFO算法

来源:动视网 责编:小OO 时间:2025-09-30 22:28:50
文档

操作系统LRU和FIFO算法

#include#include#include#include#includeusingnamespacestd;intBlockNum[100];intstack[100],stack1[100];charstr[30];typedefstructMemory{charPhysicalAddress[30];charActualAddress[30];}memory;typedefstructPage{intBlockInPagenum;inttable;}page;stringBiteT
推荐度:
导读#include#include#include#include#includeusingnamespacestd;intBlockNum[100];intstack[100],stack1[100];charstr[30];typedefstructMemory{charPhysicalAddress[30];charActualAddress[30];}memory;typedefstructPage{intBlockInPagenum;inttable;}page;stringBiteT
#include

#include

#include

#include

#include

using namespace std;

int BlockNum[100];

int stack[100],stack1[100];

char str[30];

typedef struct Memory

{ char PhysicalAddress[30];

char ActualAddress[30];

}memory;

typedef struct Page

{

int BlockInPagenum;

int table;

}page;

string BiteToBite0(int sum)

{

int i,j,k;

char s[100];

char str[30]="\\0";

char str2[30]="\\0";

s['0']=0;s['1']=1;s['2']=2;s['3']=3;

s['4']=4;s['5']=5;s['6']=6;s['7']=7;

s['8']=8;s['9']=9;s['A']=10;s['B']=11;

s['C']=12;s['D']=13;s['E']=14;s['F']=15;

i=0;

while(sum>0)

{

int t=sum%16;

if(t>=10)

{

str[i++]=char(t-10+'A');

}

else

str[i++]=char(t+'0');

sum=sum/16;

}

for(j=i-1,k=0;k<=i-1,j>=0;k++,j--)

str2[k]=str[j];

return str2;

}

string BiteToBite(char str[30],int a,int b)

{

int i,j,k,sum,length;

char s[100];

char str2[30]="\\0";

s['0']=0;s['1']=1;s['2']=2;s['3']=3;

s['4']=4;s['5']=5;s['6']=6;s['7']=7;

s['8']=8;s['9']=9;s['A']=10;s['B']=11;

s['C']=12;s['D']=13;s['E']=14;s['F']=15;

length=strlen(str);

k=1;sum=0;i=length-1;

while(i>=0)

{

sum+=s[str[i]]*k;

k=k*a;

i--;

}

i=0;

while(sum>0)

{

int t=sum%b;

if(t>=10)

{

str[i++]=char(t-10+'A');

}

else

str[i++]=char(t+'0');

sum=sum/b;

}

for(j=i-1,k=0;k<=i-1,j>=0;k++,j--)

str2[k]=str[j];

return str2;

}

int BiteToBite2(char str[30],int a)

{

int i,k,sum,length;

char s[100];

s['0']=0;s['1']=1;s['2']=2;s['3']=3;

s['4']=4;s['5']=5;s['6']=6;s['7']=7;

s['8']=8;s['9']=9;s['A']=10;s['B']=11;

s['C']=12;s['D']=13;s['E']=14;s['F']=15;

length=strlen(str);

k=1;sum=0;i=length-1;

while(i>=0)

{

sum+=s[str[i]]*k;

k=k*a;

i--;

}

return sum;

}

void creatMap(int m[10][10])

{

int i,j;

srand(time(NULL));

for(i=0;i<10;i++)

for(j=0;j<10;j++)

m[i][j]=rand()%2;

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

cout<cout<}

}

int main()

{ int i,bnum,temp,In_page,yu_num,wu_num,m0;

int j=0;

int Block_Num;

int Page_Num;

int Block_Size;

int m[10][10];

page PageNum[100],PageNum1[100];

bnum=0;temp=0;

cout<<"**************欢迎使用**************"<cout<<"Input the num of Page:";

cin>>Page_Num;

cout<<"Page "<<"Table "<for(i=0;i{

PageNum[i].BlockInPagenum=PageNum[i].table=0;

printf("%2d %2d\

;j++)

if(m[i][j]==0)

{

BlockNum[bnum]=10*i+j;

cout<<"第"<if(Block_Num-1==bnum){temp=1;break;}

bnum++;

}

if(temp==1)break;

}

memory M[100];

float rate;

char ch;

float times;

float part_times;

int top=-1,BiaoZhi,k0;

float que_ye;

k0=j=0;

part_times=times=0;

cout<cout<<"请选择算法:a--(FRU) b--(FIFO)"<cin>>ch;

switch(ch)

{

case'a':

while(1)

{

int temp1;int i=0;BiaoZhi=0;

cout<<"输入逻辑地址(10进制):";

cin>>M[i].PhysicalAddress;

In_page=BiteToBite2(M[i].PhysicalAddress,10);

temp1=int(In_page/(Block_Size*1024));

yu_num=In_page%(Block_Size*1024);

cout<<"16进制为:"<if(temp1>=Page_Num)

{

cout<<"超出了页表个数!!!操作失败"<}

else

{

if(j{

wu_num=BlockNum[j] *(Block_Size)*1024+yu_num;

PageNum[temp1].BlockInPagenum=BlockNum[j];

PageNum[temp1].table=1;

cout<<"物理地址是: 十进制 十六进制"<cout<<" "<cout<<"修改后的页表是:"<for(i=0;i{

printf("%2d %2d\

num;

cout<<"物理地址是: 十进制 十六进制"<cout<<" "<cout<<"修改后的页表是:"<for(i=0;i{

printf("%2d %2d\

geNum[i].BlockInPagenum,PageNum[i].table);

}

}

else

{

PageNum[temp1].BlockInPagenum=PageNum[stack[0]].BlockInPagenum;

PageNum[temp1].table=1;

PageNum[stack[0]].BlockInPagenum=0;

PageNum[stack[0]].table=0;

for(i=0;i{

stack[i]=stack[i+1];

}

stack[Block_Num-1]=temp1;

wu_num=PageNum[temp1].BlockInPagenum *(Block_Size)*1024+yu_num;

cout<<"物理地址是: 十进制 十六进制"<cout<<" "<cout<<"修改后的页表是:"<for(i=0;i{

printf("%2d %2d\

文档

操作系统LRU和FIFO算法

#include#include#include#include#includeusingnamespacestd;intBlockNum[100];intstack[100],stack1[100];charstr[30];typedefstructMemory{charPhysicalAddress[30];charActualAddress[30];}memory;typedefstructPage{intBlockInPagenum;inttable;}page;stringBiteT
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top