第9章 虚拟内存

虚拟内存是一种现代系统用于高效内存管理和保护的抽象技术。它将主存视为磁盘上的高速缓存,通过地址翻译将虚拟地址转换为物理地址。虚拟内存提供了独立的地址空间给每个进程,简化了内存管理并提供了内存保护。通过页表和缺页异常处理,系统能够在磁盘和内存之间动态调度数据。此外,虚拟内存支持内存映射,动态内存分配以及垃圾收集,确保资源的有效利用。
摘要由CSDN通过智能技术生成

https://zhuanlan.zhihu.com/p/96098896
目的:
 为了更加有效地管理内存并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟内存。
能力:
1、将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效使用了主存。
2、为每个进程提供了一致的地址空间,从而简化了内存管理
3、它保护了每个进程的地址空间不被其他进程破坏。

9.1物理和虚拟寻址

 物理寻址:主存被组织成一个由M个连续字节大小的单元组成的数组。每字节都有一个唯一的物理地址。
在这里插入图片描述
 虚拟寻址:CPU通过生成一个虚拟地址来访问主存,这个虚拟地址被送到内存之前先转换(地址翻译)成适当的物理地址,CPU芯片上叫做内存管理单元(MMU)的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址。查询表由操作系统管理。
在这里插入图片描述

9.2 地址空间

 虚拟地址空间:{0,1,2……,N-1},CPU从一个有N=2^n个地址的地址空间生成虚拟地址,叫作n为地址空间。现代系统通常支持32位或者64位虚拟地址空间。
 物理地址空间:{0,1,2……,M-1}对应于系统中物理内存的M个字节
 主存中每字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。

9.3虚拟内存作为缓存的工具

 虚拟内存被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每字节都有有一个唯一的虚拟地址。
 上下层传输单元(块):磁盘(较低层)上的数据被分割成块,这些块作为磁盘和主存之间的传输单元。VM系统通过将虚拟内存分割为称为虚拟页的大小固定的块,物理内存被分割为物理页。大小都为P字节。

 虚拟页中情况分类:
1、未分配(到虚拟页)的:还未分配或者创建的页,没有数据相关联,不占用磁盘空间。
2、缓存(到物理页的)的:已缓存再物理内存中的已分配页。
3、已分配、未缓存的:未缓存再物理内存中的已分配页
在这里插入图片描述
9.3.1DRAM缓存的组织结构
 DRAM和SRAM:
●DRAM表示虚拟内存系统的缓存,即磁盘和内存的缓存。不命中处罚更大(磁盘比DRAM慢10万倍),所以对DRAM缓存使用了更精密复杂的算法。
●SRAM缓存表示CPU与主存之间的L1L2L3高速缓存。

9.3.2页表
 与操作系统软件、MMU中的地址翻译硬件联合提供:地址翻译硬件从虚拟页地址定位PTE,判断一个虚拟页是否缓存在DRAM中,如果是,确定在哪个地方。如果否,判断虚拟页在磁盘哪个位置,从磁盘复制到DRAM。
 内容:页表是页表条目(PTE)的数组虚拟地址空间的每个页在页表中一个固定偏移量处都有一个PTE,每个PTE由一个有效位和一个n位地址字段组成。分为三种情况:
1、已缓存
有效位置1,地址为物理页在主存的起始位置
2、未分配
有效位置0,地址为空
3、已分配未缓存
有效位置0,地址为虚拟页在磁盘上的起始位置
在这里插入图片描述
9.3.3页命中
 CPU想要读VP2虚拟内存中的字时:地址翻译硬件将虚拟地址作为索引来定位PTE ,并从内存中读取PTE,通过有效位和地址来判断
在这里插入图片描述
9.3.4 缺页
 概念:DRAM缓存不命中的情况称为缺页
 应对:
1、触发缺页异常,调用异常处理程序
2、异常处理程序选择一个牺牲页,将其替换
3、重启导致缺页的指令

9.3.5分配页面
 分配(如malloc):在磁盘上创建空间并更新PTE,指向磁盘上新创建的页面。
 虚拟内存的性能:不命中处罚很大和页面调度破坏程序性能的直觉是

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值