王雷北京航空航天大学计算机系教案资料

上传人:yuzo****123 文档编号:137198057 上传时间:2020-07-06 格式:PPT 页数:96 大小:550.50KB
返回 下载 相关 举报
王雷北京航空航天大学计算机系教案资料_第1页
第1页 / 共96页
王雷北京航空航天大学计算机系教案资料_第2页
第2页 / 共96页
王雷北京航空航天大学计算机系教案资料_第3页
第3页 / 共96页
王雷北京航空航天大学计算机系教案资料_第4页
第4页 / 共96页
王雷北京航空航天大学计算机系教案资料_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《王雷北京航空航天大学计算机系教案资料》由会员分享,可在线阅读,更多相关《王雷北京航空航天大学计算机系教案资料(96页珍藏版)》请在金锄头文库上搜索。

1、1,存储管理,王 雷 北京航空航天大学计算机系,2,内容,Windows 2000/XP内存管理 Windows 2000/XP外存管理 Windows 2000/XP高速缓存管理,3,工具, Nt Nt资源包 Platform SDK NT DDK,4,调试工具,CDB.exe i386kd.exe windbg.exe softice(),6,配置,配置宿主机调试环境 双机串口通讯连接 目标机的WINDOWS启动时加上/debug参数 安装与目标机系统相匹配的Symbol文件,7,kd !processfields,Pcb: 0 x0 ExitStatus: 0 x68 LockEvent

2、: 0 x6c LockCount: 0 x7c CreateTime: 0 x80 ExitTime: 0 x88 LockOwner: 0 x90 UniqueProcessId: 0 x94 ActiveProcessLinks: 0 x98 QuotaPeakPoolUsage0: 0 xa0 QuotaPoolUsage0: 0 xa8 PagefileUsage: 0 xb0 CommitCharge: 0 xb4 PeakPagefileUsage: 0 xb8 PeakVirtualSize: 0 xbc VirtualSize: 0 xc0 Vm: 0 xc8,8,LastP

3、rotoPteFault: 0 xf8 DebugPort: 0 xfc ExceptionPort: 0 x100 ObjectTable: 0 x104 Token: 0 x108 WorkingSetLock: 0 x10c WorkingSetPage: 0 x12c ProcessOutswapEnabled: 0 x130 ProcessOutswapped: 0 x131 AddressSpaceInitialized: 0 x132 AddressSpaceDeleted: 0 x133 AddressCreationLock: 0 x134 ForkInProgress: 0

4、 x158 VmOperation: 0 x15c VmOperationEvent: 0 x160 PageDirectoryPte: 0 x164 LastFaultCount: 0 x168 VadRoot: 0 x170 VadHint: 0 x174 CloneRoot: 0 x178 NumberOfPrivatePages: 0 x17c NumberOfLockedPages: 0 x180 ForkWasSuccessful: 0 x15e ExitProcessCalled: 0 x186 CreateProcessReported: 0 x187,SectionHandl

5、e: 0 x188 Peb: 0 x18c SectionBaseAddress: 0 x190 QuotaBlock: 0 x194 LastThreadExitStatus: 0 x198 WorkingSetWatch: 0 x19c InheritedFromUniqueProcessId: 0 x1a4 GrantedAccess: 0 x1a8,9,kd !process 0,PROCESS 80147120 Cid: 0000 Peb: 00000000 ParentCid: 0000 DirBase: 00030000 ObjectTable: 80731e88 TableSi

6、ze: 254. Image: Idle VadRoot 0 Clone 0 Private 0. Modified 0. Locked 0. 801472DC MutantState Locked OwningThread 0 Process Lock Owned by Thread 0 Token e1000750 ElapsedTime 7:41:18.0524 UserTime 0:00:00.0000 KernelTime 9:34:32.0780 QuotaPoolUsagePagedPool 0 QuotaPoolUsageNonPagedPool 0 Working Set S

7、izes (now,min,max) (4, 50, 450) (16KB, 200KB, 1800KB) PeakWorkingSetSize 4 VirtualSize 0 Mb PeakVirtualSize 0 Mb PageFaultCount 1 MemoryPriority BACKGROUND BasePriority 0 CommitCharge 0 THREAD 80147320 Cid 0.0 Teb: 00000000 Win32Thread: 00000000 RUNNING,10,内存管理,组成部分 地址空间的布局 地址转换机制 内存分配方式 缺页处理 工作集 物理

8、内存管理 其他内存相关机制,11,组成部分,一组执行体系统服务程序,用于虚拟内存的分配、回收和管理。大多数这些服务都是通过Win32 API 或内核态的设备驱动程序接口形式出现。 一个转换无效和访问错误陷阱处理程序用于解决硬件监测到的内存管理异常,并代表进程将虚拟页面装入内存。 六个的关键组件,12,工作集管理器(16优先):当空闲内存低于某一界限时,便启动所有的内存管理策略,如:工作集的修整、老化和已修改页面的写入等。 进程/堆栈交换程序(23优先):完成进程和内核线程堆栈的换入和换出操作。 已修改页面写入器(17优先):将修改链表上的“脏”页写回到适当的页文件。,13,映射页面写入器(17

9、优先):将映射文件中脏页写回磁盘。 废弃段线程(18优先):负责系统高速缓存和页面文件的扩大和缩小。 零页线程(0优先):将空闲链表中的页面清零。,14,内存布局,15,16,系统代码 包括操作系统映像、HAL和用于引导系统的设备驱动程序。 系统映射视图 用来映射Win32子系统可加载的核心态部分Win32k.sys,以及它使用的核心态图形驱动程序。 会话空间 用来映射一个用户的会话信息。 进程页表和页目录 描述虚拟地址映射的结构。 超空间 一个特殊的区域用来映射进程工作集链表,并为创建临时映射物理页面。,17,系统工作集链表 描述系统工作集的工作集链表数据结构。 系统高速缓存 用来映射在系统

