#include
#define Bsize 3 //页面块数 #define Psize 20 using namespace std;
struct pageInfor { int ID; //页面号 int visit; //被访问标记 };
pageInfor * block; //物理块 pageInfor * page; //页面号串 class SWM {
private: int i; int count; public: //置初值 void BlockClear() { for(int i=0; i page = new pageInfor[Psize]; for(i=0; i { count=0; int exist,space,position ; for(int i=0; i { cout<<\即将访问的是页面\ cout<<\内存中已存在该页\ block[exist].visit = -1;//恢复存在的并刚访问过的BLOCK中页面visit为-1 } else { space = findSpace(); if(space != -1) { block[space] = page[i]; display(); } else { position = findReplace(); cout<<\即将访问的是页面\将被置换出的是页面\ block[position] = page[i]; display(); count++; } } for(int j=0; j else { space = findSpace(); if(space != -1) { block[space] = page[i]; display(); } else { for(int k=0; k void main() { int ch; SWM test; printf(\ 页面置换算法 \\n\ printf(\ 虚拟内存 \\n\ printf(\ 1、产生随机序列 \\n\ printf(\ 2、最久未使用(LRU) \\n\ printf(\ 3、先进先出(FIFO) \\n\ printf(\ 4、最佳置换算法(OPT) \\n\ // printf(\ 5、三种算法的比较() // cout<<\计算机随机产生一组种子:\ // test.inital(); while(ch) { cin>>ch; switch(ch) { case 1: cout<<\计算机随机产生一组种子:\ test.inital(); test.BlockClear(); cout< cout<<\ test.LRU(); test.BlockClear(); cout< cout<<\ test.FIFO(); test.BlockClear(); cout< cout<<\ test.OPT(); test.BlockClear(); cout< cout<<\ getchar(); break; } } }