操作系统实验三面置换算法实验报告

上传人:微*** 文档编号:82873336 上传时间:2022-04-30 格式:DOCX 页数:16 大小:151.01KB
收藏 版权申诉 举报 下载
操作系统实验三面置换算法实验报告_第1页
第1页 / 共16页
操作系统实验三面置换算法实验报告_第2页
第2页 / 共16页
操作系统实验三面置换算法实验报告_第3页
第3页 / 共16页
资源描述:

《操作系统实验三面置换算法实验报告》由会员分享,可在线阅读,更多相关《操作系统实验三面置换算法实验报告(16页珍藏版)》请在装配图网上搜索。

1、实验三实验报告实验源码:#include stdio.h#include #include / 常量 DataMax/ 常量 BlockNum#define DataMax 100#define BlockNum 10int DataShowBlockNumDataMax;bool DataShowEnableBlockNumDataMax;int DataDataMax;int BlockBlockNum;int countBlockNum;int N;int M;int ChangeTimes;void DataInput();void DataOutput();void FIFO();v

2、oid Optimal。;void LRU();int main(int argc, char* argv)DataInput();/用于存储要显示的数组/用于存储数组中的数据是否需要显示/保存数据/物理块/计数器/页面个数/最小物理块数/缺页次数/输入数据的函数/输出数据的函数/ FIFO 函数/ Optimal 函数/ LRU 函数菜单选择*n);*n);*n);*n);*n)*n);*n);int menu; while(true) printf(nprintf(*printf(*1-Optimalprintf(*2-FIFOprintf(*3-LRUprintf(*4-返回上一级pri

3、ntf(*0-EXITprintf(”*n);scanf(%d,&menu);switch(menu)case 1:Optima。break;case 2:FIFO(); break;case 3:LRU();break;case 0:exit(0);break;case 4:system(cls);DataInput();break;if(menu != 1 & menu != 2 & menu != 3 & menu != 0 & menu !=4) system(cls);printf(n 请输入0 - 4之间的整数!n);continue;return 0;void DataInput

4、()int i,choice;printf(请输入最小物理块数:);scanf(%d,&M);/输入最小物理块数大于数据个数while(M BlockNum);printf(物理块数超过预定值,请重新输入: scanf(%d,&M);printf(请输入页面的个数:); scanf(%d,&N);/输入页面的个数大于数据个数while(N DataMax) printf(页面个数超过预定值,请重新输入: );scanf(%d,&N);printf(请选择产生页面访问序列的方式(1.随机2.输入):);scanf(%d,&choice);switch(choice)case 1:/产生随机访问序

5、列for(i = 0;i N;i+)Datai = (int)(float) rand() / 32767) * 10);/ 随机数大小在 0 - 9 之间 system(cls);/显示随机产生的访问序列printf(n随机产生的访问序列为:);for(i = 0;i N;i+) printf(%d ,Datai);printf(n);break;case 2:/输入访问序列printf(请输入页面访问序列:n);for(i = 0;i N;i+)scanf(%d”,&Datai);system(cls);/显示输入的访问序列printf(n输入的访问序列为:力for(i = 0;i N;i

6、+) printf(%d ,Datai);printf(n);break;default:while(choice != 1 & choice != 2)printf(请输入1或2选择相应方式:); scanf(%d,&choice); break;void DataOutput()int i,j;/对所有数据操作for(i = 0;i N;i+)printf(%d ,Datai);printf(n);for(j = 0;j M;j+)/对所有数据操作for(i = 0;i N;i+)if( DataShowEnableji) printf(%d ,DataShowji);elseprintf

7、();printf(n);printf(缺页次数:dn,ChangeTimes);printf(缺页率:%d %n,ChangeTimes * 100 / N); /最佳置换算法void Optimal。int i,j,k;bool find;int point;int temp; /临时变量,比较离的最远的时候用int m = 1,n;ChangeTimes = 0;for(j = 0;j M;j+)for(i=0;i N;i+) DataShowEnableji = false; / 初始化为false,表示没有要显示的数据for(i = 0;i M;i+)counti = 0 ; / 初

8、始化计数器/确定当前页面是否在物理块中,在继续,不在置换/Block0 = Data0;for(i = 1;m M;i+)int flag = 1;for(n = 0; n m;n+)if(Datai = Blockn) flag = 0;if(flag = 0) continue;Blockm = Datai;m+;/ /对所有数据进行操作for(i=0;i N;i+)/表示块中有没有该数据find = false;for(j = 0;j M;j+)if( Blockj = Datai) find = true;if( find ) continue; 块中有该数据,判断下一个数据/块中没有

9、该数据,最优算法ChangeTimes+; / 缺页次数 +for(j = 0;j M;j+)/找到下一个值的位置find = false;for( k = i;k M )/获得要替换的块指针temp = 0;for(j = 0;j M;j+)if( temp countj)temp = countj;point = j; / 获得离的最远的指针else point = i;/替换Blockpoint = Datai;/保存要显示的数据for(j = 0;j M;j+)DataShowji = BlockjDataShowEnablei M ? (j n);DataOutput();/先进先出

10、置换算法void FIFO()int i,j;bool find;int point;int temp; 临时变量int m = 1,n;ChangeTimes = 0;for(j = 0;j M;j+) for(i = 0;i N;i+) DataShowEnableji = false; / 初始化为false,表示没有要显示的数据for(i = 0;i =3的块,替换后计数值置1,/同时其它的块计数值加1 ,成了( 1 3 2 ),见下面先进先出程序段/确定当前页面是否在物理块中,在继续,不在置换/ /Block0 = Data0;for(i = 1;m M;i+) int flag =

11、 1;for(n = 0; n m;n+) if(Datai = Blockn) flag = 0;if(flag = 0) continue;Blockm = Datai; m+;/对有所数据操作for(i = 0;i N;i+)/ 增加 countfor(j = 0;j M;j+)countj+;find = false; / 表示块中有没有该数据for(j = 0;j M )/获得要替换的块指针temp = 0;for(j = 0;j M;j+)if( temp countj)temp = countj;point = j; / 获得离的最远的指针else point = i;/替换Bl

12、ockpoint = Datai;countpoint = 0; / 更新计数值/保存要显示的数据for(j = 0;j M;j+)DataShowji = BlockjDataShowEnablei M ? (j n);DataOutput();/最近最久未使用置换算法void LRU()int i,j;bool find;int point;int temp; 临时变量int m = 1,n;ChangeTimes = 0;for(j = 0;j M;j+)for(i = 0;i N;i+) DataShowEnable皿i = false;/ 初始化为false,表示没有要显示的数据fo

13、r(i = 0;i M;i+)counti = 0 ; /初始化计数器/确定当前页面是否在物理块中,在继续,不在置换/ /Block0 = Data0;for(i = 1;m M;i+) int flag = 1;for(n = 0; n m;n+) if(Datai = Blockn) flag = 0;if(flag = 0) continue;Blockm = Datai;m+;/ /对有所数据操作for(i = 0;i N;i+)/ 增加 countfor(j = 0;j M;j+)countj+;find = false; / 表示块中有没有该数据for(j = 0;j M )/获得

14、要替换的块指针temp = 0;for(j = 0;j M;j+) if( temp countj)temp = countj;point = j; /获得离的最远的指针 else point = i;/替换Blockpoint = Datai;countpoint = 0;/保存要显示的数据for(j=0;jM;j+)DataShowji = BlockjDataShowEnablei M ?(j n); DataOutput();实验结果截图:程序运行:输入相应数据:输入3 2O 1-.旧万,2 ,诂序T 理午面向03 口蛋面目 疑负产页2 八.SH.入1 理瞿椅甘 后主后主R主后选择相应

15、算法:最佳置换算法:匕作业作系统实验行而由日15同3口530206皿爪6 yansd n乙exe01 主- 簟 页页 映联422* 菜单选择*M M 梵能 *MTtMr=M:*:M:M JK* JHt#lHKJiHtJM倒聚 府胃 M潦 X 胃 M 梵* XWM-* JfMHeMrMHM* 1 Opt inail*2-FIFO* 3-LKU* 0-EXIT*M XM XX MX MXMX MX KM HMM抒音笥捷半先进先出算法:IFO = a i 2 ft1 012菜单园等”匕1 作业噪作系统实验仃口 片 hed# iyansa nDebugsh yariso n?.exer7 B 17 7 71 B 02 2 11Optinal 2-FIFO 3-LRU 0-EXIT:作业 作示统头. fmishedshiyansan2Debugshyansan2.exeLRU =3 0 424003392027 A 1 2 fl201自页迟数: 缺页率,451-Optinal 2-FITO 3-LKU 0-EXIT颗软拼音简捷半?

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!