逻辑地址

        在内存管理中,逻辑地址是一个比较难以理解的概念,因为逻辑地址是逻辑上(思想上的,空间上)的概念,并非物理存在,很难想象出逻辑地址到底是什么样的。

        在理解逻辑地址的时候,我曾有一个疑问:假如一个操作系统最多支持64个进程,每个进程的线性地址空间为4G(32位CPU的寻址范围),那么总共需要的的内存是4G*64,这么大的内存存储在哪儿呢?

        现在,我对这个困惑的解释是:CPU是分时处理的,当时间片被分配到某一进程时,此进程的4G线性内存空间才被“激活”,CPU读取程序的逻辑地址,逻辑地址通过分段处理转化为线性地址(4G空间),线性地址再经过分页处理转化为物理地址。当时间片分配给下一进程时(进程切换),前一进程的运行环境会被保存。
        这样的处理,缓解了多任务系统环境中物理内存短缺的问题,物理内存中只会存储当前需要或经常使用的数据,其它数据保存在硬盘中,需要时再进行加载。

        程序运行的过程,就是CPU取指,取数据,执行指令,存储结果的过程;在此过程中,CPU读取的地址都是逻辑地址。
        那么程序的逻辑地址是哪里来的呢?编译时?加载时?运行时?

        在编译完成后,动态库、全局变量、静态变量、函数的逻辑地址已经“基本”确定。(编译时是不分配内存的,只是根据声明时的类型进行占位。)
        查看*.map文件和解析a.out文件得到逻辑地址࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值