




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息安全课程设计课程名称:网络信息安全设计题目:置换密码课程设计专业:计算机科学与技术班级:1班学生姓名:张亮学号:21006102指导老师:吕林涛 方法:在0,199指令地址间存放的实验目的加深对存储管理功能的理解;了解存储管理如何合理分配空间;掌握请求页式存储管理的页面置换算法。通过随机数产实验内容生200条的指令序列,指令的访问地址范围为8K。是08K-1之间的随机数,表示该指令要访问的地址。得到200个地址后将其转换成页号,页内地址的格式输出,设置页面大小为1K。例如:地址2055- 2,7,即2055=2x1024+7。将指令序列变换成页地址流,即页面走向。设置物理块M。计算并输出以下页面置换算法的命中率(1- 缺页率):(1)先进先出置换算法(FIFO)(2)最近最久未使用置换算法(LRU)(3)最佳置换算法(OPT)。随机数产生方法利用srand()设好随机数种子,如:srand(10*getpid(),产生不同的随机数序列;如果未设随机数种子,rand()在调用时会自动设随机数种子为1,每次产生的随机数序列相同。再利用rand()产生随机数,如:产生介于0到10 间的随机数值x=rand() mod 11;4,代码(这里贴的代码缩进不好,可读性差,需要的话来直接点击下载page.c吧)#include#include#include#defineBLOCK_MAX_SIZE 20/最大物理块大小enumFIFO=1,LRU,OPT;structnode_pageintaddress;/指令地址intpage_num;/页面号intnext_order;/下一次访问的次序*page;/物理块定义typedefstruct BlockNodeintpage_index;/page数组的下标structBlockNode * next;BlockNode;structintlength;/当前物理块长度intmiss_flag;/缺页标志,若为1,则缺页intmiss_count;/缺页次数BlockNode*front;BlockNode*rear;Block;/本程序中全局变量名均由两个单词组成,且开头字母大写intBlockSize = 5;/物理块大小intPageCount = 200;/页面总数intPageSize = 1024;/页面大小intAddrRange = 8*1024;/访问地址范围intget_num(int down,int up)/得到一个downup之间的整数intnum;charstr111;while(1)fgets(str,111*sizeof(int),stdin);num=atoi(str);/把字符串中的数字转换为整数if(num=down& numnext=NULL;voidenqueue(int page_index)/入队BlockNode*node=(BlockNode*)malloc(sizeof(BlockNode);if(!node)printf(内存分配失败!n);exit(0);node-page_index=page_index;node-next=NULL;Block.length+;Block.rear-next=node;Block.rear=node;voiddequeue()/出队BlockNode*node;node=Block.front-next;Block.front-next=node-next;if(node= Block.rear)Block.rear=Block.front;free(node);Block.length-;voidclear_block()/清空物理块while(Block.rear=Block.front-next)Block.front-next=Block.rear-next;free(Block.rear);Block.length-;Block.rear=Block.front;Block.length=0;Block.miss_count=0;voiddestroy_block()/销毁物理块while(Block.rear=Block.front)Block.front=Block.front-next;free(Block.rear);free(page);voidinit_page()/初始化页面系列inti,j;srand(time(NULL);/用当前系统时间来初始化随机种子page=(structnode_page*)malloc(PageCount*sizeof(struct node_page);for(i=0;iPageCount;i+)pagei.address=rand()%AddrRange;pagei.page_num=pagei.address/PageSize;for(i=0;iPageCount;i+)for(j=i+1;jPageCount;j+)if(pagei.page_num= pagej.page_num)pagei.next_order=j;break;/if/forif(j= PageCount)/说明pagei以后都不会再访问pagei.next_order= PageCount;/forvoidprint_page()/打印页面系列inti;printf(n);printf(页面系列为:n);for(i=0;inext)if(pagenode-page_index.page_num=pagepage_index.page_num)Block.miss_flag=0;return;if(Block.lengthnext)if(pagenode-page_index.page_num= pagepage_index.page_num)last_node-next=node-next;Block.length-;if(node= Block.rear)Block.rear=last_node;enqueue(node-page_index);free(node);Block.miss_flag=0;return;last_node=node;if(Block.lengthnext)if(pagenode-page_index.page_num= pagepage_index.page_num)node-page_index=page_index;Block.miss_flag=0;return;if(Block.lengthnext;while(node=node-next)/寻找Block中next_order值最大的节点if(pagemax_node-page_index.next_orderpage_index.next_order)max_node=node;node=Block.front;max_node_last=node;while(node=node-next)/寻找Block中next_order值最大的节点的上一个节点if(node= max_node)break;max_node_last=node;max_node_last-next= max_node-next;Block.length-;if(max_node= Block.rear)Block.rear=max_node_last;free(max_node);enqueue(page_index);Block.miss_flag=1;Block.miss_count+;voidpage_replace(int num)inti,j;BlockNode*node;charstr35=FIFO,LRU ,OPT ;printf(=%s=n,strnum-1);printf(页面号*);for(i=0;i BlockSize;i+)printf( );printf(* 是否缺页 *n);printf(n);for(i=0;inext)printf(%-2d,pagenode-page_index.page_num);for(j=Block.length;jBlockSize;j+)printf( );printf(* %s *nn,(Block.miss_flag=1 ? Yes : No);printf(nn);printf(缺页数:%d,缺页率:%.2fnn,Block.miss_count,(float)Block.miss_count/PageCount *100);printf(按回车键继续!nn);getchar();voidconfige()/程序设置intnum;while(1)printf(n*n);printf(* 程序设置 *n);printf(*n);printf(* 1,设置物理块大小(默认5) *n);printf(* 2,设置访问地址范围 (默认8K) *n);printf(* 3,设置页面大小(默认1K) *n);printf(* 4,设置页面总数(默认200) *n);printf(* 5,显示各项设置值 *n);printf(* 6,返回 *n);printf(*n);printf(请输入您的选择:);num=get_num(1,6);if(num=6)break;if(num=1)printf(请输入物理块大小(1%d):,BLOCK_MAX_SIZE);BlockSize=get_num(1,BLOCK_MAX_SIZE);printf(设置成功!nn);/ifelseif(num=2)printf(请输入访问地址范围(1%d)K: ,999);AddrRange=get_num(1,999)* 1024;printf(设置成功!nn);/elseifelseif(num=3)printf(请输入页面大小(1%d)K: ,AddrRange/1024);PageSize=get_num(1,AddrRange/1024)* 1024;printf(设置成功!nn);/elseifelseif(num=4)printf(请输入页面总数(1%d):,32767);PageCount=get_num(1,32767);printf(设置成功!nn);/elseifelseif(num=5)printf(-n);printf(*当前物理块大小:%dn,BlockSize);printf(*当前访问地址范围:%d Kn,AddrRange/1024);printf(*当前页面大小:%d Kn,PageSize/1024);printf(*当前页面总数%dn,PageCount);printf(-n);free(page);init_page();voidbegin()intnum;print_page();while(1)printf(n*n);printf(* 页面置换算法 *n);printf(*n);printf(* 1,先进先出置换算法(FIFO) *n);printf(* 2,最近最久未使用置换算法(LRU) *n);printf(* 3,最佳置换算法(OPT) *n);printf(* 4,返回 *n);printf(*n);printf(请输入您的选择:);num=get_num(1,4);if(num= 4)break;page_replace(num);clear_block();free(page);init_page();intmain()intnum;init_block();init
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上饶市中石化2025秋招网申填写模板含开放题范文
- 初中碳化物测试题及答案
- 中国移动金华市2025秋招财务审计类专业追问清单及参考回答
- 迪庆自治州中石化2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 中国移动崇左市2025秋招财务审计类专业追问清单及参考回答
- 国家能源北海市2025秋招面试专业追问及参考电气工程岗位
- 东莞市中石化2025秋招面试半结构化模拟题及答案法律与合规岗
- 中国联通海东市2025秋招面试无领导高频议题20例
- 体育技能考试试题及答案
- 文山自治州中储粮2025秋招仓储保管岗高频笔试题库含答案
- DB32-T 4446-2023 公共机构能源托管规程
- 国家职业技术技能标准 4-04-05-05 人工智能训练师 人社厅发202181号
- 2024年新人教版八年级上册物理全册教案
- 伤口造口专科护士进修汇报
- MOOC 实验室安全学-武汉理工大学 中国大学慕课答案
- 彩钢房建造合同
- 2型糖尿病低血糖护理查房课件
- 医院物业服务投标方案
- 高压燃气管道施工方案
- 国家免疫规划疫苗儿童免疫程序说明-培训课件
- GB/T 13298-1991金属显微组织检验方法
评论
0/150
提交评论