3.4: 物理内存分配(Physical memory allocation)
内核必须在运行时为页表、用户内存、内核栈和管道缓冲区分配和释放物理内存。
Xv6 使用从内核结束地址到 PHYSTOP 之间的物理内存作为运行时分配的内存池。它一次分配和释放整个 4096 字节的页面。为了跟踪哪些页面是空闲的,xv6 通过在页面本身之间建立一个链表来记录空闲页面。
分配过程:从链表中移除一个页面。
释放过程:将释放的页面添加回链表。
内核必须在运行时为页表、用户内存、内核栈和管道缓冲区分配和释放物理内存。
Xv6 使用从内核结束地址到 PHYSTOP 之间的物理内存作为运行时分配的内存池。它一次分配和释放整个 4096 字节的页面。为了跟踪哪些页面是空闲的,xv6 通过在页面本身之间建立一个链表来记录空闲页面。
分配过程:从链表中移除一个页面。
释放过程:将释放的页面添加回链表。