欢迎来到天天文库
浏览记录
ID:55551819
大小:206.00 KB
页数:20页
时间:2020-05-16
《操作系统实验基于WRK的进程工作集实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统实验——基于WRK的进程工作集实验实验目的1掌握虚拟机和调试工具等的使用。2阅读Windows源码中工作集管理相关部分。3修改Windows内核中页面置换算法,深入理解工作集和页面置换算法如何在一个完整的操作系统中实现。实验内容1了解Windows系统中的工作集一个进程当前正在使用的页面的集合成为它的工作集(workingset)。Windows系统通常将工作集分为进程工作集与系统工作集,分别用于跟踪各个进程与系统的物理内存使用情况。Windows内核对工作集页面的操作分工作集管理器(系统级)
2、的页面修剪算法和进程自己的页面替换算法两种,前者主要是定时扫描系统的内存利用情况,同时对某些进程进行页面修剪,比如选定优先级低的进程,应用最近最久未使用算法(LRU)选定要删除的页面进行删除;而后者主要是在进程内部,当进程申请页面超过一定峰值再申请页面时,工作集大小不再增加,而是以一定的策略替换已有页面。2工作集相关数据结构EPROCESS是描述进程的结构,与工作集相关的数据结构主要有MMSUPPORT、MMWSL、MMWSLEMMWSLENTRY、MMPTE、PMMWSLE_HASH,其主要关系如下
3、图:3工作集代码分析3.1页面替换算法分析首先调用MiAddWorkingSetPage()向工作集中添加页面失败时,调用中MiDoReplacement()函数对工作集进行替换,同时修改MiReplacing为True,说明当前系统页面已经紧张,以便在启动工作集管理器时,根据MiReplacing的值执行修剪操作。其中MiDoReplacement()主要调用了MiReplaceWorkingSetEntry()进行页面替换。(1)修剪时刻。根据如下三个条件:①当前可用页面数Available少于当
4、前需要的页面数;②本工作集中已经有被替换页面的记录,MiReplacing==TRUE;③有超过可用页面数1/4的页面被循环用作后备页面;以上条件满足一个则立即进行修剪操作,其中设置Criteria标准的相应变量。(2)老化时刻。当修剪条件全不成立时,当前可用页面Available小于限值20000,则进行老化操作。(3)不操作。在1,2均不成立条件下,说明当前系统中还有大量内存可用,OutFlags=0,作为返回值,不进行任何操作。此时确定的工作集处理标准,保存在WorkingSetRequestF
5、lags(OutFlags=0)和TrimCriteria中,如果WorkingSetRequestFlags非零,即需要进行修剪或者老化操作,具体调用MiProcessWorkingSets(WorkingSetRequestFlags,&TrimCriteria)做具体处理。如果WorkingSetRequestFlags为零,则不做操作。接下来查看修改页面链表的计数器MmModifiedPageListHead.Total是否超过限制MmModifiedPageMaximum,若超过则激活修改页
6、面写回器工作。3.2释放页面过程分析MiTrimWorkingSet()根据传入的修剪标准,确定需要进行移除的工作集页面的索引号和释放的页面数,并将其封装在WsleFlushList结构中,作为参数传给MiFreeWsleList,具体页面释放操作由MiFreeWsleList来完成。Windows操作系统是一个多任务系统,虽然已经确定了要释放的页面的索引号,但是在确定索引号到调用本函数真正释放页面,期间所确定的页面可能又被其他进程共享,这种情况仅需要调用MiDecrementShareCount()
7、函数使共享计数器减一,再或是此页面是一原型页表项,所以要进行第一次循环,将所有这些情况的FlushIndex()置零,然后在接下来的循环中调用MiRemoveWsle()移除页面。3.3置换算法源码分析代码分析:basetosmmwslist.c:591:MiReplaceWorkingSetEntry()函数原型:VOIDMiReplaceWorkingSetEntry(INPMMSUPPORTWsInfo,INWSLE_ALLOCATION_TYPEFlags)参数说明:WsInfo–指向
8、工作集信息的指针Flags–为0表示不需要页面替换为1标识需要进行页面替换功能概述:此函数查找一个符合条件的工作集页面用来替换。变量说明:变量名实际作用WorkingSetIndex当前扫描的工作集页面索引FirstDynamic工作集页面中第一个可用页面的下标LastEntry工作集页面中最后一个可用页面的下标WorkingSetList工作集链表指针Wsle工作集页面指针NumberOfCandidates已扫描工作集页面数目PointerPte当前
此文档下载收益归作者所有