内存管理
内存概述
处理器 & 内存
执行过程
细节:
-
注:处理器可以直接访问的存储设备:寄存器 + 高速缓存 + 内存 (寄存器和高速缓存的 ==容量都相对较小== )
操作系统在计算机启动的时候就被 BIOS 加载到内存中了 (实际是因为
BIOS
本身就是嵌入在ROM
中的)注:操作系统被加载完成后将全权负责计算机的底层硬件
-
内存 & 主存
- 内存 =
ROM
+RAM
<-> 主存 =RAM
(RAM
=SRAM
+DRAM
) - 操作系统中通常不区分主存和内存的区别,统称为内存
- 内存 =
内存地址
逻辑地址 & 虚拟地址
定义:
处理器能够直接访问的地址称为逻辑地址 (操作系统角度的定义)
逻辑空间中每条 ==代码的地址== 和代码访问的 ==数据地址== 统称为逻辑地址(程序员角度定义)
-
cout<< "第一个元素的地址 ->" << &(numbers[0]) <<endl; // 地址都是采用 16 进制表示 -> 可以强制转换为 10 进制表示
虚拟地址 & 逻辑地址 & 磁盘地址
逻辑地址 & 虚拟地址: 没有任何区别 ;虚拟内存和逻辑内存也 没有任何区别 ;仅仅是同一概念的 不同称呼 而已
逻辑地址 & 磁盘地址
逻辑地址和磁盘地址没有 半毛钱 的关系
处理器使用 逻辑地址 访问 内存;调度程序 / 调页器使用 磁盘地址 访问程序在 磁盘 中的实际位置
逻辑空间:
- 为程序编写程序方便 虚构 出来的空间并不是实际存在的空间
- 逻辑空间中每条指令和数据都有相应的逻辑地址
特点:
- 每个程序的逻辑空间的 ==起始逻辑地址都是 0== 并且后续逻辑地址都是 ==连续== 的
- 逻辑地址并不代表程序运行时的真实地址
细节:
- 每个程序的逻辑地址都是通过 编译 生成的
- 处理器访问内存中的空间时只会使用逻辑地址
- 逻辑地址也被称为可重定位地址
图示:

物理地址
定义:==内存== 中每个字节具有 ==实际地址== 称为物理地址
分类:
- 基地址:进程在内存中被分配的物理空间的 ==起始地址==
- 界限地址:进程在内存中被分配的物理空间的 ==终止地址==
物理地址 & 逻辑地址
细节: