程序中的地址转换(虚拟地址-物理地址)
虚拟地址由链接器产生;
链接器的作用吧多个代码模块组装在一起,并解决模块之间的应用,即处理程序代码间的地址引用,形成程序运行的静态内存空间视图。
物理地址
通过地址总线选择内存单元的地址。
虚拟地址到物理地址的转换
软件和硬件结合实现这个转换–>MMU(内存管理单元)。MMU可以接受软件给出的地址对应关系数据,进行地址转换。
MMU通过地址转换关系表将虚拟地址转换为物理地址,而地址转换关系表本身就存储在物理内存中。
页
把虚拟地址空间和物理地址空间都分成大小同等的块,即页,按照虚拟页和物理页进行转换。
页的大小可设置为4KB、2MB、4MB、1GB
现代内存管理模式--------------分页模型。
一个虚拟页可以对应到一个物理页,由于页大小一经配置就是固定的,所以在地址关系转换表中,只要存放虚拟页地址对应的物理页地址就行了。
MMU
MMU即内存管理单元,是用硬件电路逻辑实现的一个地址转换器件,它负责接受虚拟地址和地址关系转换表,并输出物理地址。
根据实现方式不同,MMU可以是独立的芯片,也可以是集成在cpu核心。
X86 CPU想开启MMU必须开启保护模式或者长模式,实模式下不能开启MMU。
MMU页表
地址转换关系表–页表。
虚拟地址到物理地址的转换关系,或者映射关系。
页表并不存放虚拟地址和物理地址的对应关系,只存放物理页面的地址,MMU以虚拟地址为索引去查表返回物理页面地址,页表是分级的,总共分为三个部分:一个顶级页目录,多个中级页目录,最后才是页表。
顶级页目录存放中级页目录地址,中级页目录存放页表地址,页表中存放物理页地址。
保护模式下的分页:
4KB 102410244KB
4MB 1024*4MB
长模式下的分页:
4KB
2MB
程序中的地址转换(虚拟地址-物理地址)相关推荐
- 实验四 获取C程序中一个逻辑地址对应的物理地址
实验四 获取C程序中一个逻辑地址对应的物理地址 目录 实验四 获取C程序中一个逻辑地址对应的物理地址 实验环境 一.实验目的 二.实验内容 三.实验步骤 四.实验总结 实验环境 操作系统版本:ubun ...
- 线性地址转换成物理地址
上篇文章介绍了如何查看内核使用的分页模式,笔者电脑上内核使用的分页模式是 4-level paging,这篇文章讲解 4-level paging分页模式如何将线性地址转换成物理地址. 先思考2个问题 ...
- 在程序中集成地址簿、电子邮件和地图功能
地址簿 iOS通过两个框架提供了全面的地址簿数据库访问功能:Address Book和Address Book UI. Address Book UI框架是一组用户界面类,封装了Address Boo ...
- Java实现pdf转tex_使用Free Spire.PDF在Java程序中创建和转换PDF文件
在这篇文章中,我将举例说明如何创建一个包含标题,段落,图像,编号列表和表格的简单的PDF文件,以及如何使用Free Spire.PDF将PDF转换为其他文件格式. 概述 Free Spire.PDF ...
- 在Java程序中创建和转换PDF文件
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: Codingqi123 来源: jianshu.com/p/db15232987 ...
- 微信小程序之base64地址转换本地图片地址
1.新建base64src.js文件 const fsm = wx.getFileSystemManager(); const FILE_BASE_NAME = 'tmp_base64src'; // ...
- 小程序 中文和utf-8转换
/** 中文转换utf-8 */ function encodeUTF8(str) { return str.replace(/[^\u0000-\u00FF]/g, function ($0) { ...
- 三菱je -c中映射表的作用_linux内核页表映射机制:线性地址如何转为物理地址?...
关注"技术简说"(13站同名),带你由浅入深学习linux内核源码.linux内核开发100讲免费教程,每天晚上9点准时更新,敬请收看.进我主页点"视频"栏目即 ...
- php地址选择插件,微信小程序中关于三级联动地址选择器的实例分享
本文介绍了微信小程序三级联动地址选择器的实例代码,分享给大家,有需要的可以一起了解一下 在一些电商类的小程序中,地址选择这个功能一般是必备的,一般的收货信息都需要有一个能选择省市县的控件,当然也有些人 ...
最新文章
- python selenium --调用js
- mfc中ado上传image到sql数据库
- MongoDB学习笔记~MongoDB实体中的值对象
- Linux redhat下安装jdk-6u45-linux-x64.bin
- 无锁链表的c++实现
- 详解vector容器(应用+模拟实现,vector相关练习题)
- 《Effective C#》Item 7:推荐使用不可改变的原子值类型
- sklearn.metrics —— 混淆矩阵及其绘制、Accuracy/Precision/Recall/F1-score
- java动作触发声音_关于鼠标动作的声音如何添加
- java——base64 加密和解密
- HTML 空格转义符的用法
- 浏览器内核(引擎)及css前缀
- Centos挂载iscsi存储(浪潮存储)
- 电子取证之服务器取证,本人小白第一次从pc取证到服务器,这里有一套例题分享给大家,所有解析我都尽可能全面具体,希望与各位同仁一起学习。(非常推荐!)
- php 除法,php中如何除法取整
- mysql mediumint是什么类型_MySQL 数据类型一览
- 5G LAN是什么?5G LAN商用实现工业物联网5G无线接入
- 点播 构造自己的播放器 用户调用获取视频播放地址接口
- 别害怕犯错:科学怎样服务好社会?
- 【基于mini2440开发板的交叉编译环境及内核树配置.