ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:291.83KB ,
资源ID:27306523      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27306523.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西工大计算机操作系统课程设计实验报告bh05xh3.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西工大计算机操作系统课程设计实验报告bh05xh3.docx

1、西工大计算机操作系统课程设计实验报告bh05xh3西北工业大学操作系统实验报告实验日期:2013.12.07 实验名称:分模块阅读Windows工作集管理相关代码一、实验目的分析工作集管理代码,熟悉工作集管理算法。二、实验要求分模块、函数阅读工作集管理代码,给出工作集管理中设置重要参数(如项目1中工作集最小值和最大值,峰值等)的代码,给出工作集管理流程图和算法描述。三、实验过程及结果将工作集管理部分的代码相应分成以下五个模块,主要根据这五部分查看工作集的管 理部分的代码。 MmWorkingSetManager() MiComputeSystemTrimCriteria ()/工作集管理线程M

2、I_AGE_ALL_WORKING_SETS MiProcessWorkingSets() MiTrimWorkingSet()/根据MI_TRIM_ALL_WORKING_SETS确定剪支 MiAgeWorkingSet ()/根据MI_AGE_ALL_WORKING_SETS判断是否老化1)将工作集管理部分的代码相应分成以下五个模块,MmWorkingSetManager()图1MiComputeSystemTrimCriteria()/工作集管理线程MI_AGE_ALL_WORKING_SETS图2MiProcessWorkingSets()图3 函数原型:MiTrimWorkingSe

3、t (WSLE_NUMBER Reduction,PMMSUPPORT WsInfo, ULONG TrimAge)参数说明: IN WSLE_NUMBER Reduction,需要修建的页面数目 IN PMMSUPPORT WsInfo,进程工作集指针 IN ULONG TrimAge,需要修剪的页面的年龄限值功能分析:(1)变量说明:WsleFlushList:存放将要移除的页面索引和数目,TryToFree;StartEntry;LastEntry;这三个整型变量遍历Wsle数组确定修剪的页面。WorkingSetList工作集链表指针Wsle:工作集页面指针PointerPte,当前页

4、面的PTE结构指针NumberLeftToRemove本次过程结束后未被移除的页面数目NumberNotFlushed:调用MiFreeWsleList后未被移除的页面数目(2)、确定在Wsle中搜索的起始位置TryToFree和结束位置StartEntry-1,(3)、TrimMore程序段,本程序段主要根据最近最久未使用算法,对工作集页面数组Wsle从TryToFree开始循环搜索移除页面,并调用MiFreeWsleList释放相应页面。当NumberLeftToRemove=0或已循环搜索一遍终止;(4)、当WsleFlushList.Count非零,还需调用MiFreeWsleList

5、将其释放,然后判断NumberLeftToRemove是否为零,为零说明还需要进一步修剪,则返回TrimMore程序段继续进行修剪。本程序段执行的条件是WsleFlushList.Count非零,显然,有可能WsleFlushList.Count为零,但是NumberLeftToRemove非零,也就是本程序段并不能够完成修剪Reduction个页面的目标,这也就是最后返回值为Reduction NumberLeftToRemove的原因;(5)、因为在Wsle中的有效页面的下标不是从零开始的,而是从FirstDynamic开始,所以可能超出工作集的范围,接下来调用MiRemoveWorkin