10、高速缓存中打开的文件的虚拟空间。 分页缓冲池 可分页系统内存堆。 系统页表项 系统PTE缓冲池,用来映射系统页面。 非分页缓冲池 不可分页的系统内存堆。,18,地址变换过程,19,进程,20,快表TLB,21,内存分配方式,以页单位的虚拟内存函数(Virtualxxx), 保留与提交 内存映射文件函数(CreateFileMapping, MapViewOfFile), 堆函数(Heapxxx 和早期的接口Localxxx 和Globalxxx)。,22,虚拟地址描述符,23,内存映射文件,加载和执行.exe和dll文件,这可以节省应用程序启动所需的时间; 访问磁盘上的数据文件,这可以减少文件

11、I/O,并且不必对文件进行缓存; 实现多个进程间的数据共享。,24,区域对象(section object),25,26,建立过程,打开文件,区域对象可以连接到已打开的磁盘文件(映射文件),或是已提交的内存(提供共享内存)。 可以调用Win32函数CreateFileMapping创建区域对象,其参数包括映射到区域对象的文件句柄(或是INVALID_HANDLE_VALUE表示页文件支持区域)。如果区域有名字,其它进程可以用OpenFileMapping打开它。 设备驱动程序也可以使用ZwOpenSection, ZwMapViewOfSection, 和ZwUnmapViewOfSectio

12、n函数操纵区域对象。 MapViewOfFile函数映射区域对象的一部分,并指定映射范围。,27,堆函数,缺省进程堆,通常是1MB大小 HeapCreate函数创建另外的私有堆,HeapDestroy删除。 串行化选项。,28,系统内存分配,非分页缓冲池 由系统虚拟地址组成,它们长期驻留在物理内存中,在任何时候都可以被访问到(从任何IRQL级和任何进程上下文),而不会发生页错误。需要未分页缓冲池的一个原因是:页错误不能满足在DPC/调度级或更高。 分页缓冲池 是系统可以被分页和分出系统的空间中虚拟内存的一个区域。不必从DPC/调度级或更高一级访问内存的设备驱动程序可以使用分页缓冲池。它从任何进

13、程上下文都是可访问的。,29,系统有两种非分页缓冲池:一种在一般情况下使用,另一种小型的(4页)缓冲池在非分页缓冲池已满并且调用者不能允许分配失败时,紧急使用。 单处理机系统有三个分页缓冲池;多处理机系统有五个。 后备链表(Look-Aside Lists)。 Ex,30,缺页处理,无效的页表项 页文件 请求零页 转换 未知 原型页表项,31,32,页面调入I/O,向文件(页或映射文件)发出读操作来解决缺页问题 同步的,33,问题,同一进程中的另一线程,或一个其它的进程,都可能由于一个相同的页面导致缺页错误。(称为“冲突页错误”,将在下节中介绍)。 页面可能已经从虚拟地址空间中被删除(并重新映

14、射)。 页面的保护限制可能发生了变化。 错误可能是由一个原型页表项引发的,并且这个原型页表项所映射的页面可能并不在工作集中。,34,冲突页错误(collided page fault),页面调度程序检测 等待操作 I/O操作完成后,所有等待该事件的线程都会被唤醒 第一个获得页框号数据库锁的线程负责执行页面调入完成操作。,35,页文件,最多16个页文件 以非压缩的形式被创建,36,工作集,进程工作集 系统工作集,37,系统工作集,系统高速缓存页面 分页缓冲池 Ntoskrnl.exe中可分页的代码和数据 设备驱动程序中可分页的代码和数据 系统映射视图(部分映射在0 xA0000000处,如Win

15、32k.sys),38,取页策略:内存管理器利用请求式页面调度算法以及簇方式将页面装入内存 置页策略:选择页框应使CPU内存高速缓存不必要的震荡最小 换页策略 在多处理器系统中,Windows 2000/XP采用了局部先进先出置换策略。而在单处理器系统中,Windows 2000/XP的实现更接近于最近最少使用策略(LRU)(称为“轮转算法”,用于大多数版本的UNIX)。,39,物理内存管理,活动(又称有效) 过渡(Transition) 后备(stand by) 修改 修改不写入 空闲 零初始化(zeroed) 坏,40,41,物理内存管理,42,43,锁内存,设备驱动程序可以调用核心态函数MmProbeAndLockPages, MmLock PagableCodeSection, MmLockPagableDataSection, 或者 MmLockPagableSection ByHandle。 Win32应用程序可以调用VirtualLock函数锁住进程工作集中的页面。,44,内存保护机制,所有系统范围内核心态组件使用的数据结构和内存缓冲池只能在核心态下访问。 每个进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号