3.1_1_内存的基础知识

内存

程序需要先放到内存才能被CPU处理–缓和CPU和硬板之间的速度矛盾

如何区分各个程序的数据放在哪里
  1. 内存从0开始,每个分配的地址对应一个存储单元
  2. 如果是按照字节编址的,一个地址代表一个字节,1B
  3. 如果按字编址的,一个存储单元代表一个字,存储单元大小代表一个字长

装入模块(可执行文件)指令表明的地址一般是逻辑地址

在内存中的为物理地址

主要问题:如果实现逻辑地址到物理地址的映射


三种装入方式

tips:装入:把可执行文件装入内存

  1. 绝对装入

    1. 开始就知道程序在内存中什么位置,逻辑地址 == 物理地址
    2. 适合单道程序环境
  2. 静态重定位,可重定位装入

    1. 从0开始的逻辑地址
    2. 在装入的时候,把所有地址相关的参数都加上起始地址
    3. 必须分配要求的所有内存空间
    4. 运行的时候不能再移动

    3,动态重定位

    1. 使用专门的寄存器,装入起始地址
    2. 允许程序在内存中发生移动

    从写程序到程序运行

    编辑(.c) —> 编译(.0)目标模块 --> 链接成装入模块(完整的逻辑地址).exe

    链接的三种方式

    1. 静态链接:在运行之前,先将各个模块和需要的库函数连接成一个完整的可执行文件,不再拆开
    2. 装入时动态链接:将各个目标装入模块,一边装一边链接
    3. 运行时动态链接,需要执行该目标模块,才对它进行链接
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值