更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
VmPage结构体 参考

物理页框描述符 虚拟内存体现的是程序对内存资源的需求,而物理内存是对该请求的供应。 伙伴算法的思想是:把内存中连续的空闲页框空间看成是空闲页框块,并按照它们的大小(连续页框的数目)分组 更多...

#include <los_vm_page.h>

成员变量

LOS_DL_LIST node
 
PADDR_T physAddr
 
Atomic refCounts
 
UINT32 flags
 
UINT8 order
 
UINT8 segID
 
UINT16 nPages
 
SPIN_LOCK_S lock
 

详细描述

物理页框描述符 虚拟内存体现的是程序对内存资源的需求,而物理内存是对该请求的供应。 伙伴算法的思想是:把内存中连续的空闲页框空间看成是空闲页框块,并按照它们的大小(连续页框的数目)分组

注意
vmPage 中并没有虚拟地址,只有物理地址
关于nPages和order的关系说明,当请求分配为5页时,order是等于3的,因为只有2^3才能满足5页的请求

在文件 los_vm_page.h53 行定义.

结构体成员变量说明

◆ flags

UINT32 VmPage::flags

vm page flags | 页标签,同时可以有多个标签(共享/引用/活动/被锁==)

在文件 los_vm_page.h58 行定义.

◆ lock

SPIN_LOCK_S VmPage::lock

lock for page table entry

在文件 los_vm_page.h63 行定义.

◆ node

LOS_DL_LIST VmPage::node

vm object dl list | 物理内框节点,通过它挂/摘到全局g_vmPhysSeg[segID]->freeList[order]物理页框链表 或被使用的链表 上, 例如 共享内存的shmIDSource.node

在文件 los_vm_page.h54 行定义.

◆ nPages

UINT16 VmPage::nPages

the vm page is used for kernel heap | 分配页数,标识从本页开始连续的几页将一块被分配

在文件 los_vm_page.h61 行定义.

◆ order

UINT8 VmPage::order

vm page in which order list | 被安置在伙伴算法的几号序列( 2^0,2^1,2^2,...,2^order)

在文件 los_vm_page.h59 行定义.

◆ physAddr

PADDR_T VmPage::physAddr

vm page physical addr | 物理页框起始物理地址,只能用于计算,不会用于操作(读/写数据==)

在文件 los_vm_page.h56 行定义.

◆ refCounts

Atomic VmPage::refCounts

vm page ref count | 被引用次数,共享内存会有多次引用

在文件 los_vm_page.h57 行定义.

◆ segID

UINT8 VmPage::segID

the segment id of vm page | 所属物理内存段编号ID

在文件 los_vm_page.h60 行定义.


该结构体的文档由以下文件生成: