操作系统管理---虚拟存储器-实验报告-代码

合集下载

操作系统实验报告之虚拟存储器管理页面置换算法

操作系统实验报告之虚拟存储器管理页面置换算法

操作系统实验二:虚拟存储器管理时间:2013-12-06地点:计算机实验机房2实验人:朱蓉蓉学号:E01114336题目一:采用先进先出算法实现分页管理的缺页调度。

实验代码:#include "stdio.h"#define N 20#define m 4void main(){int n;printf("请输入引用串页面个数:\n");scanf("%d",&n);int ym[N],i,j,q,mem[m]={0},table[m][N];char flag,f[N];printf("请输入页面访问序列:\n");for(i=0;i<n;i++){printf("输入页面号:");scanf("%d",&ym[i]);}for(i=0;i<n;i++) //查页表,看是否缺页{q=0;while((ym[i]!=mem[q])&&(q!=m)) q++;if(q==m) flag='*'; //缺页,则置标志flag为'*'else flag=' ';if(flag=='*'){for(j=m-1;j>0;j--) //淘汰最先调入的页面调入当前访问的mem[j]=mem[j-1];mem[0]=ym[i];}for(j=0;j<m;j++)table[j][i]=mem[j];f[i]=flag;}printf("输出结果为下表(0代表为空,*代表有缺页)\n"); for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%3d",table[i][j]);printf("\n");}for(i=0;i<n;i++)printf("%3c",f[i]);printf("\n");}实验二:采用LRU算法实现分页管理的缺页调度.实验代码:#include <stdio.h>#define P 20#define m 5void main(){int n;printf("--------------LRU算法缺页调度---------------\n"); printf("请输入引用串页面个数:\n");scanf("%d",&n);int ym[P],i,j,q,mem[m]={0},table[m][P];char flag,f[P];printf("请输入页面访问序列:\n");for(i=0;i<n;i++){printf("输入页面号:");scanf("%d",&ym[i]);}for(i=0;i<n;i++) //查页表,看是否缺页{q=0;while((ym[i]!=mem[q])&&(q!=m)) q++;if(q==m) flag='*'; //缺页,则置标志flag为'*'else flag=' ';for(j=q;j>0;j--)mem[j]=mem[j-1];mem[0]=ym[i];for(j=0;j<m;j++)table[j][i]=mem[j];f[i]=flag;}printf("输出结果为下表(0代表为空,*代表有缺页)\n"); for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%3d",table[i][j]);printf("\n");}for(i=0;i<n;i++)printf("%3c",f[i]);printf("\n");}。

操作系统实验指导-虚拟存储器管理

操作系统实验指导-虚拟存储器管理

操作系统实验指导
实验四虚拟存储器管理
实验目的:
1 理解虚拟存储器的概念
2 掌握分页式存储管理地址转换和缺页中断
实验方法:上机操作
实验环境:编程语言不限
实验内容:
1 模拟分页式存储管理中硬件的地址转换和产生缺页中断
2 用先进先出页面调度算法处理缺页中断
实验要求:
实验报告只要求提交电子文档,不需要提交纸质打印文档。

电子文档按“学号-姓名-实验编号”统一命名,例如: 095043125-黄昌军-03.doc。

其中名字后的03为实验一的编号,依次类推。

提交时间:2011年11月21日24:00之前。

防灾科技学院实验报告。

操作系统实验实验报告 虚拟内存

操作系统实验实验报告  虚拟内存

操作系统实验实验报告虚拟内存一、实验目的本次操作系统实验的目的是深入理解虚拟内存的概念、原理和实现机制,通过实际操作和观察,掌握虚拟内存的相关技术,包括页面置换算法、内存分配策略等,并分析其对系统性能的影响。

二、实验环境操作系统:Windows 10 专业版开发工具:Visual Studio 2019编程语言:C++三、实验原理1、虚拟内存的概念虚拟内存是一种计算机系统内存管理技术,它使得应用程序认为自己拥有连续的可用内存(一个连续完整的地址空间),而实际上,这些内存可能是被分散存储在物理内存和外部存储设备(如硬盘)中的。

虚拟内存通过将程序使用的内存地址映射到物理内存地址,实现了内存的按需分配和管理。

