【av68676164(p48-p50】虚拟内存管理(1)
7.3.1 页式虚拟内存管理概念
物理内存(即实内存)管理
| 特点 | 缺点 | |
|---|---|---|
| 1 | 源程序直接使用内存的物理地址 | 程序间容易访问冲突 |
| 2 | 程序必须全部装入内存才能运行 | 内存太小程序无法运行 |
| 3 | 程序占用连续的一片内存 | 产生内存碎片 |
| 4 | 多程序同时运行容易相互干扰 | 不安全 |
改善物理内存管理的相关技术
- 内存拼接
- 交换技术(Swapping)
- 覆盖技术(Overlay)
虚拟内存管理的目标
- 使得大的程序能在较小的内存中运行
- 使得多个程序能在较小的内存中运行(/能容纳下)
- 使得多个程序并发运行时地址不冲突(/方便、搞笑)
- 使得内存利用效率高:无碎片,共享方便
虚拟内存管理的实现思路
程序运行时,只把当前必要的很小一部分代码和数据装入内存中,其余代码和数据需要时再装入,不再运行的代码和数据及时从内存删除。
实际内存很容易就能满足上述的内存需求。
程序运行的局部性
- 程序在一个有限的时间段哪访问的代码和数据往往集中在有限的地址范围内。
- 把程序一部分装入内存在较大概率上也足够让其运行一小段时间。
典型虚拟内存管理方式
- 页式虚拟内存管理
- 段式虚拟内存管理
- 段页式虚拟内存管理
页式虚拟内存管理
概念
把进程空间(虚拟)和内存空间划成等大小的小片
- 小片的典型大小:1K、2K或4K
- 进程的小片—页
- 内存的小片—页框

- 内存以页框为单位分配使用
- 进程以页为单位装入内存
- 只把程序的部分页装入内存即可运行
- 页在内存中占用的页框不必相邻
- 需要新页时,按需从硬盘掉入内存
- 不再运行的页及时删除,腾出空间

7.3.2 页式和页式地址映射
页式系统中的地址
虚拟地址(VA)可以分解成页号P和页内偏移W
页号(P)
VA所处页对的编号=VA/页的大小
页内偏移(W)
VA所处页的偏移=VA%页的大小
例子
VA=2500;页面大小1K(\(10^{12}\))
W=2500\, \% \,1024 =452
\]
P和W的另一种计算方法(计算机中)
已知
页的大小:\(2^n\)单元
P和W计算
页号\(P=VA>>n\)
页内偏移\(W=低n位=VA\, \&\&\,(2^n-1)\)
页面映射表
记录了页与页框之间的对应关系,也叫页表。

页号:登记程序地址的页号
页框号:登记页所在的物理页号
页面其他特性:登记含存取权限在内的其他特性
页表例子:一个进程、4页

