七.指导教师评议 成绩等级
1
实验3 存储管理
一、实验目的
1. 了解虚拟存储管理技术的原理与特点。 2. 掌握请求页式存储管理的页面置换算法。
二、实验内容
1. 通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:
(1) 50%的指令是顺序执行的;
(2) 25%的指令均匀分布在前地址部分; (3) 25%的指令均匀分布在后地址部分。 实现方法:
(1) 在[0,319]的指令地址中随机选取一起点s; (2) 执行指令s;
(3) 顺序执行一条指令,即执行地址为s+1的指令;
(4) 在前地址[0,s]中随机选取一条地址为m的指令执行; (5) 顺序执行一条指令,即执行地址为m+1的指令; (6) 在后地址[m+2,319]中随机选取一条指令s; (7) 重复(2)—(6),直到执行320次指令。 2. 将指令序列变换为页地址流,设:
(1) 页面大小为1K;
(2) 用户内存容量为4—32页面(page frame); (3) 用户虚存容量为32K(即32页)。
若10条指令为1页,则320条指令在虚存中的存放方式为: 第0页(虚存地址[0,9])——第0条~第9条指令;
第1页(虚存地址[10,19])——第10条~第19条指令; ? ? ? ? ? ?
第31页(虚存地址[310,319])——第310条~第319条指令。
3. 计算并输出下列算法在不同内存容量下的命中率(命中率=1-缺页率)。
(1) FIFO——First In First Out Page Replacement Algorithm (2) LRU——Least Recently Used Page Replacement Algorithm
三、实验要求
1. 根据实验内容编写C程序。 2. 上机调试程序。
3. 记录并分析程序运行结果。
四、程序说明和程序流程图
1
程序说明为:
1. 通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:
(1) 50%的指令是顺序执行的;
(2) 25%的指令均匀分布在前地址部分; (3) 25%的指令均匀分布在后地址部分。 实现方法:
(1) 在[0,319]的指令地址中随机选取一起点s; (2) 执行指令s;
(3) 顺序执行一条指令,即执行地址为s+1的指令;
(4) 在前地址[0,s]中随机选取一条地址为m的指令执行; (5) 顺序执行一条指令,即执行地址为m+1的指令; (6) 在后地址[m+2,319]中随机选取一条指令s; (7) 重复(2)—(6),直到执行320次指令。 2. 将指令序列变换为页地址流,设:
(1) 页面大小为1K;
(2) 用户内存容量为4—32页面(page frame); (3) 用户虚存容量为32K(即32页)。
若10条指令为1页,则320条指令在虚存中的存放方式为: 第0页(虚存地址[0,9])——第0条~第9条指令;
第1页(虚存地址[10,19])——第10条~第19条指令; ? ? ? ? ? ?
第31页(虚存地址[310,319])——第310条~第319条指令。
3. 计算并输出下列算法在不同内存容量下的命中率(命中率=1-缺页率)。
(1) FIFO——First In First Out Page Replacement Algorithm (2) LRU——Least Recently Used Page Replacement Algorithm 流程图:
1
1
五、程序代码
#include
// #include
#define total_instruction 320 /* 指令条数 */ #define total_vp 32 /* 虚页数 */ #define clear_period 50 /* NRU清0周期 */ typedef struct { /* 页表结构 */ int pn,pfn,counter,time; /* counter(LFU),time(LRU) */ } pl_type;
pl_type pl[total_vp]; /*页表 */ struct pfc_struct { /* 存储页面表 */ int pn,pfn;
struct pfc_struct *next; };
typedef struct pfc_struct pfc_type;
pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail; int diseffect,a[total_instruction]; /* 缺页次数,指令流 */ int page[total_instruction],offset[total_instruction]; void initialize(int); void fifo(int); void lru(int); void opt(int); void lfu(int); void nur(int); void main() {
int s,i,j;
srand(getpid()*10); /* 进程标识作为随机数种子 */
1
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统原理实验报告(4)在线全文阅读。
相关推荐: