第2章 内存管理:2.1 虚拟内存抽象模型:

本文介绍了内存管理子系统的功能,包括大地址空间、保护、内存映射等,并详细解释了虚拟内存抽象模型,涉及页表机制、请求调页、交换算法、共享虚拟内存等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 内存管理子系统还提供以下功能:

• 大地址空间

• 保护

• 内存映射

• 公平物理内存分配

• 共享虚拟内存

2.1 虚拟内存抽象模型:

在虚拟内存系统中以上所有的地址都是虚拟地址而不是物理地址。处理器基于由操作系
统维护的一组表中的信息,将虚拟地址转换成物理地址。

为了使这种变换容易一些,虚拟内存和物理内存都被分为合适大小的块叫做“页( p a g e )”

这些页中每一个都有一个唯一的号码:页帧号(Page Frame Number, PFN)。

一个虚拟地址
由两部分组成:一个偏移和一个虚拟页帧号。如果页大小是4 K B字节,虚拟地址的11∶0位包
含偏移,1 2位及高位是虚拟页帧号。每当处理器面临一个虚拟地址时,它必须析取出偏移和
虚拟页帧号。处理器必须将虚拟页帧号转换成物理的页帧号,然后在该物理页中正确的偏移
位置上进行访问。为了完成这些处理器要使用页表。

理论上的页表中每一
项包含下列信息:
• 有效标志,用来指示该页表项是否有效。
• 本项所描述的物理页帧号。
• 访问控制信息

处理器使用虚拟页帧号作为进程页表的索引来检索它的页表项。如果该偏移处页表项有
效,处理器将从该项取出物理页帧号。如果该页表项无效,说明处理器访问了虚拟内存中不
存在的区域。在这种情况下,处理器不能解析该地址,并且必须把控制传给操作系统来解决
问题。
处理器如何通知操作系统一个正确的进程试图访问一个没有有效转换的虚拟地址,这是
依处理器不同而不同的。无论如何处理器能够处理它,这被称作“页故障(page fault)”。操作
系统被告知故障的虚拟地址和故障原因。
如果访问的是有效的页表项,处理器取出物理页帧号,并将它乘以页的大小以得到物理
内存中该页的基地址。最后,处理器将偏移加到所需的指令或数据的地址。

2.1.1 请求调页:

因为物理内存比虚拟内存小得多,操作系统必须小心以高效地利用物理内存。一种节约
物理内存的方法是只装载被执行的程序当前正在使用的虚拟页

只在被访问时把虚拟页装入内存的技巧叫请
求调页。

2.1.2 交换:

如果一个进程想将一个虚拟页装入物理内存,而又没有可使用的空闲物理页,操作系统
就必须淘汰物理内存中的其他页来为此页腾出空间。

“脏( d i r t y )”页/交换文件/“抖动”/“工作集(working set)”

一个有效的交换算法将确保所有进程的工作集都在物理内存中L i n u x使用“最近最少使用(Least Recently Used, LRU)”页面调度技巧来公平地选择哪个页可以从系统中删除。这种设计中系统中每个页都有一个“年龄”,年龄随页面被访问而改变。
页面被访问越多它越年轻;被访问越少越年老也就越陈旧。

2.1.3 共享虚拟内存:

为了使两个进程共享—物理页内存,该物理页帧号必须在它们两个的页表中都出现。

2.1.4 物理寻址模式和虚拟寻址模式:

物理寻址模式不需要页表,在这种模式下处理器不会进行任何地址转换

2.1.5 访问控制:

页表项中也包含访问控制信息。因为处理器要使用页表项来把进程虚拟地址映射到物理地
址,它可以方便地使用访问控制信息来检查并保证进程没有以其不应该采用的方式访问内存。

访问控制信息保留在P T E (页表项)中

Alpha AXP 的
P T E。其各字段意义如下:

• V 有效性。如果置位则P T E有效。
• FOE 执行时故障,当试图执行本页中的指令时,处理器报告页故障并将控制传给操作
系统。
• FOW 写时故障,当试图写本页时发出如上页故障。
• FOR 读时故障,当试图读本页时发出如上页故障。
• ASM 地址空间匹配,当操作系统想要仅清除转换缓冲区中一些项时用到。
• KRE 运行于核心态的代码可以读此页。
• URE 运行于用户态的代码可以读此页。
• GH 粒度暗示,当用一个而不是多个转换缓冲区项映射一整块时用到。
• KWE 运行于核心态的代码可以写此页。
• UWE 运行于用户态的代码可以写此页。
• PFN 页帧号。对于V位置位的P T E,本字段包括物理页帧号;对于无效P T E,如果本字
段非0,则包含本页在交换文件中的位置的信息。
下面两个位在L i n u x中被定义并使用:
• _PA G E _ D I RTY 如果置位,此页需要被写到交换文件中。
• _PAGE_ACCESSED Linux用来标识一个页已经被访问过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值