页面置换算法实验(内含完整代码).doc
- 文档编号:170415
- 上传时间:2022-10-05
- 格式:DOC
- 页数:10
- 大小:74KB
页面置换算法实验(内含完整代码).doc
《页面置换算法实验(内含完整代码).doc》由会员分享,可在线阅读,更多相关《页面置换算法实验(内含完整代码).doc(10页珍藏版)》请在冰豆网上搜索。
实验二存储管理
一、实验目的
通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特 点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程, 并比较它们的效率。
二、实验内容
基于一个虚拟存储区和内存工作区,设计下述算法并计算访问命中率。
1、最佳淘汰算法(OPT)
2、先进先出的算法(FIFO)
3、最近最久未使用算法(LRU)
4、简单时钟(钟表)算法(CLOCK)
命中率=1-页面失效次数/页地址流(序列)长度
三、实验原理简述
UNIX中,为了提高内存利用率,提供了内外存进程对换机制;内存空间的分配和回收均以页为单位进行;一个进程只需将其一部分(段或页)调入内存便可运行;还支持请求调页的存储管理方式。
当进程在运行中需要访问某部分程序和数据时,发现其所在页面不在内存,就立即提出请求(向CPU发出缺中断),由系统将其所需页面调入内存。
这种页面调入方式叫请求调页。
为实现请求调页,核心配置了四种数据结构:
页表、页帧(框)号、访问位、修改位、有效位、保护位等。
当CPU接收到缺页中断信号,中断处理程序先保存现场,分析中断原因,转入缺页中断处理程序。
该程序通过查找页表,得到该页所在外存的物理块号。
如果此时内存未满,能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。
如果内存已满,则须按某种置换算法从内存中选出一页准备换出,是否重新写盘由页表的修改位决定,然后将缺页调入,修改页表。
利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。
整个页面的调入过程对用户是透明的。
四、算法描述
本实验的程序设计基本上按照实验内容进行。
即使用srand()和rand()函数定 义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算 法计算出相应的命中率。
(1)通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:
A:
50%的指令是顺序执行的
B:
25%的指令是均匀分布在前地址部分
C:
25%的指令是均匀分布在后地址部分
具体的实施方法是:
A:
在[0,319]的指令地址之间随机选取一起点m
B:
顺序执行一条指令,即执行地址为m+1的指令
C:
在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’
D:
顺序执行一条指令,其地址为m’+1
E:
在后地址[m’+2,319]中随机选取一条指令并执行
F:
重复步骤A-E,直到320次指令
(2)将指令序列变换为页地址流
设:
页面大小为1K;
用户内存(页帧)容量为4页~32页;
用户虚存容量为32K。
在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
第0条-第9条指令为第0页(对应虚存地址为[0,9])
第10条-第19条指令为第1页(对应虚存地址为[10,19])
………………………………
第310条-第319条指令为第31页(对应虚存地址为[310,319])
按以上方式,用户指令可组成32页。
五、算法实现与分析
1.常量及变量
#definetotal_instruction320//指令流长
#definetotal_vp32//虚页长
#defineclear_period50//清周期
pfc_typepfc[total_vp], //主存区页面控制结构数组
pfc_type*freepf_head, //主存区页面控制结构的空闲页面头指针
pfc_type*busypf_head, //主存区页面控制结构的忙页面头指针
pfc_type*busypf_tail; //主存区页面控制结构的忙页面尾指针
intdiseffect; //页错误计数器,初次把页面载入主存时也当做页错误
pl_typepl[total_vp];//页面结构数组
2.数据结构
typedefstruct//页面结构
{
intpn, //页面序号
pfn, //页面所在内存区的帧号
counter, //单位时间内访问次数
time; //上次访问的时间
}pl_type;
structpfc_struct{//页面控制结构,模拟内存中的页集
intpn, //页面号
pfn; //内存区页面的帧号
structpfc_struct*next; //页面指针,用于维护内存缓冲区的链式结构
};
3.函数定义
intinitialize(int); //初始化页面结构数组和页面控制结构数组
intFIFO(int); //先进先出算法
intLRU(int); //最近最久未使用算法
intOPT(int); //最佳置换算法
intCLOCK(int); //简单时钟(钟表)算法
六、实验结果分析
实验数据结果:
------------随机产生指令流------------
2572583738
226227109110
184185164165
1661675960
310311135136
148149105106
240241121122
1241255051
315316308309
312313299300
315316284285
284285272273
318319216217
310311266267
318319127128
1291305253
53544849
1301316263
159160107108
206207130131
167168123124
2722732324
1231243233
303304163164
206207134135
269270123124
177178124125
2442455455
686956
165166144145
2702717576
88896566
69703132
56574041
1891907374
92935051
92937778
88896263
1251267172
255256125126
2892909798
235236163164
2402412930
1581598081
280281263264
3123135859
2262277879
121122108109
2022033233
42431819
1531546768
2922936364
2642655455
2692704041
296297295296
318319269270
278279214215
222223186187
2202213031
2682693334
226227117118
211212170171
3133147778
2482493435
2322332526
82835960
61622324
1681692425
259260239240
318319275276
2832847475
244245144145
2442458687
120121115116
238239209210
275276215216
284285214215
285286186187
208209162163
2382394142
--------------------------------------
--不同页面工作区各种替换策略的命中率表--
PageFIFOLRUOPTCLOCK
40.5500.5590.6690.550
50.5660.5720.7000.572
60.5780.5940.7220.578
70.5910.6030.7410.597
80.6310.6280.7560.637
90.6370.6560.7720.650
100.6410.6690.7870.653
110.6560.6780.8000.666
120.6880.6840.8130.672
130.7030.6970.8220.697
140.7130.7130.8310.719
150.722
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 页面 置换 算法 实验 内含 完整 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)