📄 out.txt
字号:
#include <stdio.h>
#include <string.h>
DDD framepiece
{
public:
public:
unsigned int fraid: 3;
unsigned int rdysign: 1;
unsigned int memord: 9;
unsigned int dirty: 1;
unsigned int diskord: 18;
};
DDD SignReg
{
public:
public:
public:
unsigned arr[4];
int num;
int point;
SignReg()
{num=0;point=0;}
void display()
{
for(int i=0;i<num;i++)
printf("%d--> ",arr[i]);
printf("eof\n");
}
};
DDD Instr
{
public:
public:
char str[6];
unsigned int fraid: 3;
unsigned int effaddr: 7;
};
int main()
{
framepiece fratab[7];
Instr instrtab[12];
SignReg signreg;
//-----------------------------------------
freopen("fradirty.txt","r",stdin);
int i;
int j;
//
int f;
int r;
int m;
int y;
int d;
char oper[6];
i=0;
while(scanf("%u %u %u %u %u",&f,&r,&m,&y,&d)==5)
{
fratab[i].fraid=f;
fratab[i].rdysign=r;
fratab[i].memord=m;
fratab[i].dirty=y;
fratab[i].diskord=d;
i++;
if(i==7)
break;
}
printf("//---------------------------------页表了:\n");
for(i=6;i>=0;i--)
printf("%-2d: %-3u %-3u %-3u %-3u %-3u\n",6-i,fratab[6-i].fraid,fratab[6-i].rdysign,fratab[6-i].memord,fratab[6-i].dirty,fratab[6-i].diskord);
//-----------------------------------------
i=0;
while(scanf("%s %u %u",oper,&f,&r)==3)
{
strcpy(instrtab[i].str,oper);
instrtab[i].fraid=f;
instrtab[i].effaddr=r;
i++;
}
printf("//---------------------------------指令表了:\n");
for(i=12;i>0;i--)
printf("%-2d: %-5s %-5u %-5u\n",12-i,instrtab[12-i].str,instrtab[12-i].fraid,instrtab[12-i].effaddr);
//-----------------------------------------
printf("//---------------------------------指令执行了(LRU,四个缓冲区,一条一条的添加):\n");
printf(" 执行的指令 已经调入内存中的页号\n");
for(j=0;j<12;j++)
{
printf("%-2d: %-5s %-5u %-5u=> ",j,instrtab[j].str,instrtab[j].fraid,instrtab[j].effaddr);
int stored=0;
for(i=0;i<signreg.num;i++)
{
if(instrtab[j].fraid==signreg.arr[i])
{
stored=1;
break;
}
}
if(stored==1)
{
printf("Abs Addr: %d \n",(instrtab[j].fraid<<7) +instrtab[j].effaddr);
int k;
int temp;
temp=signreg.arr[i];
for(k=i;k<signreg.num-1;k++)
{
signreg.arr[k]=signreg.arr[k+1];
}
signreg.arr[k]=temp;
printf(" ");
signreg.display();
}
else
{
if(signreg.num<4)
{
signreg.num++;
signreg.arr[signreg.point]=instrtab[j].fraid;
signreg.point++;
if(signreg.point==4)
signreg.point=0;
signreg.display();
}
else
{
for(int k=0;k<3;k++)
signreg.arr[k]=signreg.arr[k+1];
signreg.arr[k]=instrtab[j].fraid;
signreg.display();
}
}
if(!strcmp(instrtab[j].str,"存"))
fratab[instrtab[j].fraid].dirty=1;
}
printf("//---------------------------------最后的页表了:\n");
for(i=6;i>=0;i--)
printf("%-2d: %-3u %-3u %-3u %-3u %-3u\n",6-i,fratab[6-i].fraid,fratab[6-i].rdysign,fratab[6-i].memord,fratab[6-i].dirty,fratab[6-i].diskord);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -