操作系统实验之存储管理

article/2025/8/20 13:17:07

一、实验目的

1、了解虚拟存储技术的特点,掌握请求页式存储管理的主要页面置换算法原理。

2、掌握请求页式存储管理中页面置换算法的模拟设计方法。

3、通过随机产生页面访问序列开展有关算法的测试及性能比较。

二、实验内容

设计一个虚拟存储区和内存工作区,并使用下述方法计算访问命中率。

①先进先出的算法(FIFO);

       ②最近最少少使用算法(LRU);

③最佳淘汰算法(OPT):选淘汰最不常用的页地址;

④最少访问页面算法(LFR);

⑤最近最不经常使用算法(NUR).

(其中③④为选择内容)

       命中率= 1 - 页面失效次数 / 页地址流长度

三、设计原理(或方案)及相关算法

  1.fifo算法流程图

     

 2.Lru算法流程图

  

 3.opt算法流程图

运行结果及分析:

 

分析:通过多次运行结果发现,OPT算法淘汰页面最少,命中率始终最高,FIFO算法和LRU算法命中率差不多,但是淘汰页面大有不同。

源程序:

 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 320//随机数列的长度
#define B 4//内存的页面数
int IsInBuf(int buf[],int x)//返回某个数X有没有在缓冲区buf[]中
{int i,j=-1;for(i=0;i<B;i++){if(buf[i]==x){j=i;break;}else if(buf[i]==-1){buf[i]=x;j=i;break;}}return j;
}
int oldest(int list[],int buf[],int f[],int start)//返回最近最久未使用的页面的位置
{int i,j;for(i=0;i<B;i++){for(j=start;j<N;j++){if(buf[i]==list[j])break;}f[i]=j;}return oldest2(f);
}
int oldest2(int f[])//返回最长时间不使用的页面的位置
{int i,j=0,max=-1;for(i=0;i<B;i++){if(f[i]>max){max=f[i];j=i;}f[i]++;}return j;
}
void main()
{int list[N];int buf[B],f[B],i,j,k,max,min;int old=0;int change=0;printf("本程序假设内存为程序分配的内存块数是4!\n");srand((int)time(NULL));//生成一系列随机数并初始化环境for(i=0;i<B;i++)buf[i]=f[i]=-1;printf("产生的随机数列为:\n");for(i=0;i<N;i++){list[i]=(int)rand()%10;//产生随机数列printf("%2d",list[i]);}printf("\n");printf("\nOPT淘汰页面的序列为:\n");change=0;for(i=0;i<B;i++)buf[i]=f[i]=-1;for(i=0;i<N;i++){j=IsInBuf(buf,list[i]);if(j==-1){old=oldest(list,buf,f,i);printf("%2d",buf[old]);buf[old]=list[i];f[old]=0;change++;}else{printf("");}}printf("\nOPT算法的命中率为:%f\n",1-(float)change/320);printf("\nFIFO淘汰页面的序列为:\n");change=0;for(i=0;i<B;i++)buf[i]=-1;for(i=0;i<N;i++){j=IsInBuf(buf,list[i]);if(j==-1){if(buf[old]==-1)printf("");else printf("%2d",buf[old]);buf[old]=list[i];old=(old+1)%(int)B;change++;}elseprintf("");}printf("\nFIFO算法的命中率为:%f\n",1-(float)change/320);printf("\nLRU淘汰页面的序列为:\n");change=0;for(i=0;i<B;i++)buf[i]=f[i]=-1;for(i=0;i<N;i++){j=IsInBuf(buf,list[i]);old=oldest2(f);if(j==-1){printf("%2d",buf[old]);buf[old]=list[i];f[old]=0;change++;}else{f[j]=0;printf("");}}printf("\nLRU算法的命中率为:%f\n",1-(float)change/320);
}

 


http://chatgpt.dhexx.cn/article/KGgPPIT4.shtml

相关文章

操作系统:9、存储管理之页式存储管理

操作系统&#xff1a;9、存储管理之页式存储管理 进程的存储管理页式存储管理段式存储管理段式存储和页式存储对比段页式存储管理 进程的存储管理 进程内存空间管理主要以下方三种进行&#xff1a; 页式存储管理段式存储管理段页式存储管理 三种方法本质上都是将进程的内存空…

段式存储管理

一、基本原理 前面介绍的各种存储管理中,供用户使用的逻辑地址都是连续的&#xff0c;用户在编制大型程序时就会感到不方便。一个实际的程序往往是由若干段组成的&#xff0c;例如一个主程序段、若干子程序段、若干数据段和工作区段组成&#xff0c;如图3.22所示。 每个段都具有…

存储管理-存储管理的功能

存储管理-存储管理的功能 存储器为什么比较重要? 存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间&#xff0c;因此&#xff0c;存储管理直接影响系统性能。 存储器的组成 内存:存由顺序编址的块组成&#xff0c;每块包含…

操作系统——存储管理方式

目录 1.分区存储管理 1-1单一连续分配 1-1-1基本原理&#xff1a; 1-1-2单一连续分区存储管理的地址变换与地址保护 1-1-3管理特点 1-2固定分区分配 1-2-1基本原理 1-2-2分区划分 1-2-3主存空间的分配与回收 1-2-4地址转换与存储保护 1-2-5管理特点 1-3动态分区分配…

页式存储管理、段式存储管理、段页式存储管理

目录 页式存储管理段式存储管理分页和分段存储管理的主要区别段页式存储管理 页式存储管理 1. 基本原理 页式存储管理是把主存储器划分成大小相等的若干区域&#xff0c;每个区域称为一块&#xff0c;并对它们加以顺序编号&#xff0c;如0#块、1#块等等。与此对应&#xff0c…