6、gSetPages进行工作集的压缩(下标调整),压缩的条件是下列条件之一:第一个页面的下标FirstDynamic与WorkingSetSize的大小相等,其实这里严格应该是FirstDynamic=WorkingSetSizeWorkingSetSize + 15 + (PAGE_SIZE / sizeof(MMWSLE) LastEntryMaximumWorkingSetSize + 15 + (PAGE_SIZE / sizeof(MMWSLE) WorkingSetSize - WorkingSetList-FirstDynamic;NumberToExamine = SampleS

7、ize MiEstimationShift,这是首选页面数,但还要看下面的几种情况是否满足:a、 控制参数WslesScanned如果大于(1024 * 1024 * 1024) / PAGE_SIZE说明是在bigger machine 中可能有大量进程,这里避免过多扫描(估计操作)后面在进行重新计算估计页面数目和MiEstimationShiftb、 如果NumberToExamine8192(峰值),则NumberToExamine=8192,在比较大的系统中资源比较充足,这里减小搜索的数目,重新计算MiEstimationShift;c、 NumberToExamine = MI_MI

8、NIMUM_SAMPLE,确定搜索的数目不能小于最小值64(6)从FirstDynamic如果WsleCurrentEntry无效,则调用MI_NEXT_VALID_ESTIMATION-_SLOT重新计算新的起始估计位置存于CurrentEntry中(7)从CurrentEntry开始估计无效页面数目存于SampledAgeCounts数组中(8)通过MI_CALCULATE_USAGE_ESTIMATE(SampledAgeCounts, CounterShift)根据概论理论估计本工作集中无效页面数目(9)将估计的结果存储于本工作集中:VmSupport-Claim = Claim; V

9、mSupport-EstimatedAvailable = Estimate(10)用估计的结果,修改本函数参数TotalClaim和TotalEstimatedAvailable使之返回调用程序。MiRemoveWsle()函数分析 函数原型: 参数说明:IN WSLE_NUMBER Entry:要释放的工作集页面索引 IN PMMWSL WorkingSetList:进程工作集页面链表指针 功能分析:(1) 将工作集页面(WsleEntry)保存在临时变量WsleContents中(2)判断当前进程工作集是否是系统工作集,进而判断属于系统工作集的那一类,对相应计数器减一(3)设置工作集页面

10、的有效位无效WsleContents.u1.e1.Valid = 0;WsleEntry.u1.e1.Valid(4)在哈希链表中删除此页,这里的情况是:页面在Wsle中存储可能没有在哈希链表中存储(原因不明),所以接下来的查找可能失败,通过查找过程可以发现哈希链表的组织形式是线性的:具体操作如下:通过Hash = MI_WSLE_HASH (WsleContents.u1.Long, WorkingSetList); 得到我们搜索的起始位置,从Hash向后搜索,直至找到虚拟地址与由WsleContents得到的虚拟地址相同的哈希链表项。如果找到尾,那么再从哈希链表头开始寻找,直至找到开始的位

11、置Hash,这样保证整个哈希链表搜索过一遍找到后将TableHash.Key置零。从这里也可以看出hashtable的结构是线性结构,四、实验分析页面老化与修剪从平衡集管理器入手,寻找老化原因,确定修剪、老化标准。当空闲页面紧张,可以通过修剪工作集获得更多的空闲页面。由每秒一次触发的KeBalanceSetManager启动工作集管理线程WorkingSetManager,在工作集管理线程中首先调用MiComputeSystemTrimCriteria函数确定当前需要进行的操作,主要包括工作集修剪、工作集老化以及空操作,这三种情况的触发条件如下修剪时刻:根据如下三个条件当前可用页面数Avail

12、able少于当前需要的页面数本工作集中已经有被替换页面的记录,MiReplacing = TRUE有超过可用页面数1/4的页面被循环用作后备页面以上条件满足一个则立即进行修剪操作,其中设置Criteria标准的相应变量;老化时刻:当修剪条件全不成立时,当前可用页面Available小于限值20000,则进行老化操作;不操作:在1,2均不成立条件下,说明当前系统中还有大量内存可用,OutFlags=0,作为返回值,不进行任何操作。至此已经确定了工作集处理的标准,保存在WorkingSetRequestFlags (OutFlags=0)和TrimCriteria中,如果WorkingSetReq

13、uestFlags非零,即需要进行修剪或者老化操作,具体调用MiProcessWorkingSets (WorkingSetRequestFlags, &TrimCriteria)做具体处理(下段介绍),如果WorkingSetRequestFlags为零,则不做操作,接下来查看修改页面链表的计数器MmModifiedPageListHead.Total是否超过限制MmModifiedPageMaximum,若超过则激活修改页面写回器工作。以上整个过程函数调用链如下: KeBalanceSetManager ()MmWorkingSetManager() MiComputeSystemTrim

14、Criteria ()/工作集管理线程MI_AGE_ALL_WORKING_SETSMiComputeSystemTrimCriteria ()/工作集管理线程MI_AGE_ALL_WORKING_SETSMiProcessWorkingSets() MiTrimWorkingSet()/根据MI_TRIM_ALL_WORKING_SETS确定剪支 MiTrimWorkingSet() MiAgeWorkingSet ()/根据MI_AGE_ALL_WORKING_SETS判断是否老化 MiAgeWorkingSet ()MiProcessWorkingSets()MmWorkingSetManager()KeBalanceSetManager ()页面修剪操作主要由MiProcessWorkingSets调用MiTrimWorkingSet()具体实现。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1