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

📄 vmm.cpp

📁 请求页式存储管理 操作系统课程设计 设计一个请求页式存储管理方案。并编写模拟程序实现之。页面淘汰算法采用 FIFO页面淘汰算法
💻 CPP
字号:
//
//程序名称:请求分页存储管理
//程序作者:张焕人
//作者邮箱: renwairen369@yahoo.com.cn
//          renwairen369@hotmail.com
//作者QQ:27949278
//
//
//


#define MAXP 6 //页表的最大长度
#define MAXB 3 //内存中最多的物理块数
#include <stdio.h>
#include <iostream.h>


typedef struct pa  //页表项的数据结构
{
	int pn; //页号
	int bn; //物理块号
	bool s;  //状态位
	int ad;  //外存地址
} pageitem;

typedef struct p  //页标置换的FIFO链表
{
	int num;  //记录页号
	struct p *next;
} flink;

pageitem page[MAXP];

init()
{   
	int i;
	for(i=0;i<MAXP;i++) //页表初始化
	{
		page[i].pn=i;
		page[i].s=false;
        page[i].bn= i*800 / 17;
		page[i].ad=20000+i*1024;
	}
}

main()
{  int i;
   int cmda,pn;
   int bn=0; //当前内存中已存入的页面数
   flink *p,*h,*r;
   h=r=new flink;
   h->num=0;  //头节点记录链表中节点个数
   init();
   
   cout<<"\t       欢迎使用请求分页存储管理方式模拟程序\n ";
   cout<<"\n请输入一个指令地址(0000~6144): ";
   cin>>cmda;
   while(cmda>=6144) 
   {
	   cout<<"\n请输入一个指令地址(0000~6144): ";
	   cin>>cmda;
   }
   
   while(cmda>0)
   {
       pn=cmda/1024;
       cout<<"\t此指令页号为"<<pn;
   
       if(page[pn].s==true)
	      cout<<"    此页面已在内存中"<<endl;
       else 
	   {
	      if(h->num<MAXB) //内存中还能存入新页面
		  {
			  h->num++;
			  cout<<"\t此页面已调入内存"<<endl;
		  } 
	       else //内存中不能再存入新页面
		   {  
			  p=h->next;
		      page[p->num].s=false;
		      cout<<"\t此页面已调入内存,页号为"<<p->num<<"的页面被置换出来"<<endl;
			  h->next=p->next;
			  delete p;   //将第一个页表置换出来
		   }
		  
		   
		   page[pn].s=true; //将当前需要的页读入内存

		   p=new flink;
		   p->num=pn;
		   r->next=p;
		   r=p;   //将读入内存的页插入到FIFO队列尾部


	   }

      cout<<"\n当前内存中物理块的情况"<<endl;
	   cout<<"  页号\t"<<"物理块号\t"<<"状态位\t"<<"外存地址"<<endl;
      for(i=0;i<MAXP;i++)
	  {
          if(page[i].s)
			  cout<<"  "<<page[i].pn<<"\t"<<page[i].bn<<"\t\t"<<page[i].s<<"\t"<<page[i].ad<<endl;
	  }

	  cout<<"\n\n请输入一个指令地址(0000~6144): ";
	  cin>>cmda;
	  while(cmda>=6144) 
	  {
	     cout<<"\n\n请输入一个指令地址(0000~6144): ";
	     cin>>cmda;
	  }
   }
   

}

⌨️ 快捷键说明

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