欢迎来到天天文库
浏览记录
ID:56058069
大小:267.22 KB
页数:6页
时间:2020-06-20
《操作系统实验实验报告2.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、西北工业大学操作系统实验实验报告班号:姓名:学号:实验日期:2011.11.实验名称:阅读Windows工作集管理相关代码一、实验目的分析工作集管理代码,熟悉工作集管理算法二、实验要求阅读工作集管理代码,给出工作集管理中设置重要参数(如项目1中工作集最小值和最大值,峰值等)的代码,给出工作集管理流程图和算法描述三、实验过程及结果1)工作集管理部分的代码相应分成以下五个模块,MmWorkingSetManager()MiComputeSystemTrimCriteria()//工作集管理线程MI_AGE_ALL_WORKING_SETSMiProcessWo
2、rkingSets()MiTrimWorkingSet()////根据MI_TRIM_ALL_WORKING_SETS确定剪支MiAgeWorkingSet()//根据MI_AGE_ALL_WORKING_SETS判断是否老化2)根据阅读代码情况,总结Windows的近似LRU算法原理与步骤。工作集结构图四、实验分析MiTrimWorkingSet()函数原型:MiTrimWorkingSet(WSLE_NUMBERReduction,PMMSUPPORTWsInfo,ULONGTrimAge)参数说明:INWSLE_NUMBERReduction,需要修
3、建的页面数目INPMMSUPPORTWsInfo,进程工作集指针INULONGTrimAge,需要修剪的页面的年龄限值变量说明:WsleFlushList:存放将要移除的页面索引和数目,TryToFree;StartEntry;LastEntry;这三个整型变量遍历Wsle数组确定修剪的页面。WorkingSetList工作集链表指针Wsle:工作集页面指针PointerPte,当前页面的PTE结构指针NumberLeftToRemove本次过程结束后未被移除的页面数目NumberNotFlushed:调用MiFreeWsleList后未被移除的页面数目确
4、定在Wsle中搜索的起始位置TryToFree和结束位置StartEntry-1,TrimMore程序段,本程序段主要根据最近最久未使用算法,对工作集页面数组Wsle从TryToFree开始循环搜索移除页面,并调用MiFreeWsleList释放相应页面。当NumberLeftToRemove=0或已循环搜索一遍终止;当WsleFlushList.Count非零,还需调用MiFreeWsleList将其释放,然后判断NumberLeftToRemove是否为零,为零说明还需要进一步修剪,则返回TrimMore程序段继续进行修剪。本程序段执行的条件是Wsle
5、FlushList.Count非零,显然,有可能WsleFlushList.Count为零,但是NumberLeftToRemove非零,也就是本程序段并不能够完成修剪Reduction个页面的目标,这也就是最后返回值为Reduction–NumberLeftToRemove的原因;因为在Wsle中的有效页面的下标不是从零开始的,而是从FirstDynamic开始,所以可能超出工作集的范围,接下来调用MiRemoveWorkingSetPages进行工作集的压缩(下标调整),压缩的条件是下列条件之一:1、第一个页面的下标FirstDynamic与Worki
6、ngSetSize的大小相等,其实这里严格应该是FirstDynamic>=WorkingSetSize2、WorkingSetSize+15+(PAGE_SIZE/sizeof(MMWSLE)))7、----------------------------------------------------------------------------------------MiAgeWorkingSet()函数原型:MiAgeWorkingSet(INPMMSUPPORTVmSupport,INLOGICALDoAging,INPWSLE_NUMBERWslesScanned,INOUTPPFN_NUMBERTotalClaim,INOUTPPFN_NUMBERTotalEstimatedAvailable)参数说明:INPMMSUPPORTVmSup8、port//工作集指针INLOGICALDoAging//判断是否
7、----------------------------------------------------------------------------------------MiAgeWorkingSet()函数原型:MiAgeWorkingSet(INPMMSUPPORTVmSupport,INLOGICALDoAging,INPWSLE_NUMBERWslesScanned,INOUTPPFN_NUMBERTotalClaim,INOUTPPFN_NUMBERTotalEstimatedAvailable)参数说明:INPMMSUPPORTVmSup
8、port//工作集指针INLOGICALDoAging//判断是否
此文档下载收益归作者所有