操作系统学习笔记-程序的装载

存储器的层次结构

下面速度由快到慢

CPU寄存器

  • 寄存器
  • 高速缓冲存储器

主存

  • 内存
  • 磁盘缓存

辅存

  • 磁盘
  • 可移动设备

cpu如果直接从内存读取数据,会大量浪费cpu性能,所以设计了高速缓冲器

程序装载到内存中的过程

编译 -> 链接 -> 装入

image

程序的装载方式

  • 绝对装入模式
  • 可重定位装入模式
  • 动态运行时装入方式

绝对装入模式

程序使用的地址在编程或编译的时候就确定了,适合单程序模式。

可重定位装入模式

可以用一张图形象的表示:

image

在装入时对目标程序中指令和数据的修改过程称为重定位。地址变换在装入时一次完成,以后不再改变,称为静态重定位。

但是也有明显的缺点,当程序被挂起到外存的时候,在回到内存,地址就出错了。

动态运行时装入方式

和可重定位装入模式最大的区别是: 地址转换推迟到程序真正要执行时才进行.

装入内存后所有的地址都是相对地址。
为了不让性能下降,应该要设置一个重定位的寄存器。

程序的链接方式

  1. 静态链接
  2. 装入时动态链接
  3. 运行时动态链接

静态链接

程序运行前,将目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。

需要解决两个问题:

  1. 相对地址需要改变。
  2. 变换外部调用符号。

image

装入时动态链接

指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式

优点:

  1. 便于修改和更新
  2. 便于实现对目标模块的共享

运行时动态链接

运行时动态链接是将对某些模块的链接推迟到执行时才执行。

优点:

  1. 加快装入速度
  2. 节省大量内存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值