欢迎来到天天文库
浏览记录
ID:38812036
大小:92.95 KB
页数:17页
时间:2019-06-19
《虚拟页式存储管理(时钟置换策略模拟)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《操作系统》综合实训项目设计文档一、基本信息项目名称:页式虚拟存储管理系统(时钟置换策略)完成人姓名:学号:完成日期:二、实验内容与目的(1)加深理解页式虚拟存储管理的概念和原理。(2)掌握页式存储管理中存储分配(和回收)方法;(3)深入了解页式虚拟存储管理中地址重定位(即地址映射)方法。(4)深入理解段页式虚拟存储管理中缺页中断处理方法三、主要设计思路和流程图用结构体定义了页框有数据域、状态位、在此页框存放的页的页号,用结构体定义主存(全局变量),包含32个页框,最后用结构体定义页表项,页表用页表项的数组(全局变量)来表示。设置全局变量k用来定位clock策略的指针
2、。用随机数将内存和页表进行初始化,使得内存中有部分页框被占用,部分没有被占用,内存分布情况占用OCCUPY表示,未被占用NULL表示。函数reserch查询页表中页号所对应的页框号。函数find用来查询页表中页号所对应的表项transfrom函数用来生成一定范围的逻辑地址并转换为所对应的物理地址。dispatch函数用来给进程中加载所需要用到的页。并用clock策略替换已满驻留集中的页。最后,用release函数释放进程所占用的空间并将页表和内存改变为初始化的状态。一、主要数据结构及其说明typedefstructpage//内存中的页框{intID;//页框中存放的
3、页的编号intdata[pageMax];//页中的数据charstate;//页框的状态}page;typedefstructmemory//主存定义{pageNo[32];//主存中有32个页}memory;typedefstructinfo//页表项{intp;//页表项修改位intID;//在内存中页的页号intzhenhao;//内存中的页号所在的页框号}info;二、程序运行时的初值和运行结果2一、源程序并附上注释【可是另一个源程序文件,在此应说明该文件名】#include#include#include4、>#include#definepageMax2048typedefstructpage//内存中的页框{intID;//页框中存放的页的编号intdata[pageMax];//页中的数据charstate;//页框的状态}page;typedefstructmemory//主存定义{pageNo[32];//主存中有32个页}memory;typedefstructinfo//页表项{intp;//页表项修改位intID;//在内存中页的页号intzhenhao;//内存中的页号所在的页框号}info;infopagetable[8];//8项的页5、表全局变量memoryzhaoke;//声明主存全局变量intk=0;//clock算法所用到的指针全局变量intiniti()//初始化内存和页表{srand((int)time(NULL));intamount=rand()%24,i;for(i=0;i<32;i++){pagetable[i].p=0;pagetable[i].ID=-1;pagetable[i].zhenhao=-1;}for(i=0;i<32;i++){zhaoke.No[i].state='N';}for(i=0;i6、te='Y';}}intprint()//打印内存分配情况{inti;printf("**********1加载进程****2撤销进程****3转换逻辑地址*****4退出********");printf("内存页分配情况:");for(i=0;i<32;i++){if(i%4==0){printf("");printf("7、");}if(zhaoke.No[i].state=='N')printf("tNULLt8、");if(zhaoke.No[i].state=='Y')printf("OCCUPYt9、");}printf("");}int10、reserch(intyehao)//根据页号查询页表反回所对应的页框号,若没有则返回-1{inti;for(i=0;i<8;i++){if(yehao==pagetable[i].ID)returnpagetable[i].zhenhao;}return-1;}inttransform()//生成逻辑地址并转换为对应的物理地址{system("CLS");chars1[7],s2[12];intyehao,pianyiliang,block,j=0,buffer;if(pagetable[j].ID==-1){system("CLS");print
4、>#include#definepageMax2048typedefstructpage//内存中的页框{intID;//页框中存放的页的编号intdata[pageMax];//页中的数据charstate;//页框的状态}page;typedefstructmemory//主存定义{pageNo[32];//主存中有32个页}memory;typedefstructinfo//页表项{intp;//页表项修改位intID;//在内存中页的页号intzhenhao;//内存中的页号所在的页框号}info;infopagetable[8];//8项的页
5、表全局变量memoryzhaoke;//声明主存全局变量intk=0;//clock算法所用到的指针全局变量intiniti()//初始化内存和页表{srand((int)time(NULL));intamount=rand()%24,i;for(i=0;i<32;i++){pagetable[i].p=0;pagetable[i].ID=-1;pagetable[i].zhenhao=-1;}for(i=0;i<32;i++){zhaoke.No[i].state='N';}for(i=0;i6、te='Y';}}intprint()//打印内存分配情况{inti;printf("**********1加载进程****2撤销进程****3转换逻辑地址*****4退出********");printf("内存页分配情况:");for(i=0;i<32;i++){if(i%4==0){printf("");printf("7、");}if(zhaoke.No[i].state=='N')printf("tNULLt8、");if(zhaoke.No[i].state=='Y')printf("OCCUPYt9、");}printf("");}int10、reserch(intyehao)//根据页号查询页表反回所对应的页框号,若没有则返回-1{inti;for(i=0;i<8;i++){if(yehao==pagetable[i].ID)returnpagetable[i].zhenhao;}return-1;}inttransform()//生成逻辑地址并转换为对应的物理地址{system("CLS");chars1[7],s2[12];intyehao,pianyiliang,block,j=0,buffer;if(pagetable[j].ID==-1){system("CLS");print
6、te='Y';}}intprint()//打印内存分配情况{inti;printf("**********1加载进程****2撤销进程****3转换逻辑地址*****4退出********");printf("内存页分配情况:");for(i=0;i<32;i++){if(i%4==0){printf("");printf("
7、");}if(zhaoke.No[i].state=='N')printf("tNULLt
8、");if(zhaoke.No[i].state=='Y')printf("OCCUPYt
9、");}printf("");}int
10、reserch(intyehao)//根据页号查询页表反回所对应的页框号,若没有则返回-1{inti;for(i=0;i<8;i++){if(yehao==pagetable[i].ID)returnpagetable[i].zhenhao;}return-1;}inttransform()//生成逻辑地址并转换为对应的物理地址{system("CLS");chars1[7],s2[12];intyehao,pianyiliang,block,j=0,buffer;if(pagetable[j].ID==-1){system("CLS");print
此文档下载收益归作者所有