内存管理(一)

1.1 程序组织

1.1.1 地址空间

  • 逻辑地址:程序自身地址空间的地址
  • 物理地址:程序实际在内存中的地址

1.1.2 进程的内存空间

  • 分为内核空间和用户空间;
  • 内核空间在所有进程中都被映射到同一物理地址空间中;

  • 另有内存映射段,暂时不表

1.2 程序运行

1.2.1 程序文件的执行

源程序到进程运行的整个过程,主要为编译、链接和装入;

  • 编译:编译器,将源程序编译为多个目标模块
  • 链接:链接器,将目标模块与库函数链接成一个装入模块;
  • 装入:装入器,将装入模块装入内存以待运行;

1.2.2 链接

1.2.2.1 静态链接

程序运行前,将目标模块链接成完整的装入模块后不再拆开

链接主要做两个工作:

  • 相对地址修改
  • 变换外部调用符号
1.2.2.2 动态链接

目标模块在装入时才被链接在一起

  • 装入时,发现存在发生外部模块调用时才进行链接;
  • 此方式,目标模块分散存储,便于修改部分目标模块;
  • 便于共享目标模块;
1.2.2.3 运行时动态链接

推迟到运行的时候才进行链接

  • 每次运行时,用到的模块都是不同的,
  • 故只当发生外部调用时,由OS装入链接之
  • 加快了装入链接

1.2.3 装入

1.2.3.1 绝对装入

以程序中实际地址装入内存  

  • 一般只在单道程序中适用
  • 逻辑地址与实际地址相同,不必修改
1.2.3.2 静态重定位装入

装入时,才将逻辑地址转为物理地址

  • 装入时一次性完成重定位
  • 故不允许装入后移动程序
1.2.3.3 动态重定位装入

执行时,才将逻辑地址转为物理地址

  • 适应于程序多次置于内存不同位置,如对换
  • 需要重定位寄存器的支持

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值