4 8windows 2003
Download
Skip this Video
Download Presentation
4.8Windows 2003 虚拟存储管理

Loading in 2 Seconds...

play fullscreen
1 / 31

4.8Windows 2003 虚拟存储管理 - PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on

4.8Windows 2003 虚拟存储管理. 4.8.1 进程地址空间布局 4.8.2 用户空间主存分配 4.8.3 主存管理的实现. 4.8.1 主存管理的功能和地址空间布局. 1 主存管理的组成和功能 存储管理系统服务程序 转换无效和访问错误的陷阱处理程序 一组系统线程 · 工作集管理器 · 进程 / 堆栈交换程序 · 已修改页面写入器 · 映射页面写入器 · 废弃段线程 · 零页线程. FFFFFFFFH. 固定页面区 页交换区. C0000000H. 系统存储区. C0000000H. 操作系统驻留区

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 4.8Windows 2003 虚拟存储管理 ' - carl


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
4 8windows 2003
4.8Windows 2003虚拟存储管理

4.8.1进程地址空间布局

4.8.2用户空间主存分配

4.8.3主存管理的实现

4 8 1
4.8.1 主存管理的功能和地址空间布局

1 主存管理的组成和功能

  • 存储管理系统服务程序
  • 转换无效和访问错误的陷阱处理程序
  • 一组系统线程

·工作集管理器

·进程/堆栈交换程序

·已修改页面写入器

·映射页面写入器

·废弃段线程

·零页线程

slide3

FFFFFFFFH

固定页面区

页交换区

C0000000H

系统存储区

C0000000H

操作系统驻留区

(直接映射区)

80000000H

页交换区

用户存储区

00000000H

2进程地址空间布局
4 8 2
4.8.2用户空间主存分配

系统管理应用程序主存有两个数据结构:虚址描述符和区域对象;三种主存管理方法:

  • 虚页主存分配
  • 主存映射文件
  • 主存堆分配
slide5
1 虚址描述符

对每个进程,主存管理器都维护一组VAD ,用来描述进程地址空间哪些虚拟地址已被保留,而哪些没有,这个数据结构叫“虚地址描述符”VAD。

slide6
VAD的使用

•线程首次访问一个地址,主存管理器为此地址的页面创建一个页表项,它找到一个包含被访问地址的VAD,并利用所得信息填充页表项。

•如果访问地址落在VAD覆盖的地址范围外,或所在的地址范围仅被保留而未提交,将产生一次访问违规。

slide7
2 区域对象及作用

“区域对象”(Section object)在Win32子系统中被称为“文件映射对象”,表示可被两个或多个进程所共享的主存块。其作用有:

  • 系统利用区域对象将可执行映象装入主存;
  • 高速缓存管理器利用区域对象访问高速缓存文件中的数据;
  • 使用区域对象将文件映射到进程地址空间,可像访问主存中数组一样访问这个文件,而不是对文件进行读写。
slide8

对象类型

区 域

最大尺寸

页保护限制

盘交换区/映射文件

基本/非基本区域

对象属性

创建区域

打开区域

扩展区域

映射/取消映射视口

查询区域

对象服务

区域对象的结构

slide9
区域对象的使用
  • 一个区域对象代表可由两个或多个进程共享的主存块。
  • 一个进程的线程可创建区域对象,为它起名字,以便其他进程的线程能打开这个区域对象的句柄。
  • 区域对象句柄被打开后,线程就能把这个区域对象映射到自己或另一个进程的虚地址空间中。
slide10
3 应用程序主存管理方法

1)虚页主存分配

系统中使用虚拟主存,分三个阶段:

•保留主存(reserved memory)

•提交主存(committed memory)

•释放主存 (release memory)

slide11
2)主存堆分配
  • 堆(heap)是保留地址空间中一个或多个页组成的区域,并由堆管理器按更小块划分和分配主存的技术。
  • 缺省进程堆。
  • HeapCreate创建私有堆,Heap Destroy 释放私有堆。
  • GetprocessHeap得到指向堆的句柄,
  • HeapAlloc和HeapFree从堆中分配和回收主存块。
slide12
3)主存映射文件(1)

Memory-mapped File允许进程分配一段虚地址空间或某一个盘文件相关联,当把盘文件映射到该地址空间后,多个进程可以方便地访问。主存映射文件用于三种场合:

(1)执行体使用主存映射把可执行文件.exe和动态连接库.dll文件装入主存,节省应用程序启动时间。(2)进程使用主存映射文件存取磁盘文件信息,减少文件I/O和对文件进行缓存。(3)多个进程使用主存映射文件来共享主存中的数据和代码。

slide13
主存映射文件(2)使用步骤

步1使用CreateFile打开文件

步2使用CreateFile Mapping建立文件映射

步3使用MapViewOfFile 读写文件视窗

步4使用OpenFileMapping 打开文件映射对象

步5使用UnmapViewOfFile解除映射

4 8 3
4.8.3主存管理的实现

1进程页表与地址映射

•在x86硬件平台上采用二级页表结构来实现进程的逻辑地址到物理地址的转换。

•32位逻辑地址解释成三个分量,页目录索引(10位)页表页索引(10位)和位置索引(12位),页面大小为4KB。

slide15
2页框号数据库(1)

所有主存物理页框组成了页框数据库(Page Frame Datebase),每个页框占一项,每项称为一个PFN结构(Page Frame Number)。

slide16