2、页面置换算法当物理内存不足时,操作系统需要选择一些页面(内存中的固定大小的块)换出到外部存储设备,以腾出空间给新的页面。

常见的页面置换算法有先进先出(FIFO)算法、最近最少使用(LRU)算法、时钟(Clock)算法等。

3、内存分配策略操作系统在分配内存时,需要考虑如何有效地利用有限的物理内存资源。

常见的内存分配策略有连续分配、分页分配和分段分配等。

四、实验内容与步骤1、实现简单的虚拟内存系统使用 C++编写一个简单的虚拟内存模拟程序,包括内存页面的管理、地址映射、页面置换等功能。

2、测试不同的页面置换算法在虚拟内存系统中,分别实现 FIFO、LRU 和 Clock 算法,并对相同的访问序列进行测试,比较它们的页面置换次数和缺页率。

3、分析内存分配策略的影响分别采用连续分配、分页分配和分段分配策略,对不同大小和类型的程序进行内存分配,观察系统的性能(如内存利用率、执行时间等)。

具体步骤如下:(1)定义内存页面的结构,包括页面号、标志位(是否在内存中、是否被修改等)等。

(2)实现地址映射函数,将虚拟地址转换为物理地址。

(3)编写页面置换算法的函数,根据不同的算法选择要置换的页面。

(4)创建测试用例,生成随机的访问序列,对不同的算法和分配策略进行测试。

实习五 虚拟存储器实验报告

实习五 虚拟存储器实验报告

实习五虚拟存储器实验报告一、实验目的本次虚拟存储器实验旨在深入理解计算机系统中虚拟存储器的工作原理和机制,通过实际操作和观察,掌握虚拟存储器的相关概念和技术,包括页式存储管理、地址转换、页面置换算法等。

同时,培养我们的实践能力和问题解决能力,为今后学习和工作中涉及到的计算机系统相关知识打下坚实的基础。

二、实验环境本次实验使用的操作系统为 Windows 10,开发工具为 Visual Studio 2019,编程语言为 C++。

三、实验原理1、虚拟存储器的概念虚拟存储器是一种利用硬盘等辅助存储器来扩充主存容量的技术。

它将程序和数据按照一定的页面大小划分,并在需要时将页面从硬盘调入主存,从而实现了使用有限的主存空间运行较大规模的程序。

2、页式存储管理页式存储管理将主存和辅存空间都划分为固定大小的页面。

程序的地址空间被分成若干页,主存也被分成相同大小的页框。

通过页表来记录页面和页框的对应关系,实现地址转换。

3、地址转换当 CPU 执行指令时,给出的是逻辑地址。

通过页表将逻辑地址转换为物理地址,才能在主存中访问相应的数据。

4、页面置换算法当主存空间不足时,需要选择一个页面换出到硬盘,以腾出空间调入新的页面。

常见的页面置换算法有先进先出(FIFO)算法、最近最少使用(LRU)算法等。

四、实验内容与步骤1、设计并实现一个简单的页式存储管理系统定义页面大小和主存、辅存的容量。

实现页表的数据结构,用于记录页面和页框的对应关系。

编写地址转换函数,将逻辑地址转换为物理地址。

2、实现页面置换算法分别实现 FIFO 和 LRU 页面置换算法。

在页面调入和调出时,根据相应的算法选择置换的页面。

3、测试和分析实验结果生成一系列的访问序列,模拟程序的运行。

统计不同页面置换算法下的缺页次数和命中率。

分析实验结果,比较不同算法的性能。

五、实验过程与结果1、页式存储管理系统的实现我们将页面大小设置为 4KB,主存容量为 16MB,辅存容量为 1GB。

实习五虚拟存储器实验报告

实习五虚拟存储器实验报告

实习五虚拟存储器实验报告一、实验目的本次虚拟存储器实验旨在深入理解虚拟存储器的工作原理,掌握页面置换算法的实现和性能评估,以及观察虚拟存储器对系统性能的影响。

二、实验环境本次实验在装有 Windows 操作系统的计算机上进行,使用了专门的虚拟存储器实验软件,包括模拟系统内存和磁盘存储的工具。

三、实验原理1、虚拟存储器的概念虚拟存储器是一种通过硬件和软件的结合,为用户提供一个比实际物理内存大得多的逻辑地址空间的技术。

