xv6中的pmap.c源代码

本文档详细介绍了xv6操作系统中pmap.c的实现,涉及内存页初始化、物理内存管理策略(如buddy策略)及内存分配与释放函数kalloc和kfree的实现。通过中断int 15h获取内存信息,初始化内存页,并根据内存类型设置保留区和可用区。
摘要由CSDN通过智能技术生成

#include"param.h"

#include"pmap.h"

#include"phymem_manager.h"

#include"spinlock.h"

#include"assert.h"

uint npages;                 //number of avaiable pages//内存以页(4k大小)的形式的数量,这里的得到的是总的页数

char *start;                  //指向kernel后的内存地址

struct e820map *e820_memmap;

const struct phymem_manager_class *pmmc;//物理内存管理策略(buddy策略,first策略等等)的指针

struct Page *pages;//

struct spinlock kalloc_lock;

void init_pages_list (paddr_t start_addr,uint len,uint flags)//初始化内存页的标志位

{

paddr_t addr;

if(start_addr>=0xfec00000)

return;

assert (PGOFF(start_addr)==0,"error in init_pages_li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值