存储管理实验报告.doc
存储器管理实验实验报告

存储器管理实验实验报告一、实验目的存储器管理是操作系统的重要组成部分,本次实验的目的在于深入理解存储器管理的基本原理和方法,通过实际操作和观察,掌握存储器分配与回收的算法,以及页面置换算法的实现和性能评估。
二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C++,开发工具为 Visual Studio 2019。
三、实验内容与步骤(一)存储器分配与回收算法实现1、首次适应算法(1)原理:从空闲分区链的首地址开始查找,找到第一个满足需求的空闲分区进行分配。
(2)实现步骤:建立空闲分区链表,每个节点包含分区的起始地址、大小和状态(已分配或空闲)。
当有分配请求时,从链表头部开始遍历,找到第一个大小满足需求的空闲分区。
将该分区进行分割,一部分分配给请求,剩余部分仍作为空闲分区留在链表中。
若找不到满足需求的空闲分区,则返回分配失败。
2、最佳适应算法(1)原理:从空闲分区链中选择与需求大小最接近的空闲分区进行分配。
(2)实现步骤:建立空闲分区链表,每个节点包含分区的起始地址、大小和状态。
当有分配请求时,遍历整个链表,计算每个空闲分区与需求大小的差值。
选择差值最小的空闲分区进行分配,若有多个差值相同且最小的分区,选择其中起始地址最小的分区。
对选中的分区进行分割和处理,与首次适应算法类似。
3、最坏适应算法(1)原理:选择空闲分区链中最大的空闲分区进行分配。
(2)实现步骤:建立空闲分区链表,每个节点包含分区的起始地址、大小和状态。
当有分配请求时,遍历链表,找到最大的空闲分区。
对该分区进行分配和处理。
(二)页面置换算法实现1、先进先出(FIFO)页面置换算法(1)原理:选择在内存中驻留时间最久的页面进行置换。
(2)实现步骤:建立页面访问序列。
为每个页面设置一个进入内存的时间戳。
当发生缺页中断时,选择时间戳最早的页面进行置换。
2、最近最久未使用(LRU)页面置换算法(1)原理:选择最近一段时间内最长时间未被访问的页面进行置换。
操作系统存储器管理实验报告.doc