它允许程序在运行时,仅将部分数据和代码装入内存,而其余部分则存储在磁盘上,当需要时再进行调入和调出。

2、页面置换算法常见的页面置换算法有先进先出(FIFO)算法、最近最少使用(LRU)算法和最佳置换(OPT)算法等。

这些算法用于决定当内存空间不足时,哪些页面应该被替换出去,以腾出空间给新的页面。

四、实验内容与步骤(一)实验内容1、实现 FIFO 页面置换算法,并对其性能进行测试。

2、实现 LRU 页面置换算法,并对其性能进行比较。

3、观察不同页面访问序列和内存大小对页面置换算法性能的影响。

(二)实验步骤1、启动虚拟存储器实验软件,设置系统内存大小和页面大小。

2、输入页面访问序列,分别运行 FIFO 和 LRU 页面置换算法。

3、记录每次页面置换的情况,包括被置换的页面、缺页次数等。

4、改变页面访问序列和内存大小,重复上述实验过程。

五、实验结果与分析(一)FIFO 页面置换算法结果当使用 FIFO 算法时,对于给定的页面访问序列,随着内存大小的增加,缺页次数逐渐减少。

但在某些情况下,由于先进先出的特性,可能会出现将即将使用的页面置换出去的情况,导致缺页率较高。

(二)LRU 页面置换算法结果LRU 算法在大多数情况下表现优于 FIFO 算法。

因为它基于页面的最近使用情况进行置换,更能保留近期可能会再次使用的页面,从而减少缺页次数。

(三)不同页面访问序列的影响不同的页面访问序列对页面置换算法的性能有显著影响。

虚拟内存管理——操作系统课程大作业虚拟内存管理报告

虚拟内存管理——操作系统课程大作业虚拟内存管理报告

2011年操作系统大作业1.虚拟内存管理实验。

在Linux环境下编写一个内核模块,分别实现如下几个函数:●static void mtest_dump_vma_list(void):依次列出当前进程所占用的虚拟内存空间各段的读、写或执行权限。

●static void mtest_find_vma(unsigned long addr):查找出虚拟地址addr所在的vma,并通过printk打印该段的起始地址、终止地址和段标志等信息。

●static void mtest_find_page(unsigned long addr):找到虚拟地址addr对应的物理地址并打印。

为了测试和使用以上函数,需要在内核模块的初始化函数中创建一个名为mtest的/proc 文件。

mtest文件绑定的写函数mtest_write允许用户程序写入一串字符串:●如果写入的字符串是listvma则调用函数mtest_dump_vma_list(void);●如果写入的字符串是findvma0xffffffff则调用函数mtest_find_vma(0xffffffff),字符串的后几个字符是传递给函数的参数;●如果写入的字符串是findpage0xffffffff则调用函数mtest_find_page(0xffffffff),同样字符串的后几个字符是参数。

实验要求:为了测试以上模块的正确性,需要编写一个小型的test应用程序,它打开/proc/mtest文件,并向其中写入字符串调用模块中的相关函数并给出相应的反馈信息。

知识储备:●虚拟存储空间管理的相关数据结构vm_area_struct和mm_struct●/proc文件系统的相关知识●内核模块的相关知识实验思路及过程:相关知识储备:1.可以使用/proc文件系统和pmap工具查看给定进程的内存空间和其中所包含的内存区域mmap描述的该地址空间中的全部内存区域。

内核使用内存描述符结构表示进程的地址空间,由结构体mm_struct结构体表示,定义在linux/sched.h中,同时linux操作系统采用虚拟内存技术,所有进程之间以虚拟方式共享内存。

虚拟存储管理实验报告

虚拟存储管理实验报告

虚拟存储管理实验报告实验概述虚拟存储管理实验是操作系统课程中的一项重要实验,旨在通过模拟内存管理中的分页机制和页面置换算法,深入理解操作系统中的虚拟内存管理技术。

本实验主要包括以下几个关键点:- 模拟内存的分页机制- 实现页面置换算法- 分析不同页面置换算法的性能指标实验环境本次实验基于C语言和Linux操作系统进行实现,使用gcc编译器进行编译和调试。

实验过程及实现细节在本次实验中,我们实现了一个简单的虚拟内存系统,主要包括以下几个模块:页面管理、页面分配、页面置换和性能分析。

下面对每个模块的实现细节进行详细描述。

