肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > CPU中虚拟地址 逻辑地址(有效地址) 线性地址 物理地址

CPU中虚拟地址 逻辑地址(有效地址) 线性地址 物理地址

时间:2019-03-30 01:04:30

相关推荐

虚拟地址、逻辑地址(有效地址)、线性地址、物理地址

1、虚拟地址2、逻辑地址(有效地址)3、线性地址4、物理地址5、总结

1、虚拟地址

在实模式下,虚拟地址是指由程序产生的由段选择符和段内偏移地址组成的地址。经过CPU 页部件转换成具体的物理地址,这样CPU才能去地址总线上访问内存。

2、逻辑地址(有效地址)

无论在实模式还是保护模式下,段内偏移地址都称为逻辑地址或有效地址,这是程序员可以见到的地址。

例如实模式下 “mov ax, [0x7c00]”,0x7c00就是逻辑地址(或有效地址),但这条指令最终操作的物理地址是DS*16+0x7c00

3、线性地址

CPU保护模式下:{ 段基址 + 段内偏移地址 } 称为线性地址。保护模式下段基址寄存器中存储的不是真正的段基值(和实模式的含义不一样),而是一个 “选择子” 。它本质是个索引,类似于数组下标,通过这个索引便能在GDT中找到相应的段描述符,在该描述符中记录了该段的起始、大小等信息,这样便得到了真正的段基址。

当没有开启地址分页功能时,此线性地址就被当作物理地址来用,可直接访问内存

线性地址= 段描述符表中的基址【段选择子】 + 偏移【逻辑地址】= 物理地址);若开启了分页功能,此线性地址就是虚拟地址(虚拟地址、线性地址在分页机制下是一个概念)。(由于大部分段描述符中的基地址为0,所以此时的线性地址=程序的逻辑地址)但是,虚拟地址(或线性地址)还要经过CPU内部MMU页部件电路转换成最终的物理地址。

4、物理地址

物理地址就是物理内存真正的地址,相当于内存中的每个存储单元的门牌号,具有唯一性。CPU最终都要以物理地址去访问内存,只有物理地址才是内存访问的终点站。

在实模式下,{ 段基址 + 段内偏移地址 }经过段部件的处理,直接输出的就是物理地址,CPU可以直接用此地址访问内存。

5、总结

线性地址、虚拟地址都不是真实的内存地址,他们都是用来描述程序或任务的地址空间。由于分页功能是需要在保护模式下开启的,32位系统保护模式下的寻址空间是4GB,所以虚拟地址或者线性地址就是0~4GB的范围。

线性地址是给CPU看的,CPU不需要知道有多少外设,什么种类的外设,反正它都是用地址来访问的,线性地址能把任何设备当成内存。逻辑地址是给程序员看的,不需要知道硬件是怎么设计的。物理地址是给实际的硬件看的。

逻辑地址要经过操作系统转换成线性地址给CPU,CPU发出线性地址给MMU,MMU再将线性地址进行转换得到物理地址去访问设备。

如果觉得《CPU中虚拟地址 逻辑地址(有效地址) 线性地址 物理地址》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。