复习笔记|第十六章 Windows存储器管理《操作系统原理教程》

发布时间 2023-08-07 14:07:34作者: LateSpring

参考教材:《操作系统原理教程(第4版)》刘美华 翟岩龙著

大纲问题回答(精简版)

1. 两种数据结构:虚拟地址描述符VAD、区域对象,这两种结构各有什么作用?

◆P304
◼ Windows系统采用一棵由虚拟地址描述符(VAD)构成的平衡二叉树来管理进程私有地址空间。一个进程的一组VAD结构构成一棵自平衡二叉树,便于快速查找。
◼ 区域对象(Section Object)
1.虚拟地址描述符VAD
◼ 当线程要求分配一块连续虚存时,系统为它建立一个VAD结构。
◼ VAD结构:被分配的地址域、该域是共享的还是私有的、该域的存取保护以及是否可继承等信息。
◼ 进程页表的构建一直推迟到访问页时才建立。(“懒惰”方式)
image.png
2.区域对象
◼ 区域对象 (section object) 被称为文件映射对象,是一个可被多个进程共享的存储区。
◼ 一个区域对象可被多个进程打开。
◼ 利用区域对象映射磁盘上的文件(包括页文件,可执行文件)。然后访问这个文件就像访问内存中的一个大数组,而不需要读/写操作。
image.png

2. 虚拟内存区域:空闲的、保留的、提交的。

进程私有2G地址空间的地址域可能是空闲的,被保留reserved,被提交committed。
◼被保留:已预留虚存,还没分配物理主存
◼被提交:已分配物理主存或交换区。
分配主存时,可以先保留地址域,后提交物理主存;也允许保留和提交同时实现。
第一阶段只保留地址空间,特别适合线程正在创建大的动态数据结构的情况。

3. 32位逻辑地址,二级页表。页目录表项和页表项具有相同的数据结构,该数据结构包含哪些数据项?进程页表建立的时机。进程的地址转换过程。

⚫ 在32位的地址空间上,允许每个用户进程占有4G的虚存空间。低2GB为进程的私有地址空间,高2GB为进程公用的操作系统空间。
32位的地址被分解为三部分:
image.png
◼ 采用二级页表结构:页目录表、页表
1. 页表/页目录表的结构
x86系统平台
◼ 进程页表的构建一直推迟到访问页时才建立。( “懒惰”方式)
image.png

4. 管理物理内存的数据结构:页框数据库。页框的8种状态,页框的状态转换图16.9。

页框数据库PFN
◼ 页框数据库是一个数组,其索引号从0到主存的页框总数-1。
◼ 内存页框有八种状态:
1. 活动(有效):是进程工作集的一部分
2. 转移:说明一个页框正处于I/O操作进行中
3. 备用:已不属于工作集,页表项仍然指向该页,但被标记为正在转移的无效PTE。
4. 更改:已不属于工作集,修改未写磁盘,页表项仍指向该页,被标记为正在转移的无效PTE。
5. 更改不写入:更改但不写入磁盘
6. 空闲:不属于任何一个工作集
7. 零初始化:清零的空闲页框
8. 坏页框
IMG_20221127_223823_edit_3657630901139797.jpg
image.png

5. 原型页表,区域对象的页表。虚拟页式中,采用原型页表实现多进程共享页。

P313
当一个页框被两个或多个进程共享时,存储器管理器依靠一个称为“原型页表”(Prototype PTE)的页表来记录这些被共享的页框。
区域对象有原型页表
当进程访问区域对象中的页时,利用原型页表填写进程页表。

6. Windows采用的页替换策略是什么?

① 调页策略:将所缺的页及其前后的一些页装入主存。局部性原理。
② 置页策略:放到物理主存。
③ 置换策略:在多处理器系统中,采用了局部先进先出置换策略。而在单处理器系统中,更接近于最近最久未使用策略(LRU,也称为“时钟页面置换算法”)。

大纲问题回答

1. 两种数据结构:虚拟地址描述符VAD、区域对象,这两种结构各有什么作用?(3)

VAD:线程要求分配一块连续的虚存时,系统并不立即为其建立页表,而是先为其建立一个 VAD 结构,记录被分配的地址域、域的共享/私有、域的存储保护和是否可继承等信息;
存储管理器通过维护一组 VAD 结构,记录每个进程地址空间的状态。一个进程的一组 VAD 结构构成一棵自平衡二叉树,以便快速查找。
区域对象:即文件映射对象,是一个可以被多进程共享的存储区;一个区域对象可被多个进程打开;使用区域对象,访问文件就像访问主存上的一个数组一样,无需文件 I/O 操作;
区域对象的作用为:
①可将一个可执行文件装入主存;
** ②可将一个大于进程地址空间的文件映射到进程地址空间;
③可被缓存管理器用于访问被缓存文件中的数据**;

