常用页面置换算法模拟实验Word文档格式.docx
- 文档编号:20427603
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:10
- 大小:60.74KB
常用页面置换算法模拟实验Word文档格式.docx
《常用页面置换算法模拟实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《常用页面置换算法模拟实验Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
实验内容及要求(详见实验讲义与实验指导书):
2.实验要求:
1)要求用你熟悉的程序设计语言编写和调试一个页面置换模拟程序;
要求在主函数中测试。
2)实验报告中必须包括:
设计思想、数据定义(包括详细说明)、处理流程(详细算法描
述和算法流程图)、源代码、运行结果、体会等部分。
3)必须模拟本实验内容中提到的算法中的至少2种页面置换算法。
4)比较不冋页面置换算法的效率
3.实验内容
编写一个程序,使用以下页面置换算法中的某2种分别模拟一个分页系统,并统计冋一
个页面访冋序列情况下不冋页面置换算法引发的缺页中断次数。
1、第二次机会算法(SecondChanee)
2、最近最少使用算法(LeastRecentlyUsed,LRU)
3、最不常用算法(NotFrequentlyUsed,NFL)
4、最近未使用算法(NotRecentlyUsed,NRU
5、时钟页面置换算法
6、老化算法(aging)
页框的数量固定为4,虚拟页面数为&
实验输入为访冋页面序列,比如0,1,3,2,
7,1
实验用到的软件(:
)
C-Free5
实验内容及关键步骤(代码)Q3(15分)得分:
代码:
#include<
stdio.h>
stdlib.h>
#include<
string.h>
#definepage_frame_number4//页框数
#definevirtual_page_number8//虚拟页面数intpage_id,counter=0;
//输入id和计数器charalgorithm[20];
〃算法选择
intpage_interrupt_number=0;
structPage_table{
intpage_id;
//页号
intload_time;
//装入时间
intlast_visit_time;
//最后访问时间
}page_table[page_frame_number];
(*(struct
intcmp(constvoid*p,constvoid*q){
intc=(*(structPage_table*)p).load_timePagetable*)q).loadtime;
if(c>
0)
return1;
else
return-1;
}
intcmp1(constvoid*p,constvoid*q){
intc=(*(structPage_table*)p).last_visit_timePage_table*)q).last_visit_time;
voidinit(){//初始化inti;
for(i=0;
i<
page_frame_number;
i++){
page_table[i].page_id=-1;
page_table[i].load_time=-1;
page_table[i].last_visit_time=-1;
}}
voidprint(intx){//inti,j;
打印信息
switch(x){case0:
80;
i++)
printf("
-"
);
printf("
\t\t
试验七常用页面置换算法模拟头验\n"
\n"
printf("
选择算法:
F/L(FIFO算法/LRU算法)\n"
break;
case1:
请输入访问页面的顺序,以“-1”结束:
case2:
页表信息:
\n页号页框号装入时间最近访
问时间\n"
for(j=0;
j<
page_frame_number;
j++){
%4d%8d%7d%7d\n"
page_table[j].page_id,j,page_table[j].load_time,page_table[j].last_visit_time);
};
case3:
\t\tFIFO算法模拟过程\n"
case4:
\t\tLRU算法模拟过程\n"
intjudge(){
inti;
i++){if(page_table[i].page_id==-1||page_table[i].page_idreturni;
voidfifo(){
intj;
print(3);
(1);
while
(1){
scanf("
%d"
&
page_id);
if(page_id==-1)
j=judge();
if(j==-1){
qsort(page_table,page_frame_number,
Page_table),cmp);
//按照最后访问时间从小到大排序
page_table[O].page_id=page_id;
page_table[0].load_time=counter;
page_table[O].last_visit_time=counter;
page_interrupt_number++;
else{
if(page_table[j].page_id==-1){page_table[j].page_id=page_id;
page_table[j].load_time=counter;
page_table[j].last_visit_time=counter;
page_interrupt_number++;
}一一
page_table[j].last_visit_time=counter;
==page_id)
sizeof(struct
k
counter++;
(2);
缺页中断次数:
%d\n"
page_interrupt_number);
voidlru(){
intj;
print(4);
Page_table),cmp1);
〃按照装入时间从小到大排序
}~一一
%d\n"
}一一intmain(){
print(0);
init();
%s"
algorithm);
if(strcmp(algorithm,"
F"
)==0||strcmp(algorithm,"
L"
)==0)break;
输入出错,请重新输入\n"
)==0){fifo();
lru();
system("
pause"
return0;
FIFO算法运行结果
实验过程中遇到的问题解决办法与实验体会Q4(需手写,10得分:
分)
这次实验让我了解了内存页面置换的几种算法,通过代码,让我更加深刻了了解了fifo,lru,算法的核心思想。
对于其他页面替换算法,也有初步的学习理解评阅教师特殊评语:
评阅教师:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 页面 置换 算法 模拟 实验