南邮操作系统实验三(存储机制的模拟实现)

来源:互联网 发布:我知谁掌管明天刘若英 编辑:程序博客网 时间:2024/05/29 14:50

本实验要求使用最佳置换算法(OPT)、先进先出置换算法(FIFO)以及最近最久未使用置换算法(LRU)来模拟实现页面的置换。

本文章实现了先进先出置换算法(FIFO)和最近最久未使用算法(LRU)。

#include<iostream>using namespace std;#define n 12#define m 3int page[n];int i,j,q,mem[m]={0},List[m][n],sum;char flag,f[n];void Init();void FIFO();void LRU();void main(){cout<<"*********** exp ***********"<<endl;cout<<"输入页面访问序列(num=12):\n";for(i=0;i<n;i++)cin>>page[i];cout<<endl;Init();FIFO();Init();LRU();}void Init(){sum=0;for(i=0;i<m;i++)mem[i]=0;for(i=0;i<m;i++)for(j=0;j<n;j++)List[i][j]=0;}void FIFO(){for(i=0;i<n;i++){q=0;while((page[i]!=mem[q])&&(q!=m))q++;if(q==m)flag='*';else flag=' ';if(flag=='*'){for(j=m-1;j>0;j--)mem[j]=mem[j-1];mem[0]=page[i];}for(j=0;j<m;j++)List[j][i]=mem[j];f[i]=flag;}cout<<"0代表空,*代表有缺页\n";cout<<endl;cout<<"*********** FIFO result ***********"<<endl;for(i=0;i<m;i++){for(j=0;j<n;j++)cout<<List[i][j]<<"  ";cout<<endl;}for(i=0;i<n;i++){if(f[i]=='*')sum++;cout<<f[i]<<"  ";}cout<<endl;cout<<"FIFO算法的缺页次数为 "<<sum<<" ,缺页率是 "<<(double)sum/12<<endl;}void LRU(){for(i=0;i<n;i++){q=0;while((page[i]!=mem[q])&&(q!=m))q++;if(q==m)flag='*';elseflag=' ';for(j=q;j>0;j--)mem[j]=mem[j-1];mem[0]=page[i];for(j=0;j<m;j++)List[j][i]=mem[j];f[i]=flag;}cout<<endl;cout<<"*************  LRU  ***********"<<endl;for(i=0;i<m;i++){for(j=0;j<n;j++)cout<<List[i][j]<<"  ";cout<<endl;}for(i=0;i<n;i++){if(f[i]=='*')sum++;cout<<f[i]<<"  ";}cout<<endl;cout<<"LRU算法的缺页次数为 "<<sum<<" ,缺页率是 "<<(double)sum/12<<endl;}


0 0
原创粉丝点击