虚拟存储器实验报告_第1页
虚拟存储器实验报告_第2页
虚拟存储器实验报告_第3页
虚拟存储器实验报告_第4页
虚拟存储器实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、佛山科学技术学院实验报告课程名称操作系统原理实验实验项目虚拟存储器专业班级 姓名 学号指导教师 成绩 日期、实验目的1、了解虚拟存储器的基本原理和实现方法。2、掌握几种页面置换算法。二、实验内容设计模拟实现采用不同内外存调度算法进行页面置换,并计算缺页率。三、实验原理内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执 行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题, Window中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当 内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内

2、存容量加 以扩充的一种存储器系统。它是采用一定的方法将一定的外存容量模拟成内存, 同时对程序进出内存的方式进行管理,从而得到一个比实际内存容量大得多的内 存空间,使得程序的运行不受内存大小的限制。虚拟存储区的容量与物理主存大 小无关,而受限于计算机的地址结构和可用磁盘容量。虚拟内存的设置主要有两点,即内存大小和分页位置,内存大小就是设置 虚拟内存最小为多少和最大为多少;而分页位置则是设置虚拟内存应使用那个分 区中的硬盘空间。(一)页式虚拟存储器在页式虚拟存储系统中,将程序按统一的大小划分成多个页,同时也将虚 拟存储器划分为同样大小的页,其中虚拟空间的页称为虚页(逻辑页),而主存 空间的页称为实

3、页(物理页),并对这些页按地址从低到高的顺序编号。在编程时,程序的虚地址由高位字段的虚页号和低位字段的页内地址两部 分组成,虚页号标识页。虚地址到实地址之间的变换是由页表来实现的。页表是 一张存放在主存中的虚页号和实页号的对照表,记录着程序的虚页调入主存时被 安排在主存中的位置。若计算机采用多道程序工作方式,则可为每个用户作业建 立一个页表,硬件中设置一个页表基址寄存器,存放当前所运行程序的页表的起 始地址。页表中的每一行记录了与某个虚页对应的若干信息,包括虚页号、装入位 和实页号等。页表基址寄存器和虚页号拼接成页表索引地址。根据这个索引地址 可读到一个页表信息字,然后检测页表信息字中装入位的

4、状态。若装入位为1, 表示该页面已在主存中,将对应的实页号与虚地址中的页内地址相拼接就得到了 完整的实地址;若装入位为0,表示该页面不在主存中,于是要启动I/O系统, 把该页从辅存中调入主存后再供CPU使用,若主存已满,还需要使用替换算法 替换页。(二)页面置换算法在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生 缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存, 以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算 法。几中常见的页面置换方法如下:最佳置换算法(OPT):选择永不使用或是在最长时间内不再被访问(即 距现在最长时间才会被访问

5、)的页面淘汰出内存。先进先出置换算法(FIFO):选择最先进入内存即在内存驻留时间最久 的页面换出到外存。最近最久未使用置换算法(LRU):以“最近的过去”作为“最近的将来” 的近似,选择最近一段时间最长时间未被访问的页面淘汰出内存时钟置换算法Clock :为进入内存的页面设置一个访问位,当内存中某 页被访问,访问位置一,算法在选择一页淘汰时,只需检查访问位,若为0,则 直接换出,若为1,置该访问位为0,检测内存中的下一个页面的访问位。最少使用置换算法(LFU):在内存中为每个页面设置一个移位寄存器, 用来记录该页面被访问的频率。选择在最近时期使用最少的页面作为淘汰页随机置换算法(S):产生一

6、个取值范围在。和N-1之间的随机数,该随 机数即可表示应被淘汰出内存的页面。四、实验步骤1.定义页表的存储结构,设置作业进程所占内存空间为640K,页面大小为 1K/2K/4K/8K,随机生成100个页面,用于分配页面大小的内存总空间为32K。2-初始化进程的页面引用序列。选择下列六种置换算法中的三种编写程序,进行页面置换,并计算缺页次数和缺页率。(1)最佳置换算法(OPT)(2)先进先出置换算法(FIFO):(3)最近最久未使用算法(LRU)(4)时钟置换算法(CLOCK)(5)最少使用置换算法(LFU)(6)随机置换算法(S)使用菜单形式,选择不同的置换方法五、实验代码#include#i

7、nclude#include#define M 3内存页数#define N 20页面引用序列数#defineMyprintfprintf(+- -+n)/*表格控制*/定义页面的存储结构显示换页过程、缺页次数及缺页率。typedef struct page(int num;记录页面号int time; 记录调入内存时间int visitBit; 访问位Page;Page PM;/内存单元数int cMN;暂保存内存当前的状态int queueM=-1,-1,-1;记录调入内存的页面int front=0;队列头指针int current=0;初始化内存单元、缓冲区void Init(Page