实现文件映射(2)的过程:
①创建或打开一个被映射的磁盘文件
②创建一个与被映射文件大小相等的区域对象
③将区域对象的一个视口映射到进程保留的某部分地址空间,之后进程就可以像访问主存一样访问文件。当进程访问一个无效的页时,引起缺页中断,存储器管理器会自动地将这个页从映射文件调入主存。
④访问完成,解除被映射的这个视口,并将修改部分写回文件。
⑤若还需要访问文件的其他部分,可再映射文件的另一个视口,否则关闭区域对象和磁盘文件,结束映射过程

◆P304
◼ Windows系统采用一棵由虚拟地址描述符(VAD)构成的平衡二叉树来管理进程私有地址空间。一个进程的一组VAD结构构成一棵自平衡二叉树,便于快速查找。
◼ 区域对象(Section Object)
1.虚拟地址描述符VAD
◼ 当线程要求分配一块连续虚存时,系统为它建立一个VAD结构。
◼ VAD结构:被分配的地址域、该域是共享的还是私有的、该域的存取保护以及是否可继承等信息。
◼ 进程页表的构建一直推迟到访问页时才建立。( “懒惰”方式)
image.png
2.区域对象
◼ 区域对象 (section object) 被称为文件映射对象,是一个可被多个进程共享的存储区。
◼ 一个区域对象可被多个进程打开。
◼ 利用区域对象映射磁盘上的文件(包括页文件,可执行文件)。然后访问这个文件就像访问内存中的一个大数组,而不需要读/写操作。
image.png

2. 虚拟内存区域:空闲的、保留的、提交的。(4)

进程私有2G地址空间的地址域可能是空闲的,被保留reserved,被提交committed。
空闲的:未使用的虚存区域;
保留的:已预留虚存,未分配物理主存;
提交的:已分配物理主存或交换区;
分配主存时,可以先保留地址域,后提交物理主存;也允许保留和提交同时实现。
第一阶段只保留地址空间,特别适合线程正在创建大的动态数据结构的情况。

3. 32位逻辑地址,二级页表。页目录表项和页表项具有相同的数据结构,该数据结构包含哪些数据项?进程页表建立的时机。进程的地址转换过程。

数据项包括:页框号、全局符位、大页位、修改位、访问位、禁用高速缓存标志、写直通位、所有者位、页的写保护位、有效位;
进程的页表在访问页时才建立(同 Linux),称为懒惰方式;
虚地址变换的过程就是标准的二级页表虚地址变换的过程:先用页目录索引找页表地址,再用页表索引结合页表地址找页框地址,最后用页内地址结合页框地址计算物理地址;最终再访问物理主存中的代码或数据页;

⚫ 在32位的地址空间上,允许每个用户进程占有4G的虚存空间。低2GB为进程的私有地址空间,高2GB为进程公用的操作系统空间。
32位的地址被分解为三部分:
image.png
◼ 采用二级页表结构:页目录表、页表
1. 页表/页目录表的结构
x86系统平台
◼ 进程页表的构建一直推迟到访问页时才建立。( “懒惰”方式)
image.png

4. 管理物理内存的数据结构:页框数据库。页框的8种状态:活动、转换、备用、更改、更改不写入、空闲、零初始化、坏,页框的状态转换图16.9。(2)

页框数据库PFN
页框数据库是一个数组,其索引号从0到主存的页框总数-1
◼ 内存页框有八种状态:
1. 活动(有效):是进程工作集的一部分
2. 转移:说明一个页框正处于I/O操作进行中
3. 备用:已不属于工作集,页表项仍然指向该页,但被标记为正在转移的无效PTE。
4. 更改:已不属于工作集,修改未写磁盘,页表项仍指向该页,被标记为正在转移的无效PTE。
5. 更改不写入:更改但不写入磁盘
6. 空闲:不属于任何一个工作集
7. 零初始化:清零的空闲页框
8. 坏页框
IMG_20221127_223823_edit_3657630901139797.jpg
image.png

5. 原型页表,区域对象的页表。虚拟页式中,采用原型页表实现多进程共享页。(5)

原型页表区域对象的页表,用于记录被共享的页框
进程访问区域对象中的页(即共享一个页)时,需要使用原型页表项并将其信息填写到进程的页表中

P313
当一个页框被两个或多个进程共享时,存储器管理器依靠一个称为“原型页表”(Prototype PTE)的页表来记录这些被共享的页框。
区域对象有原型页表
当进程访问区域对象中的页时,利用原型页表填写进程页表。

6. Windows采用的页替换策略是什么?(4)

在多处理器系统中,采用了局部先进先出置换策略
在单处理器系统中,更接近于最近最久未使用策略(LRU,也称为“时钟页面置换算法”)。

① 调页策略:将所缺的页及其前后的一些页装入主存。局部性原理。
② 置页策略:放到物理主存。
③ 置换策略:在多处理器系统中,采用了局部先进先出置换策略。而在单处理器系统中,更接近于最近最久未使用策略(LRU,也称为“时钟页面置换算法”)。