Linux6.1.79 页描述符(struct page)

成员类型成员名功能说明(内核选项)
unsigned longflags描述物理页状态的标志
联合体-缓存页(page cache)和匿名页(anonymous page)
struct list_headlru次级联合体-pageout链,page out,即将页面写入磁盘的过程,该过程使用LRU算法(least recently Used)
void *__filler次级联合体-不可回收的LRU链节点:总是偶数,消除尾页(negate pagetail)
unsigned intmlock_count次级联合体-不可回收的LRU链节点:记录被锁定(mlock)的页面数量
struct list_headbuddy_list次级联合体-伙伴系统空闲链挂接点
struct list_headpcp_list次级联合体-PCP空闲链挂接点(per-cpu page allocator)
struct address_space *mapping低位清零,表示页映射到inode,并且指针指向address_space;低位置位,表示匿名映射,指向anon_vma
pgoff_tindex页面在内存映射中的偏移
unsigned longprivate

私有映射的隐性数据(opaque data),如果是私有页,通常用作缓存头;如果是交换页,用作swp_entry_t;如果是伙伴系统页,用于指示阶数

联合体-网络栈使用的页面池(page_pool)
unsigned longpp_magic魔数,避免回收不是从页面池分配的页面
struct page_pool *pp指向页面池描述符
unsigned long _pp_mapping_pad保留字段
unsigned longdma_addrDMA地址
unsigned longdma_addr_upper次级联合体-DMA地址高32位(32位系统,而又需要64位DMA地址)
atomic_long_tpp_frag_count次级联合体-页面池碎片页面计数(frag page)
联合体-复合页尾页(Tail pages of compound page)
unsigned longcompound_head复合页中首页的物理地址,bit0为1,用作尾页标志
unsigned charcompound_dtor析构函数索引号,复合页第一个尾页有效,当释放复合页时,调用该函数执行回收清理
unsigned charcompound_order复合页大小的阶次,仅第一个尾页有效
atomic_tcompound_mapcount复合页映射计数(应用空间)
atomic_tcompound_pincount复合页固定计数(pin)
unsigned intcompound_nr复合页大小(1 << compound_order)(CONFIG_64BIT)
联合体-复合页第二尾页(Second tail page of compound page)
unsigned long_compound_pad_1保留字段
unsigned long_compound_pad_2保留字段
struct list_headdeferred_list延迟释放页面链挂接点
联合体-页表页(Page table pages)
unsigned long_pt_pad_1保留字段
pgtable_tpmd_huge_pte大页表条目,由->plt保护
unsigned long_pt_pad_2保留字段
struct mm_struct *pt_mm次级联合体-X86架构使用,指向内存描述符(mm_struct)
atomic_tpt_frag_refcount次级联合体-PowerPC架构使用,碎片引用计数
spinlock_t *ptl页表锁,用户并发访问页表(ALLOC_SPLIT_PTLOCKS)
spinlock_tptl!ALLOC_SPLIT_PTLOCKS
联合体-内存设备页(ZONE_DEVICE pages )
struct dev_pagemap *pgmap指向设备页面映射描述符,描述内存设备页面的映射
void *zone_device_data指向内存设备数据
联合体-RCU头
struct rcu_headrcu_headRCU挂接点,可通过该节点释放页面
联合体2
atomic_t_mapcount记录页面的内存映射计数(应用空间)
unsigned intpage_type页面类型
atomic_t_refcount页面引用计数
unsigned longmemcg_data用于存储与内存控制组(memory control group)相关的信息。Memcg是Linux内核中一种可以限制进程或容器使用内存量的机制(CONFIG_MEMCG)
void *virtual内核空间对应的虚拟地址(WANT_PAGE_VIRTUAL)
struct page *kmsan_shadowKMSAN是一种内存错误检测工具,用于检测和报告内核中的各种内存错误,例如读取未初始化的内存、使用已被释放的内存等(CONFIG_KMSAN,Kernel Memory Sanitizer)
struct page *kmsan_origin(CONFIG_KMSAN)
int_last_cpupid最后一个使用页面的CPU ID,用于在系统调试时跟踪页面的使用情况(LAST_CPUPID_NOT_IN_PAGE_FLAGS)

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值