资源简介

产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。为简单起见,页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 具体的做法可以是: 产生一个需要访问的指令地址流; 指令合适的页面尺寸(例如以 1K或2K为1页); 指定内存页表的最大长度,并对页表进行初始化; 每访问一个地址时,首先要计算该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不在主存且页表已满,则按FIFO页面淘汰算法淘汰一页后调入所需的页,打印页表情况;逐个地址访问,直到所有地址访问完毕。

资源截图

代码片段和文件信息

#include
#include
//#include

using namespace std;
class page_table{
      public:
             int page_num;
             int kuai_num;
             page_table(int page_noint kuai_no)
             {
                            page_num=page_no;
                            kuai_num=kuai_no;
                            }            
             };
             
void print(vector &mem); 
int main(){
int ary[]={245103020543500460050003888888660049888466};
vectorivec(aryary+11);
vector vec;
cout<<“页面尺寸大小为 1k “<cout<<“内存中页表最大为3k“</*页表初始化*/
/*页号从0开始的*/ 
for(int i=0;i<10;i++)
{
        page_table pt(ii*2+1);
        vec.push_back(pt);
        }
        
vector mem;
int ye_hao=0;
vector::iterator it=ivec.begin();
while(it!=ivec.end()){   //while_start
                      int i=(*it)/1024;
                      int j=(*it)%1024;
                      if (i>=1 && j>0)
                      ye_hao=i;
                      else ye_hao=0;
                      cout<<“读取物理地址为:“<<*it<                      vector::iterator itt=vec.begin();
                      for(int k=0;k                      itt++;
                      
                      if(mem.empty()){
                      mem.push_back(*itt);
                      //打印页表情况
                      cout<<“第一次内存页表情况“<                      cout<<“页号:“<page_num<<‘\t‘<<“块号:“<kuai_num<                      }                    
                      
                      else if(!mem.empty()){
                                                      
                      vector::iterator itt=vec.begin();
                      for(int k=0;k                      itt++;
                      
                      cout<<“这次读取的页号:“<page_num<                  
                      vector::iterator iter=mem.begin();
                      vector::iterator iter_end=mem.end();
                                       
                      int i=1;
                      while(iter!=mem.end()){        //while_here
                      if(iter->page_num==ye_hao){
                                                 cout<<“此页在内存中这时页表情况“<                                                 //cout<<“打印页表情况“<                                                 print(mem);
                                      

评论

共有 条评论

相关资源