1、2)实验报告中必须包括:设计思想、数据定义(包括详细说明)、处理流程(详细算法描述与算法流程图)、源代码、运行结果、体会等部分。3)必须模拟本实验内容中提到得算法中得至少2种页面置换算法。4) 比较不同页面置换算法得效率实验内容编写一个程序,使用以下页面置换算法中得某2种分别模拟一个分页系统,并统计同一个页面访问序列情况下不同页面置换算法引发得缺页中断次数。1、第二次机会算法(Secd hance)2、最近最少使用算法(ea Rcentl Used,RU )、最不常用算法(No requentlyUsed,FU)4、最近未使用算法(Not Recent Used ,NRU)5、时钟页面置换算法
2、6、老化算法(ging) 页框得数量固定为,虚拟页面数为8。实验输入为访问页面序列,比如0,1,3 ,2,7,实验用到得软件(:)V,word,preon实验内容、关键步骤(流程图、代码等)及结果分析(70分)一、先进先出页面置换算法、基本思想:地址映射过程中,若在页面中发现所要访问得页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入得页面让出空间.而用来选择淘汰哪一页得规则叫做页面置换算法。最简单得页面置换算法就是先入先出(FIFO)法。、算法流程图3、步骤说明(1)初始化void init()/初始化 n i;for (i= 0; p
3、ag_frme_number; i+) ge_able、pagi = -1; age_tablei、loa_tme = -1; page_tablei、lastviitime =-; (2)选择算法,输入插入页面号。进入判断函数intjuge()/判断页框就是否满,或者页框里面就是否已存在页面 i ; for (i=0; i age_rm_number;i+) (getabei、pag_id = 1 page_abi、pgi pa_id) retun i; rtur ;之后根据返回数得不同决定了不同类型返回2则说明页框满且页框里面没有存在要插入得页面。返回-1则说明页框未满返回其它数则说明页框
4、里存在相同得页面(3)当没有空页框,并且页面本身也没有存在,则执行一下代码 ot(paeabl,pagefrme_number, ief(sruct Pag_al), cp);/按照装入时间从小到大排序 pgetbe0、pae_id pag_id; page_table0、lad_ime =ouner; pagetble0、last_vist_ti = cuer;age_interruptumer+;将页框号为0得页面置换成最新插入得页面。int c(cnvod *p, ontvoid q)/按照装入时间从小到大排序nt c= (sru Pge_tl*)、load_time - (trt Pa
5、ge_tale*)q)、loadtie; if(c )retur 1; else retur 1;排序函数,将页面按装入时间从小到大排序(4)/如果页面未满,则将页面替换在空页框里 f (age_tabej、p_id ) etabej、age_= paei; pag_talej、latime = countr; pag_alej、astvsitim coutr; age_nterup_umber;则将页面替换在页框号最小得空页框里(5)/如果页面本身存在页框中,则执行一下代码 pe_ta、lst_visi_ime =counte;则更新页面得最近访问时间(6)rt(page_tabe,pag_
6、frame_numbe, sizeof(struct Paetbl), cmp3);/按照装入时间从小到大排序 print(2);打印出页表详细信息prin(页表信息:n页 号 页框号 装入时间 最近访问时间n”);for ( = 0;j pa_frame_mber; j+) ritf(4d8d%7d7dn”, pagetble、pge_id, , age_taej、load_time,pe_tablej、last_visittme); ; rek;排序函数ncm3(cnst oi p, cos vi q)/按照装入时间从小到大排序,并且不要排序没页面得部分 (*(ruct Pe_table*
7、)p)、pge_i != 1 & (*(struct Pagtabl*)q)、pae_i != -1)in c= (*(srutPageble)p)、load_tme- (*(struct age_tabl*)q)、loatim;if ( 0) ern ;else rtun ;(7)并计算出中断页面次数及命中概率,并打印页表出来itum;um= (irtual_page_umber page_interrptmer) * 100 / tul_page_nuber); rintf(缺页中断次数:%d, page_interupt_mbr);printf(中断命中率:%”, sum);pintf(
8、打印出页面n”); or ( i= 0; i page_fae_nuber; i+) for (nt g = 1; g =virtual_page; ) pritf(%d, prig); rintf(”n”); 4、实现(1)选择FIO算法(2)输入页面号,列出页表详细信息(3)输入1,结束输入,显示统计结果及页表二、最近最少使用页面置换算法1、基本思想:在前面几条指令中使用频繁得页面很可能在后面得几条指令中频繁使用.反过来说,已经很久没有使用得页面很可能在未来较长得一段时间内不会被用到。这个,就就是著名得局部性原理比内存速度还要快得cace,也就是基于同样得原理运行得。因此,我们只需要在每次
9、调换时,找到最近最久使用得那个页面调出内存。2、算法流程图3、步骤说明:()初始化id ini()/初始化 t i; o (i 0;i 0)return;lserrn -1;排序函数,将页面按最后访问时间从小到大排序(4)/如果页面未满,则将页面替换在空页框里 if (ge_talj、page_id = -) agebe、pae_id= ge_d; aetaej、loadtie = conter; pagetble、as_isit_ie= oun; paetrupt_ner+;(5)/如果页面本身存在页框中,则执行一下代码 page_tablej、lat_visit_tie counte;(6)qsort(pgetab,pg_frenumbe, izof(src ae_te),p);/按照最后访问时间从小到大排序 rt(2);prn(”页表信息:n页 号 页框号 装入
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1