ucore操作系统lab2实验报告

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

练习一、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;                        // 映射此物理页的虚拟页个数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值