页式地址映射
功能
虚拟地址(页式地址)→物理地址
过程【三步】
从VA分离页号P和页内偏移W
查页表:以P位索引查页框号P'
计算物理地址MA
\(MA=P'\times 页大小 + W\)
页式地址映射的例子
MOVE R1, [2500]
解:
分离P,W
\[P=\frac {VA}{页面大小}=\frac{2500}{1024}=2\\
W=VA\,\%\,页面大小=2500\,\%\,1024=452
\]查找页表
P=2,P'=7

计算\(MA=P'\times 页大小 + W\)
\[MA=7\times1024+452=7620
\]
7.3.3 快表技术和页面共享技术
快表机制(Cache)
快表的概念
- 慢表:页表放在内存中
- 快表:页表放在Cache中
快表的特点
容量小、访问快、成本高
快表是慢表的部分内容的复制
地址映射时优先访问快表
- 若在快表中找到所需数据,则称为“命中”
- 没有命中时,则需要访问慢表,同时更新快表
合理的页面调度策略能使快表具有较高命中率
快表机制下地址映射过程

页面的共享

代码共享的例子—文本编辑器占用多少内存
- 文本编辑器:150KB代码段和50KB的数据段
- 有10进程并发执行该文本编辑器
- \(占用内存=10\times(150+50)KB=2M\)
- 如果采用代码段共享,代码段在内存中只有一份真实存储
- \(占用内存=150+10\times50=650KB\)
页面共享原理
- 在不同进程的页表中填上相同的页框号,多个进程能访问相同的内存空间,从而实现页面共享
- 共享页面在内存中只有一份真实存储,节省内存。

【av68676164(p48-p50】虚拟内存管理(1)的更多相关文章
- 【av68676164(p51-p53)】虚拟内存管理(2)
虚拟内存管理(2) 7.3.4 缺页终端 分级存储体系 cache+内存+辅存 页表扩充-带中断位的页表 页号 页框号 中断位I 辅存地址 访问位 修改位 1 1 0 0 0 1 中断位I-标志该页是 ...
- 十问 Linux 虚拟内存管理 (glibc) (二)
版权声明:本文由陈福荣原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/184 来源:腾云阁 https://www.qclo ...
- SoC嵌入式软件架构设计II:没有MMU的CPU虚拟内存管理的设计和实现方法
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其它代码. 我们PC然在同一时间大量的应用,地址空间差点儿能够整个线性地址空间(除了部分留给操作系统或者预留它用).能够觉 ...
- SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序 ...
- windows虚拟内存管理
内存管理是操作系统非常重要的部分,处理器每一次的升级都会给内存管理方式带来巨大的变化,向早期的8086cpu的分段式管理,到后来的80x86 系列的32位cpu推出的保护模式和段页式管理.在应用程序中 ...
- OS之内存管理 --- 虚拟内存管理(二)
关于虚拟内存管理之前的请看:OS之内存管理 - 虚拟内存管理(一) 帧分配 每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的.所以在这之间,对于进程的帧的分配 ...
- linux内核内存分配(三、虚拟内存管理)
在分析虚拟内存管理前要先看下linux内核内存的具体分配我開始就是困在这个地方.对内核内存的分类不是非常清晰.我摘录当中的一段: 内核内存地址 ============================ ...
- Linux的虚拟内存管理-如何分配和释放内存,以提高服务器在高并发情况下的性能,从而降低了系统的负载
Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...
- Unix系统编程()虚拟内存管理
在之前学到过进程的内存布局中忽略了一个事实:这一布局存在于虚拟文件中. 因为对虚拟内存的理解将有助于后续对fork系统调用.共享内存和映射文件之类的主题阐述,这里还要学习一下有关虚拟内存的详细内容. ...
随机推荐
- scrapy 基础组件专题(五):自定义扩展
通过scrapy提供的扩展功能, 我们可以编写一些自定义的功能, 插入到scrapy的机制中 一.编写一个简单的扩展 我们现在编写一个扩展, 统计一共获取到的item的条数我们可以新建一个extens ...
- 使用Typora写博客,图片即时上传,无需第三方图床-EasyBlogImageForTypora
背景 习惯使用markdown的人应该都知道Typora这个神器,它非常简洁高效.虽然博客园的在线markdown编辑器也不错,但毕竟是网页版,每次写东西需要登录系统-进后台-找到文章-编辑-保存草稿 ...
- html 转义和反转义
public static void main(String[] args) {// String html = "<img style=\"width: 100%; hei ...
- Oracle RMAN 异机恢复一例
背景介绍:本例需求是将NBU备份的oracle数据库恢复到另一主机上. NBU环境配置.异机上的Oracle软件安装配置忽略,下面只介绍OracleDB恢复的过程. ----------------- ...
- CentOS8.0 Docker Repository
一.硬件软件准备 1.2台服务器或者电脑(使用云服务器1.阿里云 2.百度云各一台) ,系统均为CentOS 8.0 2.分别安装Docker 3.测试镜像准备(准备的是 ...
- The Prices
题目描述 你要购买\(m\)种物品各一件,一共有\(n\)家商店,你到第\(i\)家商店的路费为\(d[i]\),在第家商店购买第\(j\)种物品的费用为\(c[i][j]\),求最小总费用. 输入格 ...
- 树形dp 之 小胖守皇宫
题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边相连的宫殿间可以互相望见.大内保卫森严,三步一岗,五步一 ...
- 拆招黑客!github代码库大牛们如何应对黑客攻击
2019年05月,<个人电脑杂志>网站报道,GitHub(2018年被微软收购)代码库正遭到一名黑客的入侵(392个资源库受损,约1000名用户受到攻击,真实资料未知).据称,这名黑客先擦 ...
- 关于简单的数据双向绑定原理,defineProperty 和Proxy演示
双向绑定,也就是说js中的数据传到页面,页面中的内容到js,实现同步更新,简单的演示可以直接复制下放HTML代码运行. 在这个例子中,我们使用defineProperty ,Object.define ...
- mysql字符集 utf8 和utf8mb4 的区别
一.导读我们新建mysql数据库的时候,需要指定数据库的字符集,一般我们都是选择utf8这个字符集,但是还会又一个utf8mb4这个字符集,好像和utf8有联系,今天就来解析一下这两者的区别. 二.起 ...