Android 存储管理

文章目录 保存数据的方式应用专属文件访问内部存储的专属空间持久化数据目录操作缓存数据目录操作 访问外部存储的专属空间验证存储空间的可用性选择物理存储位置访问和存储持久性文件操作缓存文件应用专属媒体内容 共享存储空间媒体内容请求必要权限检查媒体文件的更新打开媒体…

存储器管理之分区存储管理

分区式管理是满足多道程序的最简单的存储管理方案。它的基本思想是将内存划分成若干个连续区域&#xff0c;称为分区。每个分区只能存储一个程序&#xff0c;且程序也只能在它所驻留的分区中运行。 ⑴固定分区 操作系统预先把可分配的主存空间分割成若干个连续区域&#xff0…

存储管理的功能

我是一个有强迫症的人&#xff0c;什么文件都要归类&#xff0c;电脑桌面干干净净的放着几个必要的文件夹&#xff0c;所有的文件对应有不同的文件夹存放&#xff0c;如果看到某个文件&#xff08;只要不是临时存放的&#xff09;出现在桌面上&#xff0c;就感觉非常刺眼。 我…

操作系统---存储管理

存储管理 操作系统将外存的文件调入到内存中&#xff0c;以便CPU调用&#xff0c;如果调用的内容不在内存中&#xff0c;则会产生缺页中断&#xff1b;产生缺页中断后&#xff0c;这事需要从外存调数据到内存中&#xff0c;然后CPU接着从断点继续调用内存中的数据&#xff1b;在…

操作系统的存储管理

写在前面&#xff1a;我们都希望计算机拥有一个私有的&#xff0c;无限大的&#xff0c;速度无限快并且是永久性的存储器&#xff0c;但是这样额要求必定会价格昂贵&#xff0c;经过多年的探索&#xff0c;人们提出了“分层存储管理体系”&#xff0c;在这个体系中有&#xff1…

页式存储管理

页式存储管理为操作系统中的内容&#xff0c;但是在计算机组成原理中的虚拟存储器部分也用到了这一方式。 分区式存储管理最大的缺点是碎片问题严重&#xff0c;内存利用率低。究其原因&#xff0c;主要在于连续分配的限制&#xff0c;即它要求每个作用在内存中必须占一个连续…

计算机操作系统-3-存储管理

Lecture3-存储管理 存储管理是操作系统的重要组成部分&#xff0c;负责管理计算机系统的重要资源——内存储器。内存空间一般分为两部分 系统区&#xff1a;存放操作系统内核程序和数据结构等。用户区&#xff1a;存放应用程序和数据。 存储管理包括以下功能&#xff1a; 存储…

(存储管理)存储管理的四大基本功能

存储管理的四大基本功能 1、内存分配与回收 当有作业进入系统时&#xff0c;存储管理模块就会根据当前内存情况来分配内存给它&#xff1b;当作业完成后&#xff0c;就会回收作业占用的内存&#xff0c;将这部分内存设置为可分配状态。 分配方式主要有两种&#xff1a; 静态…

实验三、存储管理

目录 实验三、存储管理实验目的实验内容实验步骤1、虚拟内存信息检测2、分配虚拟内存 实验三、存储管理 实验目的 &#xff08;1&#xff09;通过实验了解windows内存的使用&#xff0c;学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力&#x…

操作系统存储管理

目录 - 3.1 内存的基础知识 - 3.1.1 什么是内存&#xff0c;有何作用 - 3.1.2 进程运行的基本原理 - 3.2 内存管理的概念 - 3.3 覆盖与交换 - 3.4 连续分配管理方式 - 3.5 动态分区分配算法 - 3.6 基本分页存储管理的基本概念 - 3.7 基本地址变换机构 - 3.8 具有快表的…

计算机操作系统--存储管理

基本概念 1. 存储器的结构 存储器顾名思义&#xff0c;就是用来保存数据的东西。随着科技的进步&#xff0c;存储器正朝着高速度、大容量、小体积方向发展。一般情况下&#xff0c;存储器的结构有如下两类&#xff1a; 寄存器-主存-外存寄存器-缓存-主存-外存 对于存储器有…

操作系统——存储管理

文章目录 1.存储管理概述1.1存储层次结构1.2存储器管理的功能1.2.1内存分配1.2.2地址映射1.2.3存储保护1.2.4内存扩充 1.3地址重定位1.3.1名字空间、地址空间和存储空间1.3.2地址重定位1.3.2.1静态重定位1.3.2.2动态重定位 2.存储器连续分配2.1单一连续分配管理方式2.2分区存储…

拉格朗日乘数法基础

背景 线性可分 SVM 的目标函数最终转换为一个带约束条件的求极值问题&#xff0c;而拉格朗日乘子法&#xff0c;恰恰是一种多元函数在变量受到条件约束时&#xff0c;求极值的方法。正好可以用来解决 SVM 的目标函数最优化。 那么拉格朗日乘数法的理论过程如何呢&#xff1f;…

拉格朗日乘子法和KKT条件

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法&#xff0c;在有等式约束时使用拉格朗日乘子法&#xff0c;在有不等约束时使用KKT条件。前提是&#xff1a;只有当目标函数为凸函数时&#xff0c;使用这两种方法才保证求得的是…

拉格朗日乘子法几何意义

为什么出现拉格朗日乘子法&#xff1f; 最短路径问题从几何意义中获得灵感&#xff1a;从数学公式中获得灵感推广到高维空间 一个最短路径问题 假设你在M点&#xff0c;需要先到河边&#xff08;上图右侧曲线 &#xff09;再回到C点&#xff0c;如何规划路线最短&#xff1f;…