逻辑地址、虚拟地址、线性地址、物理地址
2017-02-25 17:20
246 查看
逻辑地址、虚拟地址、线性地址、物理地址的区别:
虚拟地址:
在保护模式下,虚拟地址由段选择子+段内偏移量组成。利用段选择子可以获取到段描述符,再从段描述符中取得段的基地址。也就是说虚拟地址就是xxxx:yyyy yyyy这玩意儿。而在实模式下,也是这样,只是对应的xxxx的意义发生了改变,xxxx就代表了段基址,而不需要再经过刚才的过程去获取。(如果对该过程感兴趣请参考上一篇博文)在分页机制下,cpu生成的地址就是虚拟地址,再通过mmu转换成物理地址。物理地址:
物理地址代表了数据在物理内存中真实的位置。如果未启用分页机制,那么虚拟地址通过段基址+段内偏移得到的值就是真实的物理地址,如果启用了分页机制,得到的值就是下面要说的线性地址。线性地址:
段基址+段内偏移得到的值就是线性地址。启用了分页机制的条件下,如果想通过线性地址得到物理地址,那么就要用分页机制里面的转换方法来获取物理地址。逻辑地址:
逻辑地址和虚拟地址很相似,而且各种书中对这两者的定义也有所不同,比如:LDD(《Linux设备驱动程序》) 15.1.1书中说道:”ALL logical addresses are kernel virtual addresser,but mang kernel virtual addresses are not logical address.For example,memory allocated by vmalloc has a virtual address(but no direct physical mapping)”。意思就是所有的逻辑地址都是内核虚拟地址,但是大多数内核虚拟地址不是逻辑地址。比如,vmalloc分配的内存有虚拟地址(但是没有直接物理映射)。
但是其它书中又有提到逻辑地址是由程序产生的段内偏移地址。经过自己理解,我认为虚拟地址就是经过分页地址形成的空间,而逻辑地址即段内或者页内偏移地址。也就是说,逻辑地址只是虚拟地址的一个子集。
相关文章推荐
- 我理解的逻辑地址、线性地址(虚拟地址)和物理地址
- Linux中地址概念====虚拟地址、逻辑地址、线性地址、物理地址
- 逻辑地址,线性地址,物理地址,虚拟地址
- 虚拟地址,逻辑地址,线性地址,物理地址有什么区别
- 物理地址,虚拟地址,线性地址,逻辑地址的联系
- linux内存管理---物理地址、线性地址、虚拟地址、逻辑地址之间的转换
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址
- 逻辑地址、线性地址、虚拟地址、物理地址
- 逻辑地址、线性地址、物理地址、虚拟地址、地址空间、特权级
- linux内存管理---物理地址、线性地址、虚拟地址、逻辑地址之间的转换
- 物理地址、虚拟地址、逻辑地址、线性地址、虚拟内存
- 物理内存,虚拟内存,逻辑地址,线性地址,虚拟地址,物理地址
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址
- Linux0.11内核--几种地址(逻辑地址、线性地址、物理地址)的含义
- 逻辑地址,线性地址,物理地址
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了) referenced by 独孤九贱
- 逻辑地址、线性地址(虚拟地址)、物理地址(有效地址、总线地址)
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了)
- 逻辑地址、线性地址、物理地址和虚拟地址
- 物理地址、虚拟地址(线性地址)、逻辑地址以及MMU的知识