内存管理 —— 地址翻译
地址翻译主要包括两个阶段:一个是虚实地址转换,另一个是存取数据。
慢表(Page):放在主存中的页表,页表只能存放在主存中。
快表(TLB):放在告诉缓冲存储器的页表项。
一、虚实地址转换
(1)根据虚拟地址的 TLB 标记 和 索引(若采用全相联映射,则没有索引) 查 TLB 中是否有对应的页表项
- 若存在对应的页表项,且有效位(即装入位)为1,则将页表项中的实页号和页内地址拼接,得到实地址
- 若存在对应的页表项,但有效位(即装入位)为0,则页面不在主存中,产生缺页中断,需要将目标页面调入内存再由CPU重新访问
- 若不存在对应的页表项,则进入步骤(2)
(2)根据 虚拟页号 查 内存中的页表 是否有对应的页表项
- 若存在对应的页表项,且有效位(即装入位)为1,则将页表项中的实页号和页内地址拼接,得到实地址
- 若存在对应的页表项,但有效位(即装入位)为0,则页面不在主存中,产生缺页中断,需要将目标页面调入内存再由CPU重新访问
- 若不存在对应的页表项,则产生错误
二、存取数据
(1)根据实地址的 Cache标记 和 索引(若采用全相联映射,则没有索引) 查 Cache 中是否有对应的数据
- 若有效位为1,可知该块在 Cache 中,根据偏移量(块内地址)可以找到对应的数据
- 若有效位为0,则该块不在 Cache 中,进入步骤(2)
(2)根据实地址的 物理页号 查 内存 中是否有对应的数据
- 根据 页内偏移 一定可以找到对应的数据
三、实例
题目
设某系统满足以下条件:
- 有一个TLB与一个 data Cache
- 存储器以字节为编址单位
- 虚拟地址14位
- 物理地址12位
- 页面大小为64B
- TLB为四路组相联,共有16个条目
- data Cache是物理寻址、直接映射的,行大小为4B,共有16组
TLB、页表、 Cache内容如 表3.2、表3.3 及 表3.4 所示
写出访问地址为0x03d4、0x00f1和0x0229的过程。
步骤一
步骤二:虚拟地址 → 实地址
步骤三:存取数据
内存管理 —— 地址翻译相关推荐
- 263-虚拟内存的地址翻译
虚拟内存的地址翻译 地址翻译 形式上来说,地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射, MAP:VAS->PAS U ∅ 这里 下图 ...
- 万字长文,别再说你不懂Linux内存管理了(合辑),30 张图给你安排的明明白白...
之前写了两篇详细分析 Linux 内存管理的文章,读者好评如潮.但由于是分开两篇来写,而这两篇内容其实是有很强关联的,有读者反馈没有看到另一篇读起来不够不连贯,为方便阅读这次特意把两篇整合在一起,看这 ...
- 别再说你不懂Linux内存管理了,10张图给你安排的明明白白!
来自:后端技术学堂 过去的一周有点魔幻,有印象的有三个新闻:天猫总裁绯闻事件,蘑菇街裁员,不可能打工的周某也放出来了.三件事,两件和互联网行业相关,好像外面的世界很是精彩啊!吃瓜归吃瓜,学习还是不能落 ...
- Java应用程序中的内存泄漏和内存管理
Java平台最突出的功能之一是其自动内存管理. 许多人错误地将此功能转换为Java中没有内存泄漏 . 但是,事实并非如此,我给人的印象是,现代Java框架和基于Java的平台,尤其是Android平台 ...
- linux c 将虚拟地址转化为物理地址_面试不懂 Linux 内存管理?我用 20 张图给你讲明白...
微信搜索公众号「 后端技术学堂 」回复「1024」获取50本计算机电子书,回复「学习路线」获取超详细后端技术学习路线思维导图,文章每周持续更新,我们下期见! 大家好,我是柠檬哥. 分享编程学习,助力程 ...
- 从内存管理原理,窥探OS内存管理机制
摘要:本文将从最简单的内存管理原理说起,带大家一起窥探OS的内存管理机制,由此熟悉底层的内存管理机制,写出高效的应用程序. 本文分享自华为云社区<探索OS的内存管理原理>,作者:元闰子 . ...
- linux每个进程的地址空间大小,别再说你不懂 Linux 内存管理了,10 张图给你安排的明明白白...
原标题:别再说你不懂 Linux 内存管理了,10 张图给你安排的明明白白 转自:LemonCode 过去的一周有点魔幻,有印象的有三个新闻:天猫总裁绯闻事件,蘑菇街裁员,不可能打工的周某也放出来了. ...
- Linux内存管理图解
前提约定:本文讨论技术内容前提,操作系统环境都是 x86架构的 32 位 Linux系统. 虚拟地址 即使是现代操作系统中,内存依然是计算机中很宝贵的资源,看看你电脑几个T固态硬盘,再看看内存大小就知 ...
- 操作系统之内存管理:1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)
1.内存管理基础知识(指令工作原理.地址转化.程序运行过程) 思维导图 什么是内存? 指令的工作原理 装入模块的三种实现 绝对装入 可重定位装入 动态重定位 程序的运行过程 链接的三种方式 思维导图 ...
最新文章
- ORA-12154:TNS:无法解析指定的连接标识符
- 、简述global关键字的作用_详解static inline关键字
- LeetCode LCP 22. 黑白方格画
- 组合数的和(java)
- 程序员顶尖和普通就是有5个区别!
- MFC - CStdioFile 读取txt文件UNICODE 中文异常
- 移动终端安全模块技术研究
- python数独解题器_python 数独解
- 安兔兔苹果html5排行榜,iPhone8Plus最强?9月安兔兔手机性能排行榜出炉
- linux修改键盘按键
- snidel 2014春夏新品 画册款切换材质连衣裙
- numpy中,矩阵的三种转置transpose、getT、getH的区别
- hdu 2222 AC 自动机 模版(数组实现)
- 海量数据处理问题汇总
- 智能工厂信息系统架构设计-WMS、ERP、MES
- 【万能搜索】万能DFS之全排列(一)——普通算法
- Android逆向之玩转Xposed模块以劫持登录为例(实战篇)
- alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)
- DXperience 711 代码问题
- 中国农村信用合作报:科技赋能 全面推进乡村振兴
热门文章
- CSDN上查看已关注的博客专栏
- MySQL盈利_个人网站如何盈利
- win7自带硬盘分区工具
- 构建企业私有云的最佳实践
- 字符设备驱动模板方式(linux驱动开发篇)
- Java开发者福音,阿里巴巴宣布连任Java全球管理组织席位!
- 【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境
- 2022年最火的网络歌曲在抖音上怎么把一首歌发完整
- UE4 打包 发布和补丁DLC总结
- ffmpeg命令报错: error while loading shared libraries: libavdevice.so.58: cannot open