ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:93.80KB ,
资源ID:25202751      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25202751.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验三页面置换算法实验报告材料.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验三页面置换算法实验报告材料.docx

1、操作系统实验三页面置换算法实验报告材料实验三实验报告实验源码:#include stdio.h#include #include #define DataMax 100 / 常量DataMax#define BlockNum 10 / 常量BlockNumint DataShowBlockNumDataMax; / 用于存储要显示的数组bool DataShowEnableBlockNumDataMax; / 用于存储数组中的数据是否需要显示int DataDataMax; / 保存数据int BlockBlockNum; / 物理块int countBlockNum; / 计数器int N;

2、 / 页面个数int M; / 最小物理块数int ChangeTimes; / 缺页次数void DataInput(); / 输入数据的函数void DataOutput(); / 输出数据的函数void FIFO(); / FIFO 函数void Optimal(); / Optimal函数void LRU(); / LRU函数int main(int argc, char* argv) DataInput(); int menu; while(true) printf(n* 菜单选择 *n); printf(*n); printf(* 1-Optimal *n); printf(* 2

3、-FIFO *n); printf(* 3-LRU *n); printf(* 4-返回上一级 *n); printf(* 0-EXIT *n); printf(*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

4、 & menu !=4) system(cls); printf(n请输入0 - 4之间的整数!n); continue; 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(页面个数超过预定值,请重新输入:

5、); scanf(%d,&N); printf(请选择产生页面访问序列的方式(1.随机 2.输入):); scanf(%d,&choice); switch(choice) case 1: / 产生随机访问序列 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: / 输入

6、访问序列 printf(请输入页面访问序列:n); for(i = 0;i N;i+) scanf(%d,&Datai); system(cls); / 显示输入的访问序列 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;

7、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); 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; / 临时

8、变量,比较离的最远的时候用 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 ; / 初始化计数器 / 确定当前页面是否在物理块中,在继续,不在置换 / Block0 = Data0; for(i = 1;m M;i+) int flag = 1; for(n = 0; n m;n+) if(Datai = Blockn) flag = 0; if(flag =

9、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; / 块中有该数据,判断下一个数据 / 块中没有该数据,最优算法 ChangeTimes+; / 缺页次数+ for(j = 0;j M;j+) / 找到下一个值的位置 find = false; for( k = i;k M ) /获得要替换的块指针 temp = 0; f

10、or(j = 0;j M;j+) if( temp countj ) temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; / 保存要显示的数据 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 =

11、 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 = 1; for(n = 0; n m;n+) if(Datai = Blockn) flag = 0; if(flag = 0) continue; B

12、lockm = Datai; m+; / / 对有所数据操作 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; countpoint = 0; / 更新计数值 / 保存要显示的数据

13、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+) / 增加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; countpoint = 0; / 保存要显示的数据 for(j=0;jM;j+) DataShowji = Blockj; DataShowEnablei M ?(j n); DataOutput();实验结果截图:程序运行:输入相应数据:选择相应算法:最佳置换算法:先进先出算法:最近最久未使用算法:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1