页面管理页面管理模块主要负责管理虚拟内存和物理内存之间的映射关系。

我们采用了分页机制进行管理,将虚拟内存和物理内存划分为固定大小的页面。

页面的大小由实验设置为4KB。

页面分配页面分配模块负责分配物理内存空间给进程使用。

我们使用一个位图作为物理内存管理的数据结构,记录每个页面的使用情况。

在每次页面分配时,我们会查找位图中第一个空闲的页面,并将其分配给进程。

页面置换页面置换模块是虚拟存储管理中的核心算法,主要用于解决内存中页面不足时的页面置换问题。

本次实验中我们实现了两种常用的页面置换算法:FIFO(先进先出)和LRU(最近最少使用)算法。

FIFO算法是一种简单的页面置换算法,它总是选择最早被加载到物理内存的页面进行置换。

LRU算法是一种基于页面访问历史的算法,它总是选择最长时间未被访问的页面进行置换。

性能分析性能分析模块主要用于评估不同的页面置换算法的性能指标。

我们使用了缺页率(Page Fault Rate)和命中率(Hit Rate)作为评价指标。

缺页率表示物理内存中的页面不能满足进程请求的比例,命中率表示进程请求的页面已经在物理内存中的比例。

实验结果为了评估不同的页面置换算法的性能,在实验过程中,我们通过模拟进程的页面访问序列,统计页面置换次数、缺页率和命中率等指标。

以一个包含100个页面访问请求的序列为例,我们分别使用FIFO算法和LRU 算法进行页面置换。

实验六 虚拟存储管理

实验六 虚拟存储管理

实验六 虚拟存储管理一. 实验目的存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

二. 实验内容通过计算不同算法的命中率比较算法的优劣。

同时也考虑了用户内存容量对命中率的影 响。

页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。

计算并输出下属算法在不同内存容量下的命中率。

● 先进先出的算法(FIFO ); ● 最近最少使用算法(LRU );三. 系统框图页地址流长度页面失效次数命中率-=1四.页面置换算法程序代码#include<stdio.h>#include<string.h>#include<iostream.h>const int MAXSIZE=1000;//定义页访问流的最大长度const int MAXQUEUE=3;//定义可用页面数typedef struct node{ int loaded; int hit;}page;page pages[MAXQUEUE]; //定义页面表int queue[MAXSIZE];int quantity;//初始化结构函数void initial(){int i;for(i=0;i<MAXQUEUE;i++){pages[i].loaded=-1;pages[i].hit=0; }for(i=0;i<MAXSIZE;i++){queue[i]=-1;}quantity=0;}//初始化页面函数void init(){int i;for(i=0;i<MAXQUEUE;i++){pages[i].loaded=-1;pages[i].hit=0;}}//读入页面流void readData(){FILE *fp;char fname[20];int i;cout<<"请输入页面流文件名:";cin>>fname;if((fp=fopen(fname,"r"))==NULL){cout<<"错误,文件打不开,请检查文件名";}else{while(!feof(fp)){fscanf(fp,"%d ",&queue[quantity]);quantity++;}}cout<<"读入的页访问流:";for(i=0;i<quantity;i++){cout<<queue[i]<<" ";}}//FIFO调度算法void FIFO(){int i,j,p,flag;int absence=0;p=0;cout<<endl<<"----------------------------------------------------"<<endl;cout<<"先进先出调度算法(FIFO)页面调出流:";for(i=0;i<quantity;i++){ flag=0;for(j=0;j<MAXQUEUE;j++){if(pages[j].loaded==queue[i]){ flag=1; }}if(flag==0){if(absence>=MAXQUEUE){ cout<<pages[p].loaded<<" "; }pages[p].loaded=queue[i];p=(p+1)%MAXQUEUE;absence++;}}absence-=MAXQUEUE;cout<<endl<<"总缺页数:"<<absence+MAXQUEUE<<endl; }//最近最少使用调度算法(LRU)void LRU(){int absence=0;int i,j;int flag;for(i=0;i<MAXQUEUE;i++){ pages[i].loaded=queue[i]; }cout<<endl<<"----------------------------------------------------"<<endl;cout<<"最近最少使用调度算法(LRU)页面调出流:";for(i=MAXQUEUE;i<quantity;i++){ flag=-1;for(j=0;j<MAXQUEUE;j++){if(queue[i]==pages[j].loaded){ flag=j; }} //CAUTION pages[0]是队列头if(flag==-1){//缺页处理cout<<pages[0].loaded<<" ";for(j=0;j<MAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1].loaded=queue[i];absence++; }else{//页面已载入pages[quantity]=pages[flag];for(j=flag;j<MAXQUEUE-1;j++){pages[j]=pages[j+1];}pages[MAXQUEUE-1]=pages[quantity];}}cout<<endl<<"总缺页数:"<<absence+MAXQUEUE<<endl;}//显示void version(){cout<<" /*******************虚拟存储管理器的页面调度****************/"<<endl;cout<<endl;}void main(){version();initial();readData();FIFO();init();LRU();init();init();}五操作说明运行程序前先新建一个页面流文件文件(例如a.txt),在文件中存储的是一系列页号(页号用整数表示,用空格作为分隔符),用来模拟程序执行时的页访问次序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮海工学院计算机工程学院实验报告书评语:成绩:_________________ 指导教师:___________________________批阅时间:一、目的与要求(一)目的由于超大规模集成电器电路(VLSI)技术的发展,使存贮器的容量不断扩大,价格大幅度下降。