前向链接

页表项地址

后向链接

标识 类型 访问计数

初始页表项的内容

页表项的页框号

事件地址

页表项地址

共享计数

标识 类型 访问计数

初始页表项的内容

页表项的页框号

工作集索引

页表项地址

共享计数

标识 类型 访问计数

初始页表项的内容

页表项的页框号

前向链接

页表项地址

后向链接

标识 类型 访问计数

初始页表项的内容

页表项的页框号

零或空闲链表中页面的PFN

正在I/O页面的PFN

工作集中页面的PFN

后备或修改链表中页面的PFN

页框号数据库(2)

3 pfn
页框号数据库(3) PFN可能状态

有效(Vaild)

过渡(transition)

后备(Stand by)

修改(Modified)

修改不写入(modiqied no write)

空闲(free)

零初始化(zeroed)

坏(bad)

slide18

请求零页面错误

从盘或内核读出页(页错误)

备用页

框链表

空闲页

框链表

零初始化线程

进程工作集

缺页错误处理

修改页

写回线程

零页页

框链表

修改页

框链表

页框的状态转换

缩小工作集

页框号数据库(4)

slide19
3 缺页处理(1)

1)无效页处理

(1) 访问一个未知页,其页表项为零,或者页表不存在,线程首次访问一个地址。

(2) 所访问的页没有驻留在主存,而是在磁盘的某个页文件或映像文件中,系统分配一个物理页框,将所需的页从磁盘读出,放入工作集中。

(3)所访问的页在后备链表或更改链表中,将此页移到进程或系统工作集。

(4)访问一个请求零页,给进程工作集添加一个由零初始化的页。

slide20
缺页处理(2)

(5) 对一个只读页执行写操作,访问违约。

(6) 从用户态访问一个只能在核心态下访问的页,访问违约。

(7) 对一个写保护页执行写操作,写违约。

(8) 对一个写时复制的页执行写操作,为进程进行页复制。

(9) 在多处理机系统中,对有效但尚未执行写操作的页执行写操作,将页表项修改位置“1”。

slide21
4原型页表项(1)

当两个进程共享一个物理页框时,主存管理器在进程页表中插入一个称作“原型页表项”prototype PTE的数据结构来间接映射共享的页面。

slide22

有效:

PFN=j

无效:指向原型PTE

PFN

PFN=j

PTE地址

共享计数=2

进程1页目录表

页表

主存

原型页表

页框数据库

PFNj

原型页表项

段结构

有效:

PFN=j

无效:在页文件

有效:

PFN=j

PFN

进程2页目录表

页表

原型页表项(2)

slide23
5 页面淘汰算法与工作集管理
  • 主存管理器在分配页框时,按照以下次序从非空链表中取得页面进行分配:

零页链表->空闲链表->

后备链表->修改链表。

slide24
“修改页写回程序”
  • 零初始化链表,空闲链表和后备链表的页框数低于允许的最小值时,将修改链表中的页面写回磁盘,然后,这些页框可放入后备链表。
  • 当修改链表太大时,把修改链表中的页面写回页文件中。
  • 把修改页写回磁盘后,系统的可用页框还太少,把进程的工作集调整到最小规模,新淘汰的页被放到修改链表或后备链表中。
slide25
6工作集管理(1)

•请页式和页簇化调页技术,

•页簇化策略能减少线程引发的缺页中断次数,减少调页I/O的数量。

•缺省页面读取簇的数量取决于物理主存大小,当主存大于19MB时,代码页簇为8页、数据页簇为4页、其他页簇为8页。

slide26

工作集管理(2)

  • 采用局部FIFO算法。
  • 采用局部淘汰可防止客户进程损失太多主存;
  • 采用FIFO算法可让被淘汰的页在淘汰后在物理主存中停留一段时间,如果马上又用到该页的话,就可很快将该页回收,而无需从磁盘读出。
slide27
工作集管理(3)

•工作集:该进程当前在主存中的页面的集合。

•创建一个进程时,系统为其指定最小工作集和最大工作集,

•系统初始化时,计算进程最小和最大工作集值,当物理主存大于32MB(server大于64MB)时,进程缺省最小工作集为50页,最大工作集为345页。

slide28
工作集管理(4)
  • 进程工作集降到最小后,如果发生缺页中断,且主存并不满,系统会增加该进程的工作集尺寸。
  • 进程工作集升到最大后,如果没有足够主存可用,则该进程每发生一次缺页中断,系统都要从工作集中淘汰掉一页,再调入此次页中断所请求的页。
  • 如果有足够主存可用,系统也允许一个进程的工作集超过它的最大工作集尺寸。
slide29
工作集管理(5)
  • 当物理主存剩余不多时,系统检查每个进程,其当前工作集是否大于其最小工作集,是则淘汰该进程工作集中的一些页,直到空闲主存数量足够或每个进程都达到其最小工作集。
slide30
工作集管理(6)
  • 系统定时从进程中淘汰一个有效页,观察其是否对该页发生缺页中断,以此测试和调整进程当前工作集的合适尺寸。如果进程继续执行,并未对被淘汰的页发生缺页中断,则该进程工作集减1,该页被加到空闲链表中。
slide31
7系统工作集中驻留5种页面
  • 系统高速缓存页面
  • 分页缓冲池
  • Ntoskrnl.exe中可分页代码和数据
  • 设各驱动程序中可分页代码和数据
  • 系统映射视图
ad