1、
操作系统将物理内存抽象成一个字节数组,每个字节有一个物理地址。
根据物理地址可以访问到物理内存中的任意一个字节。
最小管理单位是字节,将物理上连续多个字节看成一个内存块,以块为单位分配、释放、回收物理内存。
操作系统的内核可以驻留在物理内存中,也可以驻留在 ROM 中。
2、Intel 系列的机器可以向 BIOS 查询物理地址空间的布局。(ARM 处理器没有 BIOS,但有其他机制)
BIOS 提供的 int 0x15 的 0xe820功能,可以获得一种内存布局表,由多个区间(开始地址、大小、属性)组成。
ucore 在 bootasn.S 中探测内存布局,将探测结果保存在物理内存 0x8000处。
3、BIOS 将系统的物理内存分为四大类:可用 RAM;保留 RAM,OS 不可用;ACPI 描述表使用;ACPI 非易失数据
物理内存管理只有可用 RAM 类。有些已经被引导程序、内核用掉了。
内核在内存中的开始位置是知道的,终止位置只有连接程序知道,可在连接脚本中定义,由连接程序提供。
连接脚本中 “.” 代表当前位置:var = . 该值便为连接程序确定的当前地址
4、内存管理的单位为内存块,内存块由多个物理上连续的字节组成。
描述内存块:位图、链表、数组等
最简单的物理内存管理方法是不管理,改进:分区管理(连续内存管理方法)
将内存划分为区,以区为单位分配内存,由使用者自己管理区内内存的使用。不允许跨区使用内存。
分区方法:静态分区法,动态分区法,伙伴算法