存储管理程序设计.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
"存储管理程序设计" 在存储管理程序设计中,虚拟存储管理是操作系统中的一种重要机制。其主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 实验要求: 1. 通过随机数产生一个指令序列,共 320 条指令。其地址按下述原则生成: * 50% 的指令是顺序执行的; * 25% 的指令是均匀分布在前地址部分; * 25% 的指令是均匀分布在后地址部分。 2. 指令序列变换成页地址流设: * 页面大小为 1K; * 用户内存容量为 4 页到 32 页; * 用户虚存容量为 32K。在用户虚存中,按每 K 存放 10 条指令排列虚存地址。 3. 计算并输出下述各种算法在不同内存容量下的命中率: * FIFO 先进先出的算法 * LRR 最近最少使用算法 * OPT 最佳淘汰算法 * LFR 最少访问页面算法 * NUR 最近最不经常使用算法 流程图: 1. 页面调度模拟算法流程示例图: * 开始产生指令地址 * 初始化页表 * 计算该地址所在的页号 * 在主存有页表有无空白条款? * 无访问完结束 相关定义: * int pn, pfn, counter, time; * typedef struct pfc_struct pfc_type; * pfc_type pfc_struct[total_vp], *freepf_head, *busypf_head; * pfc_type *busypf_tail; 其中 pfc[total_vp] 定义用户进程虚页控制结构, *freepf_head为空页面头的指针,*busypf_head为忙页面头的指针,*busypf_tail为忙页面尾的指针。 函数定义: 1. Void initialize( ): 初始化函数,给每个相关的页面赋值。 2. Void FIFO( ): 计算使用 FIFO 算法时的命中率。 3. Void LRU( ): 计算使用 LRU 算法时的命中率。 4. Void OPT( ): 计算使用 OPT 算法时的命中率。 5. Void LFU( ): 计算使用 LFU 算法时的命中率。 6. Void NUR( ): 计算使用 NUR 算法时的命中率。 变量定义: 1. int a[total_instruction]: 指令流数据组。 2. int page[total_instruction]: 每条指令所属的页号。 3. int offset[total_instruction]: 每页装入 10 条指令后取模运算页号偏移值。 4. int total_pf: 用户进程的内存页面数。 5. int disaffect: 页面失效次数。 源程序代码: #define TRUE 1 #define FALSE 0 #define INVALID -1 #define NULL 0 #define total_instruction 320 #define total_vp 32 #define clear_period 50 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_struct[total_vp], *freepf_head, *busypf_head; pfc_type *busypf_tail; 在这个实验中,我们使用了五种不同的页面置换算法,分别是 FIFO、LRU、OPT、LFU 和 NUR。在不同的内存容量下,我们计算了每种算法的命中率,并得到了不同的结果。实验结果表明,不同的页面置换算法在不同的内存容量下具有不同的性能特点。
剩余12页未读,继续阅读
- 粉丝: 6367
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助