Windows 内核实验-Windowsncgl.ppt
文本预览下载声明
Windows内存管理 操作系统课程组 Windows虚拟地址空间 虚拟地址空间(Virtual address space) A set of virtual memory addresses that a process can use. 特点 平面(线形)空间 大小和物理内存无关 每个进程拥有的私有地址空间,其他的进程在未经允许的条件下不能访问此地址空间 Windows虚拟地址空间 32-bit x86 Address Space 虚拟地址空间最大为4GB Windows虚拟地址空间 Windows虚拟地址空间 64-bit Address Spaces Windows内存管理器 Windows的内存管理器是执行体(Executive)的一部分,位于文件Ntoskrnl.exe中 Windows内存管理器 内存管理器的主要任务 将一个进程的虚拟地址空间映射到物理内存中(mapping)。 数据交换(swap)。当物理内存被过度使用时,将内存中的一些内容转移到磁盘上;并且,在以后需要这些内容时,再将它们读回到物理内存中。 Windows内存管理器 内存管理器提供的服务(面向用户) 分配和释放虚拟内存 进程之间共享内存 将文件映射到内存 将虚拟页面刷新到内存 获得虚拟页面的信息 改变虚拟页面的保护属性 将虚拟页面锁在内存 …… Windows的内存管理方案 Windows内存管理采用的是虚拟页式管理方案,默认情况下,每个页面大小为4KB。 Windows页面组织方式(二级页表结构) 页表(Page Table): A page of mapping information Windows的内存管理方案 页目录(Page directory) Windows的内存管理方案 Windows虚拟地址变换 x86系统32位虚拟地址结构 Windows虚拟地址变换 地址变换过程(x86系统) Windows页面错误 在页面表换该过程中,可能会发现PTE的有效位被清除的情况,这表明出于某种原因,该页面无法被当前进程访问。在此对一个无效页面的引用被称为页面错误(page fault) 引发错误的原因 缺页 页面在内存,但在备用或修改队列中 访问违例 …… Windows页面错误 缺页错误的处理方法 采用请求调页和页簇化技术 当发生缺页中断时,windows内存管理器将所需页面及其之前或之后的少量页面一起加载到内存中。根据程序行为局部性理论,这种页簇化技术可以减少缺页中断次数。 Windows系统中如果缺页的原因是因为引用数据页面错误,则簇的大小为3,否则为7。 工作集 定义 A subset of virtual pages resident in physical memory. 分类 进程工作集:进程当前在内存中的页面的集合。 系统工作集:系统代码和数据驻留在内存中的页面的集合。 工作集 工作集管理 每个进程在开始时都有一个默认的工作集大小(50个页面)和一个最大值(345个页面)。工作集最大值是在系统初始化时计算得到的。 工作集最大值的上限 工作集 Windows对工作集大小的调整 当一个进程的工作集降低到最小工作集后,如果该进程再发生缺页中断,则该进程的工作集增加。 当一个进程的工作集升到最大工作集后,如果没有足够内存可用,则进程每发生一次缺页中断,windows内存管理程序从该进程工作集中淘汰掉一个旧页(全局和局部组合的模式:局部FIFO算法),然后调入新页。不过如果此时内存空间足够,windows也允许进程的工作集超越其最大工作集。 当物理内存不足时,windows会检测每一个进程的工作集大小,如果大于其最小工作集,则淘汰该工作集中的一些页,直到空闲内存数量足够用或者每个进程都达到其最小工作集。 …… Further Reading Mark E. Russinovich and David A. Solomon, Microsoft Windows Internals, 4th Edition, Microsoft Press, 2004. Chapter 7 - Memory Management Page Fault Handling Working Sets Memory Pools Page Frame Number Database Memory Manager Services the Memory Manager Provides Address Translation Shared Memory and Mapped Files Source Code References Windows Research Kernel sources \base\ntos\mm – Memory man
显示全部