《程序员的自我修养——链接、装载与库》读书笔记 6.2 装载方式

装载的方式

程序必须从磁盘装载到内存中才可以被执行。最简单的方法就是把程序装载到加载地址即可,但是内存往往不够用。这里介绍了两种典型的装载方式:覆盖装入和页映射。书中的介绍已经很简洁明了,建议直接参照书中原文。这里只是简单概况。

覆盖装入

程序员自己将没有调用关系的代码分成不同的模块,如下图中的A/B。两个模块加载地址相同,都是0x0800F000。主模块用到哪个子模块,就将当装载进来。驻留在内存中的模块会被覆盖掉。当然,被A调用的模块C、D也可以互相覆盖装入。如下图。

覆盖装入是没有虚拟存储时的装载方式,目前几乎被淘汰了。

页映射

该方式是将磁盘中的指令和数据以“页(page)”为单位划分。linux中一般以4KB为一页。装载管理器会将用到的页装载进内存,内存不够用时,内存中的某些页会被替换掉。例如图中,P6将会被P8覆盖掉。至于如何选择被替换的页,有多种算法,如FIFO等。在linux中,存储管理器就是承担了页映射装载管理器的任务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值