logo资料库

请求分页系统页面淘汰算法.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
实验八:请求分页系统页面淘汰算法 内容:设计页表结构,编制一个请求分页的仿真程序,通过指令访问随机的虚页。通过页面 映射,判断是否命中当前工作集中的实页。如果没有命中,则从自由队列获得一个空闲内存 页;如果工作集中的实页总数已满,则采用某一淘汰算法实施页面置换。 要求:用链表表示虚存页面表和主存页面表,通过不断地调用指令,查看是否能够命中主存 中的相关页面,并计算命中率。若出现页面置换情况,采用 FIFO 算法进行。 #include #include #include #include using namespace std; float count=0,sum=0,pre; struct node{ int num; struct node *next; }; struct node* creat(int n)//链表的录入,内存初始化 { struct node *head,*p,*q; head = (struct node*)malloc(sizeof(struct node)); head->next = NULL; q = head; for(int i = 1;i<=n;i++) { cout<<"请输入第"<num); p->next = NULL; q->next = p; q = p; } return head; } void show(struct node *head)//链表的输出 { struct node*tail; tail = head->next; while(tail!=NULL) { if(tail->next==NULL) printf("%d\n",tail->num); else printf("%d ",tail->num);
tail = tail->next; } } void search(struct node *head,int k){ struct node *p,*q; int flag=0; p=head->next; while(p){ if(p->num==k) { cout<<"命中!"<next; } if(flag==0){ cout<<"未命中!执行页面置换!"<next; while(p->next!=NULL){ p=p->next; } q=head->next; head->next=q->next; free(q); q=(struct node*)malloc(sizeof(struct node)); q->num=k; q->next=NULL; p->next=q;//接到尾部 } } int main() { int n,p,k; cout<<"内存初始化,输入内存中原有的块数:"; scanf("%d",&n); struct node *head; head = creat(n); show(head); //页表初始化 int a[10][2]; for(int i=0;i<10;i++) for(int j=0;j<2;j++) a[i][j]=i;
while(true){ cout<<"请输入你要查找的页号:"; cin>>k; sum++; search(head,k); show(head); pre=count/sum; cout<<"命中率:"<< setprecision(2)<
分享到:
收藏