计算机中的物理地址与内存

这两天有个问题一直萦绕着,计算机中的物理地址和内存地址,虚地址究竟是怎么回事?地址是怎样分配的呢?

翻了下操作系统课本,恩,晚上回去看看存储器管理,虚拟存储器,磁盘存储器管理这几章。隐约还记得微机原理学的寄存器寻址,现在网上看看,搜集一下待做整理。

昨天看到论坛上有人问,调程序的时候编译器分配的是物理地址还是虚地址(差不多是这意思),看到大家基本回答是说虚地址,操作系统之上的根本就不可能接触物理地址,而且可用的物理地址是相当混乱的,必须由操作系统整理映射。(差不多吧?个人认为应该没错)刚刚搜索的结果有说:程序里指针用的地址都是些虚拟地址,而且其范围完全可以大于你拥有的内存大小。当要执行这些程序段落时,系统首先要把机器码装进内存,这里就有个把虚拟地址映射到物理地址的问题。

在一台 计算机 中,计算机系统为了唯一的标示一个内存单元,操作系统会给每一个内存单元编上一个绝对的号,计算机系统就通过这个编号来定为每一个内存单元的物理位置,这个编号称为内存的物理地址 。

针对程序编译过程中的地址问题:

汇编器(assembler)只是生成一个需重定位的object文件。这个目标文件需经过链接器(Linker)与相应的库链接起来生成一个可执行的文件。 assembler 产生的代码是从 0 开始编址。经过 Lineker 重定位后生成的可执行映象按OS的不同而不同。至于 内存中的全局以及静态变量的编址也是需重定位的。局部变量则无需重定位
汇编生成的,是一些浮动模块和一张符号表。链接器按照这张符号表,把这些模块装配成一个整体。在运行时,系统的装载器做重定位,才真正确定了地址。这个地址还是虚拟地址。系统的存储管理子系统为其分配真正的物理地址。
some additional stuffs:
内存地址对齐(Byte Alignment) <
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值