CPU和内存之间——地址映射(知识总结)

本文介绍了CPU和内存之间的地址映射机制,包括逻辑地址和物理地址的区别,以及地址映射的三种形式:编译时、加载时和执行时。重点讲解了内存管理单元(MMU)如何进行地址转换,以及连续分配、分页技术和分段技术的原理和优缺点。同时讨论了硬件支持、内存碎片、共享和保护等方面的问题。
摘要由CSDN通过智能技术生成
CPU和内存之间有三根总线,地址,数据,和控制总线。

这是在说地址之间的问题。CPU和内存之间用地址来查找数据,但是两者的地址并不总是一样的,CPU产生的是逻辑地址,而内存的就是物理地址。通常都是不一样的,所以需要地址映射。

正好是从编程人员的角度看,(不考虑解释执行)程序总是经过源程序编译,连接,运行三个阶段。在这个过程中,指令和数据就要调到内存。

地址捆绑的三种形式:

编译时:编译时就生成了绝对地址。MS-DOS的COM程序就是这样的。

加载时:编译时编译器生成可重定位代码,在加载时捆绑。

执行时:执行时才能绑定。

上面说的都是内存中的物理地址,对于编译时和加载时的地址,物理地址和CPU产生的逻辑地址都是一样的。但是对于运行时的绑定,逻辑地址(又称虚拟地址)和物理地址是不一样的。这时候就需要有一个地址映射的问题,这个问题由MMU(内存管理单元)来完成。

这个实现其实就像是分段寻址一样,有一个重定位寄存器,其实就是基址寄存器,cpu生成的都是逻辑地址,也就是说都是个偏移量,当要把数据放到内存里时,总是要将偏移量加上基址才是真正的物理地址。

用户处理的也都是逻辑地址,也就是说我们编程时查看的地址都是逻辑地址。

动态加载:

就是说只有当运行时,并且程序调用子程序时,链接

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值