




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.7Windows2003虚拟存储管理,6.7.1进程地址空间布局6.7.2用户空间存储分配6.7.3存储管理的实现,6.7.1进程地址空间布局,一维线性地址空间(可能有空洞),占用,占用,占用,占用,进程虚拟地址空间(2G-3G):,管理方式:虚拟页式二级页表,占用,dirpageoffset,31222112110,逻辑地址:一维,页目录号,页号,页内位移,6.7.2用户空间存储分配,内外存储管理数据结构:虚址描述符;区域对象;页文件;三种存储管理:虚页存储分配;主存映射文件;虚存堆分配;,1.虚址描述符,对每个进程,主存管理器都维护一组VAD,用来描述进程地址空间哪些虚拟地址已被保留(提交),而哪些没有,这个数据结构叫“虚地址描述符”。进程的所有VAD组织成平衡二叉树,以方便检索。,1.虚址描述符VAD,范围:200000002000FFF保护:读/写提交:是,范围:000020000000FFF保护:只读提交:否,范围:4E0000004F000000保护:写复制提交:是,范围:3200000033000000保护:只读提交:是,范围:7AAA00007AAA00FF保护:读/写提交:否,VAD的使用,保留(reserve):检查地址冲突,建立VAD;提交(commit):确认,分配交换区页面,建立并填写页表项;访问:检查是否在VAD范围之内且已经被提交:在VAD之外:产生一次访问违规;在VAD之内,但未提交,隐式提交;在VAD之内,已提交,不在内存,分配页框。,2.区域对象及作用,“区域对象”(Sectionobject)在Win32子系统中被称为“文件映射对象”,表示可被两个或多个进程所共享的主存块。其作用有:系统利用区域对象将可执行映象装入主存;使用区域对象将文件映射到进程地址空间,可像访问主存中数组一样访问这个文件(可以是很大的文件,通过视口移动访问所需部分)。,区域对象的结构,区域对象的使用,一个区域对象代表可由两个或多个进程共享的主存块。一个进程的线程可创建区域对象,为它起名字,以便其他进程的线程能打开这个区域对象。区域对象被打开后,线程就能把这个区域对象映射到自己的虚地址空间中。,区域对象视口(view)(共享内存),P1的虚拟空间:,P2的虚拟空间:,区域,view,view1,view2,物理内存(不必连续),区域对象视口(view)(访问大对象),虚存4GB,区域对象264B,视口,滑动窗口,分段映射,进程空间,页文件(pagefile),保存交换到磁盘上的页面;共16个页文件,页地址(文件内位移)rp保护文件号v,3112111095410,不在内存页面的页表项(PTE),问题:页表项不能同时记录内存页框号和外存块号,页框号其它标志位,3112111095410,在内存页面的页表项(PTE),3.应用程序虚存管理方法,1)虚页主存分配进程中使用虚拟主存,分三个阶段:保留虚存(reservememory)线程指定一段虚拟地址,使其它线程不能使用这段虚地址.提交虚存(commitmemory)为已保留的虚地址空间分配交换空间.执行时,发生缺页分配物理页框.释放虚存(releasememory)释放物理主存和交换空间.,2)主存堆分配,堆(heap)是保留地址空间中一个或多个页组成的区域,由堆管理器管理。进程堆:每个进程一个(默认1M,可扩)。线程可建立私用堆:HeapCreate:创建私有堆;HeapDestroy:释放私有堆;堆使用:GetprocessHeap:得到指向堆的句柄;HeapAlloc:从堆中申请主存块;HeapFree:向堆中释放主存块。,3)主存映射文件(1),Memory-mappedFile把盘文件映射到进程的一段虚地址空间。单个进程使用主存映射文件,以访问内存方式访问文件,随机访问效率高,提高文件访问速度;多个进程使用主存映射文件可以共享主存中的数据和代码。,主存映射文件(例子),#includewindows.h#includestdio.hintmain()/文件对象TCHARSTR=helloworld!;HANDLEhFile=CreateFile(E:test.txt,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);/映射对象HANDLEhFileMapping=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,NULL);/建立视口TCHAR*pbFile1=(TCHAR*)MapViewOfFile(hFileMapping,FILE_MAP_WRITE,0,0,0);TCHAR*pbFile2=(TCHAR*)MapViewOfFile(hFileMapping,FILE_MAP_WRITE,0,0,0);/输出字符串的内容,可以看到的是,把整个文件当作字符串输出了。/当然,如果文件中含有0的字符,你看不到全部文件内容的输出。,主存映射文件(例子),/两个输出的结果是一样的printf(%sn,pbFile1);printf(%sn,pbFile2);/下面的操作是往这个pbFile1指向的地址写入点自定义的内容,/然后比较pbFile2指向地址的值是否相应改变了。memcpy(pbFile1,STR,strlen(STR);printf(%sn,pbFile1);printf(%sn,pbFile2);/取消视窗,关闭映射,关闭文件UnmapViewOfFile(pbFile1);UnmapViewOfFile(pbFile2);CloseHandle(hFileMapping);CloseHandle(hFile);return0;,6.7.3存储管理的实现,1.进程页表与地址映射在x86硬件平台上采用二级页表结构来实现进程的逻辑地址到物理地址的转换。32位逻辑地址解释成三个分量,页目录索引(10位)、页表页索引(10位)和页内位移(12位),页面大小为4KB。,2.页框号数据库(1),所有主存物理页框组成了页框数据库(PageFrameDatabase)每个页框占一项,每项称为一个PFN结构(PageFrameNumber)。问题:PFN和页框之间对应,页框号数据库(2),页框号数据库(3)PFN可能状态,有效(Valid):属于进程工作集,有一个进程页表项指向它;过渡(transition):不属于工作集,但内容未破坏,或正进行IO传输;后备(Standby):曾被进程使用,内容未修改,但已从进程工作集中删除,页表项仍指向它,但标记“无效”和处于“过渡”状态;修改(Modified):和“后备”状态相同,但页已被修改,且未写回磁盘;修改不写入(modifiednowrite):同“修改”状态,但已标记不写回磁盘;空闲(free):该页空闲,不属于任何进程,未清零零初始化(zeroed):空闲,且已清零;坏(bad):发生校验错的页框;,页框号数据库(4),有效后备有效有效零页修改空闲,有效:页框号无效:磁盘地址无效(迁移):页框号,有效:页框号无效:磁盘地址有效:页框号,有效:页框号无效(迁移):页框号无效:磁盘地址,原型页表项,P1页表:,P2页表:,P3页表:,页框号数据库,3.页访问处理(1),(1)线程首次访问一个地址,系统在该进程VAD树中查找包含该地址的VAD,创建页表项。如地址没落在VAD所覆盖地址域中,访问违约。(2)所访问的页没有驻留在主存,而是在磁盘的某个页文件中,系统分配一个物理页框,将所需的页从磁盘读出,放入工作集中。(3)所访问的页在“后备链表”或“更改链表”中,将此页移到进程工作集。(4)访问一个请求零页,给进程工作集添加一个由零初始化的页。,3.页访问处理(2),(5)对一个只读页执行写操作,访问违约。(6)在用户态访问一个只能在核心态下访问的页,访问违约。(7)对一个写保护页执行写操作,写违约。(8)对一个写时复制的页执行写操作,为进程进行页复制。,4.原型页表项与页共享(1),当两个进程共享一个物理页框时,主存管理器在进程页表与页框之间插入一个称作“原型页表项”prototypePTE的数据结构来间接映射共享的页面。,原型页表项(2),5.页框和工作集管理(1),请页式和页簇化调页技术;簇大小取决于物理主存大小,当主存大于19MB时,代码页簇为8页、数据页簇为4页、其他页簇为8页;页簇化策略能减少缺页中断次数,相当于预调。,采用局部FIFO页面置换算法;防止客户进程损失太多主存;被淘汰的页在淘汰后在物理主存中停留一段时间,如果马上又用到该页的话,就可很快将该页回收,而无需从磁盘读出。,页框和工作集管理(2),页框和工作集管理(3),工作集:进程当前在主存中的页面的集合。创建一个进程时,系统为其指定最小工作集和最大工作集,系统初始化时,计算进程最小和最大工作集值,当物理主存大于32MB(server大于64MB)时,进程缺省最小工作集为50页,最大工作集为345页。,5.页框和工作集管理(4),主存管理器在分配页框时,按照以下次序从非空链表中取得页面进行分配:零页链表空闲链表后备链表修改链表。,页框和工作集管理(5),零页链表,空闲链表和后备链表的页框数低于允许的最小值时,将修改链表中的页面写回磁盘,然后,这些页框可放入后备链表。当修改链表太大时,把修改链表中的页面写回页文件中。把修改页写回磁盘后,系统的可用页框还太少,把进程的工作集调整到最小规模,新淘汰的页被放到修改链表或后备链表中。,页框和工作集管理(6),进程工作集降到最小后,如果发生缺页中断,且主存并不满,系统会增加该进程的工作集尺寸。进程工作集升到最大后,如果没有足够主存可用,则该进程每发生一次缺页中断,系统都要从工作集中淘汰掉一页,再调入请求页。如果有足够主存可用,系统也允许一个进程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆市荣昌区人力资源和社会保障局招聘公益性岗位人员1人考试备考题库及答案解析
- 2026瑞昌国际控股校园招聘备考考试题库附答案解析
- 2026中铁北京局招聘备考考试题库附答案解析
- 基于知识图谱的问答-洞察及研究
- 哲学光芒专业引领
- 赞颂母爱之光
- 资本逻辑与性别差异-洞察及研究
- 人工智能导论第4版-课件 第8章-进化计算
- 手指谣大西瓜课件
- 统编版五年级语文上册新课标情境式命题真题卷(二)(含答案)
- 食堂家长开放日活动方案及流程
- 网络传播概论(第5版)课件 第三章 网络传播形式的流变
- 三级安全教育试题及答案(包含公司级、部门级、班组级)
- 【市质检】福州市2024-2025学年高三年级第一次质量检测 地理试卷(含答案)
- 四川蜀道铁路运营管理集团行测笔试题库
- JB T 5496-2015 振动筛制造技术条件
- HGT 4686-2014 液氨泄漏的处理处置方法
- 《答谢中书书》教学设计
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 愚公移山说课稿讲解课件
- 《城市的起源与发展》课件
评论
0/150
提交评论