版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三实验报告实验源码:#include stdio.h#include #include #define DataMax 100 /常量 DataMax#define BlockNum 10 /常量 BlockNumint DataDataMax;/int BlockBlockNum;/int countBlockNum;/int N;/int M;/int ChangeTimes;/void DataInput();/void DataOutput();/void FIFO();/ FIFOvoid Optimal();/ Optimalvoid LRU();/ LRUint DataSh
2、owBlockNumDataMax; / bool DataShowEnableBlockNumDataMax; /用于存储要显示的数组 用于存储数组中的数据是否需要显示 保存数据物理块 计数器 页面个数 最小物理块数 缺页次数输入数据的函数 输出数据的函数函数 函数函数int main(int argc, char* argv) DataInput();int menu;while(true)菜单选择 *n);printf(n*printf(*1-Optimal*n);printf(*2-FIFO*n);printf(*3-LRU*n);printf(*4-返回上一级*n);printf(*
3、0-EXIT*n);printf(*n);printf(H*n);scanf(%d,&menu);switch(menu)case 1: Optimal(); 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;
4、return 0;void DataInput()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. 输入 ) : ); scan
5、f(%d,&choice);switch(choice)case 1:/ 产生随机访问序列for(i = 0;i N;i+)随机数大小在 0 -Datai = (int)(float) rand() / 32767) * 10); /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(cl
6、s);/ 显示输入的访问序列printf(n 输入的访问序列为: );for(i = 0;i N;i+)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
7、N;i+) if( DataShowEnableji ) printf(%d ,DataShowji);else printf( ); 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+),表示没有
8、要显示的数DataShowEnableji = false; /初始化为 false据for(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+)/ 表示块中有没有该数据find = false;for(j = 0;
9、j M;j+)if( Blockj = Datai )find = true;if( find ) continue; /块中有该数据,判断下一个数据/ 块中没有该数据,最优算法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;/ 保存
10、要显示的数据for(j = 0;j M;j+) DataShowji = Blockj;设置显示DataShowEnablei M ? (j n);DataOutput();/ 先进先出置换算法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,II
11、 同时其它的块计数值加 1 ,成了( 1 3 2 ),见下面先进先出程序段 II 确定当前页面是否在物理块中,在继续,不在置换IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIBlock0 = 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+;IIIIIIIIIIIIIIIIIIIII
12、IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII/ 对有所数据操作for(i = 0;i N;i+) / 增加 count for(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;/ 替换Blockpoint = Datai;count
13、point = 0; /更新计数值/ 保存要显示的数据for(j = 0;j M;j+)DataShowji = Blockj;DataShowEnablei 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+)DataShowEnableji = false; / 初始化为 false 据for(i = 0;i M;i+)counti = 0
14、 ; /初始化计数器/ 确定当前页面是否在物理块中,在继续,不在置换 /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 )/ 获得要替换的块指针temp
15、 = 0;for(j = 0;j M;j+)if( temp countj )temp = countj;point = j; /获得离的最远的指针else point = i;/ 替换Blockpoi nt = Datai; coun tpo int = 0;/保存要显示的数据for(j=0;jM;j+)设置显示数DataShowji = BlockjDataShowEnablei M ?(j n ”); DataOutput();实验结果截图:程序运行:输入相应数据:E: 作业濮作系统实验finihEdhiydn5n2DbugshiyBnn2Exe皱3X 20冋序列的方式随机2 输入:2微
16、软拼音简捷半:选择相应算法:E: 作业礁作系n i sh eds h iya nsa n2 De bu gs h iy a nsa n2.exe輸入的访间序列为*菜单选择*1- Opt inl*2- F1F0*SLRU*0-EXIT*微软拼音简捷半:最佳置换算法:E 作业噪作系统实验fi n i sh eds hiya n sa n2Debugshiya nsa n2 .exeOpt iiul-7 0 120 3 04 23 0 3 2 1017012222 270040 00133311猷页鱼数:&蛀页率:30 X*菜单选择 *3 2 32272222iRiW1-Optimal*2-F1F0M-3-LRU0-EXIT微软拼音简捷半:先进先出算法:E: 作业礙作系n i sh eds h iya n sa n2 De b u gs h iya nsa n2 .exeFIFO -7 0 12 020峡页迄数:: 缺页率:60323112042302 44403 3Z220003312 0 0 01 1XKiHllimWIMiXXXKXlit菜笙选择1- Opt imal2- FIFO3- LRU0-EXIT趺眸養科 ItFXXKKXiMiM 稠法耳诞耳JtKKKiMiM弭彌涟耳MSMKKKKM:屛弭豪賛注MiN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度堤坝施工工程承包协议版B版
- 2024年新型生态园林景观建设项目承包合同版B版
- 社区运动场建设协议
- 2024年新版汽车抵押租借协议样式版B版
- 学前班住校生营养配餐计划
- 2024版环保垃圾处理服务协议:劳务输出与运营管理细节2篇
- 设备租赁合同:演出音响设备租赁
- 货车租赁解除协议样本
- 城市公交站牌广告牌租赁合同
- 摄影展摄影师合作合同
- 阻塞性睡眠呼吸暂停低通气综合症手术麻醉课件
- 新华都集团二十周年庆典宣传片脚本创意方案课件
- 云边有个小卖部读书分享读后感好书分享PPT课件模板(含具体内容)
- 心血管内科介入耗材遴选目录
- 秦皇岛市海港区2023年五年级数学第二学期期末联考试题含解析
- “家校合育”手册
- 国家开放大学《现代教育管理专题》平时作业1-5参考答案
- 中西文化比较与跨文化交际知到章节答案智慧树2023年南开大学
- 音乐鉴赏知到章节答案智慧树2023年山东科技大学
- 组团儿上春晚《八戒返乡》小品台词
- 美国军事思想的基本观念美国军事思想的主要内容美国军事思
评论
0/150
提交评论