《2022年实验四虚拟存储器管理 .pdf》由会员分享,可在线阅读,更多相关《2022年实验四虚拟存储器管理 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验四虚拟存储器管理一、实验目的1、为了更好的配合操作系统有关虚拟存储器管理章节的教学。2、加深和巩固学生对于请求页式存储管理的了解和掌握。3、提高学生的上机和编程过程中处理具体问题的能力。二、实验内容请求页式存储管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。1通过随机数产生一个指令序列,共320 条指令。指令的地址按下述原则生成:a.50%的指令是顺序执行的。b.25%的指令是均匀分布在前地址部分。c.25%的指令是均匀分布在后地址部分。具体的实施方法是:a.在0,319指令地址之间随机
2、选取一起点;b.顺序执行一条指令,即执行地址为m+1的指令;c.在前地址 0,m+1中随机选取一条指令并执行,该指令的地址为m;d.顺序执行一条指令,其地址为m;e.在后地址 m+2,319 中随机选取一条指令并执行;f.重复上述步骤ae,直到执行320 次指令。2将指令序列变换成为页地址流设:a.页面大小为1K;b.用户内存容量为4 到 32 页;c.用户虚存容量为32K。在用户虚存中,按每K 存放 10 条指令排列虚存地址,即320 条指令在虚存中的存放方式为:第 0 条第 9 条指令为第0 页,对应虚存地址为0,9;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页
3、-第 10 条第 19 条指令为第1 页,对应虚存地址为10,19 .第 310 条第 319 条指令为第31 页,对应虚存地址为310,319。按以上方式,用户指令可组成32 页。3、输出下述各种算法在不同内存容量下的命中率。a.先进先出的算法;b.最近最少访问算法;c.最近最不经常使用算法。其中:命中率=1-页面失效次数/页地址流长度页地址流长度为320,页面失效次数为每次访问相同指令时,该指令所对应的页不在内存的次数。三、实验要求实验课时 4 学时。要求画出利用各种算法置换时的置换图,并可以分析说明。编程可分为几个部分完成:指令的分页,算法的选择,算法的实现,命中率的输出。编写程序前可先
4、阅读 Linux 源代码页面换入:static int do_swap_page(struct mm_struct*mm,struct vm_area_struct*vma,unsigned long address,pte_t*page_table,swp_entry_t entry,int write_access)struct page*page=lookup_swap_cache(entry);pte-t pte;if(!pgae)lock_kernel();swapin_readahead(entry);page=read_swap_cache(entry);unlock_kerne
5、l();if(!page)return-1;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -flush_page_to_ram(page);flush_icache_page(vma,page);mm-rss+;pte=mk_pte(page,vma-vm_page_prot);/*Freeze the shared ness of the page,ie page_count+swap_count.*Must lock page before transferring our swap count to already*obtained apge count.*/l
6、ock_page(page);swap_free(entry);if(write_access&!is_page_shared(page)pte=pte_mkwrite(pte_mkdirty(pte);UnlockPage(page);set_pte(page_table,pte);/*No need to invalidate-it was non-present before*/update_mmu_cache(vma,address,pte);return 1;/*Minor fault*/四、源程序指导#include#include#include int i,M,j,k,s,h,
7、t;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -char r;float int_count,page_count,v;float vc29;int l,m,n,o,p;int address320;int page3210,pageNo32,page_Index200,page_IndexNo200,page_change200;pagechange()for(i=0;i32;i+)for(j=0;j1)m=l+1;else goto Loop1;Loop2:x=random(319);if(xo)p=y;else goto Loop3;fifo()for(s=
8、4;s=32;s+)page_change0=page_IndexNo0;int_count=1;page_count=1;for(h=1;h5*M;h+)if(page_IndexNoh!=page_IndexNoh-1)page_count+=1;for(t=0;ts;t+)if(page_IndexNoh=page_changet)goto Loop8;else if(page_IndexNoh!=page_changet&page_changet=999)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -page_changet=page_IndexNoh;in
9、t_count+;goto Loop8;for(k=0;ks;k+)page_changek=page_changek+1;page_changes-1=page_IndexNoh;int_count+=1;Loop8:;v=int_count/page_count;vcs-4=1-v;printf(Vc for page%d:vc%d=%.3f$,s,s-4,vcs-4);for(i=0;i200;i+)page_changei=999;lru()int q,temp;for(s=4;s=32;s+)page_change0=page_IndexNo0;page_count=1;名师资料总结
10、-精品资料欢迎下载-名师精心整理-第 6 页,共 12 页 -int_count=1;for(h=1;h5*M;h+)if(page_IndexNoh!=page_IndexNoh-1)page_count+=1;for(t=0;ts;t+)if(page_IndexNoh!=page_changet&page_changet=999)page_changet=page_IndexNoh;int_count+;goto Loop9;else if(page_IndexNoh=page_changet)for(q=t;qs;q+)if(page_changeq+1!=999)temp=page_
11、changeq;page_changeq=page_changeq+1;page_changeq+1=temp;goto Loop9;for(k=0;ks;k+)page_changek=page_changek+1;page_changes-1=page_IndexNoh;名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 12 页 -int_count+=1;Loop9:;v=int_count/page_count;vcs-4=1-v;printf(The vc for the page%d:vc%d=%.3f$,s,s-4,vcs-4);for(i=0;i200;i+)pag
12、e_changei=999;opt()int i,count32,max,j;for(j=0;j32;j+)countj=0;for(s=4;s=32;s+)page_change0=page_IndexNo0;page_count=1;int_count=1;for(h=1;h5*M;h+)if(page_IndexNoh!=page_IndexNoh-1)page_count+=1;for(t=0;ts;t+)if(page_IndexNoh=page_changet)goto Loop10;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 12 页 -else if(page
13、_IndexNoh!=page_changet&page_changet=999)page_changet=page_IndexNoh;int_count+;goto Loop10;for(t=0;ts;t+)for(i=h;i5*M;i+)if(page_changet=page_IndexNoi)countt=i;goto Loop11;page_changet=page_IndexNoh;int_count+=1;goto Loop10;Loop11:;max=0;for(t=0;tmax)max=countt;for(t=0;ts;t+)名师资料总结-精品资料欢迎下载-名师精心整理-第
14、 9 页,共 12 页 -if(countt=max)page_changet=page_IndexNoh;int_count+=1;Loop10:;v=int_count/page_count;vcs-4=1-v;printf(The vc for page%d:vc%d=%.3f$,s,s-4,vcs-4);for(i=0;i200;i+)page_changei=999;main()char c;Loop4:clrscr();for(i=0;i320;i+)addressi=rand();for(i=0;i200;i+)page_changei=999;printf(Put The Va
15、lue Of The M:);scanf(%d,&M);pagechange();名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 12 页 -for(j=0;jM;j+)Ram_Make();page_Index5*j+0=l;page_IndexNo5*j+0=l/10;page_Index5*j+1=m;page_IndexNo5*j+1=m/10;page_Index5*j+2=n;page_IndexNo5*j+2=n/10;page_Index5*j+3=o;page_IndexNo5*j+3=o/10;page_Index5*j+4=p;page_IndexNo5*
16、j+4=p/10;for(k=0;k5*M;k+)printf(page_Index%d=%d,page_IndexNo%d=%dn,k,page_Indexk,k,page_IndexNok);printf(n);Loop5:printf(select the method for page_exchange:n);printf(1.)FIFOn2.)LRUn3.)OPTn);printf(Put The select of The method:);scanf(%s,&r);switch(r)case 1:fifo();break;case 2:lru();break;case 3:opt();break;default:名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 12 页 -printf(n);printf(Put the value between 1 to 3!n);goto Loop5;Loop6:printf(n);printf(Do You Want to do againy/n:);scanf(%s,&c);if(c=y)goto Loop4;else if(c=n)exit;else printf(Select for y and n!n);goto Loop6;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 12 页 -