实验四 虚拟存储器管理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四虚拟存储器管理实验
◆实验名称:存储器管理实验
◆仪器、设备:计算机
◆参考资料:操作系统实验指导书
◆实验目的:
设计一个请求页式存储管理方案,并编写模拟程序实现。
◆实验内容:
编写程序用来模拟虚拟页式存储管理中的页面置换
要求:
1.快表页面固定为4块
2.从键盘输入N个页面号
3.输出每次物理块中的页面号和缺页次数,缺页率
◆实验原理、数据(程序)记录:
#define PAGES 4 /* 物理块数*/
#define N 16 /*最多输入的页面号*/
int pages[PAGES][2]; /*page[i][0]保存页面号,page[i][1]保存页面存留时间*/
int queue[N]; /*页面号数组*/
void initialise(void) /*------------初始化:快表和页面号数组++++++++++++++*/ {
int i;
for(i=0;i queue[i]=-1; for(i=0;i { pages[i][0]=-1; pages[i][1]=0; } } int is_page_exist(int page) /*若还有空页,返回空页序号的相反数-1若存在,返回该页的序 号若不存在,返回需要替换页面序号的相反数-1*/ { int max; int replace; int i=0; max=pages[0][1]; replace=0; for(;i pages[i][1]++; i=0; while(i { if(max { max=pages[i][1]; replace=i; } i++; } if(i==PAGES) return (0-replace-1); else if(pages[i][0]==page) return i; else return (0-i-1); } int input_pages(void) /**************输入页面号*****************/ { int i=0; int num; printf("请输入1~16个页面:【输入0 结束】\n"); scanf("%d",&num); while(num&&i { if(num>0&&num<=N) { queue[i]=num; i++; scanf("%d",&num); } else printf("输入错误数据~!\n"); } return i; } void display_pages(void) /* 输出物理块中的页面号*/ { int i=0; for(;i if (pages[i][0]!= -1) printf("%5d ",pages[i][0]); printf("\n"); } void LRU(int * lack_page) /* 核心算法,LRU算法*/ { int i=0; int temp; * lack_page=0; while(queue[i]!=-1) { temp=is_page_exist(queue[i]); if(temp>-1) /*若已经存在,修改相应序号的属性值*/ pages[temp][1]=1; else /*若不存在,修改返回序号的内容,并修改属性值*/ { (* lack_page)++; pages[0-temp-1][0]=queue[i]; pages[0-temp-1][1]=1; } printf("第%2d个页面访问时物理块中的页面号:",i+1); display_pages(); i++; } } int main(void) { int lack=0; float totle_page=0; initialise(); totle_page=(float)input_pages(); LRU(&lack); printf("缺页数为:%d\n",lack); printf("缺页率为:%0.3f\n",lack/totle_page); } ◆实验结果及分析 输入数据:1 2 4 3 1 4 5 6 输出结果: 第1个页面访问时物理块中的页面号:1 第2个页面访问时物理块中的页面号:1 2 第3个页面访问时物理块中的页面号:1 2 4 第4个页面访问时物理块中的页面号:1 2 4 3 第5个页面访问时物理块中的页面号:1 2 4 3 第6个页面访问时物理块中的页面号:1 2 4 3 第7个页面访问时物理块中的页面号:1 5 4 3 第8个页面访问时物理块中的页面号:1 5 4 6 缺页次数:6 缺页率:0.750 通过实验,实现了利用LRU算法进行虚拟存储管理的模拟。