当前位置:首页 > 生活 >

虚拟内存是什么地方的内存(虚拟内存和内存有区别吗)

来源:原点资讯(www.yd166.com)时间:2024-12-02 09:51:22作者:YD166手机阅读>>

程序经过编译后,变成了可执行的文件,可执行文件主要包括代码和数据两部分,代码是只读的,数据则是可读可写的。

可执行文件由操作系统加载到内存中,交由CPU去执行,现在问题来了,CPU怎么去访问代码和数据?,访问的方式经历过四个阶段:

1.直接访问

2.段基址 段偏移地址

3.段选择子 段偏移地址

4.虚拟地址

现代操作系统采用的是虚拟地址,这也是本篇文章阐述的重点,但虚拟地址是由1~3阶段发展而来的,所以也有必要阐述1~3三种访问方式。

直接访问

直接访问很好理解,程序经过编译后,生成了可执行文件,编译器给每行数据和代码分配了一个唯一的地址,如下图

虚拟内存是什么地方的内存,虚拟内存和内存有区别吗(1)

可执行文件

如上图可执行文件中1000~1024之间的地址,加载到内存后,内存的地址也是1000~1024,在可执行文件中分配的唯一地址就是内存中的物理地址,这就叫直接访问,直接定访问干脆直接,没有那些弯弯绕。

当时问题也不少,例如同一个可执行文件不能同时执行,它们的物理地址一样,冲突了,必须一个接一个,还有就是可执行文件的物理地址已经固定了,如果想在其它物理地址运行,必须地重新编译,生成新的物理地址。

可见直接定位是计算机发展早期的产物,早期没有那么多的程序要运行,程序都是一个接一个地去执行的,因此早期这种定位比较简单,直接高效。

段基址 段偏移地址

随着多任务需求的来临,现在内存中要并发运行多个程序,虽然采用直接定位把每个不同的程序放在不同的内存段中,勉强可以满足,但是一个可执行文件不能同时运行多个,另外程序必须在固定的物理地址运行,灵活性大大减弱,调度起来也是非常麻烦,因此CPU设计师和操作系统开发人员发明了段基址 段偏移地址。

Inter 8086处理器就是采用这种定位方式,我们知道可执行文件主要分为数据段和内存段,如下图

虚拟内存是什么地方的内存,虚拟内存和内存有区别吗(2)

由上图红色部分可知,0,4,8就是相对于数据段的偏移地址,0,4,8,12是相对于代码段的偏移地址。

在可执行文件中,一个段的偏移地址是固定的,无论可执行文件加载到内存的什么位置,这个偏移地址是固定的。

当可执行文件加载到内存时,先在内存中分配一个数据段和代码段,这两个段理论上可以不挨着,一般情况下,代码段和数据段是挨着的,代码段和数据段在内存中都有一个起始地址,这个起始地址就叫做段基址,这个段基址是放在段寄存器里,例如代码段基址放在CS寄存器,数据段基址放在DS寄存器,当然还有其他的段例如栈段,栈段刚开始大小为0,随着程序的运行入栈,出栈,这个栈段在不断扩展,当然,咋们主要说的是数据段和代码段,栈段只是简单带过。

假设可执行文件被加载到了内存中,如下图

虚拟内存是什么地方的内存,虚拟内存和内存有区别吗(3)

如上图所示,代码段被布局到以0x00600000为起始地址的内存中,数据段被布局到以0x00601000为起始地址的内存中。

当CPU开始执行代码段的第一条指令时,会将代码段的起始地址放入到段寄存器中,此时CS代码段寄存器中存储的就是0x00600000,然后开始从起始地址处开始执行第一条代码指令,此时把代码指令的偏移地址放入到IP寄存器中,IP寄存器存储的就是0,所以CPU要定位一条代码指令时通过CS:IP的方式定位的,如下图所示

虚拟内存是什么地方的内存,虚拟内存和内存有区别吗(4)

首页 1234下一页

栏目热文

虚拟内存从哪来的(虚拟内存什么时候出现的)

虚拟内存从哪来的(虚拟内存什么时候出现的)

前言:存为了更加高效并且少出错,现代操作系统提供了一种对主存的抽象概念,叫做虚拟内存。虚拟内存是硬件异常,硬件地址翻译,...

2024-12-02 09:48:56查看全文 >>

虚拟内存怎么设置游戏运行流畅(虚拟内存能提高游戏流畅度吗)

虚拟内存怎么设置游戏运行流畅(虚拟内存能提高游戏流畅度吗)

生活中我们经常听到电脑有虚拟内存一说,很多人对电脑虚拟内存有种神秘的感觉,因为他们根本没有弄明白虚拟内存到底是什么意思,...

2024-12-02 10:02:43查看全文 >>

什么情况下会用虚拟内存(有必要打开虚拟内存吗)

什么情况下会用虚拟内存(有必要打开虚拟内存吗)

虚拟内存这个词,估计新生代里听说过的人不多。但如果你是电脑老鸟,或者经常玩大型游戏的话,虚拟内存应该或多或少还有些印象。...

2024-12-02 10:14:52查看全文 >>

同轴度与位置度(同轴度和位置度区别示意图)

同轴度与位置度(同轴度和位置度区别示意图)

位置度是GD&T中最有用且最复杂的几何公差符号,没有之一。位置度太重要且调用方法多样,为了不像裹脚布,下面仅讨论RFS(...

2024-12-02 09:45:45查看全文 >>

同心度的最简单测法(圆同心度测量的正确方法)

同心度的最简单测法(圆同心度测量的正确方法)

内外两个圆分别使用圆形拟合,找出圆心,再使用点间距测两个圆心的距离,看一遍就会,就是时这么简单。马克拉伯Moo...

2024-12-02 09:48:07查看全文 >>

虚拟内存通俗解释(虚拟内存一定要是物理的1.5倍吗)

虚拟内存通俗解释(虚拟内存一定要是物理的1.5倍吗)

一、前言在Windows XP时代以前,老鸟装机或者重装系统之后有一项必做的性能优化工作,那就是手动调整系统默认的虚拟内...

2024-12-02 10:23:44查看全文 >>

虚拟内存的作用(虚拟内存设置在d盘有什么好处)

虚拟内存的作用(虚拟内存设置在d盘有什么好处)

随着内存拓展技术的普及,目前从百元入门到万元旗舰基本都搭载了这项技术,旨在通过扩展手机的可用运行内存来提升多任务处理能力...

2024-12-02 09:57:57查看全文 >>

虚拟内存d盘有什么用(虚拟内存有什么用利与弊)

虚拟内存d盘有什么用(虚拟内存有什么用利与弊)

一、什么是虚拟内存?虚拟内存有什么用处?操作系统中所运行所有的程序全部都是经过内存提交给CPU然后才执行的,不过若是执行...

2024-12-02 09:57:27查看全文 >>

建盏的作用和功效(长期喝建盏水的危害)

建盏的作用和功效(长期喝建盏水的危害)

随着生活水平的不断提高,越来越多的朋友,都会选择用建盏喝茶。很多人也有些疑惑,一只小小的黑碗怎么能让这么多人喜欢? 有人...

2024-12-02 10:21:08查看全文 >>

建盏图片(上等茶盏主人杯)

建盏图片(上等茶盏主人杯)

油滴建盏是建盏中很常见的,也是很多建盏爱好者都非常喜欢的。  看似只是黑黑的建盏的上加上了一些密集的斑纹,实际上却拥有不...

2024-12-02 10:28:02查看全文 >>

文档排行