百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

虚拟地址、线性地址、物理地址之间是如何转换的?

cac55 2025-03-23 17:32 14 浏览 0 评论

8080是一个8位CPU,但是却有16根地址线,可以寻址64K。其内存寻址方案非常简单:把一个16位地址放到地址线上,然后取出存放在那个位置处的8位值。内存系统中地址线的根数和存放在每个位置上的数据的位数没有直接的关系。16位地址可以用两个寄存器给出。

8086是16位CPU,有20根地址线,可以寻址1M。1M内存可视作多个64K内存段,通过指定64K段地址与段内偏移可标识一个内存地址。这种设计就是分段模式。

1M内存需要20根地址线寻址,需要两个16位寄存器。采用如下方式:

逻辑地址 = 段地址:偏移地址
物理地址 = 段地址 << 4 + 偏移地址

注意不是左移16位。如果左移16位,1M内存被均分为互不重叠、首尾相接的16个64K内存段。而左移4位,任意16字节对齐的地址均可作为段首地址,有64K个段地址。这样,16位段寄存器可取任意值,寻址非常灵活,同一个物理地址比如00034h,其逻辑地址可为:

0003:0004

0002:0014

0001:0024
0000:0034

这种设计给新程序造成很大的不便,那些一次需要大于64K的程序不得不使用64K的段,通过切换进入和离开段寄存器的值来实现这些内存块之间的切换。

80386出现了保护模式与分页机制,地址总线与通用寄存器长度达到了32位,可寻址4G内存,似乎不再需要分段。为了兼容性,分段模式保留了下来,段寄存器用于指定段描述符。保护模式下的段由段描述符来描述,里面包含了很多属性,如:段起始地址、长度、是否可读、是否可写、是否可执行、是否驻在内存等。

分段与分页机制在很大程度上功能重叠,且分页机制更为先进。分段机制是CPU固有功能,无法关闭,因此,很多操作系统选择忽略分段模式,这就是平坦内存模型:将段地址固定为0,段长度为4G,偏移地址可指向任意地址。

与分段机制不同,分页机制可以开启和关闭。若关闭,由段地址+偏移地址所得就是物理地址。若开启,由段地址+偏移地址所得叫线性地址,因为呈现给进程的是0-4G的空间,就算内存只有512M,或有内存漏洞(一些设备或BIOS占据了部分内存空间),进程依然可以使用0-4G的线性地址空间。线性地址也叫虚拟地址,因为线性地址是不存在的,毕竟当只有512M内存时,依旧可以寻址4G的内存。

线性地址被输送到页部件,页部件会输出一个物理内存上的真实地址,也就是物理地址。所谓分页机制就是将线性地址空间的4G内存划分为固定大小的虚拟页(如:4K),同时也将物理内存(例如:512M)划分为4K大小的物理页,同时创建一些表格记录虚拟页与物理页的对应关系(举个例子:访问A虚拟页中内存实际是访问B物理页中内存),这些表格叫做页表。页部件通过查询页表将线性地址翻译为物理地址。

页表由操作系统创建并维护,然后交给页部件。操作系统为每一个进程维护一份页表,进程切换时,同时为页部件切换页表。页表内容是动态的,因为进程不停打开关闭、执行不同区域代码、使用交换分区等。

举个例子,变量a的地址为逻辑地址A,经过分段机制转换为线性地址B,经过页部件变为物理地址C。

页表除了记录虚拟页与物理页的对应关系外,还记录了一些页属性,如:是否可读、是否可写、是否可执行、是否驻在内存等。当虚拟页对应的物理页不在内存时,会触发中断,操作系统会为该虚拟页分配物理页,并在页表中建立对应关系。当虚拟页短时间内不会被访问时,其对应的物理页会被挪作他用。

由于每个进程有一份页表,理论上页表所占空间很大,但是CPU和操作系统使用多级页表技术大大降低了页表所占空间。


我写了一个小项目桃花源(英文名为 peach),该项目是一个迷你虚拟机,用于学习 Intel 硬件虚拟化技术。学习该项目可使读者对 CPU 虚拟化、内存虚拟化技术有个感性、直观的认识,为学习 KVM 打下坚实的基础。peach 实现了如下功能:

  • 使用Intel VT-x技术实现CPU虚拟化
  • 使用EPT技术实现内存虚拟化
  • 支持虚拟x86实模式运行环境
  • 支持虚拟CPUID指令
  • 支持虚拟HLT指令,Guest利用HLT指令关机

代码仓库如下:

https://gitee.com/pandengyang/peach.git
https://github.com/pandengyang/peach.git

相关推荐

QQ表情大图(QQ表情大图怎么发)