一目的与要求(1) 请求页式虚存管理是常用的虚拟存储管理方案之一。
(2) 通过请求页式虚存管理中对页面置换算法的模拟,加深理解虚拟存储技术的特点。
(3) 模拟页式虚拟存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断.二实验内容或题目(1)本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。
(2)虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。
(3)要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。
(4)程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。
三实验步骤与源程序(1)实验步骤1、理解好相关实验说明。
2、根据实验说明,画出相应的程序流程图。
3、按照程序流程图,用C语言编程并实现。
(2)流程图如下:①虚页和实页结构在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。
pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。
time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。
在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。
pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。
next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。
②程序流程图如下:(3)源程序如下:#include<iostream.h>#define M 40int N;struct Pro{int num,time;};int Input(int m,Pro p[M]){cout<<"请输入实际页数:";do{cin>>m;if(m>M)cout<<"数目太多,请重试"<<endl;else break;}while(1);//cout<<"请输入各页面号:";for(int i=0;i<m;i++){cout<<"第"<<i<<"个页面号为:";cin>>p[i].num;p[i].time=0;}return m;}void print(Pro *page1)//打印当前的页面{Pro *page=new Pro[N];page=page1;for(int i=0;i<N;i++)cout<<page[i].num<<" ";cout<<endl;}int Search(int e,Pro *page1 ){Pro *page=new Pro[N];page=page1;for(int i=0;i<N;i++)if(e==page[i].num)return i; return -1;}int Max(Pro *page1){Pro *page=new Pro[N];page=page1;int e=page[0].time,i=0;while(i<N)//找出离现在时间最长的页面{if(e<page[i].time)e=page[i].time;i++;}for( i=0;i<N;i++)if(e==page[i].time)return i;return -1;}int Compfu(Pro *page1,int i,int t,Pro p[M]){Pro *page=new Pro[N];page=page1;int count=0;for(int j=i;j<M;j++){if(page[t].num==p[j].num )break;else count++;}return count;}int main(){cout<<"可用内存页面数:";cin>>N;Pro p[M];Pro *page=new Pro[N];char c;int m=0,t=0;float n=0;m=Input(m,p);do{for(int i=0;i<N;i++)//初试化页面基本情况{page[i].num=0;page[i].time=2-i;}i=0;cout<<"************************"<<endl;cout<<"*****f:FIFO页面置换*****"<<endl;cout<<"*****l:LRU页面置换******"<<endl;cout<<"*****o:OPT页面置换******"<<endl;cout<<"*****按其它键结束*******"<<endl;cout<<"************************"<<endl;cout<<"请选择操作类型(f,l,o):";cin>>c;if(c=='f')//FIFO页面置换{n=0;cout<<"页面置换情况: "<<endl;while(i<m){if(Search(p[i].num,page)>=0)i++;//找到相同的页面else{if(t==N)t=0;else{n++;//page[t].num=p[i].num;print(page);t++;}}}cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl; }if(c=='l')//LRU页面置换{ n=0;cout<<"页面置换情况: "<<endl;while(i<m){int k;k=t=Search(p[i].num,page);if(t>=0)page[t].time=0;else{n++;t=Max(page);page[t].num=p[i].num;page[t].time=0;}if(t==0){page[t+1].time++;page[t+2].time++;}if(t==1){page[2].time++;page[0].time++;}if(t==2){page[1].time++;page[0].time++;}if(k==-1) print(page); i++;}cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl;}if(c=='o')//OPT页面置换{n=0;while(i<m){if(Search(p[i].num,page)>=0)i++;else{int temp=0,cn;for(t=0;t<N;t++){if(temp<Compfu(page,i,t,p)){temp=Compfu(page,i,t,p); cn=t;}}page[cn]=p[i];n++;print(page);i++;}}cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl; }}while(c=='f'||c=='l'||c=='o');return 0;});四测试数据与实验结果五结果分析与实验体会通过上机,我了解了许多关于操作系统的专业知识。
存储管理实验报告

存储管理实验报告存储管理实验报告引言:存储管理是计算机系统中非常重要的一部分,它负责管理计算机系统中的存储资源,包括内存和外存。
合理的存储管理能够提高计算机系统的性能和效率,保证系统的稳定运行。
本次实验旨在通过实践操作,深入了解存储管理的原理和方法,并通过实验结果分析,探讨存储管理的优化策略。
一、实验目的本次实验的主要目的是通过实践操作,深入了解存储管理的原理和方法,并通过实验结果分析,探讨存储管理的优化策略。
具体目标如下:1. 了解存储管理的基本概念和原理;2. 掌握存储管理的常用方法和技术;3. 分析实验结果,探讨存储管理的优化策略。
二、实验环境本次实验使用了一台配置较高的计算机,具备较大的内存和高速的硬盘。
实验环境如下:1. 操作系统:Windows 10;2. 内存:16GB;3. 硬盘:1TB。
三、实验过程1. 内存管理实验在内存管理实验中,我们使用了一段较大的程序代码进行测试。
首先,我们通过编程语言将程序代码写入内存中,然后通过内存管理技术将程序代码加载到内存的合适位置。
在加载过程中,我们使用了分页和分段两种常用的内存管理技术,并比较了它们的性能差异。
实验结果显示,分页技术相对来说更加高效,能够更好地利用内存资源,提高系统的运行速度。
2. 外存管理实验在外存管理实验中,我们模拟了大文件的读写操作。
首先,我们将一个较大的文件写入硬盘中,然后通过外存管理技术将文件加载到内存中进行读取。
在加载过程中,我们使用了磁盘调度算法和文件系统管理技术,并比较了它们的性能差异。
实验结果显示,磁盘调度算法的选择对系统的读写速度有较大的影响,而文件系统的合理管理能够提高文件的存取效率。
四、实验结果分析通过对实验结果的分析,我们可以得出以下结论:1. 内存管理中,分页技术相对于分段技术更加高效,能够更好地利用内存资源,提高系统的运行速度;2. 外存管理中,磁盘调度算法的选择对系统的读写速度有较大的影响,合理选择磁盘调度算法能够提高系统的性能;3. 文件系统的合理管理能够提高文件的存取效率,减少文件的碎片化,提高系统的整体性能。
存储管理 实验报告

