操作系统实验4存储管理.

上传人:pu****.1 文档编号:408272796 上传时间:2024-02-04 格式:DOC 页数:11 大小:92.50KB
返回 下载 相关 举报
操作系统实验4存储管理._第1页
第1页 / 共11页
操作系统实验4存储管理._第2页
第2页 / 共11页
操作系统实验4存储管理._第3页
第3页 / 共11页
操作系统实验4存储管理._第4页
第4页 / 共11页
操作系统实验4存储管理._第5页
第5页 / 共11页
点击查看更多>>
资源描述

《操作系统实验4存储管理.》由会员分享,可在线阅读,更多相关《操作系统实验4存储管理.(11页珍藏版)》请在金锄头文库上搜索。

1、实验 4 存储管理1、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。2、实验指导( 1)通过随机数产生一个指令序列,共320 条指令。指令的地址按下述原则生成:50%的指令是顺序执行的;50%的指令是均匀分布在前地址部分;50%的指令是均匀分布在后地址部分。具体的实施方法是:在 0 , 319的指令之间随即选取一起点m;顺序执行一条指令,即执行地址为m+1的指令;在前地址 0 , m+1中随机选取一条指令并执行,该指令的地址为m;

2、顺序执行一条指令,其地址为m + 1 ;在后地址 m + 2 , 319 中随机选取一条指令并执行;重复上述步骤- ,直到执行320 次指令。( 2)将指令序列变换为页地址流设:页面大小为1k ;用户内存容量为4页到 32页;用户虚存容量为32k。在用户虚存中,按每k存放 10 条指令排在虚存地址,即320 条指令在虚存中的存放方式为:第 0 条 - 第 9 条指令为第0 页(对应虚存地址为0 , 9 );第 10 条- 第 19 条指令为第一页(对应虚存地址为10 , 19 );第 310 条 第 319 条指令为第31 页(对应虚地址为310 , 319 )。按以上方式,用户指令可组成32

3、 页。( 3)计算并输出下述各种算法在不同内存容量下的命中率。先进先出的算法( FIFO);最近最少使用算法( LRR);最佳淘汰算法( OPT)先淘汰最不常用的页地址;最少访问页面算法( LFR);最近最不经常使用算法( NUR)。其中和为选择内容。命中率 =1- 页面失效次数/页地址流长度在本实验中,页地址流长度为 320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。随机数产生办法, Linux 或UNIX系统提供函数 strand() 和 rand(), 分别进行初始化和产生随机数。例如:strand ();语句可初始化一个随机数;a0=10*rand()/6553

4、5*319+1;a1=10*rand()/65535*a0;语句可用来产生a0 与 a1 中的随机数。 实验内容 设计一个虚拟存储区和内存工作区, 并使用下列算法计算访问命中率.( 1)进先出的算法( FIFO)( 2)最近最少使用的算法(LRU)( 3)最佳淘汰算法 (OPT)( 4)最少访问页面算法 (LFU)( 5)最近最不经常使用算法(NUR)命中率 =(1- 页面失效次数 )/ 页地址流长度程序设计本实验的程序设计基本上按照实验内容进行。即首先用srand()和 rand() 函数定义和产生指令序列, 然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。相关定义如

5、下:1 数据结构(1) 页面类型typedef structint pn,pfn,counter,time;pl-type;其中 pn 为页号 ,pfn为面号 , counter为一个周期内访问该页面的次数, time为访问时间 .(2) 页面控制结构pfc-structint pn,pfn;struct pfc_struct *next;typedefstruct pfc_struct pfc_type;pfc_type pfc_structtotal_vp,*freepf_head,*busypf_head;pfc_type *busypf_tail;其中 pfctotal_vp定义用户进

6、程虚页控制结构,*freepf_head为空页面头的指针,*busypf_head为忙页面头的指针,*busypf_tail为忙页面尾的指针.2函数定义( 1) Void initialize( ):初始化函数 , 给每个相关的页面赋值.( 2) Void FIFO( ): 计算使用 FIFO 算法时的命中率 .( 3) Void LRU( ): 计算使用 LRU算法时的命中率 .( 4) Void OPT( ): 计算使用 OPT算法时的命中率 .( 5) Void LFU( ): 计算使用 LFU算法时的命中率 .( 6) Void NUR( ): 计算使用 NUR算法时的命中率 .3.

7、变量定义(1)int atotal_instruction:(2)int pagetotal_instruction:(3)int offsettotal_instruction:指令流数据组.每条指令所属的页号.每页装入10 条指令后取模运算页号偏移值.(4)int total_pf:(5)int disaffect:用户进程的内存页面数页面失效次数.4. 程序参考源码及结果#include #include #include #define TRUE 1#define FALSE 0#define INVALID -1#define NUL 0#define total_instructi

8、on 320 /* #define total_vp 32 /* #define clear_period 50 /*指令流长虚页长 */清零周期 */*/typedef struct/*int pn,pfn,counter,time;pl_type;pl_type pltotal_vp; /*struct pfc_struct/*int pn,pfn;页面结构页面结构数组页面控制结构*/*/*/struct pfc_struct *next;typedef struct pfc_struct pfc_type;pfc_type pfctotal_vp,*freepf_head,*busypf

9、_head,*busypf_tail; int diseffect,atotal_instruction;int pagetotal_instruction, offsettotal_instruction;void initialize();void FIFO();void LRU();void OPT();void LFU();void NUR();int main()int S,i;srand(int)getpid();S=(int)rand()%390;for(i=0;itotal_instruction;i+=1)/*产生指令队列*/ai=S;ai+1=ai+1;ai+2=(int)

10、rand()%390;ai+3=ai+2+1;/*/*/*/*任选一指令访问点顺序执行一条指令执行前地址指令m */执行后地址指令*/*/*/S=(int)rand()%390;for(i=0;itotal_instruction;i+)/*将指令序列变换成页地址流*/pagei=ai/10;offseti=ai%10;for(i=4;i=32;i+)/*用户内存工作区从4 个页面到32 个页面 */printf(%2d page frames,i);FIFO(i);LRU(i);OPT(i);LFU(i);NUR(i);printf(n);return 0;void FIFO(total_p

11、f)/*FIFO(Firstin First out)ALGORITHM*/int total_pf;/*用户进程的内存页面数*/int i;pfc_type *p, *t;initialize(total_pf);/*初始化相关页面控制用数据结构*/busypf_head=busypf_tail=NUL;/*忙页面队列头,对列尾链接*/for(i=0;inext;plbusypf_head-pn.pfn=INVALID; /*释放忙页面队列中的第一个页面*/freepf_head=busypf_head;freepf_head-next=NUL;busypf_head=p;p=freepf_head-next; /*按方式调新页面入内存页面*/freepf_head-next=NUL;freepf_head-pn=pagei;plpagei.pfn=freepf_head-pfn;i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号