操作系统实验五

您所在的位置:网站首页 五种常用存储器 操作系统实验五

操作系统实验五

2024-07-09 17:18| 来源: 网络整理| 查看: 265

文章目录 操作系统实验五--存储管理一、实验目的二、实验内容三、设计原理及相关算法四、结果分析五、源代码

操作系统实验五–存储管理 一、实验目的

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

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

二、实验内容

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

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

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

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

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

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

(其中③④为选择内容)

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

三、设计原理及相关算法

1、通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:

​ ①50%的指令是顺序执行的;

​ ②25%的指令是均匀分布在前地址部分;

​ ③25%的指令是均匀分布在后地址部分。

​ 具体的实施方法是:

​ ①在[1,319]指令地址之间随机选取一起点m;

​ ②顺序执行一条指令,即执行地址为m十1的指令;

​ ③在前地址[0,m十1]中随机选取一条指令并执行,该指令的地址为 m’;

​ ④顺序执行一条指令,其地址为m‘+1;

​ ⑤在后地址[m’+2,319]中随机选取一条指令并执行;

​ ③重复上述步骤①~⑤,直到执行320次指令。

2、将指令序列变换成为页地址流

设:①页面大小为IK;

​ ②用户内存容量为4页到32页;

​ ③用户虚存容量为32K。

在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方

式为:

第0条~第9条指令为第0页(对应虚存地址为[0,9]);

第10条~第19条指令为第1页(对应虚存地址为[10,19]);

第 310条~第 319条指令为第 31页(对应虚存地址为[310,319])。

按以上方式,用户指令可组成32页。

四、结果分析

image-20211221174054132

五、源代码 //1.存储管理。 #define TRUE 1 #define FALSE 0 #define INVALID -1 #define NULL 0 #define total_instruction 320 /*指令流长*/ #define total_vp 32 /*虚页长*/ #define clear_period 50 /*清0周期*/ typedef struct /*页面结构*/ { int pn; //页号 logic number int pfn; //页面框架号 physical frame number int counter; //计数器 int time; //时间 }pl_type; pl_type pl[total_vp]; /*页面线性结构---指令序列需要使用地址*/ typedef struct pfc_struct /*页面控制结构,调度算法的控制结构*/ { int pn; int pfn; struct pfc_struct *next; }pfc_type; pfc_type pfc[total_vp], *freepf_head, *busypf_head, *busypf_tail; int diseffect, a[total_instruction]; /* a[]为指令序列*/ int page[total_instruction], offset[total_instruction];/*地址信息*/ int initialize(int); int FIFO(int); int LRU(int); int LFU(int); int NUR(int); //not use recently int OPT(int); int main( ) { int s,i,j; srand(10*getpid()); /*由于每次运行时进程号不同,故可用来作为初始化随机数队列的“种子”*/ s=(float)319*rand( )/32767/32767/2+1; /*正态分布*/ for(i=0;i318)||(s>319)) printf("a[%d+2],a number which is :%d and s==%d\n",i,a[i+2],s); } for (i=0;ipn=page[i]; pl[page[i]].pfn=freepf_head->pfn; freepf_head->next=NULL; /*使busy的尾为null*/ if(busypf_tail==NULL) { busypf_tail=busypf_head=freepf_head; } else { busypf_tail->next=freepf_head; busypf_tail=freepf_head; } freepf_head=p; } } printf("FIFO:%6.4f ",1-(float)diseffect/320); return 0; } int LRU (int total_pf) /*最近最久未使用算法least recently used*/ { int min,minj,i,j,present_time; /*minj为最小值下标*/ initialize(total_pf); present_time=0; for(i=0;inext=NULL; } pl[page[i]].pfn=freepf_head->pfn; //有空闲页面,改为有效 pl[page[i]].time=present_time; freepf_head=freepf_head->next; //减少一个free 页面 } else { pl[page[i]].time=present_time; //命中则增加该单元的访问次数 present_time++; } } printf("LRU:%6.4f ",1-(float)diseffect/320); return 0; } int NUR(int total_pf ) /*最近未使用算法Not Used recently count表示*/ { int i,j,dp,cont_flag,old_dp; pfc_type *t; initialize(total_pf); dp=0; for(i=0;ipfn; freepf_head->pn=page[i]; freepf_head=freepf_head->next; } else pl[page[i]].counter=1; if(i%clear_period==0) for(j=0;j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3