存储管理实验报告存储管理实验报告一、引言存储管理是计算机系统中一个非常重要的组成部分,它负责管理计算机内存的分配、回收和保护。
本次实验旨在通过实际操作,深入理解存储管理的原理和技术,并探索不同的存储管理策略对系统性能的影响。
二、实验目的1. 理解存储管理的基本概念和原理;2. 掌握常见的存储管理算法和策略;3. 分析不同存储管理策略对系统性能的影响。
三、实验环境本次实验使用了一台配置较低的个人电脑,操作系统为Windows 10,内存容量为4GB。
四、实验内容1. 静态分区分配算法静态分区分配算法是最简单的存储管理算法之一。
在实验中,我们使用了最先适应算法(First Fit)和最佳适应算法(Best Fit)进行静态分区分配。
通过对比两种算法的分配效果,我们发现最佳适应算法在减少内存碎片方面表现更好。
2. 动态分区分配算法动态分区分配算法是一种更加灵活的存储管理策略。
在实验中,我们实现了首次适应算法(First Fit)和最佳适应算法(Best Fit)两种动态分区分配算法。
通过观察不同算法的分配效果,我们发现首次适应算法在处理大量小内存块时效率较高,而最佳适应算法在处理大内存块时表现更好。
3. 页面置换算法页面置换算法是虚拟内存管理中的重要组成部分。
在实验中,我们实现了最近最少使用(LRU)算法和先进先出(FIFO)算法两种页面置换算法。
通过模拟内存不足的情况,我们观察了不同算法对系统性能的影响。
结果显示,LRU算法在减少页面置换次数方面比FIFO算法更为优秀。
五、实验结果与分析通过本次实验,我们对不同的存储管理算法和策略进行了实际操作,并观察了它们对系统性能的影响。
实验结果显示,最佳适应算法在静态分区分配中表现更好,而首次适应算法在动态分区分配中效率更高。
在页面置换算法中,LRU 算法在减少页面置换次数方面更为出色。
六、实验总结本次实验通过实际操作,深入理解了存储管理的原理和技术,并探索了不同的存储管理策略对系统性能的影响。
(完整word版)Linux操作系统实验报告 存储管理试验

