练习一、first-fit连续内存分配
文件:default_pmm.c
(一)、思路:
首先我们需要用一个数据结构来描述每个物理页(也称页帧),这里用了双向链表结构来表示每个页。链表头用 free_area_t结构来表示,包含了一个 list_entry 结构的双向链表指针和记录当前空闲页的个数的无符号整型变量 nr_free。
typedef struct {
list_entry_t free_list; // the list header
unsigned int nr_free; // # of free pages in this free list
} free_area_t;
接下来需要了解管理物理页的Page数据结构,这个数据结构也是实现连续物理内存分配算法的关键数据结构,可通过此数据结构来完成空闲块的链接和信息存储,而基于这个数据结构的管理物理页数组起始地址就是全局变量pages。
struct Page {
int ref; &n
ucore操作系统lab2实验报告

这篇博客详细介绍了ucore操作系统中first-fit连续内存分配的实现,包括Page数据结构、default_init_memmap、default_alloc_pages和default_free_pages函数的修改。此外,还讨论了查找虚拟地址对应页表项的思路,以及创建或释放页表项的条件和过程。最后,解释了如何释放虚拟地址所在的页并取消二级页表映射。
最低0.47元/天 解锁文章
1045

被折叠的 条评论
为什么被折叠?



