操作系统最佳置换算法实验报告.doc_第1页
操作系统最佳置换算法实验报告.doc_第2页
操作系统最佳置换算法实验报告.doc_第3页
操作系统最佳置换算法实验报告.doc_第4页
操作系统最佳置换算法实验报告.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告系 别班 级学 号姓 名时间地点计算机科学系课程名称操作系统实验名称最佳置换算法实 验 过 程一实验目的1.了解内存管理的功能。2.掌握进程可变内存管理的几种内存分配与回收算法。3.掌握可变分区算法中空闲分区的合并方法二实验内容 实现内存分配算法最佳置换算法。三实验程序#define MAX 100#define MIX 10#include /最佳置换算法 (前提:给出页面号引用窜)/数据结构 int recent=0;/将被装入内存的页号的标号(从0开始计) int count;/序列号总数 int load_number;/装入内存的页面数/序列号int arrayMAX;/页面struct pageTableint pageNum; int wuliNum; /.;struct pageTable page_tMIX;/页表struct pageTable*recentP;/传递内存页面数组、数组长度、命中索引号三个参数;并将该数组按最近最久排序, /前面元素为最久未使用,而末尾元素为最近未使用 void getline(struct pageTable a,int n,int index) int i,temp; /for(i=0;in;i+)/找命中页面号 temp=aindex.pageNum ; for(i=index;in-1;i+) ai.pageNum =ai+1.pageNum; an-1.pageNum=temp; /input 页面号引用窜(空格结束)void input()char ch;int i;/页面号 printf(please input an anykey not include q,and then begin.n);scanf(%c,&ch);while(ch!=q)printf(please input a count:n); scanf(%d,&count); /printf(n);printf(please input page numbers:n);for(i=0;icount;i+)scanf(%d,&arrayi); /printf(n);for(i=0;icount;i+)printf(%d ,arrayi);printf(n);printf(please input the numbers of page to load:n);scanf(%d,&load_number); / /for(i=0;istruct page_tablepageNum =arrayrecent; recent+; recentP+; nCount+; while(nCountload_number) /扫描是否有相等的页号 for(i=0;ipageNum=arrayrecent; recent+; recentP+; nCount+; /show() for(i=0;inCount;i+) printf(%d ,page_ti.pageNum); printf(n); /search函数 找一个要替换的页号void search() /给replace_p,replace_n赋值! int i,j,no=0,k=0; int flag=0,flag1=0;/有该页号,则置1 /记录与进入内存的页号相等的将被装入的页号的最大次数 int time_count1=0,time_count2=0; /先检查是否与arrayrecent命中,是则n置1 for(i=0;iload_number;i+) if(page_ti.pageNum =arrayrecent) no=1;break;/*is important* if(!no) printf(%d命中n,arrayrecent-1);/*importance recent+; getline(page_t,load_number,i); else no=0;/important /检查是否有与内存中页号相同的页号在等待,有则falg置1,无则falg置0 for(i=0;iload_number;i+) for(j=recent;jcount;j+) if(page_ti.pageNum =arrayj)flag=1;break; if(flag) flag=0;/important for(k=recent;page_ti.pageNum !=arrayk;k+) ;time_count2=k-recent+load_number-i;/?可能出错 if(time_count1time_count2) time_count1=time_count2; flag1=i;/ for(k=0;kpageNum =arrayrecent; recent+; /void main() /初始化数据input();while(recent=count) firstLoad(); search(); 四运行截图五实验总结 通过这次实验,

温馨提示

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

评论

0/150

提交评论