(3)实现FIFO页面淘汰算法。
(4)实现页故障率反馈模型。
2、实验目的与要求
①(1)用C语言是实现模拟Linux系统中连续内存分配用到的伙伴对算法。
(2)通过链表的形式输出在内存申请和释放过程中内存状态的对比图。
②(1)了解工作集模型的原理及其特点。
printmem();
}
int power(int x,int y){
int k=0,tmp=1;
for(;k<y;k++){
tmp=tmp*x;
}
return tmp;
}
int root(int x,int y){
int result=y,count=0;
while(result!=1){
result=result/x;
merge(tempId,merger);
}else {
return 0;
}
return 1;
}else {
second=second->next;
isFirst++;
}
}
return 1;
}
int freeb(int size){
block * first=(struct block *)malloc(sizeof(struct block));
if((second->start==nextStart || second->start==preStart) && second->loc==0){
merger->size=(first->size)+(second->size);
存储管理调度_实验报告

一、实验目的1. 理解操作系统存储管理的基本概念和原理。
2. 掌握分页式存储管理中地址转换和缺页中断的产生。
3. 学习并分析常见的页面调度算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等。
4. 比较不同页面调度算法的性能,提高对虚拟存储技术特点的理解。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 实验工具:gdb、gcc三、实验内容1. 模拟分页式存储管理中硬件的地址转换和产生缺页中断。
2. 使用先进先出(FIFO)页面调度算法处理缺页中断。
3. 使用最近最少使用(LRU)页面调度算法处理缺页中断。
4. 比较FIFO和LRU算法的性能。
四、实验步骤1. 定义虚拟页和实页的结构体,包括页号、物理页号、时间戳等。
2. 模拟地址转换过程,当访问的虚拟页不在内存时,产生缺页中断。
3. 使用FIFO算法处理缺页中断,将最早的页面替换出内存。
4. 使用LRU算法处理缺页中断,将最近最少使用的页面替换出内存。
5. 比较FIFO和LRU算法的性能,包括页面命中率、页面置换次数等。
五、实验结果与分析1. 实验结果(1)地址转换过程在模拟实验中,我们使用了一个简单的地址转换过程。
当访问一个虚拟页时,系统会检查该页是否在内存中。
如果在内存中,则直接返回对应的物理地址;如果不在内存中,则产生缺页中断。
(2)FIFO算法在FIFO算法中,当产生缺页中断时,系统会将最早进入内存的页面替换出内存。
实验结果显示,FIFO算法在页面访问序列较长时,页面命中率较低。
(3)LRU算法在LRU算法中,当产生缺页中断时,系统会将最近最少使用的页面替换出内存。
实验结果显示,LRU算法在页面访问序列较长时,页面命中率较高。
2. 实验分析(1)FIFO算法的缺点FIFO算法简单,但性能较差。
当页面访问序列较长时,FIFO算法可能会频繁地发生页面置换,导致页面命中率较低。
(2)LRU算法的优点LRU算法可以较好地适应页面访问模式,提高页面命中率。
存储管理实训报告

一、实训目的1. 通过本次实训,加深对存储管理方案的理解,掌握虚拟存储器的管理方式,熟悉虚存管理的各种页面淘汰算法。
2. 通过编写和调试地址转换过程的模拟程序,加强对地址转换过程的理解。
3. 培养编程能力和问题解决能力,提高实际操作水平。
二、实训环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 20194. 硬件配置:CPU:Intel Core i5,内存:8GB,硬盘:256GB SSD三、实训原理1. 虚拟存储器:虚拟存储器是一种将内存与外存相结合的存储管理技术,可以扩大程序可访问的存储空间。
2. 页面置换算法:页面置换算法是虚拟存储器中的一种内存管理技术,用于确定在内存中保留哪些页面,淘汰哪些页面。
3. 地址转换过程:地址转换过程是将逻辑地址转换为物理地址的过程。
四、实训内容1. 设计一个请求页式存储管理方案,并编写模拟程序实现。
2. 产生一个需要访问的指令地址流,其中50%的指令是顺序执行的,25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。
3. 指定内存页表的最大长度,并对页表进行初始化。
4. 每访问一个地址时,计算该地址所在的页的页号,然后查页表,判断该页是否在主存。
5. 如果该页已在主存,则打印页表情况;如果该页不在主存,则采用FIFO页面淘汰算法淘汰一页,并将该页在页表中抹去。
6. 编写代码实现上述功能,并进行测试。
五、实训过程1. 确定虚拟存储器的大小、内存大小、页面大小和页面置换算法。
2. 设计数据结构存储页面信息,包括页号、是否在内存中、是否被修改等。
3. 编写函数实现地址转换过程,包括计算页号、判断页是否在内存中等。
4. 编写FIFO页面淘汰算法,淘汰不在内存中的页面。
5. 编写测试程序,生成指令地址流,并调用相关函数进行测试。
六、实训结果1. 成功实现了请求页式存储管理方案,并编写了相应的模拟程序。
操作系统:实验4 存储管理(实验报告)

欢迎共阅班级: 姓名: 学号:5) 当前计算机的实际内存大小为:______________________________________ 分析程序4-1,请回答问题:1) 理论上每个Windows 应用程序可以独占的最大存储空间是:_____________2) 程序中,用于检查系统中虚拟内存特性的API 函数是:__________________ 4.2 Windows 虚拟内存本节实验的目的是:实验4存储管理1) 通过实验了解Windows内存的使用,学习如何在应用程序中管理内存,体会Windows应用程序内存的简单性和自我防护能力。
2) 学习检查虚拟内存空间或对其进行操作;3) 了解Windows的内存结构和虚拟内存的管理,进而了解进程堆和Windows为使用内存而提供的一些扩展功能。
1. 工具/准备工作在开始本节实验之前,请回顾教材的相关内容。
需要准备一台运行Windows系统的计算机,且安装了C/C++编译器。
2. 实验内容与步骤将系统当前的保留区(reserved)虚拟地址空间填入表4.3中。
表4.3 实验记录2) 根据运行结果,请简单描述程序运行的流程:_________________________________________________________________________________________________________________________________________的程序段,该段程序试图通过VirtualAlloc()函数,然后利用物理备用内存将整个块分配到虚拟内存空间的任何位置。
这种技术只对拥有1GB以上的RAM且都有换页文件的计算机可行。
从运行结果看,这种技术成功了吗?_________________。
3) 程序中说明为___________________________________________________的程序段,该段程序利用VirtualAlloc()函数,如果函数成功,则获得大块内存,但不将任何物理内存调配到此块中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储管理实验报告
北方工业大学
《计算机操作系统》实验报告
实验名称存储管理实验序号 2
实验日期2013.11.27实验人
一、实验目的和要求
1.请求页式存储管理是一种常用的虚拟存储管理技术。
本实验目的
是通过请求页式存储管理中页面置换算法的模拟设计,了解虚拟存储
技术的特点,掌握请求页式存储管理的页面置换算法。
二、相关背景知识
1.随机数产生办法
关于随机数产生办法, Linux 或 UNIX 系统提供函数 srand() 和 rand() ,分
别进行初始化和产生随机数。
三、实验内容
(1).通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:
1.50% 的指令是顺序执行的;
2.25% 的指令是均匀分布在前地址部分;
3.25% 的指令是均匀分布在后地址部
分;具体的实施方法是:
1.在[0, 319]的指令地址之间随机选取一起点 m;
2.顺序执行一条指令,即执行地址为 m+1 的指令;
3.在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;
4.顺序执行一条指令,其地址为 m’+1;
5.在后地址 [m ’+2, 319]中随机选取一条指令并执行;
6.重复上述步骤 1~5,直到执行 320 次指令。
(2)将指令序列变换成页地址流,设
1.页面大小为 1K ;
2.用户内存容量为 4 页到 32 页;
3.用户虚存容量为 32K 。
在用户虚存中,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存
中存放的方式为:
第 0 条至第 9 条指令为第 0 页(对应虚存地址为 [0, 9]);
第 10 条至第 19 条指令为第 1 页(对应虚存地址为 [10, 19]);
第 310 条至第 319 条指令为第 31 页(对应虚存地址为 [310,319]);
按以上方式,用户指令可以组成 32 页。
(3)计算并输出下述各种算法在不同内存容量下的命中率。
1.先进先出页面淘汰算法( FIFO )
2.最近最久未使用页面淘汰法( LRU )
命中率 =1 - 页面失效次数 /页地址流长度
在本实验中,页地址流长度为 320,页面失效次数为每次访问相应指令时,
该指令对应的页不在内存的次数。
四、关键数据结构与函数的说明
ty :页地址流长度。
int d[320] :装指令序列。
int page[320] :装页地址流。
int p[32] :内存页面。
que:记录缺页次数。
time[32] :记录页面距离上次被访问的时间。
creat() :对内存页面进行初始化
FIFO() :先进先出页面淘汰算法。
LRU() :最近最久未使用算法。
srand(10*getpid()): 每次运行时进程号不同,用来作为初始化随机数队列的" 种子"。
rand() :可以生成0~RAND_MAX之间的一个随机
数。
五、编译与执行过程截图
六、实验结果与分析
运行结果: FIFO 算法与 LRU 算法的命中率相差不大,一般在0.03 以内,随着内存页面的增加,命中率上升, 4 页时一般在50%左右, 32 页一般在90% 左右。
分析: FIFO 算法是以先进内存先替换而LRU 是以最久没访问先替换,当内存中页面数量增加时,访问的内容在内存的概率会越高。
七、调试时遇到的问题及解决方法(提供BUG 截屏)
解决: linux 不支持头文件 PROCESS.H ,但是使用 srand() 需要
用该头文件,于是用支持srand() 的头文件 unistd.h 替代
PROCESS.H 。
解决后试调:
八、调试后的程序源代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#define NULL 10000
const int ty=320;
int d[320]; //指令序列
int page[320]; // 页地址流
int p[32]; // 内存页面
int que; //缺页次数
int time[32]; //记录页面距离上次被访问的时间
//******* 初始化内存页面
void creat(int leng) //leng 为内存页面数量{
int i;
que=0;
for(i=0;i<leng;i++)
{
//让内存页面置空
p[i]=NULL;
time[i]=0;
}
}
//****** 先进先出算法
//leng 为内存页面数量
void FIFO(int leng)
{
int i,j,k;
int n; //n 为要被替换的页面号,按 0,1,2...leng,0,1,2...leng循环变化creat(leng); //初始化内存页面
n=0;
for(i=0;i<ty;i++)
{
k=0;
for(j=0;j<leng;j++)
{
if(p[j]==NULL)
break;
else if(p[j]==page[i])// 在内存中有该页
{
k=1;
break;
}
}
if(k==0)
{
北方工业大学
que++;
p[n]=page[i];
n++;
}
if(n==leng)
n=0;
}
printf("%-7.3f\t",1-(float)que/ty);
}
//******** 最近最久未使用算法
//leng 为内存页面数量void LRU(int leng)
{
int i,j,k;
//存 time 的最大值
int tmax;
int t; //t 为要被访问的页面号
creat(leng); //初始化内存页面
for(i=0;i<ty;i++)
{
k=0;
for(j=0;j<leng;j++)
{
if(p[j]==NULL)
break;
else if(p[j]==page[i])// 在内存中有该页
{
k=1;
t=j;
break;
}
}
if(k==0)
{
que++;
tmax=time[0];
t=0;
for(j=0;j<leng;j++)//查找最久没访问的页面号赋予t
{
if(tmax<time[j])
{
tmax=time[j];
t=j;
}
}
p[t]=page[i];
}
for(j=0;j<leng;j++)//将每个页面 time 自增
time[j]++;
time[t]=0; //将这次被访问的页面time 清零
}
printf(" %-7.3f\t",1-(float)que/ty);
}
void main( )
{
int m,i;
srand(10*getpid()); // 用来作为初始化随机数队列的
" 种子"
m=(int)((float)(ty-1)*(rand()/(RAND_MAX+1.0))); // 选 0-319 中一数
for (i=0; i<ty; i+=4) //产生指令队列
{
d[i]=m; // 任选一指令访问点m
d[i+1]=d[i]+1;//顺序执行一条指令m+1
d[i+2]=(int)((float)d[i]*(rand()/(RAND_MAX+1.0)));/* 执行前地址指
令 m',即选择 (0,m+1)之间的数 */ d[i+3]=d[i+2]+1;//顺序执行一条指令
m= (int)((float)((ty-1)-d[i+2])*(rand()/(RAND_MAX+1.0))) + d[i+2];
//选(m'+2,319) 之间数}
for(i=0;i<ty;i++) //将指令序列变换成页地址流
page[i]=d[i]/10;
printf("PAGE\tFIFO\t LRU\t\n");
for(i=4;i<=32;i++)//内存从 4 页到 32 页
{
printf(" %2d\t",i);
FIFO(i);
LRU(i);
printf("\n");
}
}
九、实验体会
这一次实验是对请求页式存储管理的一次模拟实验,设计和测试了 FIFO 和 LRU 这两种请求页式存储管理的页面置换算法的命中率。
通过这次实验我了解虚拟存储技术的特点,并掌握了这两种请求页式存储管理的页面置换算法,知道它们的操作是如何进行的,同时实验中查找资料时,也了解了其他的一些
替换算法,还知道了如何使用 srand()、rand ()如何使用,如何生成随机
数。
对于存储管理的课程内容更为熟练和明白。