8、 *p,int cMN)(int i,j;for(i=0;iM;i+)(pi.num=-1;pi.time=N-i-1;pi.visitBit=0;for(i=0;iM;i+)for(j=0;jN;j+)cij=-1;判断页面是否已在内存中int Equation(int fold,Page *p)(int i;for(i=0;iM;i+)(if (fold=二pi.num)return i;return -1;先进先出页面置换算法,加载的页面已在内存中,则返回0。否则置换出最先调入内存的页,并返回1int FIFO(int fold,Page *p)(int i,y;int val二Equa

9、tion(fold,p);if(val0) 请求页面不在内存(y=queuefront;最先调入内存的页出队queuefront=fold; 加入队尾front=(front+1)%M;for(i=0;iM;i+)if(y二二pi.num)(pi.num=fold; /页面置换break;return 1;return 0;/LRU置换算法取得在内存中停留最久的页面,默认状态下为最早调入的页面int GetMax(Page *p)(int i;int max=-1;int tag=0;for(i=0;imax)(max=pi.time;tag二i;return tag;/LRU核心部分int

10、LRU(int fold,Page *p)(int i;int a;a二Equation(fold,p);if (a=0)(pa.time=0;for(i=0;iM;i+)if (i!二a)pi.time+;return 0;else(a二GetMax(p);pa.num=fold;pa.time=0;for(i=0;iM;i+)if (i!二a)pi.time+;return 1;时钟置换算法取的内存中访问位为0的淘汰页面int GetClockPage(Page *p)(int i;for(i=0;iM;i+)(if(0二二pcurrent.visitBit)return current;

11、else(pcurrent.visitBit=0;current=(current+1)%M;return current;int Clock(int fold,Page *p)(int val;val二Equation(fold,p);if(val0)(val二GetClockPage(p);pval.num=fold;pval.visitBit=1;return 1;n);n);return 0;显示换页过程void Printf(int a,int q,int k)(int i,j;printf(-显示换页过程:n);Myprintf;for(j=0;jN;j+)printf(%2d |

12、,aj);Myprintf;for(i=0;iM;i+)(for(j=0;jN;j+)(if(cij=-1)printf(%2c |,32);elseprintf(%2d |,cij);Myprintf;printf(n调入队列为:”);for(i=0;ik+1;i+)printf(%3d,qi);printf(n缺页次数为:%6dn缺 页率:16.6fn,k+1,(float)(k+1)/N);printf(n); int Menu()(int i;printf(tt面置换算法printf(t1.先进先出置换算法(FIFO) n);printf(t2.最近最久未使用算法(LRU) n);pr

13、intf(t3.时钟置换算法(CLOCK) n);printf(t4.退出 n);请输入您的选择 *n);入您的选择 *n);getchar();return i;主函数void main()(int i,j,flag;int q100; 记录调入队列int k ;调入队列计数变量intaN=7,0,120,3,0,4,2,3,0,32120,1,7,0,1;while(1)flag二Menu();switch(flag)case 1: 先进先出置换算 法(FIFO)Init(P,c);k=-1;for(i=0;iN;i+)if(FIFO(ai,P)q+k=ai;记录调入页面c0i=ai;fo

14、r(j=0;jM;j+)cji=Pj.num;Printf(a,q,k);break;case 2: 最近最久未使用 算法(LRU)Init(P,c);k=-1;for(i=0;iN;i+)(if(LRU(ai,P)q+k=ai;记录调入页面for(j=0;jM;j+)cji=Pj.num;Printf(a,q,k);break;case 3: 时钟置换算法 (CLOCK)(Init(P,c);k=-1;for(i=0;iN;i+)(if(Clock(ai,P)q+k=ai;记录调入页面else 访问页已在内存,访问位置1(for(j=0;jM;j+)if(ai二二Pi.num)Pi.visi

15、tBit=1;current=(current+1)%M;for(j=0;jM;j+)cji=Pj.num;Printf(a,q,k);break;case 4:(printf(printf(欢迎使用!n);n);六、实验结果及分析先进先出置换算法7 !;1 t?I7i7i1 I 1 : 1:P):1 !恒入队列为: g丸7 17 17 12 :H : ( ! 1 ! 1 : 1 : 1吊示换页过程: f请输入您的选择最近最久未使用算法时钟置换算法4.退出操作*贝 *贝 H置:律 了去*M*JH*HWHHHWHt 幕算法FIFO :使用 #Y 法CLOCK1 .先进先出2-最近易久3 ,时钟萱换4思出、口陇村好于/村村于村村找*村*十*t j青您击 十 * *吹迎使用IPress any key to cont in

温馨提示

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

评论

0/150

提交评论