但从应用角度看,存贮器的容量和成本总会受到一定的限制。

所以,提高存贮器的使用效率始终是操作系统研究的重要课题之一,虚拟存贮器技术是用来扩大主存容量的一种重要的方法。

本实习要求学生独立地用高级语言编写几个常用的存贮器分配算法,并能设计一个存贮管理的模拟程序,能对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。

(二)要求为了比较真实地模拟存贮器管理,可预先生成一个大致符合实际情况的指令地址流。

然后,通过模拟这样一种指令序列的执行来计算和分析比较各种算法的访问命中率。

二、示例1 •题目本示例给出采用页式分配存贮器管理方案,并通过分析、计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣,另外也考虑改变页面尺寸大小和实际存贮器容量对计算结果的影响,从而可为选择好的算法、合适的页面尺寸和存贮器实际容量提供依据。

本程序是按下述原则生成指令序列的:(1)50%的指令是顺序执行的。

(2)25%的指令是均匀分布在前地址部分。

(3)25%的指令是均匀分布在后地址部分。

示例中选用最佳淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。

公式为:页面失败次数命中率=]_ ------------------页地址流长度假定虚拟存贮容量为3 2K,页面尺寸从1K到8K,实存容量从4页到32页。

2 .算法与框图(1)最佳淘汰算法(OPT)。

这是一种理想的算法,可用来作为衡量其他算法优劣的依据,在实际系统中是难以实现的,因为它必须先知道指令的全部地址流。

由于本示例中已生成了全部地址流,故可计算最佳命中率。

该算法的准则是淘汰已满页表中以后不再访问或是最迟访问的页。

这就要求将页表中的页逐个与后继指令访问的所有页比较,如后继指令不再访问此页,则把此页淘汰,不然得找出后继指令中最迟访问的页面予以淘汰。

可见最佳淘汰算法要化费较长的运算时间。

(2)最近最少使用页面淘汰算法(LRU)。

这是一种经常使用的方法,有各种不同的实施方案,这里是采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。

如果当前调用页已在页表内,则把它再次调整到链尾。

这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。

