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

📄 clock置换算法.txt

📁 操作系统中改进型clock页面置换算法的演示算法
💻 TXT
字号:
#include<iostream.h>
#include<malloc.h>
//using namespace std;

class node
{
public:
	int num;
	bool A;
	bool M;
	class node *pnext;
	node()
	{
		num=-1;
		A=0;
		M=0;
	}
};

int pagesum;
int pageorder[21];
int pagechange[20];
node *phead,*p,*pr;

void show()
{
	node *ps=phead;
	cout<<ps->num<<"  ";
	ps=ps->pnext;

	while(ps!=phead)
	{
		cout<<ps->num<<"  ";
		ps=ps->pnext;
	}
	cout<<endl;
}


void main()
{
	int i;

	bool sign=0;


	cout<<"请输入内存页数:";

	cin>>pagesum;

	cout<<"请输入页面访问次序(不大于20个且以-1结束):"<<endl;
	

	for(i=1;i<21;i++)
	{
		cout<<"请输入第"<<i<<"个次序:";
		cin>>pageorder[i];
		
		if(pageorder[i]<0)
		{
			
			pageorder[0]=i-1;
			break;
		}
		else
		{
			cout<<"请输入该页面是否修改(1为修改0为只访问):";
			cin>>pagechange[i-1];
		}
	}
	
	i=1;
	cout<<"输入的数有";
	while(pageorder[i]>=0)
	{
		cout<<pageorder[i]<<"   ";
		i++;
	}
	cout<<endl;
	
	

	p=(node*)malloc(sizeof(node));
	p->num=-1;
	p->A=0;
	p->M=0;
	
	phead=p;

	p->pnext=phead;
	pr=p;

	for(i=0;i<pagesum-1;i++)
	{
		p=(node*)malloc(sizeof(node));
		p->num=-1;
		p->A=0;
		p->M=0;
		p->pnext=phead;
		pr->pnext=p;
		pr=pr->pnext;
	}
	p=phead;
	int j;

	for(i=1;i<=pageorder[0];i++)
	{
		sign=0;
		while(1)
		{
			for(j=0;j<pagesum&&sign==0;j++)
			{
				if(p->num==pageorder[i])
				{
					p->A=1;
					if(pagechange[i-1]==1)
					{
						p->M=1;
					}
					else
						p->M=0;
					sign=1;
					show();
					
				}
				p=p->pnext;
				if(1==sign)
				{
					break;
				}
			}
			for(j=0;j<pagesum&&sign==0;j++)
			{
				if(0==p->A&&0==p->M)
				{
					p->num=pageorder[i];
					p->A=1;
					if(pagechange[i-1]==1)
						p->M=1;
					else
						p->M=0;
					sign=1;
					show();
					
				}
				p=p->pnext;
				if(1==sign)
				{
					break;
				}
			}
			
			for(j=0;j<pagesum&&sign==0;j++)
			{
				if(0==p->A)
				{
					p->num=pageorder[i+1];
					p->A=1;
					if(pagechange[i-1]==1)
					{
						p->M=1;
					}
					else
						p->M=0;
					sign=1;
					show();
					
				}
				p->A=0;
				//p->M=0;
				p=p->pnext;
				if(1==sign)
				{
					break;
				}
				
				
			}
			if(1==sign)
			{

				break;
			}
		
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -