操作系统课件MemorymanagementCase.ppt

上传人:小飞机 文档编号:6575602 上传时间:2023-11-14 格式:PPT 页数:24 大小:416.50KB
返回 下载 相关 举报
操作系统课件MemorymanagementCase.ppt_第1页
第1页 / 共24页
操作系统课件MemorymanagementCase.ppt_第2页
第2页 / 共24页
操作系统课件MemorymanagementCase.ppt_第3页
第3页 / 共24页
操作系统课件MemorymanagementCase.ppt_第4页
第4页 / 共24页
操作系统课件MemorymanagementCase.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《操作系统课件MemorymanagementCase.ppt》由会员分享,可在线阅读,更多相关《操作系统课件MemorymanagementCase.ppt(24页珍藏版)》请在三一办公上搜索。

1、操作系统原理存储器管理案例分析,主讲教师:史广顺,2,段页式结合:Multics系统,段页式结合的实现思想一个逻辑段可能很大,难以全部放在内存中,如果在段中进一步分页,则可以解决这一问题寻址采用“段表页表页面”的方式TLB(16项)中保存的是页表项信息,支持硬件高速缓存地址结构“段地址(18位)页地址(18位)页内偏移(10位)”,地址总线宽度为24位段页式结合的实现过程操作系统查询段表,确定是否需要进行缺段处理如果段存在于内存中,则进一步查询页表,进行缺页处理最终将页面置换到内存中,供进程使用,内存管理实例,3,段页式结合:Intel Pentium,Intel Pentium的段页式特色使

2、用32位地址空间实现纯段式、纯页式、段页式三种管理方式核心管理数据结构:LDT(每个用户程序有一个)和GDT(全局共享一个)寻址方式:“段选择符段寄存器段描述符经映射获得物理地址”,内存管理实例,4,Intel Pentium的寻址方式,Intel Pentium的存储管理方式纯分段式:“段描述符”中“G”位为0,则用20位描述段长度,最大1MB纯分页式:“段描述符”中“Base”域为0,“Limit”域为“1111”二级页表目录:“页表目录(10Bit)页表(10Bit)页表项(12Bit)”,内存管理实例,5,VxWorks系统的内存管理,内存管理实例,6,VxWorks系统的内存管理,嵌

3、入式实时系统的典型内存布局硬件相关内存区:起始地址用来保存硬件相关的信息、初始堆栈等信息操作系统内存区:用来保存操作系统映象、Tornado工具(加载运行目标程序)用户程序内存区:用来保存用户程序映象,实现特定的应用目标VxWorks内存管理机制简介内存管理单位:内存块内存池内存分区系统启动时,创建一个包含系统内存池的系统内存分区用户程序与操作系统处于同一地址空间内,程序设计实现时必须保证内存不越界内存分配与管理机制类似于Minix,采用动态、自由链表管理方法VxWork中的内存分配、回收默认情况下,用户程序申请的内存分配都来自于“System Mem Pool”用户程序也可以创建属于自己的内

4、存分区,这个内存分区可以在System Mem Pool中,也可以在扩充的内存条中,也可以在CPU的RAM板中系统以“块”为单位管理内存,内存的分配采用“动态链表”“最先适配”内存回收时将相邻的空闲内存块合并为可用内存分区此类管理方式不能消除内存外零头,虽然存在影响效率的因素,但是应用环境单一,内存管理实例,7,Windows系统的内存管理,Windows中的内存管理基本概念采用“进程线程”两层机制,其中“进程”只是空壳,而“线程”则是调度和管理单位存储体系的物理层次为“磁盘文件磁盘页面文件物理内存TLB”存储体系的逻辑层次为“线程进程内存管理器分页/非分页管理机制”Professional内

5、存划分(用户2GB,系统2GB),Server则为(用户3GB,系统1GB)Windows中的内存管理机制内存管理器:包含六个运行在核心态的管理组件进程的VAD自平衡二叉树:每个进程都有一个VAD树,用于描述已经分配给线程的虚拟空间系统内存的管理机制:一个非分页缓冲池和多个分页缓冲池,供OS设备驱动程序使用用户内存的管理机制:公共堆分配、默认私有堆分配、私有堆分配、页面文件分配物理内存的管理机制:PFN(页框号数据库)负责记录并维护物理内存页帧信息Windows内存管理机制的认识与理解非常复杂的内存管理体系,复杂到设计者本身都不敢随意更改集成了分页/非分页、工作集、后备存储、TLB、进程/线程

6、模型等所有现代OS概念,内存管理实例,8,Windows内存管理器组件,工作集管理器(MmWorkingSetManager)当空闲区低于某一界限时,便启动所有内存管理策略,例如工作集修整、老化、已修改页面的写回等,最大限度保证系统运行的高效进程/堆栈交换器(KeSwapProcessOrStack)完成进程和内核线程堆栈的换入和换出操作已修改页面写回器(MiModifiedPageWriter)将修改链表上的“脏”页写回到映射文件(后备存储)中映射页面写回器(MiMappedPageWritter)将映射文件中的脏页写回磁盘废弃段线程(MiDereferenceSegmentThread)负

7、责系统高速缓存和页面文件的扩大和缩小零页线程(MmZeroPageThread)将空闲链表中的页面清零,内存管理实例,9,Windows中的内存布局,内存管理实例,在boot.ini中加入3GB标志,10,Windows中的系统地址空间布局,内存管理实例,系统代码包括操作系统映像、HAL和用于引导系统的设备驱动程序系统映射视图用来映射Win32子系统可加载的核心态Win32k.sys,以及它使用的核心态图形驱动程序会话空间用来映射一个用户的会话信息进程页表和页目录描述虚拟地址映射的结构超空间一个特殊区域用来映射进程工作集链表,创建临时映射物理页面,11,Windows中的系统地址空间布局,内存

8、管理实例,系统工作集链表描述系统工作集的工作集链表数据结构系统高速缓存用来映射在系统高速缓存中打开的文件的虚拟空间分页缓冲池可分页系统内存堆。系统PTE系统PTE缓冲池,用来映射系统页面非分页缓冲池不可分页的系统内存堆,12,Windows中的系统地址空间布局,内存管理实例,MmSystemRangeStart系统空间的起始地址MmSystemCacheStartMmSystemCacheEnd系统高速缓存的起始、终止地址MiSystemCacheStartExtraMiSystemCacheEndExtra系统高速缓存扩展(或系统PTE扩展)的起始、终止地址MmPagedPoolStartM

9、mPagedPoolEnd分页缓冲池的起始、终止地址,13,Windows中的系统地址空间布局,内存管理实例,MmNonPagedSystemStart系统PTE的起始地址MmNonPagedPoolStartMmNonPagedPoolEnd非分页缓冲池的起始、终止地址MmNonPagedPoolExpansionStart非分页缓冲池扩展的起始地址MmSystemCacheWorkingSetList系统工作集列表,14,Windows中的用户地址空间布局,内存管理实例,15,Windows中的地址转换机制,内存管理实例,16,Windows中的物理内存管理,内存管理实例,物理页面的状态集

10、合活动(Active)/有效(Valid):处于工作集中过渡(Transition):正在进行内容导入/导出后备(Stand by):不在工作集中,内容未改变,可恢复至工作集,也可直接分配给其他线程修改(Modified):不在工作集中,已改变,可恢复至工作集中,如分配给其他线程则需首先将其写回磁盘修改不写入(Modified no-write):不写回的Modified空闲(Free):该页内容不再需要,可直接覆盖零初始化(Zeroed):该页Free且已被用零进行初始化坏(Bad):该页存在硬件错误,无法被使用物理内存的分配回收和其他管理机制Windows维护各种状态的链表,用于实现快速的

11、物理内存分配,17,Windows中的物理内存管理,内存管理实例,18,Windows中的物理内存管理,内存管理实例,MmZeroedPageListHead,MmFreePageListHead,MmStandbyPageListHead,MmModifiedNoWritePageListHead,MmModifiedPageListHead,MmBadPageListHead,19,Windows中的物理内存管理,内存管理实例,20,Windows中的用户空间内存分配,内存管理实例,每个进程都有一个VAD树Root保存于EPROCESS结构中OS维护着所有的VAD访问内存时需提供访问令牌,

12、只有拥有合法权限的线程才能够访问VAD描述的虚地址空间OS提供了多种用户空间内存分配方式,可根据应用目标灵活选择,21,Windows中的用户空间内存分配,内存管理实例,22,Windows中的用户空间内存分配,内存管理实例,基于“堆”的物理内存分配方法公共堆分配:LocalAlloc、GlobalAlloc缺省进程堆:通过GetProcessHeap函数获得句柄,Heap自建私有堆:通过HeapCreate和HeapDestroy维护多用于小型、私有的用户内存分配以页为单位的虚拟内存分配方法保留内存:应用程序创建虚拟地址空间提交内存:应用程序向创建的虚拟地址空间提交物理页面VirtualAl

13、loc和VirtualAllocEx函数(VAD提供底层支持)适用于管理大型、动态、稀疏的对象数据结构,细化管理存储空间以区域对象(Section Object)进行内存分配也被称为文件映射对象,表示可以被两个或更多进程共享的内存块CreateFileMapping函数用于创建区域对象MapViewOfFie函数用于建立对区域对象的映射,从而实现共享,23,存储管理机制小结,存储管理的实现差别各种存储管理思想都被使用存储管理机制的选择取决于应用环境对存储管理思想和方法的学习机制与策略、算法与优化、软件实现与硬件加速存储管理重要性:决定了所有程序的生存空间存储管理深入思考:底层存储机制决定应用性能,内存管理实例,24,Thanks for your time!Questions&Answers,全文结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号