三、实验步骤与源程序#i nclude "iostream"#in elude "stdio.h"#in elude "stdlib.h"using namespace std;#define Max 30 // 某进程调入内存中的最大页面数#define Size 10 // 系统为某进程分配的最大物理块数void Init(int Block[],int m)// 初始化物理块{ int i; for(i=0;i<m;i++){Block[i]=-1;}void creat(int Page[],int n)// 输入页面串引用号{ int i; for(i=0;i<n;i++){ cin>>Page[i];}}void Init1(int Block1[],int m1){ int i; for(i=0;i<m1;i++){Block1[i]=-1;}}void creat1(int Page[],int n1){ int i;for(i=0;i<n1;i++){Page[i];}}void LRU(int Page[],int Block1[],int n1,int m1){int i,j,max_stay=0,count=0;int get=-1,flag=-1,block_num=-1;int time[Size]; for(i=0;i<m1;i++)// 初始化time[]{time[i]=0;} for(i=0;i<n1;i++){ for(j=0;j<m1;j++)// 有空闲物理块时,页面直接驻入内存空闲块{ if(Block1[j]==-1)get=j; // 物理块j 即将(/等待)驻入新页面break;}查找序号相同的页面} for(j=0;j<m1;j++) //{ if(Block1[j]==Page[i])// 物理块j 中页面与当前期望调入内存的页面相同{ time[j]=0; flag=j; break;}找到驻留内存时间最久的页面置换出} for(j=0;j<m1;j++) //if(time[j]>max_stay) max_stay=time[j];block_num=j; //block_num 标记当前序号物理块中页面驻留时间最久}if(flag==-1) // 不存在相同页面{ if(get!=-1) // 物理块即将(/ 等待)驻入新页面Block1[get]=Page[i]; // 存入页面time[get]=0; // 当前物理块重新计时for(j=0;j<=get;j++) // 已驻入页面的驻留时间加1 {time[j]++;}get=-1;else // 页面调度置换,序号block_num 的物理块是驻留时间最久的Block1[block_num]=Page[i];time[block_num]=0;for(j=0;j<Size;j++){time[j]++;}block_num=-1;max_stay=0;count++;}else // 待调入页面与序号flag 的物理块中页面相同for(j=0;j<m1;j++){time[j]++;}flag=-1;}for(j=0;j<m1;j++)// 输出物理块中的页面驻入情况{cout<<" "<<Block1[j];}cout<<endl;}if(n1>m1)count=count+m1;cout<<" 缺页中断次数为:"<<count<<endl;}void FIFO(int Page[],int Block[],int n,int m){int i,j,max_stay=0,count=0;int get=-1,flag=-1,block_num=-1;int time[Size];for(i=0;i<m;i++){ time[i]=0;}for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(Block[j]==-1)get=j; break;}for(j=0;j<m;j++){ if(Block[j]==Page[i]){flag=j;break;}}for(j=0;j<m;j++){if(time[j]>max_stay){max_stay=time[j]; block_num=j;}}if(flag==-1){ if(get!=-1){Block[get]=Page[i]; time[get]=0; for(j=0;j<=get;j++) { time[j]++;}get=-1;elseBlock[block_num]=Page[i]; time[block_num]=0; for(j=0;j<Size;j++) { time[j]++;}block_num=-1;max_stay=0; count++;}elsefor(j=0;j<m;j++){time[j]++;}flag=-1;}■for(j=0;j<m;j++){cout<<" "<<Block[j];}cout<<endl;}if(n>m)count=count+m;cout<<" 缺页中断次数为:"<<count<<endl;}void menu()cout«"----- 1.LRU 页面置换算法------- "<<e ndl;coutvv" ---- 2.FIFO 页面置换算法——"<<e ndl;coutvv" ---- 3. 退出——"<<e ndl;cout«"----- 默认:-1表示物理块空闲-------- "<<endl;cout«"请选择算法"<<endl;}void main(){ int n,m,Page[Max],Block[Size],n1,m1,Block1[Size];char tcoutvve ndlvv" 请输入系统为进程分配的物理块数m<=10:";cin>>m;m1=m;In it(Block,m);In it1(Block1,m1);coutvv"请输入总页面数nv=30:";cin>>n;n1= n;cout<<"\n 请输入页面号引用串:";creat(Page ,n);creat1(Page, n1);while(1){menu();cin> >t;switch(t){case '1':LRU(Page,Block1, n1,m1);con ti nue;case 2:FIFO(Page,Block, n,m);con ti nue;case 3:exit(0);}}}四、测试数据与实验结果-' F :\Debu g\C p p Le "图1输入要分配的物理块数、页面总数、页面序列号1您.FIFO 页面 9 ■退岀——丄.駅认—表示物理块空闲- 请选择算法3 2 1缺贝中断次数为血图2 LRU 算法的实现r :■' X —①他匸 J = I请选择聲法24 -1 -14 3-14 3 54 3 54 3 52 3 S2 152 1 S2 143 143 2 43 2 1 缺页中断尿数宜学" ~~ I I图3 FIFO 算法的实现五、结果分析与实验体会页面置换算法理解比较容易,这次根据学号要求实现的是LRU 和FIFO 算法的实现。

相关文档
最新文档