基于时钟策略的页面置换

基于时钟策略的页面置换

ID:6634588

大小:109.50 KB

页数:19页

时间:2018-01-20

基于时钟策略的页面置换_第1页
基于时钟策略的页面置换_第2页
基于时钟策略的页面置换_第3页
基于时钟策略的页面置换_第4页
基于时钟策略的页面置换_第5页
资源描述:

《基于时钟策略的页面置换》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《操作系统》综合实训项目设计文档【大纲】(不用打印,提交电子稿即可!)一、基本信息项目名称:虚拟页式存储管理系统完成日期:2017/6/6二、实验内容与目的实验目的:1.加深理解页式虚拟存储管理的概念和原理。2.掌握页式存储管理中存储分配(和回收)方法;3.深入了解页式虚拟存储管理中地址重定位(即地址映射)方法。4.深入理解段页式虚拟存储管理中缺页中断处理方法。实验内容:编写程序完成页式虚拟存储管理存储分配、地址重定位和缺页中断处理。1.为一个进程的内存申请分配内存,当一个进程(完成)结束时回收内存;2.对一个给定逻辑地址,判断其

2、是否缺页,若不不缺页,则映射出其物理地址;3.若缺页则进行缺页中断处理。假定内存64K,内存块(页框)2K,进程逻辑地址空间最大128K。假设进程运行前未预先装入任何页。进程驻留集的大小固定为16K,页面淘汰使用进程驻留集内的CLOCK策略。输出每次存储分配/回收时,内存自由块分布情况、相关进程的页表信息。一、主要设计思路和流程图1.采用链表完成设计,主要设计两个链表,一个单链表,一个循环链表,其中单链表用于存放申请的页面,循环链表用来存放在驻留集中的页面2内存为64K,页面为2K,所以用了6*6的位示图表示内存情况3.申请页面时

3、输入页表信息后,将位示图中对应的位置改为14.地址置换时,将逻辑地址除以页长,用商在页表中找到对应的块号,用余数加上块号乘以页长5.页面置换时,每次换进来的页面将其访问位置为1,下一个节点的时钟位置为1,本节点的时钟位置为0.若是遇到驻留集已经有的页面,则将此页面的访问为置为1.然后页面置换时,从时钟位开始遍历,直到遇到访问位为0的页面,将其置换出来6.撤销一个页面时,将其移出链表,并将位示图中对应的位置置为0二、主要数据结构及其说明typedefstructnode{intpage;intblock;intflag;//是否在内

4、存中intstate;//是否在驻留集中intvisit;//访问位intn;//换进的标zhistructnode*next;}LNode,*LinkList;intg[5][5];//位示图;intClock(LinkListL,LNode*p,LinkListH);//时钟调度LinkListCreate()//创建页面voidadr(LinkListL,LinkListHead)//地址转换LinkListCreateSet()//创建驻留集中的页面voidRecy(LinkListL,inta[5][5])//页面的回收

5、一、程序运行时的初值和运行结果一、源程序并附上注释【可是另一个源程序文件,在此应说明该文件名】#include#include#includetypedefstructnode//定义页表{intpage;intblock;intflag;//是否在内存中intstate;//是否在驻留集中intvisit;//访问位intn;//换进的标zhistructnode*next;}LNode,*LinkList;intg[5][5];//位示图;intClock(LinkLi

6、stL,LNode*p,LinkListH);//时钟算法LinkListCreate()//建立存放页面的链表{LinkListhead;LNode*r,*s;intp,b,f,n,i=0;r=head=(LinkList)malloc(sizeof(LNode));printf("输入申请的页数:");scanf("%d",&n);printf("请分别输入页表的页号及块号(-1表示空):");printf("页号

7、块号");while(i

8、(LinkList)malloc(sizeof(LNode));s->page=p;s->block=b;s->state=0;s->flag=1;s->visit=0;s->n=0;r->next=s;r=s;i++;}if(r!=NULL)r->next=NULL;returnhead;}voidPrintfClock(LinkListL)//打印驻留集中的页面{LNode*p;p=L->next;inti=0;printf("页面:");for(i=0;i<8;i++){if(p->page!=-1){printf("%3d

9、",p->page);p=p->next;}}printf("访问位:");p=L->next;for(i=0;i<8;i++){if(p->page!=-1){printf("%3d",p->visit);p=p->next;}}printf

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。