存储器的层次结构
下面速度由快到慢
CPU寄存器
- 寄存器
- 高速缓冲存储器
主存
- 内存
- 磁盘缓存
辅存
- 磁盘
- 可移动设备
cpu如果直接从内存读取数据,会大量浪费cpu性能,所以设计了高速缓冲器
程序装载到内存中的过程
编译 -> 链接 -> 装入
程序的装载方式
- 绝对装入模式
- 可重定位装入模式
- 动态运行时装入方式
绝对装入模式
程序使用的地址在编程或编译的时候就确定了,适合单程序模式。
可重定位装入模式
可以用一张图形象的表示:
在装入时对目标程序中指令和数据的修改过程称为重定位。地址变换在装入时一次完成,以后不再改变,称为静态重定位。
但是也有明显的缺点,当程序被挂起到外存的时候,在回到内存,地址就出错了。
动态运行时装入方式
和可重定位装入模式最大的区别是: 地址转换推迟到程序真正要执行时才进行.
装入内存后所有的地址都是相对地址。
为了不让性能下降,应该要设置一个重定位的寄存器。
程序的链接方式
- 静态链接
- 装入时动态链接
- 运行时动态链接
静态链接
程序运行前,将目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。
需要解决两个问题:
- 相对地址需要改变。
- 变换外部调用符号。
装入时动态链接
指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式
优点:
- 便于修改和更新
- 便于实现对目标模块的共享
运行时动态链接
运行时动态链接是将对某些模块的链接推迟到执行时才执行。
优点:
- 加快装入速度
- 节省大量内存。