⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 out.txt

📁 把源文件拷贝入code.txt
💻 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 + -