博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux0.11内核--几种地址(逻辑地址、线性地址、物理地址)的含义
阅读量:6703 次
发布时间:2019-06-25

本文共 990 字,大约阅读时间需要 3 分钟。

  1. 程序(进程)的虚拟地址和逻辑地址

虚拟地址(virtual address)指程序产生的有段选择符和段内偏移两部分组成的地址。一个程序的虚拟地址空间有GDT映射的全地址空间和LDT映射的局部地址空间组成。

逻辑地址(logical address)指程序产生的段内偏移地址。应用程序只与逻辑地址打交道,分段分页对应用程序来说是透明的。也就是说C语言中的&,汇编语言中的符号地址,C中嵌入式汇编的”m”对应的都是逻辑地址。

  1. CPU的线性地址

线性地址(linear address)是逻辑地址到物理地址变换的中间层,是处理器可寻址空间的地址。程序代码产生的逻辑地址加上段基地址就产生了线性地址。

  1. 实际物理内存地址

物理地址(physical address)是CPU外部地址总线上的寻址信号,是地址变换的最终结果,一个物理地址始终对应实际内存中的一个存储单元。对80386保护模式来说,如果开启分页机制,线性地址经过页变换产生物理地址。如果没有开启分页机制,线性地址直接对应物理地址。页目录表项、页表项对应都是物理地址。

Linux 0.11的内核数据段,内核代码段基地址都是0,所以对内核来说,逻辑地址就是线性地址。又因为1个页目录表和4个页表完全映射16M物理内存,所以线性地址也就是物理地址。故对linux0.11内核来说,逻辑地址,线性地址,物理地址重合。

 

========================================================

线性地址:是CPU所能寻址的空间或者范围。

物理地址:是机器中实际的内存地址。换言之,是机器中的内存容量范围。
逻辑地址:是对程序而言的。一般以Seg:Offset来表示。
因此,若要确实比较三者的话,应有以下关系:线性地址大于等于物理地址(PS:但二者的地址空间是一样的),而逻辑地址大于线性地址。逻辑地址通过段表变换成线性地址,此时如果并未开启分页机制的情况下,逻辑地址直接转换成CPU所能寻址的空间。若已开启则通过页表完成线性地址到物理地址的变换。
因此,三者最准确的关系是:逻辑地址通过线性地址完成物理地址的映射,线性地址在三者之中完全是充当"桥"的作用。

转载于:https://www.cnblogs.com/hehehaha/archive/2013/04/16/6332877.html

你可能感兴趣的文章
Oracle+ASM单机环境下,开启归档的最简单的方法
查看>>
hive cli启动判断hadoop version的问题
查看>>
第 三 十 八 天:Linux 的 LVM 逻 辑 卷 管 理
查看>>
Flex通过Blazeds利用Remoteservice与后台java消息推送
查看>>
python3 实现对比conf 文件差异
查看>>
vueX的使用
查看>>
Android的TextView在显示文字的时候,如果有段中文有英文,有中文,有中文标点符号,你会发现,当要换行的时候遇到中文标点, 这一行就会空出很多空格出来...
查看>>
bupt summer training for 16 #3 ——构造
查看>>
github 如何设置项目的语言显示
查看>>
树莓派(Raspberry Pi):完美的家用服务器
查看>>
微信jssdk遇到的一些问题汇总
查看>>
Code Chef December Challenge 2018题解
查看>>
【IntelliJ IDEA】添加一个新的tomcat,tomcat启动无法访问欢迎页面,空白页,404
查看>>
PE文件RV转FOA及FOA转RVA
查看>>
哪些要素会让咱们呈现抑郁症的病症
查看>>
mysql
查看>>
使用vue+webpack从零搭建项目
查看>>
linux命令二
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(13)--- 线程安全接口和双检查加锁优化...
查看>>
navicat 官方使用手册,中文版,快捷键大全
查看>>