【清华大学陈渝】第四章_物理内存管理
【清华大学陈渝】第四章_物理内存管理
连续内存分配的缺点
- 分配给一个程序的物理内存是连续的
- 内存利用率较低
- 有外部碎片、内碎片的问题
非连续内存分配的优点
- 一个程序的物理地址空间是非连续的
- 更好的内存利用和管理
- 允许共享代码与数据(共享库等)
- 支持动态加载和动态链接
非连续内存分配的缺点
- 如何建立虚拟地址和物理地址之间的转换?
1.软件方案:开销大
2.硬件方案:分段,分页
非连续存储包括:分段、分页和页表;
4.1 硬件方案-分段(Segmention)
4.1.1 程序的分段地址空间
计算机程序是由各种各样的段组成的,根据每个段的属性划分出不同的段,每个段的大小不固定。
分段
- 程序的分段地址空间
- 分段寻址空间
把逻辑地址空间看成一维的连续数组,通过映射关系(分段技术支持)把不同的段(堆,运行栈,程序数据…)映射到不同的物理地址空间去。
4.1.2 分段寻址方案
一维连续的逻辑地址是由不同的段组成的,把一维地址分成两部分:段号和段内地址
段访问机制
- 新概念:一个段就是一个内存"块"
代表一个逻辑地址空间 - 程序访问内存地址需要:
一个2维的二元组(s,addr)
s | addr |
---|---|
段号 | 段内偏移 |
两种情况:
段号和地址分开的寻址方式:段寄存器+地址寄存器
段号和段内便宜形成一个完整的地址:段寄存器
硬件实现方案
如何建立段映射机制?
从一维线性连续的逻辑地址空间通过段映射机制映射到不连续的物理地址空间中去,物理地址空间是由不同的段组成的。
当CPU要执行一段程序时,需要知道程序的数据在哪里,也就是地址在哪,才可以加载到内存中运行,CPU通过程序的指令知道了:段号 (段表中的索引)和 偏移;
段表 中存在逻辑地址和物理地址的对应关系:起始地址 和 长度限制(异常处理)。
段表是操作系统建立的,段表建立以后就可以正常过了,段表的建立和硬件有紧密的联系。
4.2 分页(Paging)
在分段机制中,段大小是可变的,而分页机制中,页的大小是一定的。
4.2.1 分页地址空间
划分物理内存至固定大小的帧
- 大小是2的幂,比如:512,4096,8192
划分逻辑地址空间至相同大小的页
- 大小是2的幂,比如:512,4096,8192
建立方案:转换逻辑地址为物理地址(pages to frames)
- 页表
- MMU/TLB
帧(Frame):物理页寻址方式
概念:物理内存被分割为大小相等的帧,是物理内存单元,布局方式,代表物理地址
组成:一个二元组(f,o)
f | o |
---|---|
帧号 | 帧内偏移 |
页(Page):逻辑地址的寻址方式
概念:一个程序的逻辑地址空间被划分为大小相同的页
- 页内偏移的大小 = 帧内偏移的大小
- 页号大小 和 帧号大小可能不一样
组成:一个二元组(p,o)
p | o |
---|---|
页号 | 页内偏移 |
4.2.2 页寻址机制
程序本身的地址是连续的,由大小相等的页组成的逻辑地址,整个程序的容量和物理地址空间可能不一样。当一个程序要运行时,和分段机制一样,CPU会去寻址,无论是执行指令还是访问数据,它都需要知道指令和数据所在的位置,CPU通过程序的指令知道了:页号 (页表中的索引)和 页内偏移,通过页表机制来找到相应的物理地址。
页表是操作系统建立的,初始化时候就建立好了,页表建立以后程序就可以正常跑了。
- 分段机制和分页机制比较
分段机制 | 分页机制 |
---|---|
段的大小不固定 | 页内偏移大小固定,硬件实现更简单 |
– | 逻辑地址空间一般大于物理地址空间 |
4.3 页表(Page Table)
页表概述
页表记录着逻辑地址和物理地址之间的映射关系。
页表结构
页表索引:p
页表项内容 : f
实例:
一个具有16位地址的系统,逻辑地址空间为2的16次幂,也就是64KB的逻辑地址空间。
而实际的物理内存为32KB,每页有1024 byte。
所以逻辑地址和物理地址空间大小不一定相等,但是每个页内偏移大小一样,页大小和帧大小都是1 KB。
二元数组(4,0)表示 : 逻辑页号为4,页内偏移为0。
分页机制的性能问题
逻辑地址到物理地址转换会带来 空间代价 和 时间消耗 两个问题,因此当实现时我们希望占用空间小,执行速度快,两者都要兼顾。
- 寻址时访问一个内存单元需要2次内存访问
- 一次用于获取页表项
- 一次用于访问数据
- 页表可能非常大
- 64位机器寻址空间的逻辑地址非常大,如果每页1024 Byte,那么这张页表的大小是多少呢?
- 有多个应用程序的时候,每个程序都有一张页表,那么所有的程序占用的页表非常大
- 如何处理?
1.缓存(Caching) :提升访问速度 – TLB
2.间接(Indirection):减少页表占用空间大的问题 – 二级/多级 页表
转换后备缓冲区(TLB)
CPU中内存管理单元(MMU)中有一个叫做Translation Look-aside Buffer(TLB)的缓冲,缓冲的是页表中的内容。TLB是一块特殊的区域,在CPU内部。
概念: 缓存近期访问的页帧转换表项
组成:二元数组(p,f),p 为 Key, f 为 value。
特点:访问速度块(如果在TLB中存在地址,不需要访问页表了),容量代价高
4.4 二级/多级 页表
TLB在速度上提高了地址映射机制,那么空间上怎么样减少呢?
二级页表
把单一的page table 变成两张,逻辑地址中的p分成两部分:p1(一级页表页号) 和 p2(二级页表页号),使得对一个大地址的寻址变成对n个小页表的寻址。
结构
一级页表 | 二级页表 |
---|---|
p1是索引对应的是一级页表页表项 - 找到二级页表的起始地址p2 | p2是索引对应的是一级页表页表项 -找到帧号,和帧内偏移结合,便找到了物理地址 |
优势
节省空间,使得某些不存在的映射关系不占用内存。如果p1对应的页表项不存在,相应的二级页表就不会占用内存空间了。
多级页表
4.5 反向页表
大地址空间问题
有大地址空间(64 bits),前向映射表变得繁琐
- 比如:5级页表
不让页表与逻辑地址空间的大小相对应,而是让页表与物理地址空间的大小相对应
- 逻辑(虚拟)地址空间增长速度快于物理地址
现在,以物理地址的页号作为索引来查找对应的逻辑页号,怎么做呢?
1.基于页寄存器(Page Registers)的方案
以物理地址的帧号为索引,页表项内容是页号。
页寄存器的方案设计使得寄存器容量只与物理地址空间大小相关,和逻辑地址空间大小不相关。
如何使用页寄存器
页寄存器的权衡
利 | 弊 |
---|---|
转换表的大小相对于物理内存来说很小 | 需要的信息和分页机制对调了,即根据帧号可找到页号 |
转换表的大小和逻辑地址大小无 | 如何转换回来?即根据页号找到帧号 |
– | 再需要在反向页表中搜索想要的页号 |
根据这样的结构似乎还是不可以有效的根据页号找到帧号。
2.基于关联内存(associative memory)的方案
并行的查找页号和帧号,key是页号,value是帧号。
在反向页表中搜索一个页对应的帧号
- 如果帧数较少,页寄存器可以被放置在关联内存中
- 在关联内存中查找逻辑页号
成功:帧号被提取
失败:页错误异常(page fault)
限制因素
- 大量的关联内存非常昂贵
难以在单个时钟周期内完成
耗电
需要放进CPU里, 成本开销大,设计很复杂,无法做到大容量。
3.基于哈希(hash)查找的方案
利用哈希表实现根据页号查找帧号的过程
基于哈希计算的反向页表,哈希函数是一个简单的数学计算,用硬件加速的方法提高效率,加上一个PID作为input,设计一个简单的函数,算出对应的帧号。
在反向页表中通过哈希算法来搜索一个页对应的帧号
- 对页号做哈希计算,为了在"帧表"(每帧拥有一个表项)中获取相应的帧号
- 页 i 被放置在表中 f(i) 位置,其中f 是设定的哈希函数
- 为了查找页 i ,执行下列操作:
1.计算 哈希函数 f(i) 并且使用它作为页寄存器表的索引
2.获取对应的页寄存器
3.检查寄存器是否包含 i ,如果包含,则代表成功,否则失败。
利 | 弊 |
---|---|
可以有效的缓解完成映射带来的开销 | 查找中可能会出现哈希碰撞,输入一个input可能会有多个outout,所以通过程序的PID来缓解多个帧号输出值的冲突 |
不受逻辑地址空间限制,可以做到很小,只与物理地址空间相关 | 反向页表在内存中,在做哈希计算时还需要去内存中取数,依然需要访问内存取数,对内存的开销依然很大,还需要类似TLB机制来缓存,降低访问反向页表时间。 |
目前,只有高端的CPU有反向页表机制,因为需要高速的哈希计算来自硬件支持,还需要有解决冲突的机制才能使得访问效率得到保障。软件和硬件的配合可以解决空间上还有时间上的限制。
参考
- 清华大学陈渝 操作系统原理
感谢
清华大学 陈渝老师 操作系统原理(2014版)
【清华大学陈渝】第四章_物理内存管理相关推荐
- matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt
<MATLAB经典教程第四章_图形绘制.ppt>由会员分享,可在线阅读,更多相关<MATLAB经典教程第四章_图形绘制.ppt(32页珍藏版)>请在人人文库网上搜索. 1.Ma ...
- 超标量处理器设计——第四章_分支预测
超标量处理器设计--第四章_分支预测 参考<超标量处理器>姚永斌著 4.1 简述 分支预测主要与预测两个内容, 一个是分支方向, 还有一个是跳转的目标地址 首先需要识别出取出的指令是否是分 ...
- ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区...
原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...
- 高项_第四章项目整体管理
第四章项目整体管理 项目整体管理是10大知识领域的核心地位,其功效是整合项目资源.整体管理是一个全局性.综合性的管理过程,起着总体的协调和把关的作用. 上午选择.案例分析.论文写作都会进行考察.项目整 ...
- 如何使用计算机改进生产线,第四章 计算机生产管理.doc
第四章 计算机生产管理 第四章 计算机辅助生产管理 基本概念 一.生产与生产管理 (一)生产的含义 生产:生产是"投入→变换→产出"的过程.p105图4-1 例:钢的生产 投入:原 ...
- Linux云计算【第一阶段】第四章:权限管理
第四章:权限管理 linux的文件管理权限分为读.写和执行 [root@localhost ~]# ls -l /bin/bash -rwxr-xr-x. 1 root root 960392 8月 ...
- 信息系统项目管理师---第四章 项目整体管理
信息系统项目管理师-第四章 项目整体管理 1.项目整体管理的过程.输入.工具技术.输出简介 1.1.整体管理过程说明: 制定项目章程:编写一份正式文件的过程,这份文件就是项目章程.通过发布项目章程,正 ...
- 清华大学陈渝老师受聘车用操作系统与泛在操作系统联合实验室操作系统首席科学家
汽车智能化已成为新一轮产业竞争的战略制高点.车用操作系统是智能网联汽车的灵魂,也是车路云一体化的基础.车用操作系统与芯片的协同变革将从根本上解决"缺芯少魂"问题,是实现国家战略的必 ...
- 系统架构师学习笔记_第十四章_连载
第十四章 基于ODP的架构师实践 14.1 基于ODP的架构开发过程 系统架构 反映了功能在系统系统构件中的 分布.基础设施相关技术.架构设计模式 等,它包含了架构的 原则 和 方法.构件关系 与 ...
- 第十四章_超参数调整
文章目录 14.1 写在前面 14.2 超参数概述 14.2.1 什么是超参数,参数和超参数的区别 14.2.2 神经网络中包含哪些超参数 14.2.3 模型优化寻找最优解和正则项之间的关系 14.2 ...
最新文章
- 云计算服务在小企业中的作用?
- c/C++计算int / int *数组的长度;sizeof(指针),sizeof(数组名)的区别
- 5G NGC — 关键技术 — 网络切片 — 底层技术支撑
- Bit-Z推出去中心化多链钱包CoinU 打造资产价值生态体系
- 浏览器上网 (Safari Chrome)
- 微型CRM SaaS应用HubSpot的一些使用截图
- TIOBE 9 月编程语言榜:Python 居然超越了 C++!
- SH760二自由度系统非周期激励解析法求解
- VMWare虚拟机下为Windows Server 2012配置静态IP(NAT方式)
- 对数组操作[:,:4]
- 使用Java根据约定格式生成MySQL建表语句
- ClearCase的一些基本概念
- html 一轮多图轮播,通过html+css3实现图片轮播切换
- 前端基础—— 选择器 、css
- Gene Pattern
- linux服务器端口使用drcom拨号联网
- Zeppelin安装(Docker版)
- 五分之四的不同表达式_省技能大赛题库(五) 滴定分析基础知识
- 内部类和匿名类的介绍
- 利用大数据风控教你全栈式实时反欺诈
热门文章
- 重大噩耗:苹果账号无法付款!(11-20更新:账单地址和卡地址一样,信用卡名字和开发者名字一致,都无法付款)
- 推荐一个在线免费将word转换成pdf文件的方法
- 层次分析法在matlab上的实现
- 报错undefined symbol: _ZN3c104impl23ExcludeDispatchKeyGuardC1ENS_11DispatchKeyE
- 使用gsds绘制基因结构图_原来可以用R这么画基因结构图
- 测试从业人员的职业规划
- wps底板颜色怎么去掉_wps怎么把复制网页的灰色阴影去掉 底纹去掉方法
- 02_函数定义及使用函数
- 最小生成树-Prim + Kruskal算法
- OppoR17被查找手机锁死问题解锁