爷青回 | QQ经典老头像(爷青回这个梗出自哪里)

点个关注不迷路记得点击上方关注我呦点击表情包长按可保存至手机表情包素材来源于网络,仅供分享哦拿完图记得吱一声点击下方分享、在看让更多人看到...

史上最全QQ官方经典头像全面翻新,不光高清还会动

每当看到上面这些头像,总能想起那些年的"轻舞飞扬","缘分天空","追风少年",这些已经模糊的头像给我们留下了太深的印象。这次为了纪念QQ20周年,腾讯官方整合了早期的105个经典头像,进行了全面翻...

QQ最全表情含义图解意思(qq表情含义图解最新 新版 文字)

QQ都不陌生吧!对QQ的表情符号含义你了解多少呢?在本文中最全图解233个表情所表达的含义,供有需人享用。用过QQ的人都晓得它的创始人是马化腾。QQ于1999年2月10日正式推出。QQ是腾讯公司开发的...

海联真人版QQ经典表情(海联真人版qq经典表情在哪)

海联版傲娇的说声“耶”狂拽炫酷就是我淑女应该轻言细语萌萌哒的娇羞哎哟喂小丫头片子机智如我吓死宝宝了欧巴卡几嘛~今天天气好晴朗怎么样?是不是很有趣呢拿起手机给自己拍几张萌萌哒的美照吧...

QQ音乐·音乐灵感独家对话金曲奖「最佳单曲制作人奖」得主JADE

JADE-AllRightJADE-差-点JADE-Goodbye,GoodbyeJADE-IAmLovefeat.乔瑟夫Chillseph下面请听本期灵感电台节目:本期博客...

亿万富豪爱泼斯坦狱中“自杀”,他背后的神秘女人出现在洛杉矶快餐店

爱泼斯坦在狱中离奇“自杀”,但他身负同谋指控的前女友、英国社交名媛希莱恩·麦克斯维尔(GhislaineMaxwell),却意外地出现在了洛杉矶街头平民快餐店,边啃着汉堡,咽着薯条,嘬着奶昔,边埋头...

扛起星战大旗的你们 觉得星战女需要换一身衣裳吗?

马上进入2016年,除了各种总结盘点以外,2016年的新看点也是需要科普一下了。目前最令人期待的应该就是《星球大战》回归了!《StarWars:原力觉醒》1月10日上映,博主不是电影评论员,所以不会...

和人对话的时候,我,最怕的就是,看到了自己内心的惶恐和脆弱

IWannaBeYourSlave(LiveFromGlobalCitizenLive2021),Maneskin很多时候,哪怕最甘于寂寞的人,也需要和人发生关联,需要和这个世界沟...

2024年度串烧完整版(搞笑失败尴尬丢人版)来了

一首APT的时间带你回顾你的2024年年度歌单。·1.《免我蹉跎苦》黄龄。·2.《红昭愿》音阙诗听。·3.《苹果香》狼戈。·4.《免我蹉跎苦》黄龄。·5.《红昭愿》音阙诗听。·6.《苹果香》狼戈。·7...

一课译词:打工人(打工人的翻译)

下午好,各位打工人!近日,“打工人”爆红网络,受到各行各业年轻人的追捧,但这词到底说的是个啥?“打工人”是那些依靠体力或技术的劳动者的统称。除了赚钱这个最大的目标,别的啥也不想;他们意志坚定,也不会迟...

初级词汇题(一)柏拉图指出不是每个孩子都适合上学,你赞成吗?

初级词汇题(一)柏拉图在《理想国》中指出不是每个孩子都适合上学,你赞成吗?今天分享的题目是我基于英文原著改编的初级词汇题A开头的第81道题。背景知识拓展:什么是nativist(先天论者)?什么是哲学...

治愈系英文:每个说不想恋爱的人,心里都装着一个无法拥有的人

Therearesomanypeopleouttherewhowilltellyouthatyoucan't.Whatyou'vegottodoisturna...

首首经典!意大利流行乐队Maneskin作品I WANNA BE YOUR SLAVE

手机点击试听(上边)Maneskin是一支来自罗马的意大利流行摇滚乐队,由主唱DamianoDavid、贝斯手VictoriaDeAngelis、吉他手ThomasRaggi和鼓手...

国家电网新一代电子商务平台投标文件双层PDF制作最全教程

投标知识在招投标过程中,我们经常碰见有些文件要求制成双层PDF格式,那么双层PDF是什么呢?怎么制作呢?今天就给大家普及下。定义双层PDF双层PDF格式文件是一种具有多层结构的PDF格式文件,是PD...

取消回复欢迎 发表评论: