-
大小: 5KB文件类型: .cpp金币: 1下载: 0 次发布日期: 2021-05-26
- 语言: C/C++
- 标签:
资源简介
产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。为简单起见,页面淘汰算法采用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);
- 上一篇:C语言实验报告(结构体(struct))
- 下一篇:C语言职工工作量统计系统设计
评论
共有 条评论