广州大学学生实验报告开课学院及实验室:计算机学院,电子信息楼416A室 2014年11月20日学院计算机科学与教育软件学院年级/专业/班计科122姓名庞彬学号1206100022实验课程名称操作系统成绩 实验项目名称实验三内存管理实验指导老师张艳玲 一、实验目的通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。了解linux环境下如何实现内存的分配与回收。二、实验内容(一)内存管理实验1:常用页面置换算法模拟实验设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。1、最佳淘汰算法(OPT)2、先进先出的算法(FIFO)3、最近最久未使用算法(LRU)4、最不经常使用算法(LFU)5、最近未使用算法(NUR)命中率=1-页面失效次数/页地址流长度(二)内存管理实验2:Linux下的内存分配与回收的管理在Linux环境下利用下列系统调用malloc(),free()编写一段程序实现内存分配与回收的管理。要求:返回已分配给变量的内存地址;返回释放后的内存地址;释放已分配的内存空间后,返回释放内存后未使用内存的大小。三、实验设备安装带Linux操作系统的电脑一台。四、实验程序实现及结果分析(一)内存管理实验1:常用页面置换算法模拟实验实验程序如下:#RUE1#defineFALSE0#defineINVALID-1#defineNULL 0#define total_instruction 320 /*指令流长*/#define total_vp 32 /*虚页长*/#define clear_period 50 /*清0周期*/typedefstruct /*页面结构*/{intpn,pfn,counter,time;}pl_type;pl_typepl[total_vp]; /*页面结构数组*/structpfc_struct{ /*页面控制结构*/intpn,pfn;structpfc_struct*next;};typedefstructpfc_structpfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect, a[total_instruction];intpage[total_instruction], offset[total_instruction];int initialize(int);int FIFO(int);int LRU(int);int LFU(int);int NUR(int);int OPT(int);intmain(){ints,i,j;srand(10*getpid()); /*由于每次运行时进程号不同,故可用来作为初始化随机数队列的“种子”*/s=(float)319*rand()/32767/32767/2+1; //for(i=0;i<total_instruction;i+=4)/*产生指令队列*/{if(s<0||s>319){printf("Wheni==%d,Error,s==%d\n",i,s);exit(0);}a[i]=s; /*任选一指令访问点m*/a[i+1]=a[i]+1; /*顺序执行一条指令*/a[i+2]=(float)a[i]*rand()/32767/32767/2;/*执行前地址指令m'*/a[i+3]=a[i+2]+1; /*顺序执行一条指令*/s=(float)(318-a[i+2])*rand()/32767/32767/2+a[i+2]+2;if((a[i+2]>318)||(s>319))printf("a[%d+2],anumberwhichis:%dands==%d\n",i,a[i+2],s);}for(i=0;i<total_instruction;i++)/*将指令序列变换成页地址流*/{page[i]=a[i]/10;offset[i]=a[i]%10;}for(i=4;i<=32;i++) /*用户内存工作区从4个页面到32个页面*/{printf("---%2dpageframes---\n",i);FIFO(i);LRU(i);LFU(i);NUR(i);OPT(i);}return0;}intinitialize(total_pf) /*初始化相关数据结构*/inttotal_pf; /*用户进程的内存页面数
操作系统实验三 来自淘豆网m.daumloan.com转载请标明出处.