操作系统实验4-请求分页存储管理模拟实验.doc
《操作系统实验4-请求分页存储管理模拟实验.doc》由会员分享,可在线阅读,更多相关《操作系统实验4-请求分页存储管理模拟实验.doc(11页珍藏版)》请在咨信网上搜索。
实验四 请求分页存储管理模拟实验 一:实验目得 通过对页面、页表、地址转换与页面置换过程得模拟,加深对请求分页存储管理系统得原理与实现技术得理解. 二:实验内容 假设每个页面可以存放10条指令,分配给进程得存储块数为4。 用C语言或Pascal语言模拟一进程得执行过程。设该进程共有320条指令,地址空间为32个页面,运行前所有页面均没有调入内存。模拟运行时,如果所访问得指令已经在内存,则显示其物理地址,并转下一条指令;如果所访问得指令还未装入内存,则发生缺页,此时需要记录缺页产生次数,并将相应页面调入内存,如果4个内存块已满,则需要进行页面置换。最后显示其物理地址,并转下一条指令。在所有指令执行完毕后,显示进程运行过程中得缺页次数与缺页率. 页面置换算法:分别采用OPT、FIFO、LRU三种算法。 进程中得指令访问次序按如下原则生成: 50%得指令就是顺序执行得。 25%得指令就是均匀分布在低地址部分. 25%得指令就是均匀分布在高地址部分. 三:实验类别 分页存储管理 四:实验类型 模拟实验 五:主要仪器 计算机 六:结果 OPT: LRU: FIFO: 七:程序 # include〈stdio、h〉 # include〈stdlib、h〉 # include〈conio、h> # define blocknum 4//页面尺寸大小 int m; //程序计数器,用来记录按次序执行得指令对应得页号 static int num[320]; //用来存储320条指令 typedef struct BLOCK //声明一种新类型—-物理块类型 { ﻩint pagenum; //页号 ﻩint accessed; //访问量,其值表示多久未被访问 }BLOCK; BLOCK block[blocknum]; //定义一大小为8得物理块数组 void init() //程序初始化函数,对block初始化 { for(int i=0;i<blocknum;i++) ﻩ{ block[i]、pagenum=—1; block[i]、accessed=0; ﻩm=0; } } int pageExist(int curpage)//查找物理块中页面就是否存在,寻找该页面curpage就是否在内存块block中,若在,返回块号 { ﻩfor(int i=0; i<blocknum; i++) ﻩ{ ﻩﻩif(block[i]、pagenum == curpage ) ﻩﻩreturn i; //在内存块block中,返回块号 ﻩ} return -1; } int findSpace()//查找就是否有空闲物理块,寻找空闲块block,返回其块号 { for(int i=0;i<blocknum;i++) ﻩ{ if(block[i]、pagenum==-1) ﻩreturn i; //找到了空闲得block,返回块号 } ﻩreturn -1; } int findReplace()//查找应予置换得页面 { ﻩint pos = 0; ﻩfor(int i=0;i〈blocknum;i++) { if(block[i]、accessed 〉 block[pos]、accessed) ﻩpos = i; //找到应该置换页面,返回BLOCK中位置 ﻩ} return pos; } void display()//显示物理块中得页面号 { ﻩ ﻩfor(int i=0; i〈blocknum; i++) ﻩ{ ﻩ if(block[i]、pagenum != -1) ﻩ{ ﻩﻩ printf(” %02d ",block[i]、pagenum); ﻩﻩﻩprintf("%p |”,&block[i]、pagenum); ﻩﻩ} } printf("\n"); } void randam()//产生320条随机数,显示并存储到num[320] { int flag=0; printf(”请为一进程输入起始执行指令得序号(0~320):\n”); ﻩscanf("%d",&m);//用户决定得起始执行指令 printf("******进程中指令访问次序如下:(由随机数产生)*******\n"); for(int i=0;i〈320;i++) {//进程中得320条指令访问次序得生成 ﻩﻩnum[i]=m;//当前执行得指令数, ﻩﻩif(flag%2==0) ﻩ m=++m%320;//顺序执行下一条指令 ﻩﻩif(flag==1) ﻩﻩm=rand()%(m-1);//通过随机数,跳转到低地址部分[0,m—1]得一条指令处,设其序号为m1 if(flag==3) ﻩﻩm=m+1+(rand()%(320-(m+1)));//通过随机数,跳转到高地址部分[m1+2,319]得一条指令处,设其序号为m2 ﻩﻩflag=++flag%4; ﻩ printf(” %03d”,num[i]);//输出格式:3位数 ﻩﻩif((i+1)%10==0) //控制换行,每个页面可以存放10条指令,共32个页面 ﻩprintf(”\n”); } } void pagestring() //显示调用得页面序列,求出此进程按次序执行得各指令所在得页面号并显示输出 { for(int i=0;i〈320;i++) ﻩ{ printf(” %02d",num[i]/10);//输出格式:2位数 if((i+1)%10==0)//控制换行,每个页面可以存放10条指令,共32个页面 ﻩﻩ printf("\n”); } } void OPT() //最佳替换算法 { ﻩint n=0;//记录缺页次数 int exist,space,position; ﻩint curpage;//当前指令得页面号 ﻩfor(int i=0;i<320;i++) ﻩ{ ﻩm=num[i]; ﻩcurpage=m/10; ﻩﻩexist=pageExist(curpage); ﻩ if(exist==-1) ﻩﻩ{ //当前指令得页面号不在物理块中 space=findSpace(); ﻩﻩif(space != -1) ﻩﻩ { //当前存在空闲得物理块 ﻩﻩ block[space]、pagenum = curpage; //将此页面调入内存 ﻩﻩ ﻩdisplay();//显示物理块中得页面号 ﻩ ﻩn++;//缺页次数+1 ﻩ} ﻩ ﻩelse ﻩ ﻩ{ //当前不存在空闲得物理块,需要进行页面置换 for(int k=0;k<blocknum;k++) ﻩﻩﻩﻩ{ for(int j=i;j〈320;j++) ﻩ {//找到在最长(未来)时间内不再被访问得页面 ﻩﻩﻩﻩ if(block[k]、pagenum!= num[j]/10) ﻩﻩﻩ { ﻩ ﻩ block[k]、accessed = 1000; ﻩ ﻩﻩ } //将来不会被访问,设置为一个很大数 ﻩ ﻩﻩ else ﻩ ﻩﻩ{ //将来会被访问,访问量设为j ﻩﻩ ﻩblock[k]、accessed = j; ﻩ ﻩﻩ ﻩﻩbreak; ﻩ ﻩﻩﻩ } ﻩ ﻩﻩ} ﻩ } ﻩ position = findReplace();//找到被置换得页面 ,淘汰 ﻩ block[position]、pagenum = curpage;// 将新页面调入 display(); ﻩﻩ n++; //缺页次数+1 ﻩ} } ﻩ} ﻩprintf(”缺页次数:%d\n",n); printf("缺页率:%f%%\n",(n/320、0)*100); } void LRU() //最近最久未使用算法 { int n=0;//记录缺页次数 ﻩint exist,space,position ; ﻩint curpage;//当前指令得页面号 ﻩfor(int i=0;i<320;i++) ﻩ{ ﻩm=num[i]; ﻩﻩcurpage=m/10; ﻩ exist = pageExist(curpage); ﻩif(exist==-1) ﻩﻩ{ //当前指令得页面号不在物理块中 space = findSpace(); ﻩﻩ if(space != —1) ﻩ{ //当前存在空闲得物理块 ﻩ ﻩblock[space]、pagenum = curpage; //将此页面调入内存 ﻩ ﻩ display();//显示物理块中得页面号 ﻩ n++;//缺页次数+1 ﻩﻩ } else { //当前不存在空闲得物理块,需要进行页面置换 ﻩﻩ position = findReplace(); ﻩ block[position]、pagenum = curpage; ﻩﻩ display(); ﻩ n++; //缺页次数+1 ﻩ} ﻩﻩ} else ﻩﻩblock[exist]、accessed = -1;//恢复存在得并刚访问过得BLOCK中页面accessed为-1 for(int j=0; j<blocknum; j++) ﻩﻩ{//其余得accessed++ ﻩﻩblock[j]、accessed++; } ﻩ} printf("缺页次数:%d\n”,n); ﻩprintf("缺页率:%f%%\n",(n/320、0)*100); } void FIFO() { int n=0;//记录缺页次数 int exist,space,position ; ﻩ int curpage;//当前指令得页面号 int blockpointer=-1; for(int i=0;i<320;i++) ﻩ { ﻩ m=num[i]; curpage=m/10; ﻩ exist = pageExist(curpage); ﻩ if(exist==-1) { //当前指令得页面号不在物理块中 ﻩ space = findSpace(); ﻩﻩ if(space != -1) ﻩ { //当前存在空闲得物理块 ﻩﻩ blockpointer++; ﻩﻩ ﻩ block[space]、pagenum=curpage; //将此页面调入内存 ﻩ n++;//缺页次数+1 ﻩﻩ ﻩ display();//显示物理块中得页面号 ﻩ } ﻩ else ﻩ { // 没有空闲物理块,进行置换 ﻩﻩﻩﻩ position = (++blockpointer)%4; ﻩ block[position]、pagenum = curpage; //将此页面调入内存 ﻩﻩ n++; ﻩ ﻩ display(); ﻩ } ﻩ } } printf("缺页次数:%d\n",n); printf("缺页率:%f%%\n",(n/320、0)*100); } void main() { ﻩint choice; ﻩprintf("************请求分页存储管理模拟系统*************\n"); ﻩrandam(); printf("************此进程得页面调用序列如下**************\n”); pagestring(); ﻩwhile(choice != 4) { ﻩﻩprintf("********1:OPT 2:LRU 3:FIFO 4:退出*********\n”); ﻩprintf("请选择一种页面置换算法:”); ﻩ scanf("%d",&choice); ﻩ init(); ﻩswitch(choice) ﻩ { ﻩ case 1: ﻩﻩﻩprintf(”最佳置换算法OPT:\n"); ﻩprintf("页面号 物理地址 页面号 物理地址 页面号 物理地址 页面号 物理地址\n"); ﻩﻩﻩOPT(); ﻩ break; ﻩ case 2: ﻩﻩ printf("最近最久未使用置换算法LRU:\n"); ﻩ printf("页面号 物理地址 页面号 物理地址 页面号 物理地址 页面号 物理地址\n"); ﻩ LRU(); ﻩﻩﻩbreak; ﻩﻩcase 3: ﻩ printf("先进先出置换算法FIFO:\n"); ﻩprintf("页面号 物理地址 页面号 物理地址 页面号 物理地址 页面号 物理地址\n"); FIFO(); ﻩﻩbreak; ﻩ } } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 请求 分页 存储 管理 模拟
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文