存储器管理——概述与程序链接与装入

存储器管理

自己的理解,仅供诸位参考

1 .存储器类型

在这里插入图片描述

1.1 引用寄存器原因

寄存器的速度与CPU速度相同,而CPU的处理速度远高于主存储器访问速度,
通常:CPU会从主存储器取得数据与指令,指令放入指令寄存器,数据放入数据寄存器

1.2 引用高速缓存原因

备份主存中常用数据,减少访问主存次数
通常: 进程的指令和数据在主存中,要访问时,复制入高速缓存CPU访问时,先检查缓存中有没有,没有在主存中找
通常:会有指令高速缓存,防止CPU将会空等指令来,也可能有多级缓存

1.3 引入磁盘缓存原因

访问I/O低可执行存储器的三个数量级,磁盘缓存利用主存一部分用于存储频繁使用的磁盘数据与信息

2 程序装入与链接

2.1一般过程

在这里插入图片描述

  • 编译:.cpp(源文件)=> .obj(目标文件) (目标模块)

     注:由编译程序[Compiler]完成
    
  • 链接:若干.obj与库以及其他连接在一起

     注:由链接程序[Linker]完成
    
  • 装入:把装入模块装入内存

     注:由装入程序[Loader]完成
    

2.2 链接的方式

在这里插入图片描述

①为静态链接
②为 装入时动态链接 和运行时动态链接 只是图在内存是装入链接与运行链接无法体现

程序链接方式 优点 缺点
静态链接 / 全部载入,不便于修改与更新
装入时动态链接 便于修改与更新 全部载入
运行时动态链接 需要时载入 /

2.3 程序的装入

要装入内存都需要变成装入模块,只是链接的时间不同(一开始,装入时,执行时),那么怎么装入?

程序装入方式 特点 用处 需求
绝对装入 装入内存特定位置 系统小且单道 装入内存时要知道绝对地址
静态可重定位装入 装入内存任意位置 单多道 装入内存时指令与数据地址修改
静态可重定位(动态运行时)装入 装入内存任意位置且可以移动 单多道 执行时需要地址转换寄存器

注:动态运行时装入方式装入的时候是逻辑地址,运行时转换物理地址

猜你喜欢

转载自blog.csdn.net/qq_42146775/article/details/84293723