文章目录
内存概述
什么是内存:
内存是用于存放数据的硬件,程序执行前需要先放到内存中才能被CPU处理。
存储单元
将内存分为一个一个的小区间,每个区间就是一个存储单元。
内存地址
给内存的存储单元编地址,有两种:
- 按字节编址:每个存储单元的大小为1字节(8位)
- 按字编址:字长为16位的计算机,每个存储单元的大小为1个字(16位)
逻辑地址和物理地址
- 逻辑地址:编译生成的指令中是逻辑地址,是相对地址。
- 物理地址:是数据实际存放在内存当中的地址,是绝对地址。
进程运行的基本原理
进程执行的流程:
装入方式
- 绝对装入: 在编译时,如果直到程序将放到内存中的哪个位置,编译时将产生绝对地址的目标代码,装入程序按照装入模块中的地址,将程序和数据装入内存。
缺点:只适合单道程序环境。 - 静态重定位: 编译、链接后的装入模块的地址都是从0开始,指令中也是逻辑地址。在装入时对地址进行重定位,将逻辑地址变换为物理地址。
缺点:内存必须有足够的空间才能装入该进程,且运行期间不能移动。 - 动态重定位: 使用重定位寄存器,当该进程被调度运行时,才会获取寄存器中的信息,将逻辑地址转换为物理地址。
优点:运行期间也可移动。
链接方式
- 静态链接: 在程序运行前,将个目标模块链接成一个完整的装入模块,之后不可拆分。
- 装入时动态链接: 将各目标模块装入内存时,边装入边链接。
- 运行时动态链接: 在程序执行中需要该目标模块时,才对它进行链接。
内存管理*
内存管理的主要内容:
- 地址转换: 对应三种装入方式
- 存储保护: 保证各进程在自己的内存空间内运行,不会越界访问,两种方式:
1.设置上下限寄存器
2.重定位寄存器+界地址寄存器 - 内存空间的扩充(虚拟)
- 内存空间的分配与回收
内存空间的扩充
- 覆盖技术:将程序分为多个段,常用的段常驻内存,不常用的段在需要时调入内存(固定区,覆盖区)。
- 交换技术:内存空间紧张时,系统会将内存中某些进程暂时换出外存,外存中已具备运行条件的进程换入内存(中级调度)。
- 虚拟存储技术:后文
注:磁盘空间分为文件区和对换区,文件区采用离散分配方式,对换区采用连续分配方式。
内存空间的分配与回收
两种类型分配方式:
- 连续分配管